1#* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2#* * 3#* This file is part of the test engine for MIPLIB2017 * 4#* * 5#* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 6# $Id$ 7 8VERBOSE = false 9CXX = clang++ 10CXX_o = -o # the trailing space is important 11LINKCXX = clang++ 12LINKCXX_L = -L 13LINKCXX_l = -l 14LINKCXX_o = -o # the trailing space is important 15FLAGS = 16OFLAGS = 17CXXFLAGS = -I/usr/local/include 18LDFLAGS = -L/usr/local/lib 19 20DOXY = doxygen 21 22#----------------------------------------------------------------------------- 23# GMP Library 24#----------------------------------------------------------------------------- 25GMP_LDFLAGS = $(LINKCXX_l)gmp 26 27#----------------------------------------------------------------------------- 28# ZLIB Library 29#----------------------------------------------------------------------------- 30ZLIB_LDFLAGS = $(LINKCXX_l)z 31 32#----------------------------------------------------------------------------- 33# Local Setting (include local make file setting if these exist) 34#----------------------------------------------------------------------------- 35-include make.local 36 37#----------------------------------------------------------------------------- 38# USER Flags 39#----------------------------------------------------------------------------- 40FLAGS += $(USRFLAGS) 41OFLAGS += $(USROFLAGS) 42CXXFLAGS += $(USRCXXFLAGS) 43LDFLAGS += $(USRLDFLAGS) 44 45#----------------------------------------------------------------------------- 46# Main Program 47#----------------------------------------------------------------------------- 48MAINNAME = solchecker 49 50MAINOBJ = gmputils.o \ 51 main.o \ 52 model.o \ 53 mpsinput.o 54 55BINDIR = bin 56OBJDIR = obj 57SRCDIR = src 58 59MAINSRC = $(addprefix $(SRCDIR)/,$(MAINOBJ:.o=.cpp)) 60 61MAIN = $(MAINNAME) 62MAINFILE = $(BINDIR)/$(MAIN) 63MAINOBJFILES = $(addprefix $(OBJDIR)/,$(MAINOBJ)) 64 65 66 67#----------------------------------------------------------------------------- 68# Rules 69#----------------------------------------------------------------------------- 70 71ifeq ($(VERBOSE),false) 72.SILENT: $(MAINFILE) $(MAINOBJFILES) 73endif 74 75.PHONY: all 76all: $(MAINFILE) $(MAINOBJFILES) 77 78$(OBJDIR): 79 @-mkdir -p $(OBJDIR) 80 81$(BINDIR): 82 @-mkdir -p $(BINDIR) 83 84.PHONY: clean 85clean: $(BINDIR) $(OBJDIR) 86ifneq ($(OBJDIR),) 87 @echo "-> remove objective files" 88 @-rm -f $(OBJDIR)/*.o 89 @-rmdir $(OBJDIR) 90endif 91 @echo "-> remove binary" 92 @-rm -f $(MAINFILE) 93 @-rmdir $(BINDIR) 94 95.PHONY: doc 96doc: 97 cd doc; $(DOXY) $(MAINNAME).dxy; 98 99$(MAINFILE): $(BINDIR) $(OBJDIR) $(MAINOBJFILES) 100 @echo "-> linking $@" 101 $(LINKCXX) $(MAINOBJFILES) $(LDFLAGS) $(ZLIB_LDFLAGS) $(GMP_LDFLAGS) $(LINKCXX_o)$@ 102 103$(OBJDIR)/%.o: $(SRCDIR)/%.cpp 104 @echo "-> compiling $@" 105 $(CXX) $(FLAGS) $(OFLAGS) $(BINOFLAGS) $(CXXFLAGS) -c $< $(CXX_o)$@ 106 107#---- EOF -------------------------------------------------------------------- 108