Blob Blame History Raw
diff -rupN FreeImage/Makefile.fip FreeImage-new/Makefile.fip
--- FreeImage/Makefile.fip	2014-01-16 00:39:40.612051380 +0100
+++ FreeImage-new/Makefile.fip	2014-01-16 00:40:27.273664018 +0100
@@ -1,74 +1,91 @@
-# Linux makefile for FreeImagePlus
+# MinGW makefile for FreeImagePlus
 
 # This file can be generated by ./genfipsrclist.sh
 include fipMakefile.srcs
 
-# General configuration variables:
-DESTDIR ?= /
-INCDIR ?= $(DESTDIR)/usr/include
-INSTALLDIR ?= $(DESTDIR)/usr/lib
-
-# Converts cr/lf to just lf
-DOS2UNIX = dos2unix
-
-INCLUDE += -ISource
-LIBRARIES = -lstdc++ -lfreeimage-$(VER_MAJOR).$(VER_MINOR) -L.
-
-MODULES = $(SRCS:.c=.o)
-MODULES := $(MODULES:.cpp=.o)
-CFLAGS ?= -O3 -fPIC -fexceptions -fvisibility=hidden -DNO_LCMS
-CFLAGS += $(INCLUDE)
-CXXFLAGS ?= -O3 -fPIC -fexceptions -fvisibility=hidden -Wno-ctor-dtor-privacy
-CXXFLAGS += $(INCLUDE)
-
-ifeq ($(shell sh -c 'uname -m 2>/dev/null || echo not'),x86_64)
-	CFLAGS += -fPIC
-	CXXFLAGS += -fPIC
-endif
+CC = $(MINGW_TARGET)-gcc
+CXX = $(MINGW_TARGET)-g++
+LD = $(MINGW_TARGET)-g++
+AR = $(MINGW_TARGET)-ar
+DLLTOOL = $(MINGW_TARGET)-dlltool
+RC = $(MINGW_TARGET)-windres
+PKGCONFIG = $(MINGW_TARGET)-pkg-config
+
+CP = cp
+MD = mkdir
+RM = rm
+
+# General configuration variables.
+DESTDIR ?= $(SystemRoot)
+INSTALLDIR ?= $(DESTDIR)/system32
+DISTDIR ?= Dist
+SRCDIR ?= Wrapper/FreeImagePlus/
+HEADER = FreeImagePlus.h
+RCFILE = Wrapper/FreeImagePlus/FreeImagePlus.rc
+
+# Uncomment this variable to make a static library. This may
+# also be specified as an environment variable and can hold
+# any of STATIC and SHARED and must be in uppercase letters.
+# The FreeImage library type defaults to SHARED.
+FREEIMAGE_LIBRARY_TYPE ?= SHARED
+
+WIN32_STATIC_FLAGS = -DFREEIMAGE_LIB
+WIN32_SHARED_FLAGS = -DFIP_EXPORTS
+
+MODULES = $(SRCS:.cpp=.o)
+RESOURCE = $(RCFILE:.rc=.coff)
+CFLAGS += -ISource $(INCLUDE) $(WIN32_$(FREEIMAGE_LIBRARY_TYPE)_FLAGS)
+CXXFLAGS += -ISource $(INCLUDE) $(WIN32_$(FREEIMAGE_LIBRARY_TYPE)_FLAGS)
+LDFLAGS += -shared -Wl,-soname,$(SOLIBNAME)
+LDFLAGS +=  -LDist -lfreeimage -lgdi32
 
-TARGET  = freeimageplus
+TARGET = freeimageplus
 STATICLIB = lib$(TARGET).a
-SHAREDLIB = lib$(TARGET)-$(VER_MAJOR).$(VER_MINOR).so
-LIBNAME	= lib$(TARGET).so
-VERLIBNAME = $(LIBNAME).$(VER_MAJOR)
-HEADER = Source/FreeImage.h
-HEADERFIP = Wrapper/FreeImagePlus/FreeImagePlus.h
+SHAREDLIB = $(TARGET)-$(VER_MAJOR).dll
+IMPORTLIB = $(TARGET).dll.a
+EXPORTLIB = $(TARGET).exp
+SOLIBNAME = $(SHAREDLIB)
 
+DISTSHARED = $(addprefix $(DISTDIR)/, $(SHAREDLIB) $(IMPORTLIB) $(HEADER))
+DISTSTATIC = $(addprefix $(DISTDIR)/, $(STATICLIB) $(HEADER))
 
-default: all
-
-all: dist
+TARGETLIB = $($(FREEIMAGE_LIBRARY_TYPE)LIB)
+TARGETDIST = $(DIST$(FREEIMAGE_LIBRARY_TYPE))
 
-dist: FreeImage
-	cp *.a Dist
-	cp *.so Dist
-	cp Source/FreeImage.h Dist
-	cp Wrapper/FreeImagePlus/FreeImagePlus.h Dist
+default: all
 
