<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class="">Craig,</div><div class=""><br class=""></div>I had a look at this, and it doesn’t seem at all easy to resolve.<div class=""><br class=""></div><div class="">The espressif build system uses component.mk to control the build. In our dbc component, the .hpp and .cpp files in yacclex are dynamically built. Then there is a COMPONENT_SRCDIRS variable that controls which directories the build system will look into for files to compile.</div><div class=""><br class=""></div><div class="">I think that what is happening, with concurrent build jobs, is that the component library object is being built at the same time as the yacclex dynamic builds. When the component library build starts, it generates a list of files (.c, .cpp, etc) to compile - but if that is done before the yacclex files are dynamically built, the issue you describe happens.</div><div class=""><br class=""></div><div class="">I can see a way to split this into two components (perhaps in the same dbc directory) - the first containing the dynamic content, and the second containing the main dbc component. Then we can set a component dependency for the main component depending on the dynamic content component.</div><div class=""><br class=""></div><div class="">But, I can’t see any obvious way of setting an explicit dependency for this dynamic content. Any ‘make’ gurus out there?</div><div class=""><br class=""></div><div class="">As an alternative, very hacky, solution, I added this to component.mk:</div><div class=""><br class=""></div><blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;" class=""><div class=""><font face="Andale Mono" class=""><span style="font-size: 18px;" class="">.NOTPARALLEL:</span></font></div></blockquote><div class=""><br class=""></div><div class="">:-)</div><div class=""><br class=""></div><div class="">Regards, Mark.<br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On 1 Dec 2018, at 10:28 AM, Craig Leres <<a href="mailto:leres@xse.com" class="">leres@xse.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">I tried building on FreeBSD and parallel make is broken:<br class=""><br class="">    % make -j8<br class="">[...]<br class="">    gmake[1]: *** No rule to make target 'yacclex/dbc_parser.o', needed by 'libdbc.a'.  Stop.<br class="">    gmake[1]: *** Waiting for unfinished jobs....<br class="">    YACC dbc_parser.y<br class=""><br class="">If I start a non-parallel build after the above failure it works ok (and probably first builds the things that are missing make dependencies). See appended.<br class=""><br class="">I flashed it and it runs but this is with my dev module that does not have a modem and is literally on the bench.<br class=""><br class="">I'm not very experienced with gmake but am willing to try and help if you can't figure out how fix the missing dependency (which might well be in the esp-idf tree).<br class=""><br class=""><span class="Apple-tab-span" style="white-space:pre">       </span><span class="Apple-tab-span" style="white-space:pre">    </span>Craig<br class=""><br class="">ice 96 % gmake<br class="">LEX dbc_tokeniser.l<br class="">CXX /home/ice/u0/leres/src/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/build/dbc/src/dbc.o<br class="">CXX /home/ice/u0/leres/src/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/build/dbc/yacclex/dbc_tokeniser.o<br class="">CXX /home/ice/u0/leres/src/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/build/dbc/yacclex/dbc_parser.o<br class="">AR /home/ice/u0/leres/src/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/build/dbc/libdbc.a<br class="">CC /home/ice/u0/leres/src/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/build/esp_http_client/esp_http_client.o<br class="">CC /home/ice/u0/leres/src/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/build/esp_http_client/lib/http_utils.o<br class="">CC /home/ice/u0/leres/src/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/build/esp_http_client/lib/http_auth.o<br class="">CC /home/ice/u0/leres/src/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/build/esp_http_client/lib/transport_tcp.o<br class="">CC /home/ice/u0/leres/src/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/build/esp_http_client/lib/transport.o<br class="">CC /home/ice/u0/leres/src/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/build/esp_http_client/lib/transport_ssl.o<br class="">CC /home/ice/u0/leres/src/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/build/esp_http_client/lib/http_header.o<br class="">AR /home/ice/u0/leres/src/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/build/esp_http_client/libesp_http_client.a<br class="">CC /home/ice/u0/leres/src/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/build/ethernet/emac_main.o<br class="">CC /home/ice/u0/leres/src/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/build/ethernet/emac_dev.o<br class="">CC /home/ice/u0/leres/src/Open-Vehicle-Monitoring-System-3/vehicle/OVMS.V3/build/ethernet/eth_phy/phy_tlk110.o<br class="">[...]<br class=""></div></div></blockquote></div><br class=""></div></body></html>