From 5fe92b1b0871f5d12c2708002854e5ffa6032f26 Mon Sep 17 00:00:00 2001 From: "Barak A. Pearlmutter" Date: Wed, 2 Apr 2014 12:19:40 +0100 Subject: [PATCH] tweak Makefiles to be noisier and use default rules and be more robust - be less aggressive about suppressing printing of commands - invoke subcommands once and save results - to make commands shorter - to make it easy to see the actual values - to be robust against changes like "git commit" during a build - modularize CFLAGS vs CPPFLAGS - use default rules where possible --- .gitignore | 2 ++ Makefile | 2 +- src/Makefile | 45 ++++++++++++++++++++------------------------- src/osflags | 2 ++ 4 files changed, 25 insertions(+), 26 deletions(-) diff --git a/.gitignore b/.gitignore index f264a83..835f56d 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ /src/base64u.c /src/base64u.h /tests/test +/src/iodine +/src/iodined diff --git a/Makefile b/Makefile index c378892..b400422 100644 --- a/Makefile +++ b/Makefile @@ -14,7 +14,7 @@ MKDIR_FLAGS=-p RM=rm RM_FLAGS=-f -TARGETOS = `uname` +TARGETOS := $(shell uname) all: @(cd src; $(MAKE) TARGETOS=$(TARGETOS) all) diff --git a/src/Makefile b/src/Makefile index 5fbfbbd..0e78ada 100644 --- a/src/Makefile +++ b/src/Makefile @@ -4,45 +4,40 @@ CLIENT = ../bin/iodine SERVEROBJS = iodined.o user.o fw_query.o SERVER = ../bin/iodined -OS = `echo $(TARGETOS) | tr "a-z" "A-Z"` -ARCH = `uname -m` -HEAD_COMMIT = `git rev-parse --short HEAD` +OS := $(shell echo $(TARGETOS) | tr "a-z" "A-Z") +ARCH := $(shell uname -m) +HEAD_COMMIT := $(shell git rev-parse --short HEAD) LIBPATH = -L. -LDFLAGS += -lz `sh osflags $(TARGETOS) link` $(LIBPATH) -CFLAGS += -c -g -Wall -D$(OS) -pedantic `sh osflags $(TARGETOS) cflags` -DGITREVISION=\"$(HEAD_COMMIT)\" +OS_CPPFLAGS := $(shell sh osflags $(TARGETOS) cppflags) +OS_CFLAGS := $(shell sh osflags $(TARGETOS) cflags) +OS_LDFLAGS := $(shell sh osflags $(TARGETOS) link) +CPPFLAGS = -D$(OS) -DGITREVISION=\"$(HEAD_COMMIT)\" $(OS_CPPFLAGS) +CFLAGS += -g -Wall -pedantic $(OS_CFLAGS) +LDFLAGS += -lz $(OS_LDFLAGS) $(LIBPATH) all: stateos $(CLIENT) $(SERVER) stateos: @echo OS is $(OS), arch is $(ARCH) -$(CLIENT): $(COMMONOBJS) $(CLIENTOBJS) - @echo LD $@ - @mkdir -p ../bin - @$(CC) $(COMMONOBJS) $(CLIENTOBJS) -o $(CLIENT) $(LDFLAGS) - -$(SERVER): $(COMMONOBJS) $(SERVEROBJS) - @echo LD $@ - @mkdir -p ../bin - @$(CC) $(COMMONOBJS) $(SERVEROBJS) -o $(SERVER) $(LDFLAGS) - -.c.o: - @echo CC $< - @$(CC) $(CFLAGS) $< -o $@ +iodine: $(COMMONOBJS) $(CLIENTOBJS) +iodined: $(COMMONOBJS) $(SERVEROBJS) +$(CLIENT): iodine; mkdir -p ../bin && cp -a $< $@ +$(SERVER): iodined; mkdir -p ../bin && cp -a $< $@ base64u.o client.o iodined.o: base64u.h base64u.c: base64.c @echo Making $@ - @echo '/* No use in editing, produced by Makefile! */' > $@ - @sed -e 's/\([Bb][Aa][Ss][Ee]64\)/\1u/g ; s/0123456789+/0123456789_/' < base64.c >> $@ + echo '/* No use in editing, produced by Makefile! */' > $@ + sed -e 's/\([Bb][Aa][Ss][Ee]64\)/\1u/g ; s/0123456789+/0123456789_/' < base64.c >> $@ base64u.h: base64.h @echo Making $@ - @echo '/* No use in editing, produced by Makefile! */' > $@ - @sed -e 's/\([Bb][Aa][Ss][Ee]64\)/\1u/g ; s/0123456789+/0123456789_/' < base64.h >> $@ + echo '/* No use in editing, produced by Makefile! */' > $@ + sed -e 's/\([Bb][Aa][Ss][Ee]64\)/\1u/g ; s/0123456789+/0123456789_/' < base64.h >> $@ clean: @echo "Cleaning src/" - @rm -f $(CLIENT){,.exe} $(SERVER){,.exe} *~ *.o *.core base64u.* - @rm -rf obj libs #android stuff - + rm -f iodine iodined + rm -f $(CLIENT){,.exe} $(SERVER){,.exe} *~ *.o *.core base64u.* + rm -rf obj libs #android stuff diff --git a/src/osflags b/src/osflags index 2d8a03b..b25da6a 100755 --- a/src/osflags +++ b/src/osflags @@ -25,6 +25,8 @@ link) esac ;; cflags) + ;; +cppflags) case $1 in windows32) echo '-DWINVER=0x0501';