-dos2unix:
-	@$(DOS2UNIX) $(SRCS)
+all: $(TARGETLIB) $(TARGETDIST)
 
-FreeImage: $(STATICLIB) $(SHAREDLIB)
+rebuild: clean all
 
-.c.o:
+%.o: %.c
 	$(CC) $(CFLAGS) -c $< -o $@
 
-.cpp.o:
+%.o: %.cpp
 	$(CXX) $(CXXFLAGS) -c $< -o $@
 
+%.coff: %.rc
+	$(RC) $(RCFLAGS) -o $@ $<
+
+$(DISTDIR)/%: %
+	$(CP) $< $@
+
+$(DISTDIR)/%: $(SRCDIR)/%
+	$(CP) $< $@
+
 $(STATICLIB): $(MODULES)
-	$(AR) r $@ $(MODULES)
+	$(AR) rs $@ $(MODULES)
 
-$(SHAREDLIB): $(MODULES)
-	$(CC) -s -shared -Wl,-soname,$(VERLIBNAME) $(LDFLAGS) -o $@ $(MODULES) $(LIBRARIES)
+$(IMPORTLIB) $(EXPORTLIB): $(MODULES)
+	$(DLLTOOL) -e $(EXPORTLIB) -l $(IMPORTLIB) -D $(SHAREDLIB) $(DLLTOOLFLAGS) $(MODULES)
 
-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)
+$(SHAREDLIB): $(EXPORTLIB) $(RESOURCE)
+	$(LD) -o $@ $(EXPORTLIB) $(MODULES) $(RESOURCE) $(LDFLAGS)
 
