Skip to content

Commit

Permalink
Add install target to Makefile.
Browse files Browse the repository at this point in the history
  • Loading branch information
niklasso committed Jan 3, 2011
1 parent 09cad4f commit b647459
Showing 1 changed file with 46 additions and 20 deletions.
66 changes: 46 additions & 20 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,6 @@ all: r lr lsh

## Configurable options ###########################################################################

# C++ Compiler:
MINISAT_CXX ?= $(CXX)

# Directory to store object files, libraries, executables, and dependencies:
BUILD_DIR ?= build

Expand All @@ -28,41 +25,50 @@ MINISAT_DEB ?= -O0 -D DEBUG
MINISAT_PRF ?= -O3 -D NDEBUG
MINISAT_FPIC ?= -fpic

# Target file names
MINISAT ?= minisat# Name of MiniSat main executable.
MINISAT_CORE ?= minisat_core# Name of simplified MiniSat executable (only core solver support).
MINISAT_SLIB ?= libminisat.a# Name of MiniSat static library.
MINISAT_DLIB ?= libminisat.so# Name of MiniSat shared library.
# GNU Standard Install Prefix
prefix ?= /usr/local

## Write Configuration ###########################################################################

config:
rm -rf config.mk
echo 'MINISAT_CXX?=$(MINISAT_CXX)' >> config.mk
echo 'BUILD_DIR?=$(BUILD_DIR)' >> config.mk
echo 'MINISAT_RELSYM?=$(MINISAT_RELSYM)' >> config.mk
echo 'MINISAT_REL?=$(MINISAT_REL)' >> config.mk
echo 'MINISAT_DEB?=$(MINISAT_DEB)' >> config.mk
echo 'MINISAT_PRF?=$(MINISAT_PRF)' >> config.mk
echo 'MINISAT_FPIC?=$(MINISAT_FPIC)' >> config.mk
echo 'MINISAT?=$(MINISAT)' >> config.mk
echo 'MINISAT_CORE?=$(MINISAT_CORE)' >> config.mk
echo 'MINISAT_SLIB?=$(MINISAT_SLIB)' >> config.mk
echo 'MINISAT_DLIB?=$(MINISAT_DLIB)' >> config.mk
echo 'prefix?=$(prefix)' >> config.mk

## Configurable options end #######################################################################

INSTALL ?= install

# GNU Standard Install Variables
exec_prefix ?= $(prefix)
includedir ?= $(prefix)/include
bindir ?= $(exec_prefix)/bin
libdir ?= $(exec_prefix)/lib
datarootdir ?= $(prefix)/share
mandir ?= $(datarootdir)/man

# Target file names
MINISAT = minisat# Name of MiniSat main executable.
MINISAT_CORE = minisat_core# Name of simplified MiniSat executable (only core solver support).
MINISAT_SLIB = libminisat.a# Name of MiniSat static library.
MINISAT_DLIB = libminisat.so# Name of MiniSat shared library.

# Shared Library Version
SOMAJOR=2
SOMINOR=0
SORELEASE=0

MINISAT_CXXFLAGS = -I. -D __STDC_LIMIT_MACROS -D __STDC_FORMAT_MACROS -Wall -Wno-parentheses
MINISAT_LDFLAGS = -Wall -lz


