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