Cync
[mardrone] / mardrone / ARDrone_SDK_Version_1_8_20110726 / ARDroneLib / Soft / Build / Makefile
1
2 GEN_CUSTOM_HEADER:=../Common/generated_custom.h
3
4 include custom.makefile 
5 include config.makefile
6
7 GNUTOOLS_PATH=/usr/local/$(GNUTOOLS_VERSION)/bin
8 ifeq ("$(QUIET_BUILD)","yes")
9   MAKE:=@PATH=$(GNUTOOLS_PATH):$(PATH) make -s
10 else
11   MAKE:=PATH=$(GNUTOOLS_PATH):$(PATH) make
12 endif
13
14 define ADD_RULE_TEMPLATE
15   TO_BUILD+=build_$(1)
16 endef
17
18 # Add rule for each target
19 $(foreach target,$(TARGETS),$(eval $(call ADD_RULE_TEMPLATE,$(target))))
20    
21 .PHONY: linux_sample svn_update $(TO_BUILD) build_libs $(MAKECMDGOALS)
22
23 all: $(GEN_CUSTOM_HEADER) build_libs $(TO_BUILD)
24
25 $(GEN_CUSTOM_HEADER): custom.makefile
26         @echo "#ifndef _GENERATED_CUSTOM_CONFIGURATION_H_" > $@
27         @echo "#define _GENERATED_CUSTOM_CONFIGURATION_H_" >> $@
28         @echo >> $@
29         @echo "#if  defined(BR2_PACKAGE_BCM4318_AP)" >> $@
30         @echo "#  define AP" >> $@
31         @echo "#else" >> $@
32         @echo "#  define STA" >> $@
33         @echo "#endif" >> $@
34         @echo "#define CURRENT_NUM_VERSION_SOFT \"$(MAJOR_VERSION).$(MINOR_VERSION).$(MODIF_VERSION)\"" >> $@
35         @echo "#define CURRENT_BUILD_DATE \"$(shell date +%F\ %H:%M)\"" >> $@
36         @echo >> $@
37 ifeq ("$(VIDEO_YUV)","yes")
38         @echo "#define USE_VIDEO_YUV" >> $@
39 endif
40 ifeq ("$(RECORD_VISION_DATA)","yes")
41         @echo "#define RECORD_VISION_DATA" >> $@
42 endif
43         @echo >> $@
44         @echo "#define WIFI_NETWORK_NAME \"$(WIFI_NETWORK_NAME)\"" >> $@
45         @echo "#define WIFI_BROADCAST \"$(WIFI_BROADCAST)\"" >> $@
46         @echo "#define WIFI_ARDRONE_IP \"$(WIFI_ARDRONE_IP)\"" >> $@
47         @echo >> $@
48         @echo "#if defined(__linux__) || defined(USE_MINGW32)" >> $@
49         @echo "# define WIFI_MOBILE_IP \"$(WIFI_MOBILE_IP)\"" >> $@
50         @echo "# define WIRED_ITFNAME \"$(WIRED_ITFNAME)\"" >> $@
51         @echo "#endif // ! __linux__" >> $@
52         @echo >> $@
53         @echo >> $@
54         @echo "#endif // ! _GENERATED_CUSTOM_CONFIGURATION_H_" >> $@
55
56 ifneq "$(MAKECMDGOALS)" ""
57   ifneq "$(MAKECMDGOALS)" "clean"
58     ifneq "$(MAKECMDGOALS)" "update"
59       $(MAKECMDGOALS):
60       @echo -e "\nCannot make what you ask me to do :-("
61     else
62       $(MAKECMDGOALS): svn_update
63     endif
64   endif
65 endif
66
67 $(MAKECMDGOALS): build_libs $(TO_BUILD)
68
69 checkpackages:
70         sh ./check_dependencies.sh
71
72 define GENERIC_RULES_TEMPLATE
73 build_$(1): 
74         @$(MAKE) -C $(1) $(MAKECMDGOALS)
75 endef
76
77 $(foreach target,$(TARGETS),$(eval $(call GENERIC_RULES_TEMPLATE,$(target))))
78
79 build_libs:
80         @$(MAKE) PC_TARGET=yes USE_ARDRONE_TOOL=no TARGET=pc_ USE_MINGW32=no -C ../Lib/Build $(MAKECMDGOALS)
81
82 ifeq ("$(MINGW32_MODE)","yes")
83 ifeq ($(shell which i586-mingw32msvc-gcc 2> /dev/null),)
84         $(warning You need MinGW32 to compile My Ardrone lib for Windows if you want. (under Debian: apt-get install mingw32))
85 else
86 #       @$(MAKE) PC_TARGET=yes TARGET=mingw32_ USE_MINGW32=yes TMP_SDK_FLAGS="USE_MINGW32=yes NO_COM=yes USE_BLUEZ=no" -C ../Lib/Build $(MAKECMDGOALS)
87 #       @$(MAKE) PC_TARGET=yes TARGET=emb_mingw32_ USE_MINGW32=yes CONTROL_DLL=yes TMP_SDK_FLAGS="USE_MINGW32=yes NO_COM=yes USE_BLUEZ=no" -C ../Lib/Build $(MAKECMDGOALS)
88 endif
89 endif
90 ifeq ($(WIIMOTE_SUPPORT),yes)
91 #       @$(MAKE) PC_TARGET=yes TARGET=pc_ TMP_SDK_FLAGS="USE_BLUEZ=yes" -C ../Lib/libcwiid $(MAKECMDGOALS)
92 endif
93
94 define svn_update_template
95    cd ../.. ; \
96         echo "Checking out tag $(1) of $(2) ..." ; \
97         if [ $(1) != head ] ; then \
98            svn co -r $(1) https://svn.ardrone.org/repo/ARDrone_API/$(2) ; \
99         else \
100                 svn co https://svn.ardrone.org/repo/ARDrone_API/$(2) ; \
101         fi ; \
102         cd Soft/Build ; 
103 endef
104         
105 svn_update:
106         @-$(call svn_update_template,$(SDK_VERSION),ARDroneLib)
107