# -*- Makefile -*- # Mac OSX makefile for FreeImage # This file can be generated by ./gensrclist.sh include Makefile.srcs # Find SDK path via xcode-select, backwards compatible with Xcode vers < 4.5 MACOSX_SYSROOT = $(shell xcrun --show-sdk-path) # Specify deployement target here MACOSX_DEPLOYMENT_TARGET = 10.11 # General configuration variables: CC_ARM64 = $(shell xcrun -find clang) CC_X86_64 = $(shell xcrun -find clang) CPP_ARM64 = $(shell xcrun -find clang++) CPP_X86_64 = $(shell xcrun -find clang++) MACOSX_DEPLOY = -mmacosx-version-min=$(MACOSX_DEPLOYMENT_TARGET) # temp - perf measurement doesn't build with arm64. Disable for now COMPILERFLAGS = -Os -fexceptions -fvisibility=hidden -DNO_LCMS -D__ANSI__ -Wno-implicit-function-declaration -DDISABLE_PERF_MEASUREMENT # temp - neon is not compiling. Disable until I can track dowwn why. COMPILERFLAGS_ARM64 = -arch arm64 -DPNG_ARM_NEON_OPT=0 COMPILERFLAGS_X86_64 = -arch x86_64 COMPILERPPFLAGS = -Wno-ctor-dtor-privacy -D__ANSI__ -std=c++11 -stdlib=libc++ -Wc++11-narrowing INCLUDE += INCLUDE_ARM64 = -isysroot $(MACOSX_SYSROOT) INCLUDE_X86_64 = -isysroot $(MACOSX_SYSROOT) CFLAGS_ARM64 = $(COMPILERFLAGS) $(COMPILERFLAGS_ARM64) $(INCLUDE) $(INCLUDE_ARM64) $(MACOSX_DEPLOY) CFLAGS_X86_64 = $(COMPILERFLAGS) $(COMPILERFLAGS_X86_64) $(INCLUDE) $(INCLUDE_X86_64) $(MACOSX_DEPLOY) CPPFLAGS_ARM64 = $(COMPILERPPFLAGS) $(CFLAGS_ARM64) CPPFLAGS_X86_64 = $(COMPILERPPFLAGS) $(CFLAGS_X86_64) LIBRARIES_ARM64 = $(MACOSX_DEPLOY) -Wl,-syslibroot $(MACOSX_SYSROOT) LIBRARIES_X86_64 = $(MACOSX_DEPLOY) -Wl,-syslibroot $(MACOSX_SYSROOT) LIBTOOL = libtool LIPO = lipo TARGET = freeimage STATICLIB = lib$(TARGET).a SHAREDLIB = lib$(TARGET)-$(VER_MAJOR).$(VER_MINOR).dylib LIBNAME = lib$(TARGET).$(VER_MAJOR).dylib HEADER = Source/FreeImage.h .SUFFIXES: .o-arm64 .o-x86_64 MODULES_ARM64 = $(SRCS:.c=.o-arm64) MODULES_X86_64 = $(SRCS:.c=.o-x86_64) MODULES_ARM64 := $(MODULES_ARM64:.cpp=.o-arm64) MODULES_X86_64 := $(MODULES_X86_64:.cpp=.o-x86_64) PREFIX = /usr/local INSTALLDIR = $(PREFIX)/lib INCDIR = $(PREFIX)/include default: all all: dist # ONLY STATIC AND 64 BIT // START --- # Uncomment the lines to --- End to built a 64-bit static lib #dist: FreeImage # cp *.a Dist # cp Source/FreeImage.h Dist #FreeImage: $(STATICLIB) #$(STATICLIB): $(STATICLIB)-x86_64 # cp -p $(STATICLIB)-x86_64 $(STATICLIB) # --- END # STATIC AND DYNAMIC 64 BIT and ARM // START --- # Uncomment the lines to --- End to build an x86_64 & arm64 fat lib and dylib dist: FreeImage cp *.a Dist cp *.dylib Dist cp Source/FreeImage.h Dist FreeImage: $(STATICLIB) $(SHAREDLIB) $(STATICLIB): $(STATICLIB)-arm64 $(STATICLIB)-x86_64 $(LIPO) -create $(STATICLIB)-arm64 $(STATICLIB)-x86_64 -output $(STATICLIB) # --- END $(STATICLIB)-arm64: $(MODULES_ARM64) $(LIBTOOL) -arch_only arm64 -o $@ $(MODULES_ARM64) $(STATICLIB)-x86_64: $(MODULES_X86_64) $(LIBTOOL) -arch_only x86_64 -o $@ $(MODULES_X86_64) $(SHAREDLIB): $(SHAREDLIB)-arm64 $(SHAREDLIB)-x86_64 $(LIPO) -create $(SHAREDLIB)-arm64 $(SHAREDLIB)-x86_64 -output $(SHAREDLIB) $(SHAREDLIB)-arm64: $(MODULES_ARM64) $(CPP_ARM64) -arch arm64 -dynamiclib $(LIBRARIES_ARM64) -o $@ $(MODULES_ARM64) $(SHAREDLIB)-x86_64: $(MODULES_X86_64) $(CPP_X86_64) -arch x86_64 -dynamiclib $(LIBRARIES_X86_64) -o $@ $(MODULES_X86_64) .c.o-arm64: $(CC_ARM64) $(CFLAGS_ARM64) -c $< -o $@ .c.o-x86_64: $(CC_X86_64) $(CFLAGS_X86_64) -c $< -o $@ .cpp.o-arm64: $(CPP_ARM64) $(CPPFLAGS_ARM64) -c $< -o $@ .cpp.o-x86_64: $(CPP_X86_64) $(CPPFLAGS_X86_64) -c $< -o $@ install: install -d -m 755 -o root -g wheel $(INCDIR) $(INSTALLDIR) install -m 644 -o root -g wheel $(HEADER) $(INCDIR) install -m 644 -o root -g wheel $(SHAREDLIB) $(STATICLIB) $(INSTALLDIR) ranlib -sf $(INSTALLDIR)/$(STATICLIB) ln -sf $(SHAREDLIB) $(INSTALLDIR)/$(LIBNAME) clean: rm -f core Dist/*.* u2dtmp* $(MODULES_ARM64) $(MODULES_X86_64) $(STATICLIB) $(STATICLIB)-arm64 $(SHAREDLIB) $(SHAREDLIB)-arm64 $(SHAREDLIB)-x86_64