added C++ support for omap programs

This commit is contained in:
Antoine Drouin
2010-09-15 13:02:05 +00:00
parent 846ef535fa
commit f708d4ae7b
2 changed files with 52 additions and 8 deletions
+25 -8
View File
@@ -1,7 +1,7 @@
# Hey Emacs, this is a -*- makefile -*-
#
# $Id$
# Copyright (C) 2009 Antoine Drouin
# Copyright (C) 2009-2010 The Paparazzi Team
#
# This file is part of paparazzi.
#
@@ -53,7 +53,6 @@ CFLAGS += -Wpointer-arith -Wswitch
CFLAGS += -Wredundant-decls -Wreturn-type -Wshadow -Wunused
#CFLAGS += -Wa,-adhlns=$(OBJDIR)/$(notdir $(subst $(suffix $<),.lst,$<))
#CFLAGS += $(patsubst %,-I%,$(EXTRAINCDIRS))
#CFLAGS += -mtune=geode # optimize for geode
# flags only for C
CFLAGS + = -Wstrict-prototypes -Wmissing-declarations
@@ -62,8 +61,18 @@ CFLAGS += $(CSTANDARD)
CFLAGS += $($(TARGET).CFLAGS)
SRCOMAP = $($(TARGET).srcs)
COBJOMAP = $(SRCOMAP:%.c=$(OBJDIR)/%.o)
CXX = /opt/paparazzi/omap/overo-oe/tmp/sysroots/i686-linux/usr/armv7a/bin/arm-angstrom-linux-gnueabi-g++
CXXFLAGS = -pipe -O3 -fshow-column -ffast-math -DEIGEN_DONT_VECTORIZE -fPIC
CXXFLAGS += -DEIGEN_DONT_ALIGN -DNDEBUG -g -ffunction-sections -fdata-sections -DTIME_OPS
CXXFLAGS += -Wall -Wextra
CXXFLAGS += $($(TARGET).CXXFLAGS)
SRC_C_OMAP = $($(TARGET).srcs)
OBJ_C_OMAP = $(SRC_C_OMAP:%.c=$(OBJDIR)/%.o)
SRC_CPP_OMAP = $($(TARGET).cpp_srcs)
OBJ_CPP_OMAP = $(SRC_CPP_OMAP:%.cpp=$(OBJDIR)/%.o)
all: build
@@ -77,17 +86,25 @@ load upload program: $(OBJDIR)/$(TARGET).elf
# Link: create ELF output file from object files.
.SECONDARY : $(OBJDIR)/$(TARGET).elf
.PRECIOUS : $(COBJOMAP)
%.elf: $(COBJOMAP)
.PRECIOUS : $(OBJ_C_OMAP) $(OBJ_CPP_OMAP)
%.elf: $(OBJ_C_OMAP) $(OBJ_CPP_OMAP)
@echo LD $@
$(Q)$(CC) $(CFLAGS) $(COBJOMAP) --output $@ $(LDFLAGS) $($(TARGET).LDFLAGS)
$(Q)if (expr "$($(TARGET).cpp_srcs)"); \
then $(CXX) $(CXXFLAGS) $(OBJ_CPP_OMAP) --output $@ $(LDFLAGS) $($(TARGET).LDFLAGS) ; \
else $(CC) $(CFLAGS) $(OBJ_C_OMAP) --output $@ $(LDFLAGS) $($(TARGET).LDFLAGS); fi
# Compile: create object files from C source files. ARM-only
# Compile: create object files from C source files
$(OBJDIR)/%.o : %.c $(OBJDIR)/../Makefile.ac
@echo CC $@
$(Q)test -d $(dir $@) || mkdir -p $(dir $@)
$(Q)$(CC) -c $(CFLAGS) $< -o $@
# Compile: create object files from C++ source files
$(OBJDIR)/%.o : %.cpp $(OBJDIR)/../Makefile.ac
@echo CXX $@
$(Q)test -d $(dir $@) || mkdir -p $(dir $@)
$(Q)$(CXX) -c $(CXXFLAGS) $< -o $@
# Listing of phony targets.
.PHONY : all build elf clean clean_list
+27
View File
@@ -0,0 +1,27 @@
<airframe name="FuckYou_1">
<makefile>
HOST=auto3
# test 1
test1.ARCHDIR = omap
test1.CXXFLAGS += -I /opt/paparazzi/omap/overo-oe/tmp/sysroots/armv7a-angstrom-linux-gnueabi/usr/include/eigen2
test1.cpp_srcs = fms/libeknav/hello_world.cpp
# test network based telemetry on overo (using udp_transport2/messages2)
overo_test_telemetry2.ARCHDIR = omap
overo_test_telemetry2.CFLAGS += -I$(ACINCLUDE) -I. -I$(PAPARAZZI_HOME)/var/include
overo_test_telemetry2.srcs = fms/overo_test_telemetry2.c
overo_test_telemetry2.CFLAGS += -DDOWNLINK -DDOWNLINK_TRANSPORT=UdpTransport
overo_test_telemetry2.srcs += fms/udp_transport2.c downlink.c
overo_test_telemetry2.srcs += fms/fms_network.c
overo_test_telemetry2.LDFLAGS += -levent
</makefile>
</airframe>