ArDrone SDK 1.8 added
[mardrone] / mardrone / ARDrone_SDK_Version_1_8_20110726 / Examples / Linux / Navigation / Build / Makefile
1 NO_COLOR=\033[0m
2 GREEN_COLOR=\033[32;01m
3 BLUE_COLOR=\033[34;01m
4 PB_COLOR=\033[33m
5
6
7 SDK_PATH:=$(shell pwd)/../../../../ARDroneLib
8 PC_TARGET=yes
9 USE_LINUX=yes
10
11 ifdef MYKONOS
12    include $(ARDRONE_CUSTOM_CONFIG)
13    include $(ARDRONE_BUILD_CONFIG)
14 else
15    include $(SDK_PATH)/Soft/Build/custom.makefile
16    include $(SDK_PATH)/Soft/Build/config.makefile
17 endif
18
19 ifeq "$(RELEASE_BUILD)" "yes"
20    ARDRONE_TARGET_DIR=$(shell pwd)/../../Build/Release
21 else
22    ARDRONE_TARGET_DIR=$(shell pwd)/../../Build/Debug
23 endif
24
25 TARGET=ardrone_navigation
26
27 SRC_DIR:=$(shell pwd)/../Sources
28
29
30 COMMON_MOB_SRC_PATH = common
31 UTILS_SRC_PATH          = utils
32 VIDEO_SRC_PATH          = video
33 UI_SRC_PATH             = UI
34 BT_SRC_PATH             = BT
35 REF_SEND_SRC_PATH       = ref_send
36 IHM_SRC_PATH            = ihm
37 NDC_SRC_PATH            = navdata_client
38 VC_SRC_PATH             = vicon_client
39
40 # Define application source files
41
42 GENERIC_BINARIES_SOURCE_DIR:=$(SRC_DIR)
43
44 GENERIC_BINARIES_COMMON_SOURCE_FILES+=                  \
45         $(COMMON_MOB_SRC_PATH)/mobile_config.c          \
46         $(COMMON_MOB_SRC_PATH)/mobile_wifi.c            \
47         $(UI_SRC_PATH)/ui.c                             \
48         $(UI_SRC_PATH)/gamepad.c                        \
49         $(UI_SRC_PATH)/wiimote.c                        \
50         $(UI_SRC_PATH)/ardrone_ini.c                    \
51         $(UTILS_SRC_PATH)/utils.c                       \
52         $(UTILS_SRC_PATH)/remote_console.c              \
53         $(NDC_SRC_PATH)/navdata_client.c                \
54         $(NDC_SRC_PATH)/navdata_tablepilotage.c         \
55         $(NDC_SRC_PATH)/navdata_ihm.c                   \
56         $(IHM_SRC_PATH)/view_drone_attitude.c           \
57         $(IHM_SRC_PATH)/ihm_vision.c                    \
58         $(IHM_SRC_PATH)/ihm_stages_o_gtk.c              \
59         $(IHM_SRC_PATH)/ihm.c \
60         $(IHM_SRC_PATH)/ihm_config.c
61
62 ifeq ($(PC_USE_POLARIS),yes)
63         GENERIC_CFLAGS+=-DPC_USE_POLARIS
64         GENERIC_BINARIES_COMMON_SOURCE_FILES+=          \
65         $(NDC_SRC_PATH)/navdata_polaris.c               
66 endif
67
68 ifeq ($(USE_ARDRONE_VICON),yes)
69 GENERIC_BINARIES_COMMON_SOURCE_FILES+=                  \
70         $(VC_SRC_PATH)/vicon_client.c                   \
71         $(VC_SRC_PATH)/vicon_ihm.c
72 endif
73
74 ifeq ($(USE_RAW_CAPTURE),yes)   
75 GENERIC_BINARIES_COMMON_SOURCE_FILES+=                  \
76     $(NDC_SRC_PATH)/raw_capture.c
77 endif
78
79 ifeq ($(USE_ARDRONE_VICON),yes)
80    GENERIC_CFLAGS+=-DUSE_ARDRONE_VICON
81 endif
82
83 GENERIC_INCLUDES+=                                      \
84         $(SRC_DIR)                                      \
85         $(LIB_DIR)                                      \
86         $(SDK_PATH)/Soft/Common                         \
87         $(SDK_PATH)/Soft/Lib                            \
88         /usr/include/libxml2
89
90
91 ifeq ($(PC_USE_POLARIS),yes)
92 GENERIC_INCLUDES+=                                              \
93         $(SRC_PATH)/Soft/Lib  \
94         $(SRC_PATH)/Soft/Lib/libPolaris
95 endif
96
97 ifeq ($(USE_ARDRONE_VICON),yes)
98 GENERIC_INCLUDES+=                                              \
99         $(SRC_PATH)/Soft/Lib  \
100         $(SRC_PATH)/Soft/Lib/libViconDataStreamSDK
101 endif
102
103 ifeq ($(USE_ARDRONE_CALIBRATION),yes)
104 GENERIC_INCLUDES+=                                              \
105         $(SRC_PATH)/Soft/Lib    \
106         $(SRC_PATH)/Soft/Lib/libCalibration
107 endif
108
109 ifeq ($(USE_ARDRONE_VISION),yes)
110 GENERIC_INCLUDES+=                                              \
111         $(SRC_PATH)/Soft/Lib    \
112         $(SRC_PATH)/Soft/Lib/Vision
113 endif
114
115 GENERIC_TARGET_BINARIES_PREFIX=
116
117 GENERIC_TARGET_BINARIES_DIR=$(ARDRONE_TARGET_DIR)
118
119 GENERIC_BINARIES_SOURCE_ENTRYPOINTS+=                   \
120         $(COMMON_MOB_SRC_PATH)/mobile_main.c
121
122 GENERIC_INCLUDES:=$(addprefix -I,$(GENERIC_INCLUDES))
123
124 ifeq ($(USE_ARDRONE_CALIBRATION),yes)
125 GENERIC_CFLAGS+=-DPC_USE_CALIBRATION
126 endif
127
128 ifeq ($(USE_ARDRONE_VISION),yes)
129 GENERIC_CFLAGS+=-DPC_USE_VISION
130 endif
131
132 GENERIC_LIB_PATHS=-L$(GENERIC_TARGET_BINARIES_DIR)
133 GENERIC_CFLAGS+=-DLIBUDEV_I_KNOW_THE_API_IS_SUBJECT_TO_CHANGE
134 GENERIC_LIBS=-liw -lpc_ardrone -lgthread-2.0 -lgtk-x11-2.0 -lrt -lxml2 -ludev -lswscale
135
136 ifeq ($(USE_ARDRONE_VISION),yes)
137 GENERIC_LIBS+=-lpc_vision
138 endif
139
140 ifeq ($(USE_ARDRONE_CALIBRATION),yes)
141 GENERIC_LIBS+=-lcalibration
142 endif
143
144 ifeq ($(PC_USE_POLARIS),yes)
145 GENERIC_LIBS+=-lpc_polaris
146 endif
147
148 ifeq ($(USE_ARDRONE_VICON),yes)
149 GENERIC_LIB_PATHS=-L$(SRC_PATH)/Soft/Lib/libViconDataStreamSDK
150 GENERIC_LIBS+=-lViconDataStreamSDK -lpc_vicon
151 endif
152
153 ifeq ($(PC_USE_TABLE_PILOTAGE),yes)
154 GENERIC_LIBS+=-lpc_test_benchs
155 endif
156
157 ifeq ($(WIIMOTE_SUPPORT),yes)
158 #  GENERIC_LIBS+=-lpc_cwiid
159 # Stephane : lib cwiid is now a Ubuntu package
160 GENERIC_LIBS+=-lcwiid
161 endif
162
163 ifeq ($(EXTERNAL_CONTROL),yes)
164 GENERIC_LIBS+=-lpc_ardrone_control
165 endif
166
167 SDK_FLAGS+="USE_APP=yes"
168 SDK_FLAGS+="APP_ID=ardrone_navigation"
169
170 GENERIC_CFLAGS+=-DRECORD_VIDEO
171
172 ifeq ($(FFMPEG_RECORDING_SUPPORT),yes)
173 GENERIC_LIBS+=-lswscale -lavformat -lavcodec -lavutil -lm 
174 GENERIC_CFLAGS+=-DUSE_FFMPEG_RECORDER
175 endif
176
177 export GENERIC_CFLAGS
178 export GENERIC_LIBS
179 export GENERIC_LIB_PATHS
180 export GENERIC_INCLUDES
181 export GENERIC_BINARIES_SOURCE_DIR
182 export GENERIC_BINARIES_COMMON_SOURCE_FILES
183 export GENERIC_TARGET_BINARIES_PREFIX
184 export GENERIC_TARGET_BINARIES_DIR
185 export GENERIC_BINARIES_SOURCE_ENTRYPOINTS
186
187 # Bug fix ...
188 export GENERIC_LIBRARY_SOURCE_DIR=$(GENERIC_BINARIES_SOURCE_DIR)
189
190 .PHONY: $(TARGET) build_libs
191
192 all: print_title build_libs $(TARGET)
193
194 print_title:
195         @if [ '$(MAKECMDGOALS)' != 'clean' ]; then echo "$(BLUE_COLOR)-- Building Ardrone Navigation -- $(NO_COLOR)"; fi
196
197 $(TARGET): 
198         @if [ '$(MAKECMDGOALS)' != 'clean' ]; then echo "$(GREEN_COLOR)Linking navigation $(NO_COLOR)"; fi
199         @$(MAKE) -C $(SDK_PATH)/VP_SDK/Build $(TMP_SDK_FLAGS) $(SDK_FLAGS) $(MAKECMDGOALS)
200         mv $(GENERIC_TARGET_BINARIES_DIR)/$(COMMON_MOB_SRC_PATH)/mobile_main $(TARGET)
201         mv $(TARGET) $(ARDRONE_TARGET_DIR)/
202         @if [ ! -e $(ARDRONE_TARGET_DIR)/ardrone.xml ]; then cp $(SRC_DIR)/xml_files/ardrone_default.xml $(ARDRONE_TARGET_DIR)/ardrone.xml; fi
203 ifeq ($(USE_ARDRONE_VICON),yes)
204         cp $(SRC_PATH)/Soft/Lib/libViconDataStreamSDK/libViconDataStreamSDK.so $(ARDRONE_TARGET_DIR)/
205         cp $(SRC_PATH)/Soft/Lib/libViconDataStreamSDK/configure_vicon.sh $(ARDRONE_TARGET_DIR)/
206 endif
207
208 $(MAKECMDGOALS): build_libs
209         @if [ '$(MAKECMDGOALS)' != 'clean' ]; then echo "$(GREEN_COLOR)Compiling navigation sources$(NO_COLOR)"; fi
210         @$(MAKE) -C $(SDK_PATH)/VP_SDK/Build $(TMP_SDK_FLAGS) $(SDK_FLAGS) $(MAKECMDGOALS)
211
212 build_libs: 
213 ifeq ($(WIIMOTE_SUPPORT),yes)
214         $(info Compiling Navigation with Wiimote)
215 endif
216         @$(MAKE) -C $(SDK_PATH)/Soft/Build $(TMP_SDK_FLAGS) $(SDK_FLAGS) $(MAKECMDGOALS)
217
218 makefileverbose:
219         @echo "Dump compilation flags:"
220         @echo "GENERIC_CFLAGS : $(GENERIC_CFLAGS)"
221         @echo "GENERIC_LIBS : $(GENERIC_LIBS)"
222         @echo "GENERIC_LIB_PATHS : $(GENERIC_LIB_PATHS)"
223         @echo "GENERIC_INCLUDES : $(GENERIC_INCLUDES)"
224         @echo "GENERIC_BINARIES_SOURCE_DIR : $(GENERIC_BINARIES_SOURCE_DIR)"
225         @echo "GENERIC_BINARIES_COMMON_SOURCE_FILES : $(GENERIC_BINARIES_COMMON_SOURCE_FILES)"
226         @echo "GENERIC_TARGET_BINARIES_PREFIX : $(GENERIC_TARGET_BINARIES_PREFIX)"
227         @echo "GENERIC_TARGET_BINARIES_DIR : $(GENERIC_TARGET_BINARIES_DIR)"
228         @echo "GENERIC_BINARIES_SOURCE_ENTRYPOINTS : $(GENERIC_BINARIES_SOURCE_ENTRYPOINTS)"
229         @echo "TMP_SDK_FLAGS: $(TMP_SDK_FLAGS)"
230         @echo "SDK_FLAGS: $(SDK_FLAGS   )"
231         @echo "Make cmd goals: $(MAKECMDGOALS)"
232