xamarin-macios/runtime/Makefile

463 строки
19 KiB
Makefile
Исходник Обычный вид История

2016-04-21 15:19:32 +03:00
TOP=..
include $(TOP)/Make.config
# without this many compiler warnings about unused functions and variables
# in system headers show up.
export CCACHE_CPP2=1
#
# Common
#
SHARED_INC += \
delegates.inc \
SHIPPED_HEADERS += \
xamarin/mono-runtime.h \
xamarin/xamarin.h \
xamarin/main.h \
xamarin/trampolines.h \
xamarin/runtime.h \
SHARED_SOURCES += mono-runtime.m bindings.m bindings-generated.m shared.m runtime.m trampolines.m trampolines-invoke.m xamarin-support.m nsstring-localization.m trampolines-varargs.m
SHARED_I386_SOURCES += trampolines-i386.m trampolines-i386-asm.s trampolines-i386-objc_msgSend.s trampolines-i386-objc_msgSendSuper.s trampolines-i386-objc_msgSend_stret.s trampolines-i386-objc_msgSendSuper_stret.s
SHARED_X86_64_SOURCES += trampolines-x86_64.m trampolines-x86_64-asm.s trampolines-x86_64-objc_msgSend.s trampolines-x86_64-objc_msgSendSuper.s trampolines-x86_64-objc_msgSend_stret.s trampolines-x86_64-objc_msgSendSuper_stret.s
2016-04-21 15:19:32 +03:00
SHARED_HEADERS += shared.h product.h delegates.h runtime-internal.h $(SHARED_INC) $(SHIPPED_HEADERS) trampolines-internal.h slinked-list.h
SHARED_FILES = $(SHARED_SOURCES) $(SHARED_HEADERS) $(SHARED_I386_SOURCES) $(SHARED_X86_64_SOURCES)
EXTRA_DEPENDENCIES = $(SHARED_HEADERS)
xamarin/mono-runtime.h: mono-runtime.h.t4 exports.t4
$(Q_GEN) $(TT) $< -o $@
mono-runtime.m: mono-runtime.m.t4 exports.t4
$(Q_GEN) $(TT) $< -o $@
delegates.%: delegates.%.t4 delegates.t4
$(Q_GEN) $(TT) $< -o $@
Delegates.generated.cs: Delegates.cs.t4 delegates.t4
$(Q_GEN) $(TT) $< -o $@
bindings-generator.exe: bindings-generator.cs
$(Q) $(SYSTEM_MCS) $< -o:$@
bindings-generated.m: bindings-generator.exe
$(Q_GEN) $(SYSTEM_MONO) --debug $< $@
zlib-helper.c: $(MONO_PATH)/support/zlib-helper.c
$(Q) ln -fs $< $@
# our makefiles don't support building the same source file multiple times with different defines,
# so just symlink extension-main.m to another file and compile that instead.
app-main.m watchextension-main.m tvextension-main.m: extension-main.m
2016-04-21 15:19:32 +03:00
$(Q_LN) ln -fs $< $@
#
# MonoTouch defines (used for all MonoTouch platforms: iOS, WatchOS and TVOS)
#
MONOTOUCH_SOURCES = \
monotouch-debug.m \
monotouch-main.m \
MONOTOUCH_HEADERS = \
monotouch-debug.h \
MONOTOUCH_LIBS = \
libextension.a \
libwatchextension.a \
libtvextension.a \
2016-04-21 15:19:32 +03:00
libapp.a \
libxamarin.a \
libxamarin-debug.a \
libxamarin.dylib \
libxamarin-debug.dylib \
MONOTOUCH_SOURCE_STEMS = $(patsubst %.s,%,$(patsubst %.m,%,$(SHARED_SOURCES) $(MONOTOUCH_SOURCES))) zlib-helper
MONOTOUCH_I386_SOURCE_STEMS = $(patsubst %.s,%,$(patsubst %.m,%,$(SHARED_I386_SOURCES)))
MONOTOUCH_X86_64_SOURCE_STEMS = $(patsubst %.s,%,$(patsubst %.m,%,$(SHARED_X86_64_SOURCES)))
#
# PlatformTemplate contains the install targets and sets up some variables
#
define PlatformTemplate
$(2)_SOURCES = $(MONOTOUCH_SOURCES)
$(2)_HEADERS = $(MONOTOUCH_HEADERS)
$(2)_SOURCE_STEMS = $(MONOTOUCH_SOURCE_STEMS)
$(2)_X86_64_SOURCE_STEMS = $(MONOTOUCH_X86_64_SOURCE_STEMS)
$(2)_I386_SOURCE_STEMS = $(MONOTOUCH_I386_SOURCE_STEMS)
$(2)_LIBRARIES = $(MONOTOUCH_LIBS)
$(2)_ARCHITECTURES = $(3)
RUNTIME_$(2)_TARGETS_DIRS += \
$(IOS_DESTDIR)$$(XAMARIN_$(4)SIMULATOR_SDK)/usr/lib \
$(IOS_DESTDIR)$$(XAMARIN_$(4)SIMULATOR_SDK)/usr/include/xamarin \
$(IOS_DESTDIR)$$(XAMARIN_$(5)OS_SDK)/usr/lib \
$(IOS_DESTDIR)$$(XAMARIN_$(5)OS_SDK)/usr/include/xamarin \
RUNTIME_$(2)_TARGETS += \
$$(foreach file,$$($(2)_LIBRARIES),$(IOS_DESTDIR)$$(XAMARIN_$(4)SIMULATOR_SDK)/usr/lib/$$(file)) \
$(foreach file,$(SHIPPED_HEADERS),$(IOS_DESTDIR)$$(XAMARIN_$(4)SIMULATOR_SDK)/usr/include/$(file)) \
ifdef INCLUDE_DEVICE
RUNTIME_$(2)_TARGETS += \
$$(foreach file,$$($(2)_LIBRARIES),$(IOS_DESTDIR)$$(XAMARIN_$(5)OS_SDK)/usr/lib/$$(file)) \
2016-04-21 15:19:32 +03:00
$(foreach file,$(SHIPPED_HEADERS),$(IOS_DESTDIR)$$(XAMARIN_$(5)OS_SDK)/usr/include/$(file)) \
endif
2016-04-21 15:19:32 +03:00
$(IOS_DESTDIR)$$(XAMARIN_$(4)SIMULATOR_SDK)/usr/lib/%.a: .libs/$(1)/%.a | $(IOS_DESTDIR)$$(XAMARIN_$(4)SIMULATOR_SDK)/usr/lib
$(Q) install -m 0644 $$< $$@
ifdef INCLUDE_DEVICE
2016-04-21 15:19:32 +03:00
$(IOS_DESTDIR)$$(XAMARIN_$(5)OS_SDK)/usr/lib/%.a: .libs/$(1)/%.a | $(IOS_DESTDIR)$$(XAMARIN_$(5)OS_SDK)/usr/lib
$(Q) install -m 0644 $$< $$@
endif
2016-04-21 15:19:32 +03:00
$(IOS_DESTDIR)$$(XAMARIN_$(4)SIMULATOR_SDK)/usr/lib/%.dylib: .libs/$(1)/%.dylib | $(IOS_DESTDIR)$$(XAMARIN_$(4)SIMULATOR_SDK)/usr/lib
$(Q) install -m 0644 $$< $$@
ifdef INCLUDE_DEVICE
2016-04-21 15:19:32 +03:00
$(IOS_DESTDIR)$$(XAMARIN_$(5)OS_SDK)/usr/lib/%.dylib: .libs/$(1)/%.dylib | $(IOS_DESTDIR)$$(XAMARIN_$(5)OS_SDK)/usr/lib
$(Q) install -m 0644 $$< $$@
endif
2016-04-21 15:19:32 +03:00
$(IOS_DESTDIR)$$(XAMARIN_$(4)SIMULATOR_SDK)/usr/include/%.h: %.h | $(IOS_DESTDIR)$$(XAMARIN_$(4)SIMULATOR_SDK)/usr/include/xamarin
$(Q) install -m 0644 $$< $$@
ifdef INCLUDE_DEVICE
2016-04-21 15:19:32 +03:00
$(IOS_DESTDIR)$$(XAMARIN_$(5)OS_SDK)/usr/include/%.h: %.h | $(IOS_DESTDIR)$$(XAMARIN_$(5)OS_SDK)/usr/include/xamarin
$(Q) install -m 0644 $$< $$@
endif
2016-04-21 15:19:32 +03:00
$$(RUNTIME_$(2)_TARGETS_DIRS):
$(Q) mkdir -p $$@
all-$(4): $$(RUNTIME_$(2)_TARGETS)
all-local:: $$(RUNTIME_$(2)_TARGETS)
install-local:: $$(RUNTIME_$(2)_TARGETS)
endef
# 1: platform name
# 2: variable prefix
# 3: architectures
# 4: simulator variable name used in some places
# 5: device variable name used in some places
ifdef INCLUDE_IOS
ifdef INCLUDE_DEVICE
2016-04-21 15:19:32 +03:00
$(eval $(call PlatformTemplate,ios,IOS,armv7 armv7s arm64 x86 x86_64,IOS,IPHONE))
else
$(eval $(call PlatformTemplate,ios,IOS, x86 x86_64,IOS,IPHONE))
endif
2016-04-21 15:19:32 +03:00
endif
ifdef INCLUDE_WATCH
ifdef INCLUDE_DEVICE
2016-04-21 15:19:32 +03:00
$(eval $(call PlatformTemplate,watchos,WATCHOS,armv7k x86,WATCH,WATCH))
else
$(eval $(call PlatformTemplate,watchos,WATCHOS, x86,WATCH,WATCH))
endif
2016-04-21 15:19:32 +03:00
endif
ifdef INCLUDE_TVOS
ifdef INCLUDE_DEVICE
2016-04-21 15:19:32 +03:00
$(eval $(call PlatformTemplate,tvos,TVOS,arm64 x86_64,TV,TV))
else
$(eval $(call PlatformTemplate,tvos,TVOS, x86_64,TV,TV))
endif
2016-04-21 15:19:32 +03:00
endif
#
# LibTemplate we build three different libraries from the same source code,
# libapp.a, libextension.a and libwatchextension.a.
#
# They're all built from the same soure file (extension-main.m), but with different defines:
# libextension.a has EXTENSION defined, while libwatchextension.a has WATCH_EXTENSION defined.
#
define LibTemplate
$$(foreach arch,$$($(2)_ARCHITECTURES),.libs/$(1)/extension-main.$$(arch).o): EXTRA_DEFINES=-DEXTENSION
$$(foreach arch,$$($(2)_ARCHITECTURES),.libs/$(1)/watchextension-main.$$(arch).o): EXTRA_DEFINES=-DWATCH_EXTENSION
$$(foreach arch,$$($(2)_ARCHITECTURES),.libs/$(1)/tvextension-main.$$(arch).o): EXTRA_DEFINES=-DTV_EXTENSION
2016-04-21 15:19:32 +03:00
.libs/$(1)/libextension.%.a: .libs/$(1)/extension-main.%.o
$(Q) rm -f $$@
$$(call Q_2,AR, [$1]) $(DEVICE_BIN_PATH)/ar cru $$@ $$^
.libs/$(1)/libapp.%.a: .libs/$(1)/app-main.%.o
$(Q) rm -f $$@
$$(call Q_2,AR, [$1]) $(DEVICE_BIN_PATH)/ar cru $$@ $$^
.libs/$(1)/libextension.a: $$(foreach arch,$$($(2)_ARCHITECTURES),.libs/$(1)/libextension.$$(arch).a)
$(Q) rm -f $$@
$$(call Q_2,LIPO, [$1]) $(DEVICE_BIN_PATH)/lipo $$^ -create -output $$@
.libs/$(1)/libapp.a: $$(foreach arch,$$($(2)_ARCHITECTURES),.libs/$(1)/libapp.$$(arch).a)
$(Q) rm -f $$@
$$(call Q_2,LIPO, [$1]) $(DEVICE_BIN_PATH)/lipo $$^ -create -output $$@
.libs/$(1)/libwatchextension.%.a: .libs/$(1)/watchextension-main.%.o
$(Q) rm -f $$@
$$(call Q_2,AR, [$1]) $(DEVICE_BIN_PATH)/ar cru $$@ $$^
.libs/$(1)/libwatchextension.a: $$(foreach arch,$$($(2)_ARCHITECTURES),.libs/$(1)/libwatchextension.$$(arch).a)
$(Q) rm -f $$@
$$(call Q_2,LIPO, [$1]) $(DEVICE_BIN_PATH)/lipo $$^ -create -output $$@
.libs/$(1)/libtvextension.%.a: .libs/$(1)/tvextension-main.%.o
$(Q) rm -f $$@
$$(call Q_2,AR, [$1]) $(DEVICE_BIN_PATH)/ar cru $$@ $$^
.libs/$(1)/libtvextension.a: $$(foreach arch,$$($(2)_ARCHITECTURES),.libs/$(1)/libtvextension.$$(arch).a)
$(Q) rm -f $$@
$$(call Q_2,LIPO, [$1]) $(DEVICE_BIN_PATH)/lipo $$^ -create -output $$@
2016-04-21 15:19:32 +03:00
.libs/$(1)/libxamarin.dylib: $$(foreach arch,$$($(2)_ARCHITECTURES),.libs/$(1)/libxamarin.$$(arch).dylib)
$(Q) rm -f $$@
$$(call Q_2,LIPO, [$1]) $(DEVICE_BIN_PATH)/lipo $$^ -create -output $$@
$(Q) install_name_tool -id @executable_path/$$(notdir $$@) $$@
$(Q) install_name_tool -change @executable_path/ @executable_path/libmonosgen-2.0.dylib $$@
.libs/$(1)/libxamarin-debug.dylib: $$(foreach arch,$$($(2)_ARCHITECTURES),.libs/$(1)/libxamarin-debug.$$(arch).dylib)
$(Q) rm -f $$@
$$(call Q_2,LIPO, [$1]) $(DEVICE_BIN_PATH)/lipo $$^ -create -output $$@
$(Q) install_name_tool -id @executable_path/$$(notdir $$@) $$@
$(Q) install_name_tool -change @executable_path/ @executable_path/libmonosgen-2.0.dylib $$@
.SECONDARY: $$(foreach arch,$$($(2)_ARCHITECTURES),.libs/$(1)/app-main.$$(arch).o)
endef
$(eval $(call LibTemplate,ios,IOS))
$(eval $(call LibTemplate,watchos,WATCHOS))
$(eval $(call LibTemplate,tvos,TVOS))
#
# LibXamarinTemplate (and LibXamarinArchTemplate) builds libxamarin.a
#
define LibXamarinArchTemplate
.libs/$(1)/libxamarin$(4).$(5).a: $$($(5)_$(1)$(3)_OBJECTS)
$$(Q) rm -f $$@
$$(call Q_2,AR, [$1]) $(DEVICE_BIN_PATH)/ar Scru $$@ $$^
$$(call Q_2,RANLIB,[$1]) $(DEVICE_BIN_PATH)/ranlib -no_warning_for_no_symbols -q $$@
2016-04-21 15:19:32 +03:00
endef
define LibXamarinTemplate
$(1)$(3)_COMMON_DYLIB_FLAGS = -lmonosgen-2.0 -Wl,-install_name,libxamarin$(4).dylib -framework Foundation -framework CFNetwork -framework UIKit -lz
x86_$(1)$(3)_OBJECTS = $$(patsubst %,.libs/$(1)/%$(4).x86.o,$$($(2)_SOURCE_STEMS)) $$(patsubst %,.libs/$(1)/%$(4).x86.o,$$($(2)_I386_SOURCE_STEMS))
x86_64_$(1)$(3)_OBJECTS = $$(patsubst %,.libs/$(1)/%$(4).x86_64.o,$$($(2)_SOURCE_STEMS)) $$(patsubst %,.libs/$(1)/%$(4).x86_64.o,$$($(2)_X86_64_SOURCE_STEMS))
armv7_$(1)$(3)_OBJECTS = $$(patsubst %,.libs/$(1)/%$(4).armv7.o,$$($(2)_SOURCE_STEMS))
armv7s_$(1)$(3)_OBJECTS = $$(patsubst %,.libs/$(1)/%$(4).armv7s.o,$$($(2)_SOURCE_STEMS))
armv7k_$(1)$(3)_OBJECTS = $$(patsubst %,.libs/$(1)/%$(4).armv7k.o,$$($(2)_SOURCE_STEMS))
arm64_$(1)$(3)_OBJECTS = $$(patsubst %,.libs/$(1)/%$(4).arm64.o,$$($(2)_SOURCE_STEMS))
$$(foreach arch,$$($(2)_ARCHITECTURES),$$(eval $$(call LibXamarinArchTemplate,$(1),$(2),$(3),$(4),$$(arch))))
.libs/$(1)/libxamarin$(4).a: $$(foreach arch,$$($(2)_ARCHITECTURES),.libs/$(1)/libxamarin$(4).$$(arch).a)
$(Q) rm -f $$@
$$(call Q_2,LIPO, [$1]) $(DEVICE_BIN_PATH)/lipo $$^ -create -output $$@
.libs/$(1)/libxamarin$(4).x86.dylib: EXTRA_FLAGS=$$($(1)$(3)_COMMON_DYLIB_FLAGS)
.libs/$(1)/libxamarin$(4).x86.dylib: $$(x86_$(1)$(3)_OBJECTS)
.libs/$(1)/libxamarin$(4).x86_64.dylib: EXTRA_FLAGS=$$($(1)$(3)_COMMON_DYLIB_FLAGS)
.libs/$(1)/libxamarin$(4).x86_64.dylib: $$(x86_64_$(1)$(3)_OBJECTS)
.libs/$(1)/libxamarin$(4).armv7.dylib: EXTRA_FLAGS=$$($(1)$(3)_COMMON_DYLIB_FLAGS)
.libs/$(1)/libxamarin$(4).armv7.dylib: $$(armv7_$(1)$(3)_OBJECTS)
.libs/$(1)/libxamarin$(4).armv7s.dylib: EXTRA_FLAGS=$$($(1)$(3)_COMMON_DYLIB_FLAGS)
.libs/$(1)/libxamarin$(4).armv7s.dylib: $$(armv7s_$(1)$(3)_OBJECTS)
.libs/$(1)/libxamarin$(4).arm64.dylib: EXTRA_FLAGS=$$($(1)$(3)_COMMON_DYLIB_FLAGS)
.libs/$(1)/libxamarin$(4).arm64.dylib: $$(arm64_$(1)$(3)_OBJECTS)
.libs/$(1)/libxamarin$(4).armv7k.dylib: EXTRA_FLAGS=$$($(1)$(3)_COMMON_DYLIB_FLAGS)
.libs/$(1)/libxamarin$(4).armv7k.dylib: $$(armv7k_$(1)$(3)_OBJECTS)
endef
$(eval $(call LibXamarinTemplate,ios,IOS))
$(eval $(call LibXamarinTemplate,ios,IOS,_DEBUG,-debug))
$(eval $(call LibXamarinTemplate,watchos,WATCHOS))
$(eval $(call LibXamarinTemplate,watchos,WATCHOS,_DEBUG,-debug))
$(eval $(call LibXamarinTemplate,tvos,TVOS))
$(eval $(call LibXamarinTemplate,tvos,TVOS,_DEBUG,-debug))
#
# Xamarin.Mac
#
MAC_ARCHITECTURES = i386 x86_64
CLANG_ARCH = $(addprefix -arch ,$(MAC_ARCHITECTURES))
MAC_CLANG = DEVELOPER_DIR=$(XCODE_DEVELOPER_ROOT) $(MAC_CC)
MAC_SHIPPED_HEADERS = xamarin/launch.h
MAC_OBJC_CFLAGS=-ObjC++ -std=c++0x -fno-exceptions
MAC_CFLAGS = -mmacosx-version-min=$(MIN_OSX_SDK_VERSION) -Wall -DMONOMAC -g
MAC_LDFLAGS = -mmacosx-version-min=$(MIN_OSX_SDK_VERSION) -framework AppKit
MAC_STATIC_CFLAGS = $(MAC_CFLAGS) -I$(TOP)/builds/$(BUILD_DESTDIR)/install/mac32/include/mono-2.0
MAC_SOURCES = $(SHARED_SOURCES) $(SHARED_I386_SOURCES) $(SHARED_X86_64_SOURCES) launcher.m
ALLOWED_UNDEFINED_SYMBOLS = _xamarin_enable_debug _xammac_setup
MAC_LIBS = \
XamMacLauncher \
libextension.a \
2016-04-21 15:19:32 +03:00
libxammac.a \
libxammac-debug.a \
libxammac.dylib \
libxammac-debug.dylib \
libxammac-system.a \
libxammac-system-debug.a \
#
# XamMacLauncher: -DDYNAMIC_MONO_RUNTIME -DSYSTEM_LAUNCHER
#  This is installed as lib/XamMacLauncher, and is used by the XS plugin as the launcher
# when mmp is not used.
#
# libxammac[-debug].a: (no defines)
# This is linked into the native executable when embedding the Mono runtime.
#
# libxammac[-debug].dylib: -DDYNAMIC_MONO_RUNTIME -DDYLIB
# This is not officially supported. It's used when not wanting to use mmp for
# whatever reason (usually to make build processes easier). There is no good
# reason to keep using it, since mmp now supports creating empty 'shell' apps
# with no assemblies, which the user can fill in as they want.
#
# libxammac-system[-debug].a: -DDYNAMIC_MONO_RUNTIME
# This is used linked into the native executable when using the system Mono (i.e. not)
# embedding the Mono runtime).
#
all-local:: $(TARGETS)
define ObjTemplate
DYNAMIC_DYLIB$(2)_OBJECTS = $$(foreach src,$$(MAC_SOURCES),.libs/mac/$$(basename $$(src))$(3).dylib.$(1).o)
STATIC_LAUNCHER$(2)_OBJECTS = $$(foreach src,$$(MAC_SOURCES),.libs/mac/$$(basename $$(src))$(3).static.$(1).o)
SYSTEM_LAUNCHER$(2)_OBJECTS = $$(foreach src,$$(MAC_SOURCES),.libs/mac/$$(basename $$(src))$(3).system.$(1).o)
.libs/mac/%$(3).dylib.$(1).o: %.m $$(SHARED_HEADERS) | .libs/mac
$$(call Q_2,OBJC, [mac]) $(MAC_CLANG) -arch $(1) $(4) -c $$(MAC_OBJC_CFLAGS) $$(MAC_CFLAGS) -DDYNAMIC_MONO_RUNTIME -DDYLIB -o $$@ $$<
.libs/mac/%$(3).dylib.$(1).o: %.s $$(SHARED_HEADERS) | .libs/mac
$$(call Q_2,ASM, [mac]) $(MAC_CLANG) -arch $(1) $(4) -c $$(MAC_CFLAGS) -DDYNAMIC_MONO_RUNTIME -DDYLIB -o $$@ $$<
.libs/mac/%$(3).static.$(1).o: %.s $$(SHARED_HEADERS) | .libs/mac
$$(call Q_2,ASM, [mac]) $(MAC_CLANG) -arch $(1) $(4) -c $$(MAC_STATIC_CFLAGS) -o $$@ $$<
.libs/mac/%$(3).static.$(1).o: %.m $$(SHARED_HEADERS) | .libs/mac
$$(call Q_2,OBJC, [mac]) $(MAC_CLANG) -arch $(1) $(4) $$(MAC_OBJC_CFLAGS) -c $$(MAC_STATIC_CFLAGS) -o $$@ $$<
.libs/mac/%$(3).system.$(1).o: %.m $$(SHARED_HEADERS) | .libs/mac
$$(call Q_2,OBJC, [mac]) $(MAC_CLANG) -arch $(1) $(4) $$(MAC_OBJC_CFLAGS) -c $$(MAC_CFLAGS) -DDYNAMIC_MONO_RUNTIME -o $$@ $$<
.libs/mac/%$(3).system.$(1).o: %.s $$(SHARED_HEADERS) | .libs/mac
$$(call Q_2,ASM, [mac]) $(MAC_CLANG) -arch $(1) $(4) -c $(MAC_CFLAGS) -DDYNAMIC_MONO_RUNTIME -o $$@ $$<
.libs/mac/libxammac$(3).$(1).dylib: $$(DYNAMIC_DYLIB$(2)_OBJECTS)
$$(call Q_2,LD, [mac]) $(MAC_CLANG) -arch $(1) -dynamiclib $$(MAC_LDFLAGS) -Wl,-install_name,libxammac$(3).dylib -o $$@ $$^ $$(addprefix -Xlinker -U -Xlinker ,$$(ALLOWED_UNDEFINED_SYMBOLS))
.libs/mac/libxammac$(3).$(1).a: $$(STATIC_LAUNCHER$(2)_OBJECTS)
$$(call Q_2,LIB, [mac]) xcrun libtool -no_warning_for_no_symbols -static -o $$@ $$^
2016-04-21 15:19:32 +03:00
.libs/mac/libxammac-system$(3).$(1).a: $$(SYSTEM_LAUNCHER$(2)_OBJECTS)
$$(call Q_2,LIB, [mac]) xcrun libtool -no_warning_for_no_symbols -static -o $$@ $$^
2016-04-21 15:19:32 +03:00
endef
$(eval $(call ObjTemplate,i386,32))
$(eval $(call ObjTemplate,x86_64,64))
$(eval $(call ObjTemplate,i386,DEBUG32,-debug,-DDEBUG))
$(eval $(call ObjTemplate,x86_64,DEBUG64,-debug,-DDEBUG))
$(foreach arch,$(MAC_ARCHITECTURES),.libs/mac/extension-main.$(arch).o): EXTRA_DEFINES=-DEXTENSION
.libs/mac/extension-main.%.o:
$(Q) rm -f $@
$(call Q_2,CC, [mac]) $(MAC_CLANG) -c -DEXTENSION extension-main.m -arch $* -o $@
.libs/mac/libextension.%.a: .libs/mac/extension-main.%.o
$(Q) rm -f $@
$(call Q_2,AR, [mac]) $(DEVICE_BIN_PATH)/ar cru $@ $^
.libs/mac/libextension.a: $(foreach arch,$(MAC_ARCHITECTURES),.libs/mac/libextension.$(arch).a)
$(Q) rm -f $@
$(call Q_2,LIPO, [mac]) $(DEVICE_BIN_PATH)/lipo $^ -create -output $@
2016-04-21 15:19:32 +03:00
.libs/mac/libxammac-debug.dylib: .libs/mac/libxammac-debug.x86_64.dylib .libs/mac/libxammac-debug.i386.dylib
$(call Q_2,LIPO, [mac]) xcrun lipo -create $^ -o $@
.libs/mac/libxammac.dylib: .libs/mac/libxammac.x86_64.dylib .libs/mac/libxammac.i386.dylib
$(call Q_2,LIPO, [mac]) xcrun lipo -create $^ -o $@
.libs/mac/libxammac-debug.a: .libs/mac/libxammac-debug.i386.a .libs/mac/libxammac-debug.x86_64.a
$(call Q_2,LIPO, [mac]) xcrun lipo -create $^ -o $@
.libs/mac/libxammac.a: .libs/mac/libxammac.i386.a .libs/mac/libxammac.x86_64.a
$(call Q_2,LIPO, [mac]) xcrun lipo -create $^ -o $@
.libs/mac/libxammac-system-debug.a: .libs/mac/libxammac-system-debug.i386.a .libs/mac/libxammac-system-debug.x86_64.a
$(call Q_2,LIPO, [mac]) xcrun lipo -create $^ -o $@
.libs/mac/libxammac-system.a: .libs/mac/libxammac-system.i386.a .libs/mac/libxammac-system.x86_64.a
$(call Q_2,LIPO, [mac]) xcrun lipo -create $^ -o $@
.libs/mac/XamMacLauncher: $(MAC_SOURCES) $(SHARED_HEADERS) | .libs/mac
$(call Q_2,CC, [mac]) $(MAC_CLANG) $(MAC_LDFLAGS) $(MAC_OBJC_CFLAGS) $(MAC_CFLAGS) -DDYNAMIC_MONO_RUNTIME -DSYSTEM_LAUNCHER -arch i386 -o $@ $(filter %.c %.m %.mm,$(MAC_SOURCES)) -x assembler-with-cpp $(filter %.s,$(MAC_SOURCES))
RUNTIME_MAC_TARGETS_DIRS += \
.libs/mac \
$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib \
$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono \
$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/include/xamarin \
RUNTIME_MAC_TARGETS += \
$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/XamMacLauncher \
$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/XamMacLauncher \
$(foreach file,$(SHIPPED_HEADERS),$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/include/$(file)) \
$(foreach file,$(MAC_SHIPPED_HEADERS),$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/include/$(file)) \
$(foreach file,$(MAC_LIBS),$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/$(file)) \
$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/XamMacLauncher: .libs/mac/XamMacLauncher | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib
$(Q) install -m 0755 $< $@
$(Q) xcrun strip -S $@
$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/%: .libs/mac/% | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib
$(Q) cp $< $@
$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/XamMacLauncher: | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono
$(Q) ln -sF ../XamMacLauncher $@
$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/include/%.h: %.h | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/include/xamarin
$(Q) install -m 0644 $< $@
$(RUNTIME_MAC_TARGETS_DIRS):
$(Q) mkdir -p $@
all-local:: $(RUNTIME_MAC_TARGETS)
install-local:: $(RUNTIME_MAC_TARGETS)
#
# Common
#
clean-local::
$(Q) rm -f *.o
$(Q) rm -f *.a
$(Q) rm -Rf .libs
$(Q) rm -f xamarin/mono-runtime.h mono-runtime.m delegates.h delegates.inc Delegates.generated.cs
include $(TOP)/mk/rules.mk