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