about summary refs log tree commit diff homepage
path: root/stp/Makefile
blob: f66644a5a13120ba1359370369e8afcf28180264 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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