Build example user_defined programs
[snark14.git] / src / snark / Makefile
1 # Makefile to build an instance of snark14
2
3 ROOTDIR    = ../..
4 XERCES     = ../..
5
6 CC         = gcc
7 CXX        = g++
8 LD         = g++
9
10 LIBDIR    = $(ROOTDIR)/lib
11
12 CFLAGS  = -O4 -fPIC -DLINUX -D_REENTRANT -w -Wunused-parameter
13 CXXFLAGS  = -O4 -fPIC -DLINUX -D_REENTRANT -w -Wunused-parameter
14
15 LDFLAGS   = 
16
17 SRC_CXX    = $(foreach dir,.,$(wildcard ./*.cpp))
18 SRC_CC     = $(foreach dir,.,$(wildcard ./*.c))
19 OBJ_CXX    = $(patsubst ./%.cpp,../../build/%.o,$(SRC_CXX))
20 OBJ_CC     = $(patsubst ./%.c,../../build/%.o,$(SRC_CC))
21
22 INCLUDES   = -I/usr/include -I./include -I$(XERCES) -I$(XERCES)/include \
23              -I$(ROOTDIR)/include/DIGFile -I$(ROOTDIR)/include/DIGFileSnark \
24              -I$(ROOTDIR)/include/DIGRand
25
26 LIBPATH   = -L$(PREFIX)/lib -L$(XERCES)/lib
27 LIBS      = $(LIBPATH) -lm -lxerces-c
28
29 TARGET    = $(LIBDIR)/libsnark14.so
30
31 .PHONY: all
32
33 all: $(LIBDIR) $(TARGET)
34
35 $(TARGET): $(OBJ_CXX) $(OBJ_CC)
36         $(LD) --shared $(LIBS) $(LDFLAGS) -o $(TARGET) $(OBJ_CXX) $(OBJ_CC)
37
38 /%.o : ./%.c .deps/%.Po
39         $(CC) -c $(CFLAGS) $(INCLUDES) -MT $@ -MD -MP -MF $(word 2,$^) -o $@ $<
40
41 %.o : ./%.cpp .deps/%.Po
42         $(CXX) -c $(CXXFLAGS) $(INCLUDES) -MT $@ -MD -MP -MF $(word 2,$^) -o $@ $<
43
44 $(LIBDIR) :
45         @mkdir -p $(LIBDIR)
46
47 clean:
48         @rm -rf $(OBJ_CXX) $(TARGET)
49