freeimage/Makefile.mingw

137 lines
3.5 KiB
Makefile
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
# 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 = -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
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 -DDISABLE_PERF_MEASUREMENT $(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
TARGET = FreeImage
STATICLIB = lib$(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) -f core $(DISTDIR)/*.* $(MODULES) $(RESOURCE) $(STATICLIB) $(SHAREDLIB) $(IMPORTLIB) $(EXPORTLIB)