xamarin-macios/msbuild/Makefile

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

2016-04-21 16:40:25 +03:00
TOP = ..
include $(TOP)/Make.config
include $(TOP)/mk/rules.mk
#
# To add a new MSBuild assembly, add the base name to the corresponding [IOS|MAC|WATCH]_[BINDING]_TASK_ASSEMBLIES variable.
#
# New .targets and .props files are picked up automatically if they're in a directory with already
# existing .targets or .props files. If .targets or .props are added in a new directory, add that
# directory using a wildcard function to the corresponding [IOS|MAC|WATCH]_TARGETS variable.
#
##
## Common definitions
##
MSBUILD_PRODUCTS =
MSBUILD_DIRECTORIES =
MSBUILD_SYMLINKS =
MSBUILD_TASK_ASSEMBLIES =
MSBUILD_REFERENCE_ASSEMBLIES =
ALL_SOURCES = $(wildcard $(TOP)/msbuild/*/*.cs) $(wildcard $(TOP)/msbuild/*/*/*.cs) $(wildcard $(TOP)/msbuild/*/*/*/*.cs) *.sln $(wildcard */*.csproj) $(wildcard */packages.config)
CONFIG = Debug
##
## XI definitions
##
IOS_TARGETS = \
$(wildcard Xamarin.iOS.Tasks.Core/Xamarin.MonoTouch.*.targets) \
$(wildcard Xamarin.iOS.Tasks.Core/Xamarin.iOS.*.props) \
$(wildcard Xamarin.iOS.Tasks.Core/Xamarin.iOS.*.targets) \
IOS_BINDING_TARGETS = $(wildcard Xamarin.ObjcBinding.Tasks/*.targets)
IOS_TASK_ASSEMBLIES = \
Xamarin.iOS.Tasks \
Xamarin.iOS.Tasks.Core \
Xamarin.MacDev.Tasks \
Xamarin.MacDev.Tasks.Core \
IOS_BINDING_TASK_ASSEMBLIES = \
Xamarin.ObjcBinding.Tasks \
IOS_TASK_REFERENCE_ASSEMBLIES = \
Xamarin.MacDev \
Newtonsoft.Json \
IOS_DIRECTORIES = \
$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/2.1 \
$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.iOS \
$(IOS_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild-frameworks/MonoTouch/v1.0/RedistList \
$(IOS_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild-frameworks/Xamarin.iOS/v1.0/RedistList \
$(IOS_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/ \
$(IOS_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/iOS \
$(IOS_DESTDIR)/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/msbuild/iOS/ \
# these point to a file in /Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/mono/2.1/
IOS_2_1_SYMLINKS = \
$(IOS_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild-frameworks/MonoTouch/v1.0/RedistList/FrameworkList.xml \
$(foreach target,$(IOS_TARGETS) ,$(IOS_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/iOS/$(notdir $(target))) \
$(foreach target,$(IOS_BINDING_TARGETS) ,$(IOS_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/$(notdir $(target))) \
$(foreach dll,$(IOS_TASK_REFERENCE_ASSEMBLIES),$(IOS_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/iOS/$(dll).dll) \
$(foreach dll,$(IOS_TASK_ASSEMBLIES) ,$(IOS_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/iOS/$(dll).dll) \
$(foreach dll,$(IOS_BINDING_TASK_ASSEMBLIES) ,$(IOS_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/$(dll).dll) \
$(foreach target,$(IOS_TARGETS) ,$(IOS_DESTDIR)/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/msbuild/iOS/$(notdir $(target))) \
$(foreach target,$(IOS_BINDING_TARGETS) ,$(IOS_DESTDIR)/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/msbuild/iOS/$(notdir $(target))) \
$(foreach dll,$(IOS_TASK_REFERENCE_ASSEMBLIES),$(IOS_DESTDIR)/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/msbuild/iOS/$(dll).dll) \
$(foreach dll,$(IOS_TASK_ASSEMBLIES) ,$(IOS_DESTDIR)/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/msbuild/iOS/$(dll).dll) \
$(foreach dll,$(IOS_BINDING_TASK_ASSEMBLIES) ,$(IOS_DESTDIR)/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/msbuild/iOS/$(dll).dll) \
# these point to a file in /Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/mono/Xamarin.iOS
IOS_X_I_SYMLINKS = \
$(IOS_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild-frameworks/Xamarin.iOS/v1.0/RedistList/FrameworkList.xml \
IOS_SYMLINKS = $(IOS_2_1_SYMLINKS) $(IOS_X_I_SYMLINKS)
IOS_PRODUCTS = \
$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/2.1/FrameworkList.xml \
$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.iOS/FrameworkList.xml \
$(foreach target,$(IOS_TARGETS) ,$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/2.1/$(notdir $(target))) \
$(foreach target,$(IOS_BINDING_TARGETS) ,$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/2.1/$(notdir $(target))) \
$(foreach dll,$(IOS_TASK_REFERENCE_ASSEMBLIES),$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/2.1/$(dll).dll) \
$(foreach dll,$(IOS_TASK_ASSEMBLIES) ,$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/2.1/$(dll).dll) \
$(foreach dll,$(IOS_BINDING_TASK_ASSEMBLIES) ,$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/2.1/$(dll).dll) \
$(IOS_SYMLINKS)
all-ios: $(IOS_PRODUCTS)
symlinks-ios: $(IOS_SYMLINKS)
ifdef INCLUDE_IOS
MSBUILD_PRODUCTS += all-ios
MSBUILD_DIRECTORIES += $(IOS_DIRECTORIES)
MSBUILD_SYMLINKS += symlinks-ios
MSBUILD_TASK_ASSEMBLIES += $(IOS_TASK_ASSEMBLIES) $(IOS_BINDING_TASK_ASSEMBLIES)
MSBUILD_REFERENCE_ASSEMBLIES += $(IOS_TASK_REFERENCE_ASSEMBLIES)
endif
##
## XW definitions
##
WATCH_TARGETS = \
$(wildcard Xamarin.iOS.Tasks.Core/Xamarin.WatchOS.*.props) \
$(wildcard Xamarin.iOS.Tasks.Core/Xamarin.WatchOS.*.targets) \
WATCH_DIRECTORIES = \
$(IOS_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild-frameworks/Xamarin.WatchOS/v1.0/RedistList \
$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/msbuild/WatchOS \
# XW symlinks the entire $(MONOTOUCH_PREFIX)/lib/msbuild/WatchOS directory to
# /Library/Frameworks/Mono.framework/External/xbuild/Xamarin/WatchOS instead of
# each separate file (like XI does).
WATCH_SYMLINKS = \
$(IOS_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild-frameworks/Xamarin.WatchOS/v1.0/RedistList/FrameworkList.xml \
$(IOS_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/WatchOS \
WATCH_PRODUCTS = \
$(WATCH_SYMLINKS) \
$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/msbuild/WatchOS/FrameworkList.xml \
$(foreach target,$(WATCH_TARGETS) ,$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/msbuild/WatchOS/$(notdir $(target))) \
all-watch: $(WATCH_PRODUCTS)
symlinks-watch: $(WATCH_SYMLINKS)
ifdef INCLUDE_WATCH
MSBUILD_PRODUCTS += all-watch
MSBUILD_DIRECTORIES += $(WATCH_DIRECTORIES)
MSBUILD_SYMLINKS += symlinks-watch
endif
##
## Xamarin.TVOS definitions
##
TVOS_TARGETS = \
$(wildcard Xamarin.iOS.Tasks.Core/Xamarin.TVOS.*.props) \
$(wildcard Xamarin.iOS.Tasks.Core/Xamarin.TVOS.*.targets) \
TVOS_DIRECTORIES = \
$(IOS_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild-frameworks/Xamarin.TVOS/v1.0/RedistList \
$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/msbuild/TVOS \
# Xamarin.TVOS symlinks the entire $(MONOTOUCH_PREFIX)/lib/msbuild/TVOS directory to
# /Library/Frameworks/Mono.framework/External/xbuild/Xamarin/TVOS instead of
# each separate file (like XI does).
TVOS_SYMLINKS = \
$(IOS_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild-frameworks/Xamarin.TVOS/v1.0/RedistList/FrameworkList.xml \
$(IOS_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/TVOS \
TVOS_PRODUCTS = \
$(TVOS_SYMLINKS) \
$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/msbuild/TVOS/FrameworkList.xml \
$(foreach target,$(TVOS_TARGETS) ,$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/msbuild/TVOS/$(notdir $(target))) \
all-tvos: $(TVOS_PRODUCTS)
symlinks-tvos: $(TVOS_SYMLINKS)
ifdef INCLUDE_TVOS
MSBUILD_PRODUCTS += all-tvos
MSBUILD_DIRECTORIES += $(TVOS_DIRECTORIES)
MSBUILD_SYMLINKS += symlinks-tvos
endif
##
## XM definitions
##
MAC_TARGETS = $(wildcard Xamarin.Mac.Tasks/*.props) $(wildcard Xamarin.Mac.Tasks/*.targets)
MAC_BINDING_TARGETS =
MAC_TASK_ASSEMBLIES = \
Xamarin.Mac.Tasks \
Xamarin.MacDev.Tasks \
Xamarin.MacDev.Tasks.Core \
MAC_BINDING_TASK_ASSEMBLIES =
MAC_TASK_REFERENCE_ASSEMBLIES = \
Xamarin.MacDev \
Newtonsoft.Json \
MAC_DIRECTORIES = \
$(MAC_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Mac \
$(MAC_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild-frameworks/Xamarin.Mac/v2.0/RedistList \
$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/msbuild \
$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/4.5/RedistList \
$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/etc/mono/4.5 \
MAC_SYMLINKS = \
$(MAC_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild-frameworks/Xamarin.Mac/v2.0/RedistList/FrameworkList.xml \
$(foreach target,$(MAC_TARGETS) ,$(MAC_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Mac/$(notdir $(target))) \
$(foreach target,$(MAC_BINDING_TARGETS) ,$(MAC_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Mac/$(notdir $(target))) \
$(foreach dll,$(MAC_TASK_REFERENCE_ASSEMBLIES),$(MAC_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Mac/$(dll).dll) \
$(foreach dll,$(MAC_TASK_ASSEMBLIES) ,$(MAC_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Mac/$(dll).dll) \
$(foreach dll,$(MAC_BINDING_TASK_ASSEMBLIES) ,$(MAC_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/Mac/$(dll).dll) \
MAC_PRODUCTS = \
$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/msbuild/FrameworkList.xml \
$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/4.5/RedistList/FrameworkList.xml \
$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/etc/mono/4.5/machine.config \
$(foreach target,$(MAC_TARGETS) ,$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/msbuild/$(notdir $(target))) \
$(foreach target,$(MAC_BINDING_TARGETS) ,$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/msbuild/$(notdir $(target))) \
$(foreach dll,$(MAC_TASK_REFERENCE_ASSEMBLIES),$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/msbuild/$(dll).dll) \
$(foreach dll,$(MAC_TASK_ASSEMBLIES) ,$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/msbuild/$(dll).dll) \
$(foreach dll,$(MAC_BINDING_TASK_ASSEMBLIES) ,$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/msbuild/$(dll).dll) \
$(MAC_SYMLINKS) \
all-mac: $(MAC_PRODUCTS)
symlinks-mac: $(MAC_SYMLINKS)
ifdef INCLUDE_MAC
MSBUILD_PRODUCTS += all-mac
MSBUILD_DIRECTORIES += $(MAC_DIRECTORIES)
MSBUILD_SYMLINKS += symlinks-mac
MSBUILD_TASK_ASSEMBLIES += $(MAC_TASK_ASSEMBLIES) $(MAC_BINDING_TASK_ASSEMBLIES)
MSBUILD_REFERENCE_ASSEMBLIES += $(MAC_TASK_REFERENCE_ASSEMBLIES)
endif
##
## Common definitions
##
##
## XI ##
##
# Symlinks
#
# Everything in /Library/Frameworks/Mono.framework/External are links into /Library/Frameworks/Xamarin.iOS.framework/Versions/Current
# This makes it easy to switch XI, by just pointing /Library/Frameworks/Xamarin.iOS.framework/Versions/Current somewhere else
$(IOS_2_1_SYMLINKS): | $(IOS_DIRECTORIES)
$(Q) ln -fs $(IOS_TARGETDIR)/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/mono/2.1/$(notdir $@) $@
$(IOS_X_I_SYMLINKS): | $(IOS_DIRECTORIES)
$(Q) ln -fs $(IOS_TARGETDIR)/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/mono/Xamarin.iOS/$(notdir $@) $@
# The actual content goes into /Library/Frameworks/Xamarin.iOS.framework/Versions/Current
$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/2.1/FrameworkList.xml: Xamarin.iOS.Tasks.Core/FrameworkList.xml.in Makefile | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/2.1
$(Q) sed 's@%TargetFrameworkDirectory%@$(IOS_TARGETDIR)/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/mono/2.1@' $< > $@
$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.iOS/FrameworkList.xml: Xamarin.iOS.Tasks.Core/Xamarin.iOS-FrameworkList.xml.in Makefile | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/Xamarin.iOS
$(Q) sed 's@%TargetFrameworkDirectory%@$(IOS_TARGETDIR)/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/mono/Xamarin.iOS@' $< > $@
$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/2.1/%: Xamarin.ObjcBinding.Tasks/% | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/2.1
$(Q) install -m 644 $< $@
$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/2.1/%: Xamarin.iOS.Tasks.Core/% | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/2.1
$(Q) install -m 644 $< $@
$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/2.1/%.dll: build/%.dll | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/mono/2.1
$(Q) install -m 644 $< $@
##
## XW
##
$(IOS_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild-frameworks/Xamarin.WatchOS/v1.0/RedistList/FrameworkList.xml: | $(IOS_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild-frameworks/Xamarin.WatchOS/v1.0/RedistList
$(Q) ln -fs $(IOS_TARGETDIR)/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/msbuild/WatchOS/$(notdir $@) $@
$(IOS_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/WatchOS: | $(IOS_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild/Xamarin
$(Q) ln -Fhs $(IOS_TARGETDIR)/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/msbuild/WatchOS $@
$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/msbuild/WatchOS/FrameworkList.xml: Xamarin.iOS.Tasks.Core/Xamarin.WatchOS-FrameworkList.xml.in Makefile | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/msbuild/WatchOS
$(Q) sed 's@%TargetFrameworkDirectory%@$(IOS_TARGETDIR)/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/mono/Xamarin.WatchOS@' $< > $@
$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/msbuild/WatchOS/%: Xamarin.iOS.Tasks.Core/% | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/msbuild/WatchOS
$(Q) install -m 644 $< $@
$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/msbuild/WatchOS/%.dll: build/%.dll | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/msbuild/WatchOS
$(Q) install -m 644 $< $@
##
## Xamarin.TVOS
##
$(IOS_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild-frameworks/Xamarin.TVOS/v1.0/RedistList/FrameworkList.xml: | $(IOS_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild-frameworks/Xamarin.TVOS/v1.0/RedistList
$(Q) ln -fs $(IOS_TARGETDIR)/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/msbuild/TVOS/$(notdir $@) $@
$(IOS_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild/Xamarin/TVOS: $(IOS_DESTDIR)/Library/Frameworks/Mono.framework/External/xbuild/Xamarin
$(Q) ln -Fhs $(IOS_TARGETDIR)/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/msbuild/TVOS $@
$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/msbuild/TVOS/FrameworkList.xml: Xamarin.iOS.Tasks.Core/Xamarin.TVOS-FrameworkList.xml.in Makefile | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/msbuild/TVOS
$(Q) sed 's@%TargetFrameworkDirectory%@$(IOS_TARGETDIR)/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/mono/Xamarin.TVOS@' $< > $@
$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/msbuild/TVOS/%: Xamarin.iOS.Tasks.Core/% | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/msbuild/TVOS
$(Q) install -m 644 $< $@
$(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/msbuild/TVOS/%.dll: build/%.dll | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/msbuild/TVOS
$(Q) install -m 644 $< $@
##
## XM ##
##
# Symlinks
#
# Everything in /Library/Frameworks/Mono.framework/External are links into /Library/Frameworks/Xamarin.Mac.framework/Versions/Current
# This makes it easy to switch XM, by just pointing /Library/Frameworks/Xamarin.Mac.framework/Versions/Current somewhere else
$(MAC_SYMLINKS): | $(MAC_DIRECTORIES)
$(Q) ln -fs $(MAC_TARGETDIR)/Library/Frameworks/Xamarin.Mac.framework/Versions/Current/lib/msbuild/$(notdir $@) $@
# The actual content goes into /Library/Frameworks/Xamarin.Mac.framework/Versions/Current
$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/msbuild/FrameworkList.xml: Xamarin.Mac.Tasks/FrameworkList.xml.in Makefile | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/msbuild
$(Q) sed 's@%TargetFrameworkDirectory%@$(MAC_TARGETDIR)/Library/Frameworks/Xamarin.Mac.framework/Versions/Current/lib/mono/Xamarin.Mac@' $< > $@
$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/4.5/RedistList/FrameworkList.xml: Xamarin.Mac.Tasks/FrameworkList.xml.in Makefile | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/mono/4.5/RedistList
$(Q) sed 's@%TargetFrameworkDirectory%@$(MAC_TARGETDIR)/Library/Frameworks/Xamarin.Mac.framework/Versions/Current/lib/mono/4.5@' $< > $@
$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/etc/mono/4.5/machine.config: $(TOP)/tools/mmp/machine.4_5.config | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/etc/mono/4.5
$(Q) cp $(TOP)/tools/mmp/machine.4_5.config $@
$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/msbuild/%: Xamarin.Mac.Tasks/% | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/msbuild
$(Q) install -m 644 $< $@
$(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/msbuild/%.dll: build/%.dll | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/msbuild
$(Q) install -m 644 $< $@
##
## Common targets ##
##
# we must install locally during 'make all', because the F# build depends on the msbuild targets/assemblies.
all-local:: $(MSBUILD_PRODUCTS) test-xml
.build-stamp: $(ALL_SOURCES)
$(Q) $(SYSTEM_MONO) /Library/Frameworks/Mono.framework/Versions/Current/lib/mono/nuget/NuGet.exe restore
$(Q) $(SYSTEM_XBUILD) $(XBUILD_VERBOSITY)
$(Q) touch $@
# make all the target assemblies build when any of the sources have changed
$(foreach dll,$(MSBUILD_TASK_ASSEMBLIES),$(dll)/bin/$(CONFIG)/$(dll).dll): .build-stamp
# Always remake the symlinks
.PHONY: $(MSBUILD_SYMLINKS)
# Xamarin.MacDev.dll comes from the Xamarin.MacDev repository
# Newtonsoft.Json.dll comes from a NuGet
$(foreach dll,$(sort $(MSBUILD_REFERENCE_ASSEMBLIES)),build/$(notdir $(dll)).dll): .build-stamp | build
$(Q) cp Xamarin.MacDev.Tasks.Core/bin/$(CONFIG)/$(notdir $@) $@
define copyToBuild
build/$(1).dll: $(1)/bin/$(CONFIG)/$(1).dll | build
$$(Q) cp $$< $$@
endef
# Create the rules to copy all the dlls into the 'build' directory.
$(foreach dll,$(sort $(MSBUILD_TASK_ASSEMBLIES)),$(eval $(call copyToBuild,$(dll))))
# this is a directory-creating target.
$(MSBUILD_DIRECTORIES) build:
$(Q) mkdir -p $@
install-symlinks: $(MSBUILD_SYMLINKS)
install-local:: $(MSBUILD_PRODUCTS)
test-xml:
$(Q) xmllint --noout $(wildcard */*.targets) $(wildcard */*.props)
@echo Targets files are valid XML
# make will automatically consider files created in chained implicit rules as temporary files, and delete them afterwards
# marking those files as .SECONDARY will prevent that deletion.
.SECONDARY: $(foreach file,$(MSBUILD_TASK_ASSEMBLIES) $(MSBUILD_REFERENCE_ASSEMBLIES),unbuild/$(file).dll) $(foreach file,$(MSBUILD_TASK_ASSEMBLIES) $(MSBUILD_REFERENCE_ASSEMBLIES),build/$(file).dll)