SRCS = $(wildcard minisat/core/*.cc) $(wildcard minisat/simp/*.cc) $(wildcard minisat/utils/*.cc)
HDRS = $(wildcard minisat/mtl/*.h) $(wildcard minisat/core/*.h)$ $(wildcard minisat/simp/*.h) $(wildcard minisat/utils/*.h)
OBJS = $(filter-out %Main.o, $(SRCS:.cc=.o))
SRCS = $(wildcard minisat/core/*.cc) $(wildcard minisat/simp/*.cc) $(wildcard minisat/utils/*.cc)
HDRS = $(wildcard minisat/mtl/*.h) $(wildcard minisat/core/*.h) $(wildcard minisat/simp/*.h) $(wildcard minisat/utils/*.h)
OBJS = $(filter-out %Main.o, $(SRCS:.cc=.o))

r: $(BUILD_DIR)/release/bin/$(MINISAT)
d: $(BUILD_DIR)/debug/bin/$(MINISAT)
Expand Down Expand Up @@ -112,13 +118,13 @@ $(BUILD_DIR)/dynamic/lib/$(MINISAT_DLIB).$(SOMAJOR).$(SOMINOR).$(SORELEASE): $(f
## Compile rule
$(BUILD_DIR)/release/%.o $(BUILD_DIR)/debug/%.o $(BUILD_DIR)/profile/%.o $(BUILD_DIR)/dynamic/%.o : %.cc
mkdir -p $(dir $@) $(dir $(BUILD_DIR)/dep/$*.d)
$(MINISAT_CXX) $(CXXFLAGS) $(MINISAT_CXXFLAGS) -c -o $@ $< -MMD -MF $(BUILD_DIR)/dep/$*.d
$(CXX) $(MINISAT_CXXFLAGS) $(CXXFLAGS) -c -o $@ $< -MMD -MF $(BUILD_DIR)/dep/$*.d

## Linking rule
$(BUILD_DIR)/release/bin/$(MINISAT) $(BUILD_DIR)/debug/bin/$(MINISAT) $(BUILD_DIR)/profile/bin/$(MINISAT) $(BUILD_DIR)/dynamic/bin/$(MINISAT)\
$(BUILD_DIR)/release/bin/$(MINISAT_CORE) $(BUILD_DIR)/debug/bin/$(MINISAT_CORE) $(BUILD_DIR)/profile/bin/$(MINISAT_CORE) $(BUILD_DIR)/dynamic/bin/$(MINISAT_CORE):
mkdir -p $(dir $@)
$(MINISAT_CXX) $^ $(LDFLAGS) $(MINISAT_LDFLAGS) -o $@
$(CXX) $^ $(MINISAT_LDFLAGS) $(LDFLAGS) -o $@

## Static Library rule
%/lib/$(MINISAT_SLIB):
Expand All @@ -128,7 +134,7 @@ $(BUILD_DIR)/release/bin/$(MINISAT_CORE) $(BUILD_DIR)/debug/bin/$(MINISAT_CORE)
## Shared Library rule
$(BUILD_DIR)/dynamic/lib/$(MINISAT_DLIB).$(SOMAJOR).$(SOMINOR).$(SORELEASE):
mkdir -p $(dir $@)
$(MINISAT_CXX) $(MINISAT_LDFLAGS) -o $@ -shared -Wl,-soname,$(MINISAT_DLIB).$(SOMAJOR) $^
$(CXX) $(MINISAT_LDFLAGS) -o $@ -shared -Wl,-soname,$(MINISAT_DLIB).$(SOMAJOR) $^

## Shared Library links
$(BUILD_DIR)/dynamic/lib/$(MINISAT_DLIB).$(SOMAJOR): $(BUILD_DIR)/dynamic/lib/$(MINISAT_DLIB).$(SOMAJOR).$(SOMINOR).$(SORELEASE)
Expand All @@ -137,6 +143,26 @@ $(BUILD_DIR)/dynamic/lib/$(MINISAT_DLIB).$(SOMAJOR): $(BUILD_DIR)/dynamic/lib/$(
$(BUILD_DIR)/dynamic/lib/$(MINISAT_DLIB): $(BUILD_DIR)/dynamic/lib/$(MINISAT_DLIB).$(SOMAJOR)
ln -sf -T $(notdir $^) $@

install: install-headers install-lib

install-headers:
# Create directories
$(INSTALL) -d $(DESTDIR)$(includedir)/minisat
for dir in mtl utils core simp; do \
$(INSTALL) -d $(DESTDIR)$(includedir)/minisat/$$dir ; \
done
# Install headers
for h in $(HDRS) ; do \
$(INSTALL) -m 644 -T $$h $(DESTDIR)$(includedir)/$$h ; \
done

install-lib: $(BUILD_DIR)/release/lib/$(MINISAT_SLIB) $(BUILD_DIR)/dynamic/lib/$(MINISAT_DLIB).$(SOMAJOR).$(SOMINOR).$(SORELEASE) #$(BUILD_DIR)/dynamic/lib/$(MINISAT_DLIB).$(SOMAJOR) $(BUILD_DIR)/dynamic/lib/$(MINISAT_DLIB)
$(INSTALL) -d $(DESTDIR)$(libdir)
$(INSTALL) -m 644 $(BUILD_DIR)/dynamic/lib/$(MINISAT_DLIB).$(SOMAJOR).$(SOMINOR).$(SORELEASE) $(DESTDIR)$(libdir)
# $(INSTALL) -m 644 $(BUILD_DIR)/dynamic/lib/$(MINISAT_DLIB).$(SOMAJOR) $(DESTDIR)$(libdir)
# $(INSTALL) -m 644 $(BUILD_DIR)/dynamic/lib/$(MINISAT_DLIB) $(DESTDIR)$(libdir)
$(INSTALL) -m 644 $(BUILD_DIR)/release/lib/$(MINISAT_SLIB) $(DESTDIR)$(libdir)

## Include generated dependencies
## NOTE: dependencies are assumed to be the same in all build modes at the moment!
-include $(foreach s, $(SRCS:.cc=.d), $(BUILD_DIR)/dep/$s)

0 comments on commit b647459

Please sign in to comment.