e0b36a68847f74ca2ee554dd81f864c0af0668a9
[snark14.git] / Makefile
1 # Makefile to build an instance of snark14
2
3 PREFIX     = .
4 XERCES     = /usr/local/snark14
5
6 CC         = gcc
7 CXX        = g++
8 LD         = g++
9
10 CFLAGS    = -O4 -fPIC -DLINUX -D_REENTRANT -w -Wunused-parameter
11 CXXFLAGS  = -O4 -fPIC -DLINUX -D_REENTRANT -w -Wunused-parameter
12
13 LDFLAGS   = 
14
15 DIGFILED   = $(PREFIX)/src/DIGFile
16 DIGFILESD  = $(PREFIX)/src/DIGFileSnark
17 DIGFILERD  = $(PREFIX)/src/DIGRand
18
19 OBJDIR     = build
20 BINDIR     = bin
21 LIBSDIR    = lib
22
23 LDIGFILED  = $(LIBSDIR)/libDIGFile.so
24 LDIGFILESD = $(LIBSDIR)/libDIGFileSnark.so
25 LDIGFILERD = $(LIBSDIR)/libDIGRand.so
26
27 SRC_CXX    = $(foreach dir,src/snark,$(wildcard src/snark/*.cpp))
28 SRC_C      = $(foreach dir,src/snark,$(wildcard src/snark/*.c))
29 OBJ_CXX    = $(patsubst src/snark/%.cpp,build/%.o,$(SRC_CXX))
30 OBJ_C      = $(patsubst src/snark/%.c,build/%.o,$(SRC_C))
31 INCLUDES   = -I./include -I$(XERCES)/include $(addprefix -I,$(DIGFILED),$(DIGFILESD),$(DIGFILERD)) -Iinclude/DIGFile -Iinclude/DIGFileSnark -Iinclude/DIGRand -I/usr/include
32
33 LIBPATH   = -L$(PREFIX)/lib -L$(XERCES)/lib
34 LIBS      = $(LIBPATH) -lm -lxerces-c -lxerces-depdom -lDIGFile -lDIGFileSnark -lDIGRand
35
36 SNARK14    = snark14
37 INPUT      = snark14Input
38 INPUT_SRC  = $(foreach dir,tools/Input,$(wildcard tools/Input/*.cpp))
39 INPUT_INC  = $(foreach dir,tools/Input,$(wildcard tools/Input/*.h))
40 DISPLAY    = snark14Display
41 DISPLAY_SRC  = $(foreach dir,tools/Display,$(wildcard tools/Display/*.cpp))
42 DISPLAY_INC  = $(foreach dir,tools/Display,$(wildcard tools/Display/*.hpp))
43
44 all: $(OBJDIR) $(LIBSDIR) $(BINDIR) $(BINDIR)/$(SNARK14) $(BINDIR)/$(DISPLAY) $(BINDIR)/$(INPUT)
45
46 $(BINDIR)/$(SNARK14): $(LDIGFILED) $(LDIGFILESD) $(LDIGFILERD) $(OBJ_C) $(OBJ_CXX)
47         $(LD) $(LIBS) $(LDFLAGS) -o bin/$(SNARK14) $(OBJ_C) $(OBJ_CXX)
48
49 $(BINDIR)/$(DISPLAY): $(DISPLAY_SRC) $(DISPLAY_INC)
50         cd tools/Display ; make
51
52 $(BINDIR)/$(INPUT): $(INPUT_SRC) $(INPUT_INC)
53         cd tools/Input ; make
54
55 $(OBJDIR)/%.o : src/snark/%.c src/snark/.deps/%.Po
56         $(CC) -c $(CFLAGS) $(INCLUDES) -MT $@ -MD -MP -MF $(word 2,$^) -o $@ $<
57
58 $(OBJDIR)/%.o : src/snark/%.cpp src/snark/.deps/%.Po
59         $(CXX) -c $(CXXFLAGS) $(INCLUDES) -MT $@ -MD -MP -MF $(word 2,$^) -o $@ $<
60
61 $(OBJDIR)/bckray.o : src/snark/bckray.cpp
62         $(CXX) -c $(CXXFLAGS) $(INCLUDES) -MT $@ -MD -MP -o $@ $<
63
64 $(LDIGFILED) : $(DIGFILED)
65         $(MAKE) --directory=$<
66
67 $(LDIGFILESD) : $(DIGFILESD)
68         $(MAKE) --directory=$<
69
70 $(LDIGFILERD) : $(DIGFILERD)
71         $(MAKE) --directory=$<
72
73 $(OBJDIR):
74         @mkdir -p $@
75
76 $(LIBSDIR):
77         @mkdir -p $@
78
79 $(BINDIR):
80         @mkdir -p $@
81
82 clean:
83         @rm -rf $(BINDIR) $(OBJDIR) $(LIBSDIR) $(LDIGFILED) $(LDIGFILESD) $(LDIGFILERD)
84         @rm -rf $(DIGFILED)/*.o $(DIGFILESD)/*.o $(DIGFILERD)/*.o src/snark/*.o
85         @cd tools/Input ; make clean
86         @cd tools/Display ; make clean
87
88