Files
ortools-clone/Makefile

230 lines
6.8 KiB
Makefile

# Please edit the following:
PYTHON_VER=2.6
GFLAGS_DIR=../gflags-1.3
SWIG_BINARY=swig
ZLIB_DIR=../zlib-1.2.5
# ----- No more editing below -----
PYTHON_INC=-I/usr/include/python$(PYTHON_VER) -I/usr/lib/python$(PYTHON_VER)
DEBUG=-O -DNDEBUG
SYSCFLAGS=-fPIC
CCC=g++
GFLAGS_INC = -I$(GFLAGS_DIR)/include
ZLIB_INC = -I$(ZLIB_DIR)/include
CFLAGS= $(SYSCFLAGS) $(DEBUG) -I. -DARCH_K8 $(GFLAGS_INC) $(ZLIB_INC) \
-Wno-deprecated
# ----- OS Dependent -----
OS=$(shell uname -s)
ifeq ($(OS),Linux)
LD = gcc -shared
GFLAGS_LNK = -Wl,-rpath $(GFLAGS_DIR)/lib -L$(GFLAGS_DIR)/lib -lgflags
ZLIB_LNK = -Wl,-rpath $(ZLIB_DIR)/lib -L$(ZLIB_DIR)/lib -lz
endif
ifeq ($(OS),Darwin) # Assume Mac Os X
LD = ld -arch x86_64 -bundle -flat_namespace -undefined suppress
GFLAGS_LNK = -L$(GFLAGS_DIR)/lib -lgflags
ZLIB_LNK = -L$(ZLIB_DIR)/lib -lz
endif
LDFLAGS=$(GFLAGS_LNK) $(ZLIB_LNK)
# Real targets
BINARIES=nqueens golomb magic_square cryptarithm
all: libs $(BINARIES) pylib
libs: libcp.a libutil.a libbase.a libalgorithms.a libgraph.a
clean:
rm -f *.a
rm -f objs/*.o
rm -f $(BINARIES)
rm constraint_solver/*wrap*
rm -f *.so
# CP Lib.
CP_LIB_OBJS = \
objs/alldiff_cst.o\
objs/assignment.o\
objs/constraint_solver.o\
objs/constraints.o\
objs/count_cst.o\
objs/element.o\
objs/expr_array.o\
objs/expr_cst.o\
objs/expressions.o\
objs/interval.o\
objs/local_search.o\
objs/pack.o\
objs/range_cst.o\
objs/sched_search.o\
objs/search.o\
objs/table.o\
objs/timetabling.o\
objs/utilities.o
objs/alldiff_cst.o:constraint_solver/alldiff_cst.cc
$(CCC) $(CFLAGS) -c constraint_solver/alldiff_cst.cc -o objs/alldiff_cst.o
objs/assignment.o:constraint_solver/assignment.cc
$(CCC) $(CFLAGS) -c constraint_solver/assignment.cc -o objs/assignment.o
objs/constraint_solver.o:constraint_solver/constraint_solver.cc
$(CCC) $(CFLAGS) -c constraint_solver/constraint_solver.cc -o objs/constraint_solver.o
objs/constraints.o:constraint_solver/constraints.cc
$(CCC) $(CFLAGS) -c constraint_solver/constraints.cc -o objs/constraints.o
objs/count_cst.o:constraint_solver/count_cst.cc
$(CCC) $(CFLAGS) -c constraint_solver/count_cst.cc -o objs/count_cst.o
objs/element.o:constraint_solver/element.cc
$(CCC) $(CFLAGS) -c constraint_solver/element.cc -o objs/element.o
objs/expr_array.o:constraint_solver/expr_array.cc
$(CCC) $(CFLAGS) -c constraint_solver/expr_array.cc -o objs/expr_array.o
objs/expr_cst.o:constraint_solver/expr_cst.cc
$(CCC) $(CFLAGS) -c constraint_solver/expr_cst.cc -o objs/expr_cst.o
objs/expressions.o:constraint_solver/expressions.cc
$(CCC) $(CFLAGS) -c constraint_solver/expressions.cc -o objs/expressions.o
objs/interval.o:constraint_solver/interval.cc
$(CCC) $(CFLAGS) -c constraint_solver/interval.cc -o objs/interval.o
objs/local_search.o:constraint_solver/local_search.cc
$(CCC) $(CFLAGS) -c constraint_solver/local_search.cc -o objs/local_search.o
objs/pack.o:constraint_solver/pack.cc
$(CCC) $(CFLAGS) -c constraint_solver/pack.cc -o objs/pack.o
objs/range_cst.o:constraint_solver/range_cst.cc
$(CCC) $(CFLAGS) -c constraint_solver/range_cst.cc -o objs/range_cst.o
objs/sched_search.o:constraint_solver/sched_search.cc
$(CCC) $(CFLAGS) -c constraint_solver/sched_search.cc -o objs/sched_search.o
objs/search.o:constraint_solver/search.cc
$(CCC) $(CFLAGS) -c constraint_solver/search.cc -o objs/search.o
objs/table.o:constraint_solver/table.cc
$(CCC) $(CFLAGS) -c constraint_solver/table.cc -o objs/table.o
objs/timetabling.o:constraint_solver/timetabling.cc
$(CCC) $(CFLAGS) -c constraint_solver/timetabling.cc -o objs/timetabling.o
objs/utilities.o:constraint_solver/utilities.cc
$(CCC) $(CFLAGS) -c constraint_solver/utilities.cc -o objs/utilities.o
libcp.a: $(CP_LIB_OBJS)
ar rv libcp.a $(CP_LIB_OBJS)
# Util library.
UTIL_LIB_OBJS=\
objs/bitset.o
objs/bitset.o:util/bitset.cc
$(CCC) $(CFLAGS) -c util/bitset.cc -o objs/bitset.o
libutil.a: $(UTIL_LIB_OBJS)
ar rv libutil.a $(UTIL_LIB_OBJS)
# Graph library.
GRAPH_LIB_OBJS=\
objs/bron_kerbosch.o
objs/bron_kerbosch.o:graph/bron_kerbosch.cc
$(CCC) $(CFLAGS) -c graph/bron_kerbosch.cc -o objs/bron_kerbosch.o
libgraph.a: $(GRAPH_LIB_OBJS)
ar rv libgraph.a $(GRAPH_LIB_OBJS)
# Algorithms library.
ALGORITHMS_LIB_OBJS=\
objs/hungarian.o
objs/hungarian.o:algorithms/hungarian.cc
$(CCC) $(CFLAGS) -c algorithms/hungarian.cc -o objs/hungarian.o
libalgorithms.a: $(ALGORITHMS_LIB_OBJS)
ar rv libalgorithms.a $(ALGORITHMS_LIB_OBJS)
# Base library.
BASE_LIB_OBJS=\
objs/bitmap.o\
objs/callback.o\
objs/random.o\
objs/stringpiece.o\
objs/stringprintf.o\
objs/util.o
objs/bitmap.o:base/bitmap.cc
$(CCC) $(CFLAGS) -c base/bitmap.cc -o objs/bitmap.o
objs/callback.o:base/callback.cc
$(CCC) $(CFLAGS) -c base/callback.cc -o objs/callback.o
objs/random.o:base/random.cc
$(CCC) $(CFLAGS) -c base/random.cc -o objs/random.o
objs/stringpiece.o:base/stringpiece.cc
$(CCC) $(CFLAGS) -c base/stringpiece.cc -o objs/stringpiece.o
objs/stringprintf.o:base/stringprintf.cc
$(CCC) $(CFLAGS) -c base/stringprintf.cc -o objs/stringprintf.o
objs/util.o:base/util.cc
$(CCC) $(CFLAGS) -c base/util.cc -o objs/util.o
libbase.a: $(BASE_LIB_OBJS)
ar rv libbase.a $(BASE_LIB_OBJS)
# Examples
objs/cryptarithm.o:examples/cryptarithm.cc
$(CCC) $(CFLAGS) -c examples/cryptarithm.cc -o objs/cryptarithm.o
cryptarithm: libutil.a libcp.a libbase.a objs/cryptarithm.o
$(CCC) $(CFLAGS) $(LDFLAGS) objs/cryptarithm.o libcp.a libutil.a libbase.a -o cryptarithm
objs/golomb.o:examples/golomb.cc
$(CCC) $(CFLAGS) -c examples/golomb.cc -o objs/golomb.o
golomb: libutil.a libcp.a libbase.a objs/golomb.o
$(CCC) $(CFLAGS) $(LDFLAGS) objs/golomb.o libcp.a libutil.a libbase.a -o golomb
objs/magic_square.o:examples/magic_square.cc
$(CCC) $(CFLAGS) -c examples/magic_square.cc -o objs/magic_square.o
magic_square: libutil.a libcp.a libbase.a objs/magic_square.o
$(CCC) $(CFLAGS) $(LDFLAGS) objs/magic_square.o libcp.a libutil.a libbase.a -o magic_square
objs/nqueens.o: examples/nqueens.cc
$(CCC) $(CFLAGS) -c examples/nqueens.cc -o objs/nqueens.o
nqueens: libutil.a libcp.a libbase.a objs/nqueens.o
$(CCC) $(CFLAGS) $(LDFLAGS) objs/nqueens.o libcp.a libutil.a libbase.a -o nqueens
# SWIG
pylib: _pywrapcp.so constraint_solver/pywrapcp.py $(LIBS)
constraint_solver/pywrapcp.py: constraint_solver/constraint_solver.swig constraint_solver/constraint_solver.h constraint_solver/constraint_solveri.h base/base.swig
$(SWIG_BINARY) -c++ -python -o constraint_solver/constraint_solver_wrap.cc -module pywrapcp constraint_solver/constraint_solver.swig
constraint_solver/constraint_solver_wrap.cc: constraint_solver/pywrapcp.py
objs/constraint_solver_wrap.o: constraint_solver/constraint_solver_wrap.cc
$(CCC) $(CFLAGS) $(PYTHON_INC) -c constraint_solver/constraint_solver_wrap.cc -o objs/constraint_solver_wrap.o
_pywrapcp.so: objs/constraint_solver_wrap.o $(LIBS)
$(LD) -o _pywrapcp.so objs/constraint_solver_wrap.o libcp.a libutil.a libbase.a $(GFLAGS_LNK)