Change sprintf to snprintf for buffer overflow protection
[snark14.git] / Makefile
1 # Makefile to build an instance of snark14
2
3 PREFIX     = .
4 XERCES     = .
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 SNARK14D   = $(PREFIX)/src/snark
19
20 OBJDIR     = build
21 BINDIR     = bin
22 LIBSDIR    = lib
23
24 LDIGFILED  = $(LIBSDIR)/libDIGFile.so
25 LDIGFILESD = $(LIBSDIR)/libDIGFileSnark.so
26 LDIGFILERD = $(LIBSDIR)/libDIGRand.so
27 LSNARK14   = $(LIBSDIR)/libsnark14.so
28
29 SRC_CXX    = $(foreach dir,src/snark,$(wildcard src/snark/*.cpp))
30 SRC_C      = $(foreach dir,src/snark,$(wildcard src/snark/*.c))
31 OBJ_CXX    = $(patsubst src/snark/%.cpp,build/%.o,$(SRC_CXX))
32 OBJ_C      = $(patsubst src/snark/%.c,build/%.o,$(SRC_C))
33 INCLUDES   = -I./include $(addprefix -I,$(DIGFILED),$(DIGFILESD),$(DIGFILERD)) -Iinclude/DIGFile -Iinclude/DIGFileSnark -Iinclude/DIGRand -I/usr/include
34
35 LIBPATH   = -L$(PREFIX)/lib
36 LIBS      = $(LIBPATH) -lm -lxerces-c -lDIGFile -lDIGFileSnark -lDIGRand
37
38 SNARK14    = snark14
39 INPUT      = snark14Input
40 INPUT_SRC  = $(foreach dir,tools/Input,$(wildcard tools/Input/*.cpp))
41 INPUT_INC  = $(foreach dir,tools/Input,$(wildcard tools/Input/*.h))
42 DISPLAY    = snark14Display
43 DISPLAY_SRC  = $(foreach dir,tools/Display,$(wildcard tools/Display/*.cpp))
44 DISPLAY_INC  = $(foreach dir,tools/Display,$(wildcard tools/Display/*.hpp))
45  
46 all: $(OBJDIR) $(LIBSDIR) $(BINDIR) $(BINDIR)/$(SNARK14) $(BINDIR)/$(DISPLAY) $(BINDIR)/$(INPUT) $(LSNARK14)
47
48 $(BINDIR)/$(SNARK14): $(LDIGFILED) $(LDIGFILESD) $(LDIGFILERD) $(OBJ_C) $(OBJ_CXX)
49         $(LD) $(LIBPATH) $(LDFLAGS) $(OBJ_C) $(OBJ_CXX) $(LIBS) -o bin/$(SNARK14)
50
51 $(BINDIR)/$(DISPLAY): $(DISPLAY_SRC) $(DISPLAY_INC)
52         cd tools/Display ; make
53
54 $(BINDIR)/$(INPUT): $(INPUT_SRC) $(INPUT_INC)
55         cd tools/Input ; make
56
57 $(OBJDIR)/%.o : src/snark/%.c #src/snark/.deps/%.Po
58 #       $(CC) -c $(CFLAGS) $(INCLUDES) -MT $@ -MD -MP -MF $(word 2,$^) $< -o $@ 
59         $(CC) -c $(CFLAGS) $(INCLUDES) -MT $@ -MD -MP $< -o $@ 
60
61 $(OBJDIR)/%.o : src/snark/%.cpp #src/snark/.deps/%.Po
62 #       $(CXX) -c $(CXXFLAGS) $(INCLUDES) -MT $@ -MD -MP -MF $(word 2,$^) -o $@ $<
63         $(CXX) -c $(CXXFLAGS) $(INCLUDES) -MT $@ -MD -MP -o $@ $<
64
65 $(OBJDIR)/bckray.o : src/snark/bckray.cpp
66         $(CXX) -c $(CXXFLAGS) $(INCLUDES) -MT $@ -MD -MP -o $@ $<
67
68 $(LDIGFILED) : $(DIGFILED)
69         $(MAKE) --directory=$<
70
71 $(LDIGFILESD) : $(DIGFILESD)
72         $(MAKE) --directory=$<
73
74 $(LDIGFILERD) : $(DIGFILERD)
75         $(MAKE) --directory=$<
76
77 $(LSNARK14) : $(SNARK14D) $(BINDIR)/$(SNARK14)
78         $(MAKE) --directory=$<
79
80 $(OBJDIR):
81         @mkdir -p $@
82
83 $(LIBSDIR):
84         @mkdir -p $@
85
86 $(BINDIR):
87         @mkdir -p $@
88
89 clean:
90         @rm -rf $(BINDIR) $(OBJDIR) $(LIBSDIR) $(LDIGFILED) $(LDIGFILESD) $(LDIGFILERD)
91         @rm -rf $(DIGFILED)/*.o $(DIGFILESD)/*.o $(DIGFILERD)/*.o src/snark/*.o
92         @rm -rf qt-x11-free-*
93         @cd tools/Input ; make clean
94         @cd tools/Display ; make clean
95         @cd examples ; make clean
96