# Hey Emacs, this is a -*- makefile -*- # # $Id$ # Copyright (C) 2009 Antoine Drouin # # This file is part of paparazzi. # # paparazzi is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # paparazzi is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with paparazzi; see the file COPYING. If not, write to # the Free Software Foundation, 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. # # Define programs and commands. CC = gcc LD = $(CC) # Launch with "make Q=''" to get full command display Q=@ OPT=3 CSTANDARD = -std=gnu99 CINCS = $(INCLUDES) -I$(PAPARAZZI_SRC)/sw/include # Compiler flags. CFLAGS += $(CINCS) CFLAGS += -O$(OPT) # CFLAGS += -malignment-traps CFLAGS += -Wall -Wcast-qual -Wimplicit -Wcast-align 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 CFLAGS += -Wmissing-prototypes -Wnested-externs CFLAGS += $(CSTANDARD) CFLAGS += $($(TARGET).CFLAGS) $(LOCAL_CFLAGS) #Additional libraries. MATH_LIB = -lm LDFLAGS = $(MATH_LIB) SRCGEODE = $($(TARGET).srcs) COBJGEODE = $(SRCGEODE:%.c=$(OBJDIR)/%.o) all: build build: elf elf: $(OBJDIR)/$(TARGET).elf # Program the device. load upload program: $(OBJDIR)/$(TARGET).elf scp $(OBJDIR)/$(TARGET).elf $(USER)@$(HOST):$(TARGET_DIR) # Link: create ELF output file from object files. .SECONDARY : $(OBJDIR)/$(TARGET).elf .PRECIOUS : $(COBJGEODE) %.elf: $(COBJGEODE) @echo LD $@ $(Q)$(CC) $(CFLAGS) $(COBJGEODE) --output $@ $(LDFLAGS) $($(TARGET).LDFLAGS) # Compile: create object files from C source files. ARM-only $(OBJDIR)/%.o : %.c $(OBJDIR)/../Makefile.ac @echo CC $@ $(Q)test -d $(dir $@) || mkdir -p $(dir $@) $(Q)$(CC) -c $(CFLAGS) $< -o $@ # Listing of phony targets. .PHONY : all build elf clean clean_list # # Dependencies # $(OBJDIR)/.depend: @echo DEPEND $@ @test -d $(OBJDIR) || mkdir -p $(OBJDIR) $(Q)$(CC) -MM -MG $(CFLAGS) $($(TARGET).CFLAGS) $($(TARGET).srcs) | sed 's|\([^\.]*\.o\)|$(OBJDIR)/\1|' > $@ ifneq ($(MAKECMDGOALS),clean) ifneq ($(MAKECMDGOALS),erase) -include $(OBJDIR)/.depend endif endif