diff --git a/Makefile b/Makefile index 2733305..709cd9f 100755 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: build-static build-shared check install clean-tmp clean +.PHONY: build-static build-shared check install install-includes install-shared clean-tmp clean build-static: $(MAKE) -C src build-static @@ -8,11 +8,13 @@ build-shared: check: build-static $(MAKE) -C test -install: +install: install-includes $(MAKE) -C src install-static + +install-includes: $(MAKE) -C include install -install-shared: +install-shared: install-includes $(MAKE) -C src install-shared clean-tmp: diff --git a/include/Makefile b/include/Makefile index 1c759a8..5c65240 100644 --- a/include/Makefile +++ b/include/Makefile @@ -1,9 +1,10 @@ +DESTDIR = /usr .PHONY: install install: - mkdir -p $(DESTDIR)/usr/include/loki - mkdir -p $(DESTDIR)/usr/include/loki/flex - mkdir -p $(DESTDIR)/usr/include/loki/yasli + mkdir -p $(DESTDIR)/include/loki + mkdir -p $(DESTDIR)/include/loki/flex + mkdir -p $(DESTDIR)/include/loki/yasli - install -m 644 loki/*.h $(DESTDIR)/usr/include/loki - install -m 644 loki/flex/*.h $(DESTDIR)/usr/include/loki/flex - install -m 644 loki/yasli/*.h $(DESTDIR)/usr/include/loki/yasli + install -m 644 loki/*.h $(DESTDIR)/include/loki + install -m 644 loki/flex/*.h $(DESTDIR)/include/loki/flex + install -m 644 loki/yasli/*.h $(DESTDIR)/include/loki/yasli diff --git a/src/Makefile b/src/Makefile index 1980779..3a48b4d 100755 --- a/src/Makefile +++ b/src/Makefile @@ -1,30 +1,34 @@ SRC = $(wildcard *.cpp) STATIC_OBJ = $(SRC:.cpp=.o) SHARED_OBJ = $(SRC:.cpp=.lo) -_OS = $(shell uname -s) - -LOKI_VERSION = 0.1.4 - -STATIC_LIB = ../lib/libloki.a -ifeq ($(_OS), Darwin) - SHARED_LIB_INSTALL = - SHARED_LIB_FLAG = -dynamiclib - SHARED_LIB = ../lib/libloki.$(LOKI_VERSION).dylib -else - SHARED_LIB_FLAG = --shared - SHARED_LIB_INSTALL = -Wl,-soname=libloki.$(SHARED_LIB_EXTENSION).$(LOKI_VERSION) - SHARED_LIB = ../lib/libloki.so.$(LOKI_VERSION) -endif +VERSION = 0.1.4 +DESTDIR = /usr CXXFLAGS = -Wall -Wold-style-cast -Wundef -Wsign-compare -Wconversion -Wpointer-arith -pedantic -O2 CPPFLAGS = -I../include -DNDEBUG +STATIC_LIB = ../lib/libloki.a + +ifeq ($(shell uname -s), Darwin) + SO_EXT = dylib + INSTALL_FLAGS = + INSTALL_TARGET = libloki.$(VERSION).$(SO_EXT) + LDFLAGS = -dynamiclib -single_module -install_name $(INSTALL_TARGET) +else + SO_EXT = so + INSTALL_FLAGS = -s + INSTALL_TARGET = libloki.$(SO_EXT).$(VERSION) + LDFLAGS = --shared -Wl,-soname=$(INSTALL_TARGET) +endif + +SHARED_LIB = ../lib/$(INSTALL_TARGET) + $(STATIC_LIB): $(STATIC_OBJ) - ar rs $(STATIC_LIB) $(STATIC_OBJ) + $(AR) $(ARFLAGS) $@ $^ $(SHARED_LIB): $(SHARED_OBJ) - g++ $(SHARED_LIB_FLAG) $(SHARED_LIB_INSTALL) -o $(SHARED_LIB) $(SHARED_OBJ) + $(CXX) $(LDFLAGS) -o $@ $^ %.lo : %.cpp $(CXX) -c $(CXXFLAGS) -fPIC $(CPPFLAGS) -o $@ $< @@ -34,18 +38,18 @@ build-static: $(STATIC_LIB) build-shared: $(SHARED_LIB) install-static: $(STATIC_LIB) - mkdir -p $(DESTDIR)/usr/lib - install -m 644 $(STATIC_LIB) $(DESTDIR)/usr/lib + mkdir -p $(DESTDIR)/lib + install -m 644 $< $(DESTDIR)/lib install-shared: $(SHARED_LIB) - mkdir -p $(DESTDIR)/usr/lib - install -m 644 -s $(SHARED_LIB) $(DESTDIR)/usr/lib - cd $(DESTDIR)/usr/lib/; ln -s libloki.so.$(LOKI_VERSION) libloki.so + mkdir -p $(DESTDIR)/lib + install -m 644 $(INSTALL_FLAGS) $< $(DESTDIR)/lib + cd $(DESTDIR)/lib/ && $(RM) libloki.$(SO_EXT) && ln -s $(INSTALL_TARGET) libloki.$(SO_EXT) clean-tmp: - rm -f $(STATIC_OBJ) - rm -f $(SHARED_OBJ) + $(RM) $(STATIC_OBJ) + $(RM) $(SHARED_OBJ) clean: clean-tmp - rm -f $(STATIC_LIB) - rm -f $(SHARED_LIB) + $(RM) $(STATIC_LIB) + $(RM) $(SHARED_LIB)