-clean:
-	rm -f core Dist/*.* u2dtmp* $(MODULES) $(STATICLIB) $(SHAREDLIB) $(LIBNAME)
+$(DISTDIR):
+	$(MD) $(DISTDIR)
 
+$(TARGETDIST): $(DISTDIR)
+
+clean:
+	$(RM) -f core $(DISTDIR)/*.* $(MODULES) $(RESOURCE) $(STATICLIB) $(SHAREDLIB) $(IMPORTLIB) $(EXPORTLIB)
diff -rupN FreeImage/Makefile.mingw FreeImage-new/Makefile.mingw
--- FreeImage/Makefile.mingw	2014-01-16 00:27:04.041527817 +0100
+++ FreeImage-new/Makefile.mingw	2014-01-16 00:40:27.274664032 +0100
@@ -3,6 +3,18 @@
 # This file can be generated by ./gensrclist.sh
 include Makefile.srcs
 
+CC = $(MINGW_TARGET)-gcc
+CXX = $(MINGW_TARGET)-g++
+LD = $(MINGW_TARGET)-g++
+AR = $(MINGW_TARGET)-ar
+DLLTOOL = $(MINGW_TARGET)-dlltool
+RC = $(MINGW_TARGET)-windres
+PKGCONFIG = $(MINGW_TARGET)-pkg-config
+
+CP = cp
+MD = mkdir
+RM = rm
+
 # General configuration variables.
 DESTDIR ?= $(SystemRoot)
 INSTALLDIR ?= $(DESTDIR)/system32
@@ -14,50 +26,8 @@ RCFILE = FreeImage.rc
 # Uncomment this variable to make a static library. This may
 # also be specified as an environment variable and can hold
 # any of STATIC and SHARED and must be in uppercase letters.
-# Default: SHARED
-#FREEIMAGE_LIBRARY_TYPE = STATIC
-
-# Redefine the compiler (CC defaults to ´cc´ for MinGW's make,
-# however there's only ´gcc´ available with MinGW).
-CC = gcc
-
-# Redefine the linker (we use ´g++´ for linking, since MinGW's
-# command ´ld´ comes with wrong (Linux) standard library search
-# paths).
-LD = g++
-
-#Define the ´dlltool´ command.
-DLLTOOL = dlltool
-
-#Define the resource compiler.
-RC = windres
-
-# Define the ´copy´ command.
-CP = cp
-
-# Define the ´mkdir´ command.
-MD = mkdir
-
-# Define the ´remove´ command.
-RM = rm
-
-# Define additional libraries needed.
-# libstdc++ is included by default with MinGW, however for
-# WIN32 based builds, LibRawLite needs the winsock libraries.
-LIBRARIES = -lwsock32 -lws2_32
-
-# Define some additional symboles needed for WIN32 based builds.
-WIN32_CFLAGS = -DWINVER=0x0500 $(LIB_TYPE_FLAGS) -DOPJ_STATIC
-WIN32_CXXFLAGS = $(WIN32_CFLAGS) -DLIBRAW_NODLL
-
-# Workaround for LibRawLite, which does not include C++ header
-# file stdexcept, which is casually included with MSVC but not
-# with MinGW. This can be removed after LibRawLite got control
-# over its includes again.
-WIN32_CXXFLAGS += -include stdexcept 
-
-# Define DLL image header information flags for the linker.
-WIN32_LDFLAGS = -Wl,--subsystem,windows:5.0,--major-os-version,5
+# The FreeImage library type defaults to SHARED.
+FREEIMAGE_LIBRARY_TYPE ?= SHARED
 
 WIN32_STATIC_FLAGS = -DFREEIMAGE_LIB
 WIN32_SHARED_FLAGS = -DFREEIMAGE_EXPORTS
@@ -65,41 +35,32 @@ WIN32_SHARED_FLAGS = -DFREEIMAGE_EXPORTS
 MODULES = $(SRCS:.c=.o)
 MODULES := $(MODULES:.cpp=.o)
 RESOURCE = $(RCFILE:.rc=.coff)
-CFLAGS ?= -O3 -fexceptions -DNDEBUG $(WIN32_CFLAGS)
-CFLAGS += $(INCLUDE)
-CXXFLAGS ?= -O3 -fexceptions -Wno-ctor-dtor-privacy -DNDEBUG $(WIN32_CXXFLAGS)
-CXXFLAGS += $(INCLUDE)
-RCFLAGS ?= -DNDEBUG
-LDFLAGS ?= -s -shared -static -Wl,-soname,$(SOLIBNAME) $(WIN32_LDFLAGS)
-DLLTOOLFLAGS ?= --add-stdcall-underscore
+CFLAGS += $(INCLUDE) $(WIN32_$(FREEIMAGE_LIBRARY_TYPE)_FLAGS)
+CFLAGS += $(shell $(PKGCONFIG) --cflags libopenjpeg OpenEXR libpng libraw zlib libtiff-4)
+CXXFLAGS += $(INCLUDE) $(WIN32_$(FREEIMAGE_LIBRARY_TYPE)_FLAGS)
+CXXFLAGS += $(shell $(PKGCONFIG) --cflags libopenjpeg OpenEXR libpng libraw zlib libtiff-4)
+LDFLAGS += -shared -Wl,-soname,$(SOLIBNAME)
+LDFLAGS += $(shell $(PKGCONFIG) --libs libopenjpeg OpenEXR libpng libraw zlib libtiff-4) -ljpeg
 
-TARGET = FreeImage
+TARGET = freeimage
 STATICLIB = lib$(TARGET).a
-SHAREDLIB = $(TARGET).dll
-IMPORTLIB = $(TARGET).lib
+SHAREDLIB = $(TARGET)-$(VER_MAJOR).dll
+IMPORTLIB = $(TARGET).dll.a
 EXPORTLIB = $(TARGET).exp
-SOLIBNAME = $(SHAREDLIB).$(VER_MAJOR)
+SOLIBNAME = $(SHAREDLIB)
 
 DISTSHARED = $(addprefix $(DISTDIR)/, $(SHAREDLIB) $(IMPORTLIB) $(HEADER))
 DISTSTATIC = $(addprefix $(DISTDIR)/, $(STATICLIB) $(HEADER))
 
-# The FreeImage library type defaults to SHARED.
-FREEIMAGE_LIBRARY_TYPE ?= SHARED
-
 TARGETLIB = $($(FREEIMAGE_LIBRARY_TYPE)LIB)
 TARGETDIST = $(DIST$(FREEIMAGE_LIBRARY_TYPE))
-LIB_TYPE_FLAGS = $(WIN32_$(FREEIMAGE_LIBRARY_TYPE)_FLAGS)
 
 default: all
 
-all: mkdist
+all: $(TARGETLIB) $(TARGETDIST)
 
 rebuild: clean all
 
-mkdist: FreeImage $(TARGETDIST)
-
-FreeImage: $(TARGETLIB)
-
 %.o: %.c
 	$(CC) $(CFLAGS) -c $< -o $@
 
@@ -122,15 +83,12 @@ $(IMPORTLIB) $(EXPORTLIB): $(MODULES)
 	$(DLLTOOL) -e $(EXPORTLIB) -l $(IMPORTLIB) -D $(SHAREDLIB) $(DLLTOOLFLAGS) $(MODULES)
 
 $(SHAREDLIB): $(EXPORTLIB) $(RESOURCE)
-	$(LD) $(LDFLAGS) -o $@ $(EXPORTLIB) $(MODULES) $(RESOURCE) $(LIBRARIES)
+	$(LD) -o $@ $(EXPORTLIB) $(MODULES) $(RESOURCE) $(LDFLAGS)
 
 $(DISTDIR):
 	$(MD) $(DISTDIR)
 
 $(TARGETDIST): $(DISTDIR)
 
-install:
-	$(CP) $(SHAREDLIB) $(INSTALLDIR)
-
 clean:
 	$(RM) -f core $(DISTDIR)/*.* $(MODULES) $(RESOURCE) $(STATICLIB) $(SHAREDLIB) $(IMPORTLIB) $(EXPORTLIB)