lots of fixes here: - use system graphics libraries - make all of them optional - drop root users from install (fix user installs) - make static lib build optional - link with CXX and CXXFLAGS (since this is C++ code) --- a/Makefile.gnu +++ b/Makefile.gnu @@ -11,7 +11,24 @@ # Converts cr/lf to just lf DOS2UNIX = dos2unix -LIBRARIES = -lstdc++ +PKG_CONFIG ?= pkg-config + +USE_EXR ?= yes +USE_JPEG ?= yes +USE_JPEG2K ?= yes +USE_MNG ?= yes +USE_PNG ?= yes +USE_TIFF ?= yes +USE_RAW ?= yes + +LIBRARIES-yes = $(shell $(PKG_CONFIG) --libs zlib) +LIBRARIES-$(USE_EXR) += $(shell $(PKG_CONFIG) --libs OpenEXR) +LIBRARIES-$(USE_JPEG) += -ljpeg +LIBRARIES-$(USE_JPEG2K) += $(shell $(PKG_CONFIG) --libs libopenjpeg) +LIBRARIES-$(USE_MNG) += -lmng +LIBRARIES-$(USE_PNG) += $(shell $(PKG_CONFIG) --libs libpng) +LIBRARIES-$(USE_TIFF) += $(shell $(PKG_CONFIG) --libs libtiff-4 IlmBase) +LIBRARIES-$(USE_RAW) += $(shell $(PKG_CONFIG) --libs libraw) MODULES = $(SRCS:.c=.o) MODULES := $(MODULES:.cpp=.o) @@ -64,13 +81,15 @@ $(AR) r $@ $(MODULES) $(SHAREDLIB): $(MODULES) - $(CC) -s -shared -Wl,-soname,$(VERLIBNAME) $(LDFLAGS) -o $@ $(MODULES) $(LIBRARIES) + $(CXX) $(CXXFLAGS) -shared -Wl,-soname,$(VERLIBNAME) $(LDFLAGS) -o $@ $(MODULES) $(LIBRARIES-yes) install: install -d $(INCDIR) $(INSTALLDIR) - install -m 644 -o root -g root $(HEADER) $(INCDIR) - install -m 644 -o root -g root $(STATICLIB) $(INSTALLDIR) - install -m 755 -o root -g root $(SHAREDLIB) $(INSTALLDIR) + install -m 644 $(HEADER) $(INCDIR) +ifneq ($(STATICLIB),) + install -m 644 $(STATICLIB) $(INSTALLDIR) +endif + install -m 755 $(SHAREDLIB) $(INSTALLDIR) ln -sf $(SHAREDLIB) $(INSTALLDIR)/$(VERLIBNAME) ln -sf $(VERLIBNAME) $(INSTALLDIR)/$(LIBNAME) # ldconfig --- a/Source/FreeImage/J2KHelper.cpp +++ b/Source/FreeImage/J2KHelper.cpp @@ -21,7 +21,7 @@ #include "FreeImage.h" #include "Utilities.h" -#include "../LibOpenJPEG/openjpeg.h" +#include /** Divide an integer by a power of 2 and round upwards --- a/Source/FreeImage/PluginEXR.cpp +++ b/Source/FreeImage/PluginEXR.cpp @@ -22,16 +22,16 @@ #include "FreeImage.h" #include "Utilities.h" -#include "../OpenEXR/IlmImf/ImfIO.h" -#include "../OpenEXR/Iex/Iex.h" -#include "../OpenEXR/IlmImf/ImfOutputFile.h" -#include "../OpenEXR/IlmImf/ImfInputFile.h" -#include "../OpenEXR/IlmImf/ImfRgbaFile.h" -#include "../OpenEXR/IlmImf/ImfChannelList.h" -#include "../OpenEXR/IlmImf/ImfRgba.h" -#include "../OpenEXR/IlmImf/ImfArray.h" -#include "../OpenEXR/IlmImf/ImfPreviewImage.h" -#include "../OpenEXR/Half/half.h" +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // ========================================================== --- a/Source/FreeImage/PluginJ2K.cpp +++ b/Source/FreeImage/PluginJ2K.cpp @@ -21,7 +21,7 @@ #include "FreeImage.h" #include "Utilities.h" -#include "../LibOpenJPEG/openjpeg.h" +#include // ========================================================== // Plugin Interface --- a/Source/FreeImage/PluginJP2.cpp +++ b/Source/FreeImage/PluginJP2.cpp @@ -21,7 +21,7 @@ #include "FreeImage.h" #include "Utilities.h" -#include "../LibOpenJPEG/openjpeg.h" +#include // ========================================================== // Plugin Interface --- a/Source/FreeImage/PluginPNG.cpp +++ b/Source/FreeImage/PluginPNG.cpp @@ -37,8 +37,8 @@ // ---------------------------------------------------------- -#include "../ZLib/zlib.h" -#include "../LibPNG/png.h" +#include +#include // ---------------------------------------------------------- --- a/Source/transupp.c +++ b/Source/transupp.c @@ -15,8 +15,7 @@ /* Although this file really shouldn't have access to the library internals, * it's helpful to let it call jround_up() and jcopy_block_row(). */ -#define JPEG_INTERNALS - +#include #include "jinclude.h" #include "jpeglib.h" #include "transupp.h" /* My own external interface */ --- a/Source/FreeImage/ZLibInterface.cpp +++ b/Source/FreeImage/ZLibInterface.cpp @@ -19,10 +19,10 @@ // Use at your own risk! // ========================================================== -#include "../ZLib/zlib.h" +#include #include "FreeImage.h" #include "Utilities.h" -#include "../ZLib/zutil.h" /* must be the last header because of error C3163 in VS2008 (_vsnprintf defined in stdio.h) */ +#define OS_CODE 0x03 /** Compresses a source buffer into a target buffer, using the ZLib library. --- a/Source/FreeImage/PluginG3.cpp +++ b/Source/FreeImage/PluginG3.cpp @@ -20,7 +20,7 @@ // Use at your own risk! // ========================================================== -#include "../LibTIFF4/tiffiop.h" +#include "tiffiop.h" #include "FreeImage.h" #include "Utilities.h" --- a/Source/FreeImage/PluginJPEG.cpp +++ b/Source/FreeImage/PluginJPEG.cpp @@ -35,11 +35,15 @@ #undef FAR #include -#include "../LibJPEG/jinclude.h" -#include "../LibJPEG/jpeglib.h" -#include "../LibJPEG/jerror.h" +#include +#include +#include +#include +#include } +#define SIZEOF(object) ((size_t) sizeof(object)) + #include "FreeImage.h" #include "Utilities.h" --- a/Source/FreeImageToolkit/JPEGTransform.cpp +++ b/Source/FreeImageToolkit/JPEGTransform.cpp @@ -25,10 +25,11 @@ #undef FAR #include -#include "../LibJPEG/jinclude.h" -#include "../LibJPEG/jpeglib.h" -#include "../LibJPEG/jerror.h" -#include "../LibJPEG/transupp.h" +#include +#include +#include +#include +#include "transupp.h" } #include "FreeImage.h" --- a/Makefile.fip +++ b/Makefile.fip @@ -11,7 +11,24 @@ # Converts cr/lf to just lf DOS2UNIX = dos2unix -LIBRARIES = -lstdc++ +PKG_CONFIG ?= pkg-config + +USE_EXR ?= yes +USE_JPEG ?= yes +USE_JPEG2K ?= yes +USE_MNG ?= yes +USE_PNG ?= yes +USE_TIFF ?= yes +USE_RAW ?= yes + +LIBRARIES-yes = $(shell $(PKG_CONFIG) --libs zlib) +LIBRARIES-$(USE_EXR) += $(shell $(PKG_CONFIG) --libs OpenEXR) +LIBRARIES-$(USE_JPEG) += -ljpeg +LIBRARIES-$(USE_JPEG2K) += $(shell $(PKG_CONFIG) --libs libopenjpeg) +LIBRARIES-$(USE_MNG) += -lmng +LIBRARIES-$(USE_PNG) += $(shell $(PKG_CONFIG) --libs libpng) +LIBRARIES-$(USE_TIFF) += $(shell $(PKG_CONFIG) --libs libtiff-4 IlmBase) +LIBRARIES-$(USE_RAW) += $(shell $(PKG_CONFIG) --libs libraw) MODULES = $(SRCS:.c=.o) MODULES := $(MODULES:.cpp=.o) @@ -65,14 +82,18 @@ $(AR) r $@ $(MODULES) $(SHAREDLIB): $(MODULES) - $(CC) -s -shared -Wl,-soname,$(VERLIBNAME) $(LDFLAGS) -o $@ $(MODULES) $(LIBRARIES) + $(CXX) $(CXXFLAGS) -shared -Wl,-soname,$(VERLIBNAME) $(LDFLAGS) -o $@ $(MODULES) $(LIBRARIES-yes) 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) + install -m 644 $(HEADER) $(INCDIR) + install -m 644 $(HEADERFIP) $(INCDIR) +ifneq ($(STATICLIB),) + install -m 644 $(STATICLIB) $(INSTALLDIR) +endif + install -m 755 $(SHAREDLIB) $(INSTALLDIR) + ln -sf $(SHAREDLIB) $(INSTALLDIR)/$(VERLIBNAME) + ln -sf $(VERLIBNAME) $(INSTALLDIR)/$(LIBNAME) clean: rm -f core Dist/*.* u2dtmp* $(MODULES) $(STATICLIB) $(SHAREDLIB) $(LIBNAME) --- a/Makefile.srcs +++ b/Makefile.srcs @@ -1,6 +1,14 @@ +USE_EXR ?= yes +USE_JPEG ?= yes +USE_JPEG2K ?= yes +USE_MNG ?= yes +USE_PNG ?= yes +USE_TIFF ?= yes +USE_RAW ?= yes + VER_MAJOR = 3 VER_MINOR = 15.4 -SRCS = \ +SRCS-yes = \ Source/FreeImage/BitmapAccess.cpp \ Source/FreeImage/ColorLookup.cpp \ Source/FreeImage/FreeImage.cpp \ @@ -17,36 +25,74 @@ SRCS = \ Source/FreeImage/GetType.cpp \ Source/FreeImage/MemoryIO.cpp \ Source/FreeImage/PixelAccess.cpp \ + +SRCS-$(USE_JPEG2K) += \ Source/FreeImage/J2KHelper.cpp \ + +SRCS-$(USE_MNG) += \ Source/FreeImage/MNGHelper.cpp \ + +SRCS-yes += \ Source/FreeImage/Plugin.cpp \ Source/FreeImage/PluginBMP.cpp \ Source/FreeImage/PluginCUT.cpp \ Source/FreeImage/PluginDDS.cpp \ + +SRCS-$(USE_EXR) += \ Source/FreeImage/PluginEXR.cpp \ + +SRCS-$(USE_TIFF) += \ Source/FreeImage/PluginG3.cpp \ + +SRCS-yes += \ Source/FreeImage/PluginGIF.cpp \ Source/FreeImage/PluginHDR.cpp \ Source/FreeImage/PluginICO.cpp \ Source/FreeImage/PluginIFF.cpp \ + +SRCS-$(USE_JPEG2K) += \ Source/FreeImage/PluginJ2K.cpp \ + +SRCS-$(USE_MNG) += \ Source/FreeImage/PluginJNG.cpp \ + +SRCS-$(USE_JPEG2K) += \ Source/FreeImage/PluginJP2.cpp \ + +SRCS-$(USE_JPEG) += \ Source/FreeImage/PluginJPEG.cpp \ + +SRCS-yes += \ Source/FreeImage/PluginKOALA.cpp \ + +SRCS-$(USE_MNG) += \ Source/FreeImage/PluginMNG.cpp \ + +SRCS-yes += \ Source/FreeImage/PluginPCD.cpp \ Source/FreeImage/PluginPCX.cpp \ Source/FreeImage/PluginPFM.cpp \ Source/FreeImage/PluginPICT.cpp \ + +SRCS-$(USE_PNG) += \ Source/FreeImage/PluginPNG.cpp \ + +SRCS-yes += \ Source/FreeImage/PluginPNM.cpp \ Source/FreeImage/PluginPSD.cpp \ Source/FreeImage/PluginRAS.cpp \ + +SRCS-$(USE_RAW) += \ Source/FreeImage/PluginRAW.cpp \ + +SRCS-yes += \ Source/FreeImage/PluginSGI.cpp \ Source/FreeImage/PluginTARGA.cpp \ + +SRCS-$(USE_TIFF) += \ Source/FreeImage/PluginTIFF.cpp \ + +SRCS-yes += \ Source/FreeImage/PluginWBMP.cpp \ Source/FreeImage/PluginXBM.cpp \ Source/FreeImage/PluginXPM.cpp \ @@ -83,7 +129,11 @@ SRCS = \ Source/Metadata/IPTC.cpp \ Source/Metadata/TagConversion.cpp \ Source/Metadata/TagLib.cpp \ + +SRCS-$(USE_TIFF) += \ Source/Metadata/XTIFF.cpp \ + +SRCS-yes += \ Source/FreeImageToolkit/Background.cpp \ Source/FreeImageToolkit/BSplineRotate.cpp \ Source/FreeImageToolkit/Channels.cpp \ @@ -92,10 +142,18 @@ SRCS = \ Source/FreeImageToolkit/CopyPaste.cpp \ Source/FreeImageToolkit/Display.cpp \ Source/FreeImageToolkit/Flip.cpp \ + +SRCS-$(USE_JPEG) += \ Source/FreeImageToolkit/JPEGTransform.cpp \ + +SRCS-yes += \ Source/FreeImageToolkit/MultigridPoissonSolver.cpp \ Source/FreeImageToolkit/Rescale.cpp \ Source/FreeImageToolkit/Resize.cpp \ + +SRCS-$(USE_JPEG) += \ + Source/transupp.c +SRCS = $(SRCS-yes) INCLS = \ Examples/OpenGL/TextureManager/TextureManager.h \ Examples/Plugin/PluginCradle.h \ @@ -116,7 +174,17 @@ Wrapper/FreeImagePlus/test/fipTest.h \ TestAPI/TestSuite.h -INCLUDE = -I. \ +INCLUDE-yes = -I. \ -ISource \ -ISource/Metadata \ -ISource/FreeImageToolkit \ + +INCLUDE-yes += $(shell $(PKG_CONFIG) --cflags-only-I zlib) +INCLUDE-$(USE_EXR) += -DUSE_EXR $(shell $(PKG_CONFIG) --cflags-only-I OpenEXR) +INCLUDE-$(USE_JPEG) += -DUSE_JPEG +INCLUDE-$(USE_JPEG2K) += -DUSE_JPEG2K $(shell $(PKG_CONFIG) --cflags-only-I libopenjpeg) +INCLUDE-$(USE_MNG) += -DUSE_MNG +INCLUDE-$(USE_PNG) += -DUSE_PNG $(shell $(PKG_CONFIG) --cflags-only-I libpng) +INCLUDE-$(USE_TIFF) += -DUSE_TIFF $(shell $(PKG_CONFIG) --cflags-only-I libtiff-4 IlmBase) +INCLUDE-$(USE_RAW) += -DUSE_RAW $(shell $(PKG_CONFIG) --cflags-only-I libraw) +INCLUDE = $(INCLUDE-yes) --- a/fipMakefile.srcs +++ b/fipMakefile.srcs @@ -1,6 +1,14 @@ +USE_EXR ?= yes +USE_JPEG ?= yes +USE_JPEG2K ?= yes +USE_MNG ?= yes +USE_PNG ?= yes +USE_TIFF ?= yes +USE_RAW ?= yes + VER_MAJOR = 3 VER_MINOR = 15.4 -SRCS = \ +SRCS-yes = \ Source/FreeImage/BitmapAccess.cpp \ Source/FreeImage/ColorLookup.cpp \ Source/FreeImage/FreeImage.cpp \ @@ -9,36 +17,74 @@ Source/FreeImage/GetType.cpp \ Source/FreeImage/MemoryIO.cpp \ Source/FreeImage/PixelAccess.cpp \ + +SRCS-$(USE_JPEG2K) += \ Source/FreeImage/J2KHelper.cpp \ + +SRCS-$(USE_MNG) += \ Source/FreeImage/MNGHelper.cpp \ + +SRCS-yes += \ Source/FreeImage/Plugin.cpp \ Source/FreeImage/PluginBMP.cpp \ Source/FreeImage/PluginCUT.cpp \ Source/FreeImage/PluginDDS.cpp \ + +SRCS-$(USE_EXR) += \ Source/FreeImage/PluginEXR.cpp \ + +SRCS-$(USE_TIFF) += \ Source/FreeImage/PluginG3.cpp \ + +SRCS-yes += \ Source/FreeImage/PluginGIF.cpp \ Source/FreeImage/PluginHDR.cpp \ Source/FreeImage/PluginICO.cpp \ Source/FreeImage/PluginIFF.cpp \ + +SRCS-$(USE_JPEG2K) += \ Source/FreeImage/PluginJ2K.cpp \ + +SRCS-$(USE_MNG) += \ Source/FreeImage/PluginJNG.cpp \ + +SRCS-$(USE_JPEG2K) += \ Source/FreeImage/PluginJP2.cpp \ + +SRCS-$(USE_JPEG) += \ Source/FreeImage/PluginJPEG.cpp \ + +SRCS-yes += \ Source/FreeImage/PluginKOALA.cpp \ + +SRCS-$(USE_MNG) += \ Source/FreeImage/PluginMNG.cpp \ + +SRCS-yes += \ Source/FreeImage/PluginPCD.cpp \ Source/FreeImage/PluginPCX.cpp \ Source/FreeImage/PluginPFM.cpp \ Source/FreeImage/PluginPICT.cpp \ + +SRCS-$(USE_PNG) += \ Source/FreeImage/PluginPNG.cpp \ + +SRCS-yes += \ Source/FreeImage/PluginPNM.cpp \ Source/FreeImage/PluginPSD.cpp \ Source/FreeImage/PluginRAS.cpp \ + +SRCS-$(USE_RAW) += \ Source/FreeImage/PluginRAW.cpp \ + +SRCS-yes += \ Source/FreeImage/PluginSGI.cpp \ Source/FreeImage/PluginTARGA.cpp \ + +SRCS-$(USE_TIFF) += \ Source/FreeImage/PluginTIFF.cpp \ + +SRCS-yes += \ Source/FreeImage/PluginWBMP.cpp \ Source/FreeImage/PluginXBM.cpp \ Source/FreeImage/PluginXPM.cpp \ @@ -75,7 +121,11 @@ Source/Metadata/IPTC.cpp \ Source/Metadata/TagConversion.cpp \ Source/Metadata/TagLib.cpp \ + +SRCS-$(USE_TIFF) += \ Source/Metadata/XTIFF.cpp \ + +SRCS-yes += \ Source/FreeImageToolkit/Background.cpp \ Source/FreeImageToolkit/BSplineRotate.cpp \ Source/FreeImageToolkit/Channels.cpp \ @@ -84,7 +134,11 @@ Source/FreeImageToolkit/CopyPaste.cpp \ Source/FreeImageToolkit/Display.cpp \ Source/FreeImageToolkit/Flip.cpp \ + +SRCS-$(USE_JPEG) += \ Source/FreeImageToolkit/JPEGTransform.cpp \ + +SRCS-yes += \ Source/FreeImageToolkit/MultigridPoissonSolver.cpp \ Source/FreeImageToolkit/Rescale.cpp \ Source/FreeImageToolkit/Resize.cpp \ @@ -95,6 +149,11 @@ Wrapper/FreeImagePlus/src/fipTag.cpp \ Wrapper/FreeImagePlus/src/fipWinImage.cpp \ Wrapper/FreeImagePlus/src/FreeImagePlus.cpp + +SRCS-$(USE_JPEG) += \ + Source/transupp.c + +SRCS = $(SRCS-yes) INCLUDE = -I. \ -ISource \ -ISource/Metadata \ --- a/Source/FreeImage/PluginRAW.cpp +++ b/Source/FreeImage/PluginRAW.cpp @@ -19,7 +19,7 @@ // Use at your own risk! // ========================================================== -#include "../LibRawLite/libraw/libraw.h" +#include #include "FreeImage.h" #include "Utilities.h" --- a/Source/Metadata/XTIFF.cpp +++ b/Source/Metadata/XTIFF.cpp @@ -29,7 +29,7 @@ #pragma warning (disable : 4786) // identifier was truncated to 'number' characters #endif -#include "../LibTIFF4/tiffiop.h" +#include "tiffiop.h" #include "FreeImage.h" #include "Utilities.h" --- a/Source/FreeImage/PluginTIFF.cpp +++ b/Source/FreeImage/PluginTIFF.cpp @@ -37,9 +37,9 @@ #include "FreeImage.h" #include "Utilities.h" -#include "../LibTIFF4/tiffiop.h" +#include "tiffiop.h" #include "../Metadata/FreeImageTag.h" -#include "../OpenEXR/Half/half.h" +#include #include "FreeImageIO.h" #include "PSDParser.h" --- a/Source/tiffiop.h +++ b/Source/tiffiop.h @@ -30,7 +30,9 @@ * ``Library-private'' definitions. */ -#include "tif_config.h" +#include +#define HAVE_SEARCH_H +#define HAVE_FCNTL_H #ifdef HAVE_FCNTL_H # include --- a/Source/FreeImage/Plugin.cpp +++ b/Source/FreeImage/Plugin.cpp @@ -223,23 +223,33 @@ */ s_plugins->AddNode(InitBMP); s_plugins->AddNode(InitICO); +#ifdef USE_JPEG s_plugins->AddNode(InitJPEG); +#endif +#ifdef USE_MNG s_plugins->AddNode(InitJNG); +#endif s_plugins->AddNode(InitKOALA); s_plugins->AddNode(InitIFF); +#ifdef USE_MNG s_plugins->AddNode(InitMNG); +#endif s_plugins->AddNode(InitPNM, NULL, "PBM", "Portable Bitmap (ASCII)", "pbm", "^P1"); s_plugins->AddNode(InitPNM, NULL, "PBMRAW", "Portable Bitmap (RAW)", "pbm", "^P4"); s_plugins->AddNode(InitPCD); s_plugins->AddNode(InitPCX); s_plugins->AddNode(InitPNM, NULL, "PGM", "Portable Greymap (ASCII)", "pgm", "^P2"); s_plugins->AddNode(InitPNM, NULL, "PGMRAW", "Portable Greymap (RAW)", "pgm", "^P5"); +#ifdef USE_PNG s_plugins->AddNode(InitPNG); +#endif s_plugins->AddNode(InitPNM, NULL, "PPM", "Portable Pixelmap (ASCII)", "ppm", "^P3"); s_plugins->AddNode(InitPNM, NULL, "PPMRAW", "Portable Pixelmap (RAW)", "ppm", "^P6"); s_plugins->AddNode(InitRAS); s_plugins->AddNode(InitTARGA); +#ifdef USE_TIFF s_plugins->AddNode(InitTIFF); +#endif s_plugins->AddNode(InitWBMP); s_plugins->AddNode(InitPSD); s_plugins->AddNode(InitCUT); @@ -248,14 +258,22 @@ s_plugins->AddNode(InitDDS); s_plugins->AddNode(InitGIF); s_plugins->AddNode(InitHDR); +#ifdef USE_TIFF s_plugins->AddNode(InitG3); +#endif s_plugins->AddNode(InitSGI); +#ifdef USE_EXR s_plugins->AddNode(InitEXR); +#endif +#ifdef USE_JPEG2K s_plugins->AddNode(InitJ2K); s_plugins->AddNode(InitJP2); +#endif s_plugins->AddNode(InitPFM); s_plugins->AddNode(InitPICT); +#ifdef USE_RAW s_plugins->AddNode(InitRAW); +#endif // external plugin initialization