
# Linux makefile for FreeImage

# This file can be generated by ./gensrclist.sh
include Makefile.srcs

# General configuration variables:
DESTDIR ?= $(EMSCRIPTEN_SYSTEM_ROOT)
INCDIR ?= $(DESTDIR)/include
INSTALLDIR ?= $(DESTDIR)/lib

# Converts cr/lf to just lf
DOS2UNIX = dos2unix

LIBRARIES = -lstdc++

OPT ?= -O3 -flto

MODULES = $(SRCS:.c=.o)
MODULES := $(MODULES:.cpp=.o)
CFLAGS ?= $(OPT) -pthread -DDISABLE_PERF_MEASUREMENT -fexceptions -fvisibility=hidden -DNO_LCMS -std=c99 -D__ANSI__ -Wno-implicit-function-declaration
CFLAGS += $(INCLUDE)
CXXFLAGS ?= $(OPT) -pthread -DDISABLE_PERF_MEASUREMENT -fexceptions -fvisibility=hidden -Wno-ctor-dtor-privacy -D__ANSI__ -Wno-implicit-function-declaration
CXXFLAGS += $(INCLUDE)

TARGET  = freeimage
STATICLIB = lib$(TARGET).a
SHAREDLIB = lib$(TARGET)-$(VER_MAJOR).$(VER_MINOR).so
LIBNAME	= lib$(TARGET).so
VERLIBNAME = $(LIBNAME).$(VER_MAJOR)
HEADER = Source/FreeImage.h



default: all

all: dist

dist: FreeImage
	cp *.a Dist
	cp *.so Dist
	cp Source/FreeImage.h Dist

dos2unix:
	@$(DOS2UNIX) $(SRCS) $(INCLS)

FreeImage: $(STATICLIB) $(SHAREDLIB)

.c.o:
	$(CC) $(CFLAGS) -c $< -o $@

.cpp.o:
	$(CXX) $(CXXFLAGS) -c $< -o $@

$(STATICLIB): $(MODULES)
	$(AR) r $@ $(MODULES)

$(SHAREDLIB): $(MODULES)
	$(CC) $(OPT) -s -shared -Wl,-soname,$(VERLIBNAME) $(LDFLAGS) -o $@ $(MODULES) $(LIBRARIES)

install:
	install -d $(INCDIR) $(INSTALLDIR)
	install -m 644 $(HEADER) $(INCDIR)
	install -m 644 $(STATICLIB) $(INSTALLDIR)
	install -m 755 $(SHAREDLIB) $(INSTALLDIR)
	ln -sf $(SHAREDLIB) $(INSTALLDIR)/$(VERLIBNAME)
	ln -sf $(VERLIBNAME) $(INSTALLDIR)/$(LIBNAME)	
	mkdir -p $(INSTALLDIR)/pkgconfig
	printf "prefix=%s\nexec_prefix=\$${prefix}\nlibdir=\$${exec_prefix}/lib\nsharedlibdir=\$${libdir}\nincludedir=\$${prefix}/include\nName: FreeImage\nDescription: Image manipulation library\nVersion: %s\nLibs: -L\$${libdir} -L\$${sharedlibdir} -lfreeimage\nCflags: -I\$${includedir}" "$(DESTDIR)" "$(VER_MAJOR).$(VER_MINOR)" > "$(INSTALLDIR)/pkgconfig/freeimage.pc"
#	ldconfig

clean:
	rm -f core Dist/*.* u2dtmp* $(MODULES) $(STATICLIB) $(SHAREDLIB) $(LIBNAME)