122 lines
3.9 KiB
Makefile
122 lines
3.9 KiB
Makefile
# -*- 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
|