1 include ../Makefile.common
3 SRC := $(wildcard *.cpp)
4 STATIC_OBJ := $(SRC:.cpp=.o)
5 SHARED_OBJ := $(SRC:.cpp=.lo)
7 override CPPFLAGS += -I../include -DNDEBUG
9 STATIC_LIB := libloki.a
12 SHARED_LIB_BASE := libloki.dylib
13 SHARED_LIB_VERSIONED := libloki.$(VERSION).dylib
14 override LDFLAGS += -dynamiclib -single_module -install_name $(SHARED_LIB_VERSIONED) -fPIC
18 SHARED_LIB_BASE := libloki.so
19 SHARED_LIB_VERSIONED := libloki.so.$(VERSION)
20 override LDFLAGS += --shared -Wl,-soname=$(SHARED_LIB_VERSIONED) -fPIC
23 ifeq ($(OS), GNU/kFreeBSD)
24 SHARED_LIB_BASE := libloki.so
25 SHARED_LIB_VERSIONED := libloki.so.$(VERSION)
26 override LDFLAGS += --shared -Wl,-soname=$(SHARED_LIB_VERSIONED) -fPIC
30 SHARED_LIB_BASE := libloki.so
31 SHARED_LIB_VERSIONED := libloki.so.$(VERSION)
32 override LDFLAGS += --shared -Wl,-soname=$(SHARED_LIB_VERSIONED) -fPIC
36 SHARED_LIB_BASE := libloki.so
37 SHARED_LIB_VERSIONED := libloki.so.$(VERSION)
38 override LDFLAGS += --shared -fPIC -mlp64
39 override CXXFLAGS += -mlp64
43 SHARED_LIB_VERSIONED := libloki.dll
44 override LDFLAGS += --shared
54 .PHONY: all build-static build-shared clean distclean
55 all: build-static build-shared
56 build-static: $(RESULT_DIR)$(STATIC_LIB)
57 build-shared: $(RESULT_DIR)$(SHARED_LIB_VERSIONED)
61 ifneq ($(OS), Windows)
65 distclean: clean cleandeps
66 $(RM) $(RESULT_DIR)$(STATIC_LIB)
67 $(RM) $(RESULT_DIR)$(SHARED_LIB_VERSIONED)
71 INSTALL_DATA := $(INSTALL) -m 644
73 .PHONY: install install-static install-shared
74 install: install-static install-shared
76 install-static: $(RESULT_DIR)$(STATIC_LIB)
77 mkdir -p $(prefix)/lib
78 $(INSTALL_DATA) $(RESULT_DIR)$(STATIC_LIB) $(prefix)/lib
80 install-shared: $(RESULT_DIR)$(SHARED_LIB_VERSIONED)
81 mkdir -p $(prefix)/lib
82 $(INSTALL_DATA) $(RESULT_DIR)$(SHARED_LIB_VERSIONED) $(prefix)/lib
83 cd $(prefix)/lib; ln -s $(SHARED_LIB_VERSIONED) $(SHARED_LIB_BASE)
86 $(CXX) -c $(CXXFLAGS) -fPIC $(CPPFLAGS) -o $@ $<
88 $(RESULT_DIR)$(SHARED_LIB_VERSIONED): $(SHARED_OBJ)
90 $(RESULT_DIR)$(SHARED_LIB_VERSIONED): $(STATIC_OBJ)
92 $(CXX) $(LDFLAGS) -o $@ $^ $(LDLIBS)
94 $(RESULT_DIR)$(STATIC_LIB): $(STATIC_OBJ)
95 $(AR) $(ARFLAGS) $@ $^
97 include ../Makefile.deps