2 GREEN_COLOR=\033[32;01m
7 SDK_PATH:=$(shell pwd)/../../../../ARDroneLib
12 include $(ARDRONE_CUSTOM_CONFIG)
13 include $(ARDRONE_BUILD_CONFIG)
15 include $(SDK_PATH)/Soft/Build/custom.makefile
16 include $(SDK_PATH)/Soft/Build/config.makefile
19 ifeq "$(RELEASE_BUILD)" "yes"
20 ARDRONE_TARGET_DIR=$(shell pwd)/../../Build/Release
22 ARDRONE_TARGET_DIR=$(shell pwd)/../../Build/Debug
25 TARGET=ardrone_navigation
27 SRC_DIR:=$(shell pwd)/../Sources
30 COMMON_MOB_SRC_PATH = common
31 UTILS_SRC_PATH = utils
32 VIDEO_SRC_PATH = video
35 REF_SEND_SRC_PATH = ref_send
37 NDC_SRC_PATH = navdata_client
38 VC_SRC_PATH = vicon_client
40 # Define application source files
42 GENERIC_BINARIES_SOURCE_DIR:=$(SRC_DIR)
44 GENERIC_BINARIES_COMMON_SOURCE_FILES+= \
45 $(COMMON_MOB_SRC_PATH)/mobile_config.c \
46 $(COMMON_MOB_SRC_PATH)/mobile_wifi.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
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
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
74 ifeq ($(USE_RAW_CAPTURE),yes)
75 GENERIC_BINARIES_COMMON_SOURCE_FILES+= \
76 $(NDC_SRC_PATH)/raw_capture.c
79 ifeq ($(USE_ARDRONE_VICON),yes)
80 GENERIC_CFLAGS+=-DUSE_ARDRONE_VICON
86 $(SDK_PATH)/Soft/Common \
87 $(SDK_PATH)/Soft/Lib \
91 ifeq ($(PC_USE_POLARIS),yes)
93 $(SRC_PATH)/Soft/Lib \
94 $(SRC_PATH)/Soft/Lib/libPolaris
97 ifeq ($(USE_ARDRONE_VICON),yes)
99 $(SRC_PATH)/Soft/Lib \
100 $(SRC_PATH)/Soft/Lib/libViconDataStreamSDK
103 ifeq ($(USE_ARDRONE_CALIBRATION),yes)
105 $(SRC_PATH)/Soft/Lib \
106 $(SRC_PATH)/Soft/Lib/libCalibration
109 ifeq ($(USE_ARDRONE_VISION),yes)
111 $(SRC_PATH)/Soft/Lib \
112 $(SRC_PATH)/Soft/Lib/Vision
115 GENERIC_TARGET_BINARIES_PREFIX=
117 GENERIC_TARGET_BINARIES_DIR=$(ARDRONE_TARGET_DIR)
119 GENERIC_BINARIES_SOURCE_ENTRYPOINTS+= \
120 $(COMMON_MOB_SRC_PATH)/mobile_main.c
122 GENERIC_INCLUDES:=$(addprefix -I,$(GENERIC_INCLUDES))
124 ifeq ($(USE_ARDRONE_CALIBRATION),yes)
125 GENERIC_CFLAGS+=-DPC_USE_CALIBRATION
128 ifeq ($(USE_ARDRONE_VISION),yes)
129 GENERIC_CFLAGS+=-DPC_USE_VISION
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
136 ifeq ($(USE_ARDRONE_VISION),yes)
137 GENERIC_LIBS+=-lpc_vision
140 ifeq ($(USE_ARDRONE_CALIBRATION),yes)
141 GENERIC_LIBS+=-lcalibration
144 ifeq ($(PC_USE_POLARIS),yes)
145 GENERIC_LIBS+=-lpc_polaris
148 ifeq ($(USE_ARDRONE_VICON),yes)
149 GENERIC_LIB_PATHS=-L$(SRC_PATH)/Soft/Lib/libViconDataStreamSDK
150 GENERIC_LIBS+=-lViconDataStreamSDK -lpc_vicon
153 ifeq ($(PC_USE_TABLE_PILOTAGE),yes)
154 GENERIC_LIBS+=-lpc_test_benchs
157 ifeq ($(WIIMOTE_SUPPORT),yes)
158 # GENERIC_LIBS+=-lpc_cwiid
159 # Stephane : lib cwiid is now a Ubuntu package
160 GENERIC_LIBS+=-lcwiid
163 ifeq ($(EXTERNAL_CONTROL),yes)
164 GENERIC_LIBS+=-lpc_ardrone_control
167 SDK_FLAGS+="USE_APP=yes"
168 SDK_FLAGS+="APP_ID=ardrone_navigation"
170 GENERIC_CFLAGS+=-DRECORD_VIDEO
172 ifeq ($(FFMPEG_RECORDING_SUPPORT),yes)
173 GENERIC_LIBS+=-lswscale -lavformat -lavcodec -lavutil -lm
174 GENERIC_CFLAGS+=-DUSE_FFMPEG_RECORDER
177 export GENERIC_CFLAGS
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
188 export GENERIC_LIBRARY_SOURCE_DIR=$(GENERIC_BINARIES_SOURCE_DIR)
190 .PHONY: $(TARGET) build_libs
192 all: print_title build_libs $(TARGET)
195 @if [ '$(MAKECMDGOALS)' != 'clean' ]; then echo "$(BLUE_COLOR)-- Building Ardrone Navigation -- $(NO_COLOR)"; fi
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)/
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)
213 ifeq ($(WIIMOTE_SUPPORT),yes)
214 $(info Compiling Navigation with Wiimote)
216 @$(MAKE) -C $(SDK_PATH)/Soft/Build $(TMP_SDK_FLAGS) $(SDK_FLAGS) $(MAKECMDGOALS)
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)"