From: trevor_hansen Date: Wed, 28 Oct 2009 14:55:10 +0000 (+0000) Subject: Update make files so that the "-j" option will work. X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=9c59771df5e6eb9e2bfe1b2239e1673080b87be3;p=francis%2Fstp.git Update make files so that the "-j" option will work. On my machine (see trace below), with 4 cores, make is about 3 times quicker with the -j option. ================= ~/svn/stp-trunk$ make clean > /dev/null 2>&1 ~/svn/stp-trunk$ time make > /dev/null 2>&1 real 0m45.615s user 0m41.955s sys 0m3.152s ~/svn/stp-trunk$ clean > /dev/null 2>&1 ~/svn/stp-trunk$ time make -j > /dev/null 2>&1 real 0m17.616s user 0m44.771s sys 0m3.744s git-svn-id: https://stp-fast-prover.svn.sourceforge.net/svnroot/stp-fast-prover/trunk/stp@351 e59a4935-1847-0410-ae03-e826735625c1 --- diff --git a/Makefile b/Makefile index 4e0bb86..2bce0e0 100644 --- a/Makefile +++ b/Makefile @@ -16,14 +16,8 @@ LIBRARIES=lib/libstp.a HEADERS=$(SRC)/c_interface/*.h .PHONY: all -all: - $(MAKE) -C $(SRC)/AST - $(MAKE) -C $(SRC)/STPManager - $(MAKE) -C $(SRC)/printer - $(MAKE) -C $(SRC)/extlib-constbv - $(MAKE) -C $(SRC)/simplifier - $(MAKE) -C $(SRC)/absrefine_counterexample - $(MAKE) -C $(SRC)/to-sat +all: AST STPManager absrefine_counterexample to-sat simplifier printer c_interface extlib-constbv + ifdef CRYPTOMINISAT $(MAKE) -C $(SRC)/sat cryptominisat else @@ -31,7 +25,6 @@ else # $(MAKE) -C $(SRC)/sat simp # $(MAKE) -C $(SRC)/sat unsound endif - $(MAKE) -C $(SRC)/c_interface $(MAKE) -C $(SRC)/parser $(MAKE) -C $(SRC)/main $(AR) rc libstp.a $(SRC)/AST/*.o $(SRC)/STPManager/*.o $(SRC)/printer/*.o $(SRC)/absrefine_counterexample/*.o \ @@ -45,6 +38,18 @@ endif @echo "Compilation successful." @echo "Type 'make install' to install STP." +# +# During the build of AST some classes are built that most of the other +# classes depend upon. So in a parallel make, AST should be made first. + +.PHONY: AST +AST: + $(MAKE) -C $(SRC)/$@ + +STPManager absrefine_counterexample to-sat simplifier printer c_interface extlib-constbv: AST + $(MAKE) -C $(SRC)/$@ + +#### .PHONY: install install: all diff --git a/scripts/Makefile.in b/scripts/Makefile.in index 4e0bb86..2bce0e0 100644 --- a/scripts/Makefile.in +++ b/scripts/Makefile.in @@ -16,14 +16,8 @@ LIBRARIES=lib/libstp.a HEADERS=$(SRC)/c_interface/*.h .PHONY: all -all: - $(MAKE) -C $(SRC)/AST - $(MAKE) -C $(SRC)/STPManager - $(MAKE) -C $(SRC)/printer - $(MAKE) -C $(SRC)/extlib-constbv - $(MAKE) -C $(SRC)/simplifier - $(MAKE) -C $(SRC)/absrefine_counterexample - $(MAKE) -C $(SRC)/to-sat +all: AST STPManager absrefine_counterexample to-sat simplifier printer c_interface extlib-constbv + ifdef CRYPTOMINISAT $(MAKE) -C $(SRC)/sat cryptominisat else @@ -31,7 +25,6 @@ else # $(MAKE) -C $(SRC)/sat simp # $(MAKE) -C $(SRC)/sat unsound endif - $(MAKE) -C $(SRC)/c_interface $(MAKE) -C $(SRC)/parser $(MAKE) -C $(SRC)/main $(AR) rc libstp.a $(SRC)/AST/*.o $(SRC)/STPManager/*.o $(SRC)/printer/*.o $(SRC)/absrefine_counterexample/*.o \ @@ -45,6 +38,18 @@ endif @echo "Compilation successful." @echo "Type 'make install' to install STP." +# +# During the build of AST some classes are built that most of the other +# classes depend upon. So in a parallel make, AST should be made first. + +.PHONY: AST +AST: + $(MAKE) -C $(SRC)/$@ + +STPManager absrefine_counterexample to-sat simplifier printer c_interface extlib-constbv: AST + $(MAKE) -C $(SRC)/$@ + +#### .PHONY: install install: all diff --git a/src/AST/Makefile b/src/AST/Makefile index 63c5814..5fa33a1 100644 --- a/src/AST/Makefile +++ b/src/AST/Makefile @@ -17,9 +17,11 @@ ASTKind.h ASTKind.cpp: ASTKind.kinds genkinds.pl .PHONY: clean clean: - rm -rf *.o *~ bbtest asttest cnftest *.a ASTKind.cpp ASTKind.h depend .#* + rm -rf *.o *~ *.a ASTKind.cpp ASTKind.h depend .#* -depend: $(SRCS) ASTKind.h ASTKind.cpp +#If this depended on ASTKind.h & ASTKind.cpp, then ./genkinds.pl +#would be called each "clean". +depend: $(SRCS) ASTKind.kinds genkinds.pl @$(CXX) -MM -MG $(CXXFLAGS) $(SRCS) > $@ -include ./depend diff --git a/src/parser/Makefile b/src/parser/Makefile index 210d0dd..1c088dc 100644 --- a/src/parser/Makefile +++ b/src/parser/Makefile @@ -15,18 +15,21 @@ libparser.a: $(OBJS) lexCVC.cpp: CVC.lex parseCVC_defs.h ../AST/AST.h $(LEX) -olexCVC.cpp -Pcvc CVC.lex -parseCVC_defs.h parseCVC.cpp: CVC.y - $(YACC) -p cvc CVC.y - @cp y.tab.c parseCVC.cpp - @cp y.tab.h parseCVC_defs.h +#For rules with multiple targets. Make runs the rule once for each target. +#These rules are "pattern rules" which only run once (rather than twice). +parseCV%_defs.h parseCV%.cpp: CVC.y + $(YACC) -o cvc.tab.c -p cvc CVC.y + @cp cvc.tab.c parseCVC.cpp + @cp cvc.tab.h parseCVC_defs.h lexSMT.cpp: parseSMT_defs.h smtlib.lex ../AST/AST.h - $(LEX) -olexSMT.cpp -Psmt smtlib.lex + $(LEX) -o lexSMT.cpp --prefix smt smtlib.lex + +parseSM%_defs.h parseSM%.cpp:smtlib.y + $(YACC) -o smt.tab.c -p smt smtlib.y + @cp smt.tab.c parseSMT.cpp + @cp smt.tab.h parseSMT_defs.h -parseSMT_defs.h parseSMT.cpp:smtlib.y - $(YACC) -p smt smtlib.y - @cp y.tab.c parseSMT.cpp - @cp y.tab.h parseSMT_defs.h clean: - rm -rf *.o *.a parseCVC_defs.h parseSMT_defs.h *~ lexSMT.cpp parseSMT.cpp lexCVC.cpp parseCVC.cpp *.output parser y.tab.* lex.yy.c .#* + rm -rf *.o parseCVC_defs.h parseSMT_defs.h *~ lexSMT.cpp parseSMT.cpp lexCVC.cpp parseCVC.cpp *.output parser smt.tab.* cvc.tab.* lex.yy.c .#* \ No newline at end of file diff --git a/src/sat/core/Makefile b/src/sat/core/Makefile index 50d1c04..eb2bee2 100644 --- a/src/sat/core/Makefile +++ b/src/sat/core/Makefile @@ -6,7 +6,7 @@ CFLAGS += -I$(MTL) -Wall -DEXT_HASH_MAP -ffloat-store $(CFLAGS_M32) LFLAGS = -lz include ../mtl/template.mk -all: +all: libminisat.a ranlib libminisat.a cp *.or ../ cp libminisat.a ../