Add soname and release build traget, default make target is debug

This commit is contained in:
RafalGoslawski 2015-05-19 13:51:36 +02:00
parent a93b88697d
commit bcf77ea1c8
2 changed files with 27 additions and 11 deletions

View File

@ -1,10 +1,16 @@
PREFIX = /usr PREFIX = /usr
INCLUDE_DIR = ${PREFIX}/include INCLUDE_DIR = ${PREFIX}/include
LIBRARY_DIR = ${PREFIX}/lib LIBRARY_DIR = ${PREFIX}/lib
export LIBRARY_NAME = amqpcpp
export SONAME = 2.2
export VERSION = 2.2.0
all: all:
$(MAKE) -C src all $(MAKE) -C src all
release:
$(MAKE) -C src release
static: static:
$(MAKE) -C src static $(MAKE) -C src static
@ -15,9 +21,12 @@ clean:
$(MAKE) -C src clean $(MAKE) -C src clean
install: install:
mkdir -p ${INCLUDE_DIR}/amqpcpp mkdir -p ${INCLUDE_DIR}/$(LIBRARY_NAME)
mkdir -p ${LIBRARY_DIR} mkdir -p ${LIBRARY_DIR}
cp -f amqpcpp.h ${INCLUDE_DIR} cp -f $(LIBRARY_NAME).h ${INCLUDE_DIR}
cp -f include/*.h ${INCLUDE_DIR}/amqpcpp cp -f include/*.h ${INCLUDE_DIR}/$(LIBRARY_NAME)
cp -f src/libamqpcpp.so ${LIBRARY_DIR} cp -f src/lib$(LIBRARY_NAME).so.$(VERSION) ${LIBRARY_DIR}
cp -f src/libamqpcpp.a ${LIBRARY_DIR} cp -f src/lib$(LIBRARY_NAME).a.$(VERSION) ${LIBRARY_DIR}
ln -s -f $(LIBRARY_DIR)/lib$(LIBRARY_NAME).so.$(VERSION) $(LIBRARY_DIR)/lib$(LIBRARY_NAME).so.$(SONAME)
ln -s -f $(LIBRARY_DIR)/lib$(LIBRARY_NAME).so.$(VERSION) $(LIBRARY_DIR)/lib$(LIBRARY_NAME).so
ln -s -f $(LIBRARY_DIR)/lib$(LIBRARY_NAME).a.$(VERSION) $(LIBRARY_DIR)/lib$(LIBRARY_NAME).a

View File

@ -1,22 +1,29 @@
CPP = g++ CPP = g++
RM = rm -f RM = rm -f
CPPFLAGS = -Wall -c -I. -g -std=c++11 -g CPPFLAGS = -Wall -c -I. -flto -std=c++11
LD = g++ LD = g++
LD_FLAGS = -Wall -shared -O2 LD_FLAGS = -Wall -shared
SHARED_LIB = libamqpcpp.so SHARED_LIB = lib$(LIBRARY_NAME).so.$(VERSION)
STATIC_LIB = $(SHARED_LIB:%.so=%.a) STATIC_LIB = lib$(LIBRARY_NAME).a.$(VERSION)
SOURCES = $(wildcard *.cpp) SOURCES = $(wildcard *.cpp)
SHARED_OBJECTS = $(SOURCES:%.cpp=%.o) SHARED_OBJECTS = $(SOURCES:%.cpp=%.o)
STATIC_OBJECTS = $(SOURCES:%.cpp=%.s.o) STATIC_OBJECTS = $(SOURCES:%.cpp=%.s.o)
all: CPPFLAGS += -g
all: LD_FLAGS += -g
all: shared static all: shared static
release: CPPFLAGS += -O2
release: LD_FLAGS += -O2
release: shared static
shared: ${SHARED_OBJECTS} ${SHARED_LIB} shared: ${SHARED_OBJECTS} ${SHARED_LIB}
static: ${STATIC_OBJECTS} ${STATIC_LIB} static: ${STATIC_OBJECTS} ${STATIC_LIB}
${SHARED_LIB}: ${SHARED_OBJECTS} ${SHARED_LIB}: ${SHARED_OBJECTS}
${LD} ${LD_FLAGS} -o $@ ${SHARED_OBJECTS} ${LD} ${LD_FLAGS} -Wl,-soname,lib$(LIBRARY_NAME).so.$(SONAME) -o $@ ${SHARED_OBJECTS}
${STATIC_LIB}: ${STATIC_OBJECTS} ${STATIC_LIB}: ${STATIC_OBJECTS}
ar rcs ${STATIC_LIB} ${STATIC_OBJECTS} ar rcs ${STATIC_LIB} ${STATIC_OBJECTS}
@ -25,7 +32,7 @@ clean:
${RM} *.obj *~* ${SHARED_OBJECTS} ${STATIC_OBJECTS} ${SHARED_LIB} ${STATIC_LIB} ${RM} *.obj *~* ${SHARED_OBJECTS} ${STATIC_OBJECTS} ${SHARED_LIB} ${STATIC_LIB}
${SHARED_OBJECTS}: ${SHARED_OBJECTS}:
${CPP} ${CPPFLAGS} -flto -fpic -o $@ ${@:%.o=%.cpp} ${CPP} ${CPPFLAGS} -fpic -o $@ ${@:%.o=%.cpp}
${STATIC_OBJECTS}: ${STATIC_OBJECTS}:
${CPP} ${CPPFLAGS} -o $@ ${@:%.s.o=%.cpp} ${CPP} ${CPPFLAGS} -o $@ ${@:%.s.o=%.cpp}