1# -*- Makefile -*-
2# Mac OSX makefile for FreeImage
3
4# This file can be generated by ./gensrclist.sh
5include Makefile.srcs
6
7# Find SDK path via xcode-select, backwards compatible with Xcode vers < 4.5
8MACOSX_SYSROOT = $(shell xcrun --show-sdk-path)
9# Specify deployement target here
10MACOSX_DEPLOYMENT_TARGET = 10.11
11
12# General configuration variables:
13CC_I386 = $(shell xcrun -find clang)
14CC_X86_64 = $(shell xcrun -find clang)
15CPP_I386 = $(shell xcrun -find clang++)
16CPP_X86_64 = $(shell xcrun -find clang++)
17MACOSX_DEPLOY = -mmacosx-version-min=$(MACOSX_DEPLOYMENT_TARGET)
18COMPILERFLAGS = -Os -fexceptions -fvisibility=hidden -DNO_LCMS -D__ANSI__
19COMPILERFLAGS_I386 = -arch i386
20COMPILERFLAGS_X86_64 = -arch x86_64
21COMPILERPPFLAGS = -Wno-ctor-dtor-privacy -D__ANSI__ -std=c++11 -stdlib=libc++ -Wc++11-narrowing
22INCLUDE +=
23INCLUDE_I386 = -isysroot $(MACOSX_SYSROOT)
24INCLUDE_X86_64 = -isysroot $(MACOSX_SYSROOT)
25CFLAGS_I386 = $(COMPILERFLAGS) $(COMPILERFLAGS_I386) $(INCLUDE) $(INCLUDE_I386) $(MACOSX_DEPLOY)
26CFLAGS_X86_64 = $(COMPILERFLAGS) $(COMPILERFLAGS_X86_64) $(INCLUDE) $(INCLUDE_X86_64) $(MACOSX_DEPLOY)
27CPPFLAGS_I386 = $(COMPILERPPFLAGS) $(CFLAGS_I386)
28CPPFLAGS_X86_64 = $(COMPILERPPFLAGS) $(CFLAGS_X86_64)
29LIBRARIES_I386 = $(MACOSX_DEPLOY) -Wl,-syslibroot $(MACOSX_SYSROOT)
30LIBRARIES_X86_64 = $(MACOSX_DEPLOY) -Wl,-syslibroot $(MACOSX_SYSROOT)
31LIBTOOL = libtool
32LIPO = lipo
33
34TARGET = freeimage
35STATICLIB = lib$(TARGET).a
36SHAREDLIB = lib$(TARGET)-$(VER_MAJOR).$(VER_MINOR).dylib
37LIBNAME = lib$(TARGET).$(VER_MAJOR).dylib
38HEADER = Source/FreeImage.h
39
40.SUFFIXES: .o-i386 .o-x86_64
41MODULES_I386 = $(SRCS:.c=.o-i386)
42MODULES_X86_64 = $(SRCS:.c=.o-x86_64)
43MODULES_I386 := $(MODULES_I386:.cpp=.o-i386)
44MODULES_X86_64 := $(MODULES_X86_64:.cpp=.o-x86_64)
45
46PREFIX = /usr/local
47INSTALLDIR = $(PREFIX)/lib
48INCDIR = $(PREFIX)/include
49
50default: all
51
52all: dist
53
54# ONLY STATIC AND 64 BIT // START ---
55
56dist: FreeImage
57	cp *.a Dist
58	cp Source/FreeImage.h Dist
59
60FreeImage: $(STATICLIB)
61
62$(STATICLIB): $(STATICLIB)-x86_64
63	cp -p $(STATICLIB)-x86_64 $(STATICLIB)
64
65# --- END
66
67# STATIC AND DYNAMIC 32 and 64 BIT // START ---
68
69#dist: FreeImage
70#	cp *.a Dist
71#	cp *.dylib Dist
72#	cp Source/FreeImage.h Dist
73
74# FreeImage: $(STATICLIB) $(SHAREDLIB )
75
76#$(STATICLIB): $(STATICLIB)-i386 $(STATICLIB)-x86_64
77#	$(LIPO) -create $(STATICLIB)-i386 $(STATICLIB)-x86_64 -output $(STATICLIB)
78
79# --- END
80
81$(STATICLIB)-i386: $(MODULES_I386)
82	$(LIBTOOL) -arch_only i386 -o $@ $(MODULES_I386)
83
84$(STATICLIB)-x86_64: $(MODULES_X86_64)
85	$(LIBTOOL) -arch_only x86_64 -o $@ $(MODULES_X86_64)
86
87$(SHAREDLIB): $(SHAREDLIB)-i386 $(SHAREDLIB)-x86_64
88	$(LIPO) -create $(SHAREDLIB)-i386 $(SHAREDLIB)-x86_64 -output $(SHAREDLIB)
89
90$(SHAREDLIB)-i386: $(MODULES_I386)
91	$(CPP_I386) -arch i386 -dynamiclib $(LIBRARIES_I386) -o $@ $(MODULES_I386)
92
93$(SHAREDLIB)-x86_64: $(MODULES_X86_64)
94	$(CPP_X86_64) -arch x86_64 -dynamiclib $(LIBRARIES_X86_64) -o $@ $(MODULES_X86_64)
95
96.c.o-i386:
97	$(CC_I386) $(CFLAGS_I386) -c $< -o $@
98
99.c.o-x86_64:
100	$(CC_X86_64) $(CFLAGS_X86_64) -c $< -o $@
101
102.cpp.o-i386:
103	$(CPP_I386) $(CPPFLAGS_I386) -c $< -o $@
104
105.cpp.o-x86_64:
106	$(CPP_X86_64) $(CPPFLAGS_X86_64) -c $< -o $@
107
108install:
109	install -d -m 755 -o root -g wheel $(INCDIR) $(INSTALLDIR)
110	install -m 644 -o root -g wheel $(HEADER) $(INCDIR)
111	install -m 644 -o root -g wheel $(SHAREDLIB) $(STATICLIB) $(INSTALLDIR)
112	ranlib -sf $(INSTALLDIR)/$(STATICLIB)
113	ln -sf $(SHAREDLIB) $(INSTALLDIR)/$(LIBNAME)
114
115clean:
116	rm -f core Dist/*.* u2dtmp* $(MODULES_I386) $(MODULES_X86_64) $(STATICLIB) $(STATICLIB)-i386 $(SHAREDLIB) $(SHAREDLIB)-i386 $(SHAREDLIB)-x86_64
117