GENERATOR_SOURCES = \ $(TOP)/src/btouch.cs \ $(TOP)/src/error.cs \ $(TOP)/src/generator.cs \ $(TOP)/src/generator-attributes.cs \ $(TOP)/src/generator-attribute-manager.cs \ $(TOP)/src/generator-enums.cs \ $(TOP)/src/generator-filters.cs \ $(TOP)/src/generator-typemanager.cs \ $(TOP)/src/ObjCRuntime/Stret.cs \ $(TOP)/tools/common/TargetFramework.cs \ $(TOP)/tools/common/StringUtils.cs \ build/generator-frameworks.g.cs \ $(MONO_PATH)/mcs/class/Mono.Options/Mono.Options/Options.cs \ GENERATOR_DEFINES = -d:BGENERATOR -d:NET_4_0 # # IKVM # IKVM_REFLECTION_SOURCES = \ $(MONO_PATH)/external/ikvm/reflect/Impl/ITypeOwner.cs \ $(MONO_PATH)/external/ikvm/reflect/Impl/SymbolSupport.cs \ $(MONO_PATH)/mcs/class/Mono.Security/Mono.Security.Cryptography/CryptoConvert.cs \ $(wildcard $(MONO_PATH)/external/ikvm/reflect/*.cs) \ $(wildcard $(MONO_PATH)/external/ikvm/reflect/Emit/*.cs) \ $(wildcard $(MONO_PATH)/external/ikvm/reflect/Metadata/*.cs) \ $(wildcard $(MONO_PATH)/external/ikvm/reflect/Reader/*.cs) \ $(wildcard $(MONO_PATH)/external/ikvm/reflect/Writer/*.cs) \ GENERATOR_ATTRIBUTE_SOURCES = \ $(TOP)/src/Foundation/AdviceAttribute.cs \ $(TOP)/src/Foundation/ExportAttribute.cs \ $(TOP)/src/Foundation/FieldAttribute.cs \ $(TOP)/src/Foundation/ModelAttribute.cs \ $(TOP)/src/Foundation/NotImplementedAttribute.cs \ $(TOP)/src/Foundation/PreserveAttribute.cs \ $(TOP)/src/Foundation/ProtocolAttribute.cs \ $(TOP)/src/Foundation/RegisterAttribute.cs \ $(TOP)/src/ObjCRuntime/AlphaAttribute.cs \ $(TOP)/src/ObjCRuntime/ArgumentSemantic.cs \ $(TOP)/src/ObjCRuntime/BindAsAttribute.cs \ $(TOP)/src/ObjCRuntime/BindingImplAttribute.cs \ $(TOP)/src/ObjCRuntime/LinkWithAttribute.cs \ $(TOP)/src/ObjCRuntime/NativeAttribute.cs \ $(TOP)/src/ObjCRuntime/PlatformAvailability2.cs \ $(TOP)/src/ObjCRuntime/PlatformAvailabilityShadow.cs \ $(TOP)/src/ObjCRuntime/Registrar.core.cs \ IKVM_REFLECTION_FLAGS = -d:NO_AUTHENTICODE,STATIC,NO_SYMBOL_WRITER build/common/bgen.exe: $(GENERATOR_SOURCES) $(IKVM_REFLECTION_SOURCES) $(GENERATOR_ATTRIBUTE_SOURCES) Makefile.generator $(Q) mkdir -p build/common $(Q_GEN) $(SYSTEM_CSC) -debug:portable -out:$@ $(IKVM_REFLECTION_FLAGS) $(GENERATOR_DEFINES) $(IKVM_REFLECTION_SOURCES) $(GENERATOR_ATTRIBUTE_SOURCES) $(GENERATOR_SOURCES) # The command-line arguments in the csproj are currently kept up-to-date manually generator.csproj: generator-ikvm.csproj.in Makefile.generator @sed \ -e 's^^$(foreach file,$(subst /,\\,$(IKVM_REFLECTION_SOURCES)),ikvm\\$(notdir $(subst \\,/,$(file))))^' \ -e 's^^$(foreach file,$(subst /,\\,$(GENERATOR_SOURCES) $(GENERATOR_ATTRIBUTE_SOURCES)),)^' \ -e 's^%WORKING_DIR%^$(CURDIR)^' \ -e 's^%IOS_CLASSIC_ARGS%^$(IOS_GENERATOR_FLAGS) -core -sourceonly=$(IOS_BUILD_DIR)/compat/generated_sources -compiler=$(IOS_PMCS) -nostdlib -noconfig -no-mono-path -tmpdir=$(IOS_BUILD_DIR)/compat -baselib=$(IOS_BUILD_DIR)/compat/core.dll -r=$(MONO_PATH)/mcs/class/lib/monotouch/System.dll -ns=MonoTouch.ObjCRuntime -native-exception-marshalling --ns=MonoTouch.ObjCRuntime -p $(xi_compat_profile) $(IOS_APIS)^' \ -e 's^%IOS_CLASSIC_PMCS_PROFILE%^compat-ios^' \ -e 's^%IOS_UNIFIED_ARGS%^$(IOS_GENERATOR_FLAGS) -core -sourceonly=$(IOS_BUILD_DIR)/native/generated_sources -compiler=$(IOS_PMCS) -nostdlib -noconfig -no-mono-path -tmpdir=$(IOS_BUILD_DIR)/native -baselib=$(IOS_BUILD_DIR)/native/core.dll -r=$(MONO_PATH)/mcs/class/lib/monotouch/System.dll -ns=MonoTouch.ObjCRuntime -native-exception-marshalling --ns=ObjCRuntime $(xi_native_profile) $(IOS_APIS)^' \ -e 's^%IOS_UNIFIED_PMCS_PROFILE%^native^' \ -e 's^%TVOS_ARGS%^-inline-selectors -process-enums -warnaserror:$(TVOS_GENERATOR_WARNASERROR) -core -sourceonly=$(TVOS_BUILD_DIR)/tvos/generated_sources -compiler=$(TVOS_PMCS) -nostdlib -noconfig -no-mono-path -tmpdir=$(TVOS_BUILD_DIR)/tvos -baselib=$(TVOS_BUILD_DIR)/tvos/core.dll -r=$(MONO_PATH)/mcs/class/lib/monotouch_tv/System.dll -ns=MonoTouch.ObjCRuntime -native-exception-marshalling -d:TVOS --ns:ObjCRuntime $(TVOS_APIS) --target-framework=Xamarin.TVOS,v1.0^' \ -e 's^%TVOS_PMCS_PROFILE%^tvos^' \ -e 's^%WATCHOS_ARGS%^-inline-selectors -process-enums -warnaserror:$(WATCH_GENERATOR_WARNASERROR) -core -sourceonly=$(WATCH_BUILD_DIR)/watch/generated_sources -compiler=$(WATCH_PMCS) -nostdlib -noconfig -no-mono-path -tmpdir=$(WATCH_BUILD_DIR)/watch -baselib=$(WATCH_BUILD_DIR)/watch/core.dll -r=$(WATCH_MONO_PATH)/mcs/class/lib/monotouch_watch/System.dll -ns=MonoTouch.ObjCRuntime -native-exception-marshalling -d:WATCH --ns:ObjCRuntime $(WATCHOS_APIS) --target-framework=Xamarin.WatchOS,v1.0^' \ -e 's^%WATCHOS_PMCS_PROFILE%^watch^' \ -e 's^%MAC_CLASSIC_ARGS%^-d:MONOMAC -d:XAMARIN_MAC -compiler:$(MAC_BUILD_DIR)/compat/pmcs -process-enums -warnaserror:$(MAC_GENERATOR_WARNASERROR) -native-exception-marshalling -core -sourceonly:$(MAC_BUILD_DIR)/compat/generated-sources -tmpdir:$(MAC_BUILD_DIR)/compat -baselib:$(MAC_BUILD_DIR)/compat/core.dll -d:NO_SYSTEM_DRAWING --ns=MonoMac.ObjCRuntime -r:/Library/Frameworks/Mono.framework/Versions/Current/lib/mono/4.5/System.Drawing.dll $(xm_compat_profile) $(MAC_APIS)^' \ -e 's^%MAC_CLASSIC_PMCS_PROFILE%^compat-mac^' \ -e 's^%MAC_FULL_ARGS%^-d:MONOMAC -d:XAMARIN_MAC -compiler:$(MAC_BUILD_DIR)/full/pmcs -process-enums -warnaserror:$(MAC_GENERATOR_WARNASERROR) -native-exception-marshalling -core -sourceonly:$(MAC_BUILD_DIR)/full/generated-sources -tmpdir:$(MAC_BUILD_DIR)/full -baselib:$(MAC_BUILD_DIR)/full/core.dll -d:NO_SYSTEM_DRAWING --ns=ObjCRuntime -d:NO_SYSTEM_DRAWING $(xm_full_profile) $(MAC_APIS)^' \ -e 's^%MAC_FULL_PMCS_PROFILE%^full^' \ -e 's^%MAC_MOBILE_ARGS%^-d:MONOMAC -d:XAMARIN_MAC -compiler:$(MAC_BUILD_DIR)/mobile/pmcs -process-enums -warnaserror:$(MAC_GENERATOR_WARNASERROR) -native-exception-marshalling -core -sourceonly:$(MAC_BUILD_DIR)/mobile/generated-sources -tmpdir:$(MAC_BUILD_DIR)/mobile -baselib:$(MAC_BUILD_DIR)/mobile/core.dll -d:NO_SYSTEM_DRAWING --ns=ObjCRuntime $(SHARED_SYSTEM_DRAWING_SOURCES) $(xm_mobile_profile) $(MAC_APIS)^' \ -e 's^%MAC_MOBILE_PMCS_PROFILE%^mobile^' \ -e 's^%MD_MTOUCH_SDK_ROOT%^$(MD_MTOUCH_SDK_ROOT)^' \ -e 's^%XamarinMacFrameworkRoot%^$(XamarinMacFrameworkRoot)^' \ $< | xmllint --format - > $@ PROJECT_FILES += generator.csproj # # Common # build/generator-frameworks.g.cs: frameworks.sources Makefile.generator generate-frameworks.csharp @mkdir -p $(dir $@) @./generate-frameworks.csharp '$(IOS_FRAMEWORKS)' '$(MAC_FRAMEWORKS)' '$(WATCHOS_FRAMEWORKS)' '$(TVOS_FRAMEWORKS)' > $@ # # Xamarin.iOS (btouch) # IOS_TARGETS_DIRS += \ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/btouch \ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/bgen \ IOS_TARGETS += \ generator.csproj \ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/bgen/monotouch.BindingAttributes.dll \ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/bgen/Xamarin.iOS.BindingAttributes.dll \ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/bgen/bgen.exe \ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/bin/bgen \ IOS_TARGETS += \ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/bin/btouch \ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/bin/btouch-native \ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/bin/bgen: | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/bin $(Q_GEN) printf "#!/bin/sh -e\n\nexec /Library/Frameworks/Mono.framework/Versions/Current/bin/mono64 --debug $(abspath $(IOS_TARGETDIR)$(MONOTOUCH_PREFIX)/lib/bgen/bgen.exe) \"\$$@\"\n" > $@ $(Q) chmod +x $@ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/bin/btouch: | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/bin $(Q_GEN) printf "#!/bin/sh -e\n\nexec /Library/Frameworks/Mono.framework/Versions/Current/bin/mono64 --debug $(abspath $(IOS_TARGETDIR)$(MONOTOUCH_PREFIX)/lib/bgen/bgen.exe) --target-framework=MonoTouch,v1.0 \"\$$@\" \n" > $@ $(Q) chmod +x $@ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/bin/btouch-native: | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/bin $(Q_GEN) printf "#!/bin/sh -e\n\nexec /Library/Frameworks/Mono.framework/Versions/Current/bin/mono64 --debug $(abspath $(IOS_TARGETDIR)$(MONOTOUCH_PREFIX)/lib/bgen/bgen.exe) --target-framework=Xamarin.iOS,v1.0 \"\$$@\"\n" > $@ $(Q) chmod +x $@ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/bgen/%.dll: $(IOS_BUILD_DIR)/native/%.dll | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/bgen $(Q) install -m 0755 $< $@ $(Q) install -m 0644 $<.mdb $@.mdb $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/bgen/bgen.exe: build/common/bgen.exe | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/bgen $(Q) install -m 0755 $< $@ $(Q) install -m 0644 $< $(@:.exe=.pdb) $(IOS_BUILD_DIR)/native/Xamarin.iOS.BindingAttributes.dll: generator-attributes.cs Makefile.generator $(PMCS_EXE) $(Q) mkdir -p $(dir $@) $(Q_GEN) $(SYSTEM_MONO) --debug $(PMCS_EXE) -profile:"$(TOP)/src/pmcs-profiles/native" -compiler:$(IOS_MCS) -global-replace:"^XamCore.=" -out:$@ -debug generator-attributes.cs -target:library $(IOS_BUILD_DIR)/native/monotouch.BindingAttributes.dll: generator-attributes.cs Makefile.generator $(PMCS_EXE) $(Q) mkdir -p $(dir $@) $(Q_GEN) $(SYSTEM_MONO) --debug $(PMCS_EXE) -profile:"$(TOP)/src/pmcs-profiles/compat-ios" -compiler:$(IOS_MCS) -global-replace:"^XamCore.=MonoTouch." -out:$@ -debug generator-attributes.cs -target:library # # Xamarin.Watch (bwatch) # WATCH_TARGETS_DIRS += \ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/bwatch \ WATCH_TARGETS += \ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/bgen/Xamarin.WatchOS.BindingAttributes.dll \ WATCH_TARGETS += \ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/bin/bwatch \ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/bin/bwatch: Makefile.generator $(Q_GEN) printf "#!/bin/sh -e\n\nexec /Library/Frameworks/Mono.framework/Versions/Current/bin/mono64 --debug $(abspath $(IOS_TARGETDIR)$(MONOTOUCH_PREFIX)/lib/bgen/bgen.exe) --target-framework=Xamarin.WatchOS,v1.0 \"\$$@\"\n" > $@ $(Q) chmod +x $@ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/bgen/%.dll: $(WATCH_BUILD_DIR)/%.dll | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/bgen $(Q) install -m 0755 $< $@ $(Q) install -m 0644 $<.mdb $@.mdb $(WATCH_BUILD_DIR)/Xamarin.WatchOS.BindingAttributes.dll: generator-attributes.cs Makefile.generator $(PMCS_EXE) $(Q) mkdir -p $(dir $@) $(Q_GEN) $(SYSTEM_MONO) --debug $(PMCS_EXE) -profile:"$(TOP)/src/pmcs-profiles/watch" -compiler:$(SYSTEM_MCS) -global-replace:"^XamCore.=" -out:$@ -debug generator-attributes.cs -target:library # # # # Xamarin.TVOS (btv) # # TVOS_TARGETS_DIRS += \ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/btv \ TVOS_TARGETS += \ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/bgen/Xamarin.TVOS.BindingAttributes.dll \ TVOS_TARGETS += \ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/bin/btv \ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/bin/btv: Makefile.generator $(Q_GEN) printf "#!/bin/sh -e\n\nexec /Library/Frameworks/Mono.framework/Versions/Current/bin/mono64 --debug $(abspath $(IOS_TARGETDIR)$(MONOTOUCH_PREFIX)/lib/bgen/bgen.exe) --target-framework=Xamarin.TVOS,v1.0 \"\$$@\"\n" > $@ $(Q) chmod +x $@ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/bgen/%.dll: $(TVOS_BUILD_DIR)/%.dll | $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/bgen $(Q) install -m 0755 $< $@ $(Q) install -m 0644 $<.mdb $@.mdb $(TVOS_BUILD_DIR)/Xamarin.TVOS.BindingAttributes.dll: generator-attributes.cs Makefile.generator $(PMCS_EXE) $(Q) mkdir -p $(dir $@) $(Q_GEN) $(SYSTEM_MONO) --debug $(PMCS_EXE) -profile:"$(TOP)/src/pmcs-profiles/tvos" -compiler:$(SYSTEM_MCS) -global-replace:"^XamCore.=" -out:$@ -debug generator-attributes.cs -target:library # # Xamarin.Mac (bmac) # MAC_TARGETS_DIRS += \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/bmac \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/bgen \ MAC_TARGETS += \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/bin/bgen \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/bin/bgen-classic \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/bgen/bgen.exe \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/bgen/bgen-classic.exe \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/bgen/XamMac.BindingAttributes.dll \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/bgen/Xamarin.Mac-full.BindingAttributes.dll \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/bgen/Xamarin.Mac-mobile.BindingAttributes.dll \ MAC_TARGETS += \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/bin/bmac \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/bin/bgen: | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/bin $(Q_GEN) printf "#!/bin/sh -e\n\nexec /Library/Frameworks/Mono.framework/Versions/Current/bin/mono64 --debug $(abspath $(MAC_TARGETDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/bgen/bgen.exe) \"\$$@\"\n" > $@ $(Q) chmod +x $@ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/bin/bgen-classic: | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/bin $(Q_GEN) printf "#!/bin/sh -e\n\nexec /Library/Frameworks/Mono.framework/Versions/Current/bin/mono64 --debug $(abspath $(MAC_TARGETDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/bgen/bgen-classic.exe) \"\$$@\"\n" > $@ $(Q) chmod +x $@ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/bin/bmac: bmac.ikvm | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/bin $(Q) install -m 0755 $< $@ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/bgen/%.dll: $(MAC_BUILD_DIR)/%.dll | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/bgen $(Q) install -m 0755 $< $@ $(Q) install -m 0644 $<.mdb $@.mdb $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/bgen/%.exe: build/common/bgen.exe | $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/bgen $(Q) install -m 0755 $< $@ $(Q) install -m 0644 $< $(@:.exe=.pdb) $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/bgen/bgen-classic.exe: $(MACIOS_BINARIES_PATH)/bgen.exe $(Q) install -m 0755 $< $@ $(Q) install -m 0644 $< $(@:.exe=.pdb) $(MAC_BUILD_DIR)/XamMac.BindingAttributes.dll: $(MACIOS_BINARIES_PATH)/XamMac.BindingAttributes.dll $(Q) mkdir -p $(dir $@) $(Q) cp $< $@ $(Q) cp $<.mdb $@.mdb $(MAC_BUILD_DIR)/Xamarin.Mac-%.BindingAttributes.dll: generator-attributes.cs Makefile.generator $(PMCS_EXE) $(Q) mkdir -p $(dir $@) $(Q_GEN) $(SYSTEM_MONO) --debug $(PMCS_EXE) -profile:"$(TOP)/src/pmcs-profiles/$*" -compiler:$(SYSTEM_MCS) -global-replace:"^XamCore.=" -out:$@ -debug generator-attributes.cs -target:library bgen: \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/bin/bgen \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/bgen/bgen.exe \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/bgen/XamMac.BindingAttributes.dll \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/bgen/Xamarin.Mac-full.BindingAttributes.dll \ $(MAC_DESTDIR)$(MAC_FRAMEWORK_CURRENT_DIR)/lib/bgen/Xamarin.Mac-mobile.BindingAttributes.dll \ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/bgen/monotouch.BindingAttributes.dll \ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/bgen/Xamarin.iOS.BindingAttributes.dll \ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/bgen/Xamarin.TVOS.BindingAttributes.dll \ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/bgen/Xamarin.WatchOS.BindingAttributes.dll \ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/bgen/bgen.exe \ $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/bin/bgen \