diff --git a/Makefile.ac b/Makefile.ac index 91480c6b79..0f3132a51e 100644 --- a/Makefile.ac +++ b/Makefile.ac @@ -67,6 +67,8 @@ demo: all_ac_h: $(AIRFRAME_H) $(RADIO_H) $(FLIGHT_PLAN_H) $(FLIGHT_PLAN_XML) $(SETTINGS_H) $(TUNING_H) $(MAKEFILE_AC) $(PERIODIC_H) $(MODULES_H) +makefile_ac: $(MAKEFILE_AC) + $(AIRFRAME_H) : $(CONF)/$(AIRFRAME_XML) $(CONF_XML) @echo BUILD $@ $(Q)$(TOOLS)/gen_airframe.out $(AC_ID) $(AIRCRAFT) $(MD5SUM) $< > /tmp/airframe.h @@ -80,7 +82,10 @@ $(RADIO_H) : $(CONF)/$(RADIO) $(CONF_XML) $(TOOLS)/gen_radio.out $(Q)mv /tmp/radio.h $@ $(Q)cp $< $(AIRCRAFT_CONF_DIR)/radios -include $(MAKEFILE_AC) +ifeq ($(MAKECMDGOALS),all_ac_h) +-include $(MAKEFILE_AC) +endif + $(PERIODIC_H) : $(MESSAGES_XML) $(CONF_XML) $(CONF)/$(TELEMETRY) $(MAKEFILE_AC) @echo BUILD $@ $(Q)$(TOOLS)/gen_periodic.out $(MESSAGES_XML) $(CONF)/$(TELEMETRY) $(PERIODIC_FREQ) > $@ @@ -113,6 +118,7 @@ $(TUNING_H) : $(SETTINGS_XMLS) $(CONF_XML) $(TOOLS)/gen_tuning.out $(MAKEFILE_AC) : $(CONF)/$(AIRFRAME_XML) @echo BUILD $@ + $(Q)mkdir -p $(ACINCLUDE) $(Q)$(TOOLS)/extract_makefile.out $< $(MODULES_DIR) > $@ $(MODULES_H) : $(CONF)/$(AIRFRAME_XML) $(TOOLS)/gen_modules.out $(CONF)/modules/*.xml diff --git a/sw/tools/gen_aircraft.ml b/sw/tools/gen_aircraft.ml index 2c0e011c87..ae3f030c2b 100644 --- a/sw/tools/gen_aircraft.ml +++ b/sw/tools/gen_aircraft.ml @@ -97,9 +97,15 @@ let _ = Printf.fprintf f "%s\n" md5sum; close_out f; - let c = sprintf "make -f Makefile.ac AIRCRAFT=%s AC_ID=%s AIRFRAME_XML=%s RADIO=%s FLIGHT_PLAN=%s TELEMETRY=%s SETTINGS=\"%s\" MD5SUM=\"%s\" all_ac_h" aircraft (value "ac_id") (value "airframe") (value "radio") (value "flight_plan") (value "telemetry") settings md5sum in - begin (** Quiet is speficied in the Makefile *) - try if Sys.getenv "Q" <> "@" then raise Not_found with - Not_found -> prerr_endline c - end; - exit (Sys.command c) + let make = fun target -> + let c = sprintf "make -f Makefile.ac AIRCRAFT=%s AC_ID=%s AIRFRAME_XML=%s RADIO=%s FLIGHT_PLAN=%s TELEMETRY=%s SETTINGS=\"%s\" MD5SUM=\"%s\" %s" aircraft (value "ac_id") (value "airframe") (value "radio") (value "flight_plan") (value "telemetry") settings md5sum target in + prerr_endline c; + begin (** Quiet is speficied in the Makefile *) + try if Sys.getenv "Q" <> "@" then raise Not_found with + Not_found -> prerr_endline c + end; + let returned_code = Sys.command c in + if returned_code <> 0 then + exit returned_code in + make "makefile_ac"; + make "all_ac_h"