1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
|
#==========================================================================#
# This is a 'makefile.in' template with '@CXX@' and '@CXXFLAGS@' parameters.
# This makefile requires GNU make.
#==========================================================================#
# The '../scripts/make-build-header.sh' script searches for the next two
# lines to figure out the compiler and compilation flags. This information
# is then used to generate corresponding macros in 'build.hpp'.
CXX=@CXX@
CXXFLAGS=@CXXFLAGS@
CPPFLAGS=@CPPFLAGS@
LDFLAGS=@LDFLAGS@
LIBS=@LIBS@
CONTRIB=@CONTRIB@
IPASIR=@IPASIR@
############################################################################
# It is usually not necessary to change anything below this line! #
############################################################################
SRC_APP=cadical.cpp mobical.cpp
SRC_IPASIR=src/ipasir.cpp
SRC_SOLVER=$(subst ../src/,,$(sort $(wildcard ../src/*.cpp)))
SRC_CONTRIB=$(subst ../contrib/,,$(sort $(wildcard ../contrib/*.cpp)))
FILT_SOLVER=$(filter-out $(SRC_APP),$(SRC_SOLVER))
FILT_SOLVER:=$(if $(filter-out no,$(IPASIR)),$(FILT_SOLVER),$(filter-out $(SRC_IPASIR), $(FILT_SOLVER)))
FILT_CONTRIB=$(if $(filter-out no,$(CONTRIB)),$(SRC_CONTRIB),)
OBJ_SOLVER=$(FILT_SOLVER:.cpp=.o)
OBJ_CONTRIB=$(FILT_CONTRIB:.cpp=.o)
# Include for the current build directory is required for including the
# generated build header 'build.hpp'.
DIR=../$(shell pwd|sed -e 's,.*/,,')
COMPILE=$(CXX) $(CXXFLAGS) $(CPPFLAGS) -I$(DIR) -I../src
#--------------------------------------------------------------------------#
all: libcadical.a cadical mobical
#--------------------------------------------------------------------------#
.SUFFIXES: .cpp .o
%.o: ../*/%.cpp ../src/*.hpp makefile
$(COMPILE) -c $<
#--------------------------------------------------------------------------#
# Application binaries (the stand alone solver 'cadical' and the model based
# tester 'mobical') and the library are the main build targets.
cadical: cadical.o libcadical.a makefile
$(COMPILE) -o $@ $< $(LDFLAGS) -L. -lcadical $(LIBS)
mobical: mobical.o libcadical.a makefile $(LIBS)
$(COMPILE) -o $@ $< $(LDFLAGS) -L. -lcadical
libcadical.a: $(OBJ_SOLVER) $(OBJ_CONTRIB) makefile
ar rc $@ $(OBJ_SOLVER) $(OBJ_CONTRIB)
#--------------------------------------------------------------------------#
# Note that 'build.hpp' is generated and resides in the build directory.
build.hpp: always
../scripts/make-build-header.sh > build.hpp
version.o: build.hpp
update:
../scripts/update-version.sh
#--------------------------------------------------------------------------#
# These two 'C' interfaces include '.h' headers and thus require explicitly
# defined additional dependencies.
ccadical.o: ../src/ccadical.h
ipasir.o: ../src/ipasir.h ../src/ccadical.h
#--------------------------------------------------------------------------#
analyze: all
$(COMPILE) --analyze ../src/*.cpp
$(COMPILE) --analyze ../contrib/*.cpp
format:
clang-format -i ../*/*.[ch]pp
clang-format -i ../*/*.[ch]
clang-format -i ../test/*/*.[ch]pp
clang-format -i ../test/*/*.[ch]
clean:
rm -f *.o *.a cadical mobical makefile build.hpp
rm -f *.gcda *.gcno *.gcov gmon.out
test: all
CADICALBUILD="$(DIR)" $(MAKE) -j1 -C ../test
#--------------------------------------------------------------------------#
.PHONY: all always analyze clean test update format
|