From a900e608df738b0f4a5957b11f086a2c609f7e35 Mon Sep 17 00:00:00 2001 From: ygrek Date: Tue, 21 Oct 2008 14:44:03 +0300 Subject: [PATCH] refactor Makefiles --- Makefile | 18 +++++++++++++----- Makefile.config | 13 ++++++------- lib-src/Makefile | 48 ++++++++++++++++++++++++++---------------------- prop-src/Makefile | 47 +++++++++++++++++++++++++---------------------- 4 files changed, 70 insertions(+), 56 deletions(-) diff --git a/Makefile b/Makefile index 4b9f3aa..8f9fedd 100644 --- a/Makefile +++ b/Makefile @@ -40,15 +40,15 @@ config: # ############################################################################# test: - cd prop-src; make test CC="$(CC)" COPTS="$(COPTS)" LDOPTS="$(LDOPTS)" OBJ="$(OBJ)" + make test -C prop-src @echo Testing of the prop translator ran ok. testall: - cd tests; make test CC="$(CC)" COPTS="$(COPTS)" LDOPTS="$(LDOPTS)" OBJ="$(OBJ)" + make test -C tests @echo All test programs ran ok. demo: - cd demos; make CC="$(CC)" COPTS="$(COPTS)" LDOPTS="$(LDOPTS)" OBJ="$(OBJ)" + make -C demos @echo All demo programs have been compiled. ############################################################################# @@ -68,14 +68,22 @@ wc: # ############################################################################# spotless: - cd lib-src; make spotless - cd prop-src; make spotless + make spotless -C lib-src + make spotless -C prop-src cd tools/test; make spotless cd tests; make spotless cd demos; make spotless cd tools/pretty; make spotless #cd docs; make spotless +clean: + make clean -C lib-src + make clean -C prop-src + +cleanall: + make cleanall -C lib-src + make cleanall -C prop-src + cleanhouse: cd lib-src; make spotless cd prop-src; make clean diff --git a/Makefile.config b/Makefile.config index 2370236..2655cc6 100644 --- a/Makefile.config +++ b/Makefile.config @@ -1,10 +1,9 @@ CC := cl -COPTS := /EHsc /nologo -CINCLUDE := -I$(ADLIB_PATH) -LIBRARY := libprop.lib -RM := rm -#PROP = ../../bin/prop -#PROP_OPTS = -strict -report -I../../include - +RM := rm -f OBJ := obj +DOTEXE := .exe + +MKLIB=link /nologo /LIB /OUT:$(1) $(2) +MKEXE=link /nologo /Fe$(1) $(2) +MKOBJ=$(CC) /c /Fo$(1) $(2) \ No newline at end of file diff --git a/lib-src/Makefile b/lib-src/Makefile index fabe404..f4e68d0 100644 --- a/lib-src/Makefile +++ b/lib-src/Makefile @@ -9,6 +9,11 @@ include ../Makefile.config ADLIB_PATH := ../include ad := $(ADLIB_PATH)/ad +COPTS := /EHsc /nologo +CINCLUDE := -I$(ADLIB_PATH) +CFLAGS := $(COPTS) $(CINCLUDE) +LIBRARY := libprop.lib + ############################################################################# # A list of all ADLib areas ############################################################################# @@ -22,44 +27,49 @@ AREAS := automata contain \ rewrite strings symbolic \ trees tries backend-tools visualize +#PROP = ../../bin/prop +#PROP_OPTS = -strict -report -I../../include + lib: $(LIBRARY) -#look for include files in -#each of the modules -# CFLAGS += $(patsubst %,-I%,$(MODULES)) -#extra libraries if required -LIBS := #each module will add to this SRC := -#include the description for -#each module +GEN_SRC := + +# include all modules include $(patsubst %, %/Makefile.mk,$(AREAS)) -#determine the object files + +# deduce object files OBJS := $(patsubst %.cc,%.$(OBJ),$(filter %.cc,$(SRC))) %.$(OBJ): %.cc - $(CC) /Fo$@ -c $(COPTS) $(CINCLUDE) $< + $(call MKOBJ,$@, $(CFLAGS) $<) %.$(OBJ): %.cpp - $(CC) -c $(COPTS) $(CINCLUDE) $< + $(call MKOBJ,$@, $(CFLAGS) $<) %.$(OBJ): %.cxx - $(CC) -c $(COPTS) $(CINCLUDE) $< + $(call MKOBJ,$@, $(CFLAGS) $<) %.$(OBJ): %.C - $(CC) -c $(COPTS) $(CINCLUDE) $< + $(call MKOBJ,$@, $(CFLAGS) $<) clean: $(RM) $(OBJS) -d: +cleanall: clean + $(RM) $(LIBRARY) + +spotless: cleanall + $(RM) $(GEN_SRC) + +vars: @echo $(SRC) + @echo $(GEN_SRC) @echo $(OBJS) $(LIBRARY): $(OBJS) - link /LIB /OUT:$(LIBRARY) $(OBJS) - $(RM) $(LIBRARY) - $(LINK) /LIB /OUT:$(LIBRARY) $(OBJS) + $(call MKLIB,$(LIBRARY),$(OBJS)) @echo Done #%.cc: %.pcc @@ -67,9 +77,3 @@ $(LIBRARY): $(OBJS) #%.h: %.ph # $(PROP) $(PROP_OPTS) $(CINCLUDE) $< - - -#spotless: -# for dir in $(AREAS); do \ -# if [ -d $$dir ]; then $(RM) -f $$dir/*.o; fi; \ -# done diff --git a/prop-src/Makefile b/prop-src/Makefile index d2afc1a..e7beb95 100644 --- a/prop-src/Makefile +++ b/prop-src/Makefile @@ -3,19 +3,22 @@ # Makefile for compiling Prop 2.3.x # ############################################################################### + +include ../Makefile.config + PROP = ../bin/prop -CC = cl +PROP_OPTS_BASIC = -strict $(CC_INCLUDE) -save_space -report -v2 +PROP_OPTS = $(PROP_OPTS_BASIC) -O14 + CC_INCLUDE = -I../include #COPTS = -O6 -pedantic COPTS = /EHsc /nologo #LDOPTS = -lg++ -LDOPT = CFLAGS = $(CC_INCLUDE) $(COPTS) -#LDFLAGS = -L../lib -lprop $(LDOPTS) -lm -LDFLAGS = /LIBPATH:../lib-src libprop.lib -PROP_OPTS_BASIC = -strict $(CC_INCLUDE) -save_space -report -v2 -PROP_OPTS = $(PROP_OPTS_BASIC) -O14 -OBJ = obj +#LINKFLAGS = -L../lib -lprop $(LDOPTS) -lm +LINKFLAGS = /LIBPATH:../lib-src libprop.lib + +OUTPUT := prop$(DOTEXE) # # These are the prop include files @@ -99,26 +102,20 @@ OBJS = $(patsubst %.cc,%.$(OBJ),$(C_SRC)) # # How to build prop # -prop: $(OBJS) - link /OUT:$@.exe $(OBJS) $(LDFLAGS) +$(OUTPUT): $(OBJS) + $(call MKEXE,$@,$(OBJS) $(LINKFLAGS)) # strip $@ # -# Relink prop -# -build-prop: - $(CC) $(OBJS) -o prop $(LDFLAGS) - strip $@ -# # Regenerate source only # src: $(SRC) debug: $(SRC) $(OBJS) - $(CC) $(OBJS) -g -o prop $(LDFLAGS) + $(CC) $(OBJS) -g -o $(OUTPUT) $(LINKFLAGS) profile: $(SRC) $(OBJS) - $(CC) $(OBJS) -pg -g -o prop $(LDFLAGS) + $(CC) $(OBJS) -pg -g -o $(OUTPUT) $(LINKFLAGS) tar: tar -cvf - [a-z]*.h [a-z]*.cc [a-z]*.[ply]* *.tex \ @@ -129,13 +126,19 @@ tar: # Remove object files only # clean: - rm -f *.$(OBJ) + $(RM) *.$(OBJ) + +# +# Remove object files and prop binary +# +cleanall: clean + $(RM) $(OUTPUT) # # Remove all object files and generated code # -spotless: clean - rm -f $(GEN_SRC) +spotless: cleanall + $(RM) $(GEN_SRC) depends1: touch depends1 @@ -177,7 +180,7 @@ T%.cc: T%.pcc %.cc: %.pcc $(PROP) $(PROP_OPTS) $< %.$(OBJ): %.cc - $(CC) -c $(CFLAGS) $< + $(call MKOBJ,$@,$(CFLAGS) $<) T%: T%.cc - $(CC) $@.cc -o $@ -O6 $(CFLAGS) $(LDFLAGS) + $(CC) $@.cc -o $@ -O6 $(CFLAGS) $(LINKFLAGS) -- 2.11.4.GIT