From: Tzafrir Cohen Date: Wed, 11 May 2016 14:25:02 +0300 Subject: Makefile: install: DESTDIR and more Fix the install target of the Makefile: * support DESTDIR * create installed directories * fix symlink targets * less shell scripts: if Makefile if instead --- Makefile | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index d3d0596..b7a63e9 100644 --- a/Makefile +++ b/Makefile @@ -94,7 +94,7 @@ endif # you want to leave that flag out on production servers). # -COMPILER_FLAGS = -Wall -c -std=c++11 -fvisibility=hidden -DBUILDING_PHPCPP -Wno-write-strings +COMPILER_FLAGS = -Wall -c -std=c++11 -fvisibility=hidden -DBUILDING_PHPCPP -Wno-write-strings $(CPPFLAGS) $(CXXFLAGS) SHARED_COMPILER_FLAGS = -fpic STATIC_COMPILER_FLAGS = PHP_COMPILER_FLAGS = ${COMPILER_FLAGS} `${PHP_CONFIG} --includes` @@ -109,7 +109,7 @@ PHP_COMPILER_FLAGS = ${COMPILER_FLAGS} `${PHP_CONFIG} --includes` # to the linker flags # -LINKER_FLAGS = -shared +LINKER_FLAGS = -shared $(LDFLAGS) PHP_LINKER_FLAGS = ${LINKER_FLAGS} `${PHP_CONFIG} --ldflags` @@ -150,6 +150,7 @@ PHP_SHARED_OBJECTS = $(PHP_SOURCES:%.cpp=shared/%.o) COMMON_STATIC_OBJECTS = $(COMMON_SOURCES:%.cpp=static/%.o) PHP_STATIC_OBJECTS = $(PHP_SOURCES:%.cpp=static/%.o) +DESTDIR = # # End of the variables section. Here starts the list of instructions and @@ -203,17 +204,19 @@ ${PHP_STATIC_OBJECTS}: # The if statements below must be seen as single line by make install: - ${MKDIR} ${INSTALL_HEADERS}/phpcpp - ${CP} phpcpp.h ${INSTALL_HEADERS} - ${CP} include/*.h ${INSTALL_HEADERS}/phpcpp - if [ -e ${PHP_SHARED_LIBRARY} ]; then \ - ${CP} ${PHP_SHARED_LIBRARY} ${INSTALL_LIB}/; \ - ${LN} ${INSTALL_LIB}/${PHP_SHARED_LIBRARY} ${INSTALL_LIB}/libphpcpp.so.$(SONAME); \ - ${LN} ${INSTALL_LIB}/${PHP_SHARED_LIBRARY} ${INSTALL_LIB}/libphpcpp.so; \ - fi - if [ -e ${PHP_STATIC_LIBRARY} ]; then ${CP} ${PHP_STATIC_LIBRARY} ${INSTALL_LIB}/; \ - ${LN} ${INSTALL_LIB}/${PHP_STATIC_LIBRARY} ${INSTALL_LIB}/libphpcpp.a; \ - fi + ${MKDIR} -p $(DESTDIR)${INSTALL_HEADERS}/phpcpp + ${CP} phpcpp.h $(DESTDIR)${INSTALL_HEADERS} + ${CP} include/*.h $(DESTDIR)${INSTALL_HEADERS}/phpcpp + ${MKDIR} -p $(DESTDIR)${INSTALL_LIB} +ifneq ($(wildcard ${PHP_SHARED_LIBRARY}),) + ${CP} ${PHP_SHARED_LIBRARY} $(DESTDIR)${INSTALL_LIB}/ + ${LN} ${PHP_SHARED_LIBRARY} $(DESTDIR)${INSTALL_LIB}/libphpcpp.so.$(SONAME) + ${LN} ${PHP_SHARED_LIBRARY} $(DESTDIR)${INSTALL_LIB}/libphpcpp.so +endif +ifneq ($(wildcard ${PHP_STATIC_LIBRARY}),) + ${CP} ${PHP_STATIC_LIBRARY} $(DESTDIR)${INSTALL_LIB}/ + ${LN} ${PHP_STATIC_LIBRARY} $(DESTDIR)${INSTALL_LIB}/libphpcpp.a +endif if `which ldconfig`; then \ sudo ldconfig; \ fi