# MinGW makefile for FreeImage # This file can be generated by ./gensrclist.sh include Makefile.srcs # General configuration variables: DESTDIR ?= $(SystemRoot) INSTALLDIR ?= $(DESTDIR)/system32 DISTDIR ?= Dist SRCDIR ?= Source HEADER = FreeImage.h 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 ´ld´ comes with # wrong (Linux) standard library search paths) LD = g++ #Define the dlltool DLLTOOL = dlltool #Define the resource compiler RC = windres # Define the copy command CP = cp # Define the mkdir command MD = mkdir # 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 only needed for WIN32 based builds: WIN32_CFLAGS = $(LIB_TYPE_FLAGS) -DOPJ_STATIC WIN32_CXXFLAGS = $(WIN32_CFLAGS) -DLIBRAW_NODLL -DLIBRAW_LIBRARY_BUILD WIN32_STATIC_FLAGS = -DFREEIMAGE_LIB 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) -DNO_LCMS CXXFLAGS += $(INCLUDE) RCFLAGS ?= -DNDEBUG LDFLAGS = -s -shared -static -Wl,-soname,$(SOLIBNAME) DLLTOOLFLAGS = --add-stdcall-underscore TARGET = FreeImage STATICLIB = $(TARGET).a SHAREDLIB = $(TARGET).dll IMPORTLIB = $(TARGET).lib EXPORTLIB = $(TARGET).exp SOLIBNAME = $(SHAREDLIB).$(VER_MAJOR) 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 rebuild: clean all mkdist: FreeImage $(TARGETDIST) FreeImage: $(TARGETLIB) %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ %.o: %.cpp $(CXX) $(CXXFLAGS) -c $< -o $@ %.coff: %.rc $(RC) $(RCFLAGS) -o $@ $< $(DISTDIR)/%: % $(CP) $< $@ $(DISTDIR)/%: $(SRCDIR)/% $(CP) $< $@ $(STATICLIB): $(MODULES) $(AR) rs $@ $(MODULES) $(IMPORTLIB) $(EXPORTLIB): $(MODULES) $(DLLTOOL) -e $(EXPORTLIB) -l $(IMPORTLIB) -D $(SHAREDLIB) $(DLLTOOLFLAGS) $(MODULES) $(SHAREDLIB): $(EXPORTLIB) $(RESOURCE) $(LD) $(LDFLAGS) -o $@ $(EXPORTLIB) $(MODULES) $(RESOURCE) $(LIBRARIES) $(DISTDIR): $(MD) $(DISTDIR) $(TARGETDIST): $(DISTDIR) install: $(CP) $(SHAREDLIB) $(INSTALLDIR) clean: $(RM) core $(DISTDIR)/*.* $(MODULES) $(RESOURCE) $(STATICLIB) $(SHAREDLIB) $(IMPORTLIB) $(EXPORTLIB)