# Makefile to build an instance of snark14
+.PHONY: all install clean
PREFIX = .
-XERCES = ~/snark14kmr
+XERCES = .
CC = gcc
CXX = g++
LD = g++
-CFLAGS = -O4 -fPIC -DLINUX -D_REENTRANT -w -Wunused-parameter
-CXXFLAGS = -O4 -fPIC -DLINUX -D_REENTRANT -w -Wunused-parameter
+CFLAGS = -O4 -msse4 -fPIC -DLINUX -D_REENTRANT -w -Wunused-parameter
+CXXFLAGS = -O4 -msse4 -fPIC -DLINUX -D_REENTRANT -w -Wunused-parameter
LDFLAGS =
LDIGFILED = $(LIBSDIR)/libDIGFile.so
LDIGFILESD = $(LIBSDIR)/libDIGFileSnark.so
LDIGFILERD = $(LIBSDIR)/libDIGRand.so
-LSNARK14 = $(LIBSDIR)/libsnark14.a
+LSNARK14D = $(LIBSDIR)/libsnark14.so
SRC_CXX = $(foreach dir,src/snark,$(wildcard src/snark/*.cpp))
SRC_C = $(foreach dir,src/snark,$(wildcard src/snark/*.c))
OBJ_C = $(patsubst src/snark/%.c,build/%.o,$(SRC_C))
INCLUDES = -I./include $(addprefix -I,$(DIGFILED),$(DIGFILESD),$(DIGFILERD)) -Iinclude/DIGFile -Iinclude/DIGFileSnark -Iinclude/DIGRand -I/usr/include
-#LIBPATH = -L$(PREFIX)/lib -L$(XERCES)/lib
LIBPATH = -L$(PREFIX)/lib
LIBS = $(LIBPATH) -lm -lxerces-c -lDIGFile -lDIGFileSnark -lDIGRand
DISPLAY = snark14Display
DISPLAY_SRC = $(foreach dir,tools/Display,$(wildcard tools/Display/*.cpp))
DISPLAY_INC = $(foreach dir,tools/Display,$(wildcard tools/Display/*.hpp))
+
+all: $(OBJDIR) $(LIBSDIR) $(BINDIR) $(BINDIR)/$(SNARK14) $(BINDIR)/$(DISPLAY) $(BINDIR)/$(INPUT) $(LSNARK14D)
-all: $(OBJDIR) $(LIBSDIR) $(BINDIR) $(BINDIR)/$(SNARK14) $(BINDIR)/$(DISPLAY) $(BINDIR)/$(INPUT)
-
-$(BINDIR)/$(SNARK14): $(LDIGFILED) $(LDIGFILESD) $(LDIGFILERD) $(OBJ_C) $(OBJ_CXX) $(LSNARK14)
+$(BINDIR)/$(SNARK14): $(LDIGFILED) $(LDIGFILESD) $(LDIGFILERD) $(OBJ_C) $(OBJ_CXX)
$(LD) $(LIBPATH) $(LDFLAGS) $(OBJ_C) $(OBJ_CXX) $(LIBS) -o bin/$(SNARK14)
+# Does not link correctly with shared library file libsnark14.so
+#$(BINDIR)/$(SNARK14): $(LDIGFILED) $(LDIGFILESD) $(LDIGFILERD) $(LSNARK14D)
+# $(LD) $(LIBPATH) $(LDFLAGS) -o bin/$(SNARK14) $(LIBS) -lsnark14
+
$(BINDIR)/$(DISPLAY): $(DISPLAY_SRC) $(DISPLAY_INC)
cd tools/Display ; make
$(BINDIR)/$(INPUT): $(INPUT_SRC) $(INPUT_INC)
cd tools/Input ; make
-$(OBJDIR)/%.o : src/snark/%.c src/snark/.deps/%.Po
- $(CC) -c $(CFLAGS) $(INCLUDES) -MT $@ -MD -MP -MF $(word 2,$^) -o $@ $<
+$(OBJDIR)/%.o : src/snark/%.c #src/snark/.deps/%.Po
+# $(CC) -c $(CFLAGS) $(INCLUDES) -MT $@ -MD -MP -MF $(word 2,$^) $< -o $@
+ $(CC) -c $(CFLAGS) $(INCLUDES) -MT $@ -MD -MP $< -o $@
-$(OBJDIR)/%.o : src/snark/%.cpp src/snark/.deps/%.Po
- $(CXX) -c $(CXXFLAGS) $(INCLUDES) -MT $@ -MD -MP -MF $(word 2,$^) -o $@ $<
+$(OBJDIR)/%.o : src/snark/%.cpp #src/snark/.deps/%.Po
+# $(CXX) -c $(CXXFLAGS) $(INCLUDES) -MT $@ -MD -MP -MF $(word 2,$^) -o $@ $<
+ $(CXX) -c $(CXXFLAGS) $(INCLUDES) -MT $@ -MD -MP -o $@ $<
$(OBJDIR)/bckray.o : src/snark/bckray.cpp
$(CXX) -c $(CXXFLAGS) $(INCLUDES) -MT $@ -MD -MP -o $@ $<
$(LDIGFILERD) : $(DIGFILERD)
$(MAKE) --directory=$<
-$(LSNARK14) : $(SNARK14D)
- $(MAKE) --directory=$<
+# Make shared library
+$(LSNARK14D) : $(OBJ_CXX) $(OBJ_C)
+ $(LD) --shared $(LDFLAGS) -o $(LSNARK14D) $(OBJ_CXX) $(OBJ_C) $(LIBS)
$(OBJDIR):
@mkdir -p $@
$(BINDIR):
@mkdir -p $@
+install:
+ @cp lib/* /usr/local/lib/.
+ @ldconfig
+ @cp bin/* /usr/local/bin/.
+
clean:
@rm -rf $(BINDIR) $(OBJDIR) $(LIBSDIR) $(LDIGFILED) $(LDIGFILESD) $(LDIGFILERD)
@rm -rf $(DIGFILED)/*.o $(DIGFILESD)/*.o $(DIGFILERD)/*.o src/snark/*.o
+ @rm -rf qt-x11-free-*
@cd tools/Input ; make clean
@cd tools/Display ; make clean
-
+ @cd examples ; make clean