about summary refs log tree commit diff homepage
path: root/stp/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'stp/Makefile')
-rw-r--r--stp/Makefile64
1 files changed, 64 insertions, 0 deletions
diff --git a/stp/Makefile b/stp/Makefile
new file mode 100644
index 00000000..f66644a5
--- /dev/null
+++ b/stp/Makefile
@@ -0,0 +1,64 @@
+ # STP (Simple Theorem Prover) top level makefile
+ #
+ # To make in debug mode, type 'make "CLFAGS=-ggdb"
+ # To make in optimized mode, type 'make "CFLAGS=-O2" 
+
+include Makefile.common
+
+BINARIES=bin/stp
+LIBS=AST/libast.a sat/libsatsolver.a simplifier/libsimplifier.a bitvec/libconsteval.a constantbv/libconstantbv.a c_interface/libcinterface.a
+DIRS=AST sat simplifier bitvec c_interface constantbv parser
+
+# NB: the TAGS target is a hack to get around this recursive make nonsense
+# we want all the source and header files generated before we make tags
+.PHONY: all
+all: lib/libstp.a bin/stp include/stp/c_interface.h
+
+AST/libast.a:
+	@$(MAKE) -q -C `dirname $@` || $(MAKE) -C `dirname $@`
+sat/libsatsolver.a: AST/libast.a
+	@$(MAKE) -q -C `dirname $@` || $(MAKE) -C `dirname $@`
+simplifier/libsimplifier.a: AST/libast.a
+	@$(MAKE) -q -C `dirname $@` || $(MAKE) -C `dirname $@`
+bitvec/libconsteval.a: AST/libast.a
+	@$(MAKE) -q -C `dirname $@` || $(MAKE) -C `dirname $@`
+constantbv/libconstantbv.a: AST/libast.a
+	@$(MAKE) -q -C `dirname $@` || $(MAKE) -C `dirname $@`
+c_interface/libcinterface.a: AST/libast.a
+	@$(MAKE) -q -C `dirname $@` || $(MAKE) -C `dirname $@`
+parser/parser: $(LIBS)
+	@$(MAKE) -q -C `dirname $@` || $(MAKE) -C `dirname $@`
+
+lib/libstp.a: parser/parser $(LIBS)
+	@mkdir -p lib
+	rm -f $@
+	@for dir in $(DIRS); do \
+		$(AR) rc $@ $$dir/*.o; \
+	done
+	$(RANLIB) $@
+
+bin/stp: parser/parser $(LIBS)
+	@mkdir -p bin
+	@cp parser/parser $@
+
+include/stp/c_interface.h: $(LIBS)
+	@mkdir -p include/stp
+	@cp c_interface/c_interface.h $@
+
+.PHONY: clean
+clean:
+	rm -rf *~
+	rm -rf *.a
+	rm -rf lib/*.a
+	rm -rf bin/*~
+	rm -rf bin/stp
+	rm -rf *.log
+	rm -f TAGS
+	$(MAKE) clean -C AST
+	$(MAKE) clean -C sat
+	$(MAKE) clean -C simplifier
+	$(MAKE) clean -C bitvec
+	$(MAKE) clean -C parser
+	$(MAKE) clean -C c_interface
+	$(MAKE) clean -C constantbv
+