From 3edb742af85380718e03042287628159790521b4 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 16 Mar 2012 19:21:13 -0700 Subject: [PATCH] Build library in 'build' directory. Allows replacing generic code By linking all of the source files into the 'build' directory, the platform can replace any of them with different versions. Signed-off-by: Keith Packard --- Makefile | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index fa2976a..0fbc337 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,9 @@ # $Id$ +CC=arm-none-eabi-gcc + # This is where you chose which platform to compile for (see 'make links' / './platform') -PLATFORM := example +PLATFORM := altos # This is a list of all non-source files that are part of the distribution. AUXFILES := Makefile Readme.txt @@ -10,12 +12,13 @@ AUXFILES := Makefile Readme.txt PROJDIRS := functions includes internals # All source files of the project SRCFILES := $(shell find -L $(PROJDIRS) -type f -name "*.c") +BUILDFILES := $(shell find -L build -type f -name "*.c") # All header files of the project HDRFILES := $(shell find -L $(PROJDIRS) -type f -name "*.h") # All .c files in functions/_PDCLIB that do not have a regression test driver INTFILES := _Exit atomax digits open print scan remove rename seed stdinit strtox_main strtox_prelim filemode eol errno seek prepread prepwrite allocpages tmpfilename closeall # All object files in the library -OBJFILES := $(patsubst %.c,%.o,$(SRCFILES)) +OBJFILES := $(patsubst %.c,%.o,$(BUILDFILES)) # All test drivers (.t) TSTFILES := $(patsubst %.c,%_t,$(SRCFILES)) # All regression test drivers (.r) @@ -30,11 +33,14 @@ REGDEPFILES := $(patsubst %,%.d,$(REGFILES)) ALLFILES := $(SRCFILES) $(HDRFILES) $(AUXFILES) WARNINGS := -Wall -Wextra -pedantic -Wno-unused-parameter -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Wmissing-prototypes -Wmissing-declarations -Wredundant-decls -Wnested-externs -Winline -Wno-long-long -Wuninitialized -Wstrict-prototypes -CFLAGS := -fno-builtin -g -std=c99 -I./internals -I./testing $(WARNINGS) $(USERFLAGS) +PLATFORM_FLAGS=-nostdinc -mlittle-endian -mthumb -mcpu=cortex-m3 -ffreestanding -nostdlib +CFLAGS := -fno-builtin -Os -g -std=c99 -I./build/internals -I./testing $(WARNINGS) $(USERFLAGS) $(PLATFORM_FLAGS) .PHONY: all clean srcdist bindist test tests testdrivers regtests regtestdrivers todos fixmes find links unlink help -all: pdclib.a testdrivers regtestdrivers +all: pdclib.a + +check: all testdrivers regtestdrivers @echo @echo "========================" @echo "Executing library tests:" @@ -87,11 +93,13 @@ find: links: @echo "Linking platform/$(PLATFORM)..." - @for file in $$(find platform/$(PLATFORM) -mindepth 2 -type f ! -path *.svn* -printf "%P\n"); do ln -s $$(dirname $$file | sed "s@[^/]*@..@g")/platform/$(PLATFORM)/$$file $$file; done + @for dir in $$(find functions includes internals -type d); do mkdir -p build/$$dir; done + @for file in $$(find platform/$(PLATFORM) -mindepth 2 -type f ! -path *.svn* -printf "%P\n"); do if [ ! -f build/$$file ]; then ln -s $$(dirname $$file | sed "s@[^/]*@..@g")/../platform/$(PLATFORM)/$$file build/$$file; fi; done + @for super in $(PROJDIRS); do for file in $$(find $$super -type f ! -path *.svn* -printf "%P\n"); do if [ ! -f build/$$super/$$file ]; then ln -s $$(echo $$file | sed "s@[^/]*@..@g")/../$$super/$$file build/$$super/$$file; fi; done; done unlink: @echo "Unlinking platform files..." - @for dir in $(PROJDIRS); do find $$dir -type l -exec rm {} +; done + @for dir in $(PROJDIRS); do find build/$$dir -type l -exec rm {} +; done help: @echo "Available make targets:" @@ -118,12 +126,12 @@ help: @echo "(Usage: USERFLAGS=\"flags\" make [...])." %.o: %.c Makefile - @echo " CC $(patsubst functions/%,%,$@)" - @$(CC) $(CFLAGS) -MMD -MP -I./includes -c $< -o $@ + echo " CC $(patsubst functions/%,%,$@)" + $(CC) $(CFLAGS) -MMD -MP -I./build/includes -c $< -o $@ %_t: %.c Makefile pdclib.a @echo " CC $(patsubst functions/%,%,$@)" - @$(CC) $(CFLAGS) -MMD -MP -DTEST -I./includes $< pdclib.a -o $@ + @$(CC) $(CFLAGS) -MMD -MP -DTEST -I./build/includes $< pdclib.a -o $@ %_r: %.c Makefile @echo " CC $(patsubst functions/%,%,$@)" -- 2.30.2