From: Ghislain Antony Vaillant Date: Thu, 5 Nov 2015 22:47:13 +0000 Subject: Use system dependencies. This commit patches the build system to use the packaged dependencies for building FreeImage and FreeImagePlus. This patch also modifies some targets in the corresponding Makefiles to help with the package build process. Origin: Debian [ismael@iodev.co.uk: Merged with PKG_CONFIG var patch] --- Makefile.fip | 45 +++++++++++++++++---------------------------- Makefile.gnu | 41 ++++++++++++++++++++--------------------- 2 files changed, 37 insertions(+), 49 deletions(-) diff --git a/Makefile.fip b/Makefile.fip index b59c419..98733cf 100644 --- a/Makefile.fip +++ b/Makefile.fip @@ -11,27 +11,17 @@ INSTALLDIR ?= $(DESTDIR)/usr/lib # Converts cr/lf to just lf DOS2UNIX = dos2unix -LIBRARIES = -lstdc++ +PKG_CONFIG ?= pkg-config +LIBRARIES = -lstdc++ -ljxrglue $(shell ${PKG_CONFIG} --libs libjpeg libopenjp2 libpng libraw libtiff-4 libwebpmux OpenEXR zlib) -lm MODULES = $(SRCS:.c=.o) MODULES := $(MODULES:.cpp=.o) -CFLAGS ?= -O3 -fPIC -fexceptions -fvisibility=hidden -# OpenJPEG -CFLAGS += -DOPJ_STATIC -# LibRaw -CFLAGS += -DNO_LCMS -# LibJXR -CFLAGS += -DDISABLE_PERF_MEASUREMENT -D__ANSI__ -CFLAGS += $(INCLUDE) -CXXFLAGS ?= -O3 -fPIC -fexceptions -fvisibility=hidden -Wno-ctor-dtor-privacy -# LibJXR -CXXFLAGS += -D__ANSI__ -CXXFLAGS += $(INCLUDE) - -ifeq ($(shell sh -c 'uname -m 2>/dev/null || echo not'),x86_64) - CFLAGS += -fPIC - CXXFLAGS += -fPIC -endif +CFLAGS ?= -O3 -fPIC +override CFLAGS += -fexceptions -fvisibility=hidden +override CFLAGS += $(INCLUDE) -IDist +CXXFLAGS ?= -O3 -fPIC +override CXXFLAGS += -fexceptions -fvisibility=hidden -Wno-ctor-dtor-privacy +override CXXFLAGS += $(INCLUDE) -IDist TARGET = freeimageplus STATICLIB = lib$(TARGET).a @@ -48,31 +37,31 @@ all: dist dist: FreeImage mkdir -p Dist - cp *.a Dist/ - cp *.so Dist/ - cp Source/FreeImage.h Dist/ - cp Wrapper/FreeImagePlus/FreeImagePlus.h Dist/ + cp $(STATICLIB) Dist/ + cp $(SHAREDLIB) Dist/ + cp $(HEADERFIP) Dist/ + ln -sf $(SHAREDLIB) Dist/$(VERLIBNAME) + ln -sf $(VERLIBNAME) Dist/$(LIBNAME) dos2unix: - @$(DOS2UNIX) $(SRCS) + @$(DOS2UNIX) $(SRCS) $(HEADERFIP) FreeImage: $(STATICLIB) $(SHAREDLIB) .c.o: - $(CC) $(CFLAGS) -c $< -o $@ + $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ .cpp.o: - $(CXX) $(CXXFLAGS) -c $< -o $@ + $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $< -o $@ $(STATICLIB): $(MODULES) $(AR) r $@ $(MODULES) $(SHAREDLIB): $(MODULES) - $(CC) -s -shared -Wl,-soname,$(VERLIBNAME) $(LDFLAGS) -o $@ $(MODULES) $(LIBRARIES) + $(CC) -shared -Wl,-soname,$(VERLIBNAME) $(LDFLAGS) -o $@ $(MODULES) $(LIBRARIES) install: install -d $(INCDIR) $(INSTALLDIR) - install -m 644 -o root -g root $(HEADER) $(INCDIR) install -m 644 -o root -g root $(HEADERFIP) $(INCDIR) install -m 644 -o root -g root $(STATICLIB) $(INSTALLDIR) install -m 755 -o root -g root $(SHAREDLIB) $(INSTALLDIR) @@ -80,5 +69,5 @@ install: ln -sf $(VERLIBNAME) $(INSTALLDIR)/$(LIBNAME) clean: - rm -f core Dist/*.* u2dtmp* $(MODULES) $(STATICLIB) $(SHAREDLIB) $(LIBNAME) + rm -f Dist/lib$(TARGET)* Dist/FreeImagePlus.h $(MODULES) $(STATICLIB) $(SHAREDLIB) $(LIBNAME) diff --git a/Makefile.gnu b/Makefile.gnu index 92f6358..4e61efa 100644 --- a/Makefile.gnu +++ b/Makefile.gnu @@ -11,27 +11,25 @@ INSTALLDIR ?= $(DESTDIR)/usr/lib # Converts cr/lf to just lf DOS2UNIX = dos2unix -LIBRARIES = -lstdc++ +PKG_CONFIG ?= pkg-config +LIBRARIES := -lstdc++ -ljxrglue $(shell ${PKG_CONFIG} --libs libjpeg libopenjp2 libpng libraw libtiff-4 libwebpmux OpenEXR zlib) -lm MODULES = $(SRCS:.c=.o) MODULES := $(MODULES:.cpp=.o) -CFLAGS ?= -O3 -fPIC -fexceptions -fvisibility=hidden +CFLAGS ?= -O3 -fPIC +override CFLAGS += -fexceptions -fvisibility=hidden # OpenJPEG -CFLAGS += -DOPJ_STATIC +override CFLAGS += -DOPJ_STATIC # LibRaw -CFLAGS += -DNO_LCMS +override CFLAGS += -DNO_LCMS # LibJXR -CFLAGS += -DDISABLE_PERF_MEASUREMENT -D__ANSI__ -CFLAGS += $(INCLUDE) -CXXFLAGS ?= -O3 -fPIC -fexceptions -fvisibility=hidden -Wno-ctor-dtor-privacy +override CFLAGS += -DDISABLE_PERF_MEASUREMENT -D__ANSI__ +override CFLAGS += $(INCLUDE) -I/usr/include/jxrlib $(shell ${PKG_CONFIG} --cflags libjpeg libopenjp2 libpng libraw libtiff-4 libwebpmux OpenEXR zlib) +CXXFLAGS ?= -O3 -fPIC +override CXXFLAGS += -fexceptions -fvisibility=hidden -Wno-ctor-dtor-privacy # LibJXR -CXXFLAGS += -D__ANSI__ -CXXFLAGS += $(INCLUDE) - -ifeq ($(shell sh -c 'uname -m 2>/dev/null || echo not'),x86_64) - CFLAGS += -fPIC - CXXFLAGS += -fPIC -endif +override CXXFLAGS += -D__ANSI__ +override CXXFLAGS += $(INCLUDE) -I/usr/include/jxrlib $(shell ${PKG_CONFIG} --cflags libjpeg libopenjp2 libpng libraw libtiff-4 libwebpmux OpenEXR zlib) TARGET = freeimage STATICLIB = lib$(TARGET).a @@ -48,9 +45,11 @@ all: dist dist: FreeImage mkdir -p Dist - cp *.a Dist/ - cp *.so Dist/ - cp Source/FreeImage.h Dist/ + cp $(STATICLIB) Dist/ + cp $(SHAREDLIB) Dist/ + cp $(HEADER) Dist/ + ln -sf $(SHAREDLIB) Dist/$(VERLIBNAME) + ln -sf $(VERLIBNAME) Dist/$(LIBNAME) dos2unix: @$(DOS2UNIX) $(SRCS) $(INCLS) @@ -58,16 +57,16 @@ dos2unix: FreeImage: $(STATICLIB) $(SHAREDLIB) .c.o: - $(CC) $(CFLAGS) -c $< -o $@ + $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ .cpp.o: - $(CXX) $(CXXFLAGS) -c $< -o $@ + $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $< -o $@ $(STATICLIB): $(MODULES) $(AR) r $@ $(MODULES) $(SHAREDLIB): $(MODULES) - $(CC) -s -shared -Wl,-soname,$(VERLIBNAME) $(LDFLAGS) -o $@ $(MODULES) $(LIBRARIES) + $(CC) -shared -Wl,-soname,$(VERLIBNAME) $(LDFLAGS) -o $@ $(MODULES) $(LIBRARIES) install: install -d $(INCDIR) $(INSTALLDIR) @@ -79,5 +78,5 @@ install: # ldconfig clean: - rm -f core Dist/*.* u2dtmp* $(MODULES) $(STATICLIB) $(SHAREDLIB) $(LIBNAME) + rm -f Dist/lib$(TARGET)* Dist/FreeImage.h $(MODULES) $(STATICLIB) $(SHAREDLIB) $(LIBNAME) .