MAC_APP_DIR=MonoDevelop.app APP_NAME=MonoDevelop APP_DISPLAY_NAME=MonoDevelop MACOS=$(MAC_APP_DIR)/Contents/MacOS LIB_DIR=$(MAC_APP_DIR)/Contents/Resources/lib MAC_APP_LIB_DIR=$(LIB_DIR)/monodevelop ADDINS=$(MAC_APP_LIB_DIR)/AddIns EXTRAS=$(top_srcdir)/../extras ARTIFACTS=$(top_srcdir)/../../artifacts MD_CONFIGURE=$(top_srcdir)/../scripts/configure.sh EXTERNAL=../../external MONOSTUB_STATIC_LINK=$(EXTERNAL)/Xamarin.Mac.registrar.full.a if !RELEASE_BUILDS HYBRID_SUSPEND_ABORT=-DHYBRID_SUSPEND_ABORT endif #SDK_PATH=$(shell xcrun --sdk macosx10.8 --show-sdk-path) PACKAGE_UPDATE_ID=$(shell $(MD_CONFIGURE) get-releaseid) BUNDLE_VERSION=$(shell $(MD_CONFIGURE) get-version) CLEANFILES = render.exe monostub monostub-test #DISTCLEANFILES = EXTRA_DIST = dmg-bg.png DS_Store Info.plist.in make-dmg-bundle.sh render.cs MONOSTUB_EXTRA_SOURCEFILES = monostub-utils.h MIN_MACOS_VERSION=10.11 all: monostub monostub-nogui monostub-test render.exe: render.cs mcs -r:System.Drawing render.cs dmg: render.exe app ./make-dmg-bundle.sh monostub.o: monostub.mm $(MONOSTUB_EXTRA_SOURCEFILES) g++ -g $(HYBRID_SUSPEND_ABORT) -c -Wall -mmacosx-version-min=$(MIN_MACOS_VERSION) -m$(MONOSTUB_ARCH) -o $@ monostub.mm monostub-nogui.o: monostub.mm $(MONOSTUB_EXTRA_SOURCEFILES) g++ -g $(HYBRID_SUSPEND_ABORT) -DNOGUI -c -Wall -mmacosx-version-min=$(MIN_MACOS_VERSION) -m$(MONOSTUB_ARCH) -o $@ monostub.mm monostub: monostub.o $(MONOSTUB_STATIC_LINK) clang++ -g -Wall -mmacosx-version-min=$(MIN_MACOS_VERSION) -m$(MONOSTUB_ARCH) -o $@ -Wl,-all_load $^ -framework AppKit -framework Quartz -undefined dynamic_lookup mkdir -p ../bin cp $@ ../bin/MonoDevelop monostub-nogui: monostub-nogui.o $(MONOSTUB_STATIC_LINK) clang++ -g -Wall -mmacosx-version-min=$(MIN_MACOS_VERSION) -m$(MONOSTUB_ARCH) -o $@ -Wl,-all_load $^ -framework AppKit -framework Quartz -undefined dynamic_lookup mkdir -p ../bin cp $@ ../bin/mdtool monostub-test: monostub-test.m $(MONOSTUB_EXTRA_SOURCEFILES) gcc -g -Wall -mmacosx-version-min=$(MIN_MACOS_VERSION) -m$(MONOSTUB_ARCH) -o $@ monostub-test.m -framework AppKit ./monostub-test clean-local: rm -rf MonoDevelop.app rm -f MonoDevelop*.dmg rm -f *.o app: monostub monostub-test @echo "" @echo "Creating directories in app bundle" @echo "" mkdir -p $(MAC_APP_DIR)/Contents/{MacOS,Resources} mkdir -p $(MAC_APP_DIR)/Contents/MacOS/share mkdir -p $(MAC_APP_LIB_DIR) # @echo "" # @echo "Copying install prefix into app bundle" # @echo "" # @if [[ "$(prefix)" == /Library* ]] || [[ "$(prefix)" == /usr* ]]; then \ # echo "WARNING: cannot merge system prefix $(prefix)"; \ # else \ # echo "cp -pR $(prefix)/* $(MAC_APP_DIR)/Contents/MacOS/"; \ # cp -pR $(prefix)/* $(MAC_APP_DIR)/Contents/MacOS/; \ # fi @echo "" @echo "Copying MonoDevelop into app bundle" @echo "" cp -pR ../AddIns $(MAC_APP_LIB_DIR) cp -pR ../data $(MAC_APP_LIB_DIR) cp -pR ../bin $(MAC_APP_LIB_DIR) cp -pR ../locale $(MAC_APP_DIR)/Contents/MacOS/share mkdir -p $(MAC_APP_DIR)/Contents/MacOS/share/monodevelop cp ../../COPYING $(MAC_APP_DIR)/Contents/MacOS/share/monodevelop/COPYING.LGPL2.1 sed -e "s/@BUNDLE_VERSION@/$(BUNDLE_VERSION)/" -e "s/@APP_NAME@/$(APP_NAME)/" -e "s/@APP_DISPLAY_NAME@/$(APP_DISPLAY_NAME)/" -e "s|@RELEASE_ID@|$(PACKAGE_UPDATE_ID)|" Info.plist.in > $(MAC_APP_DIR)/Contents/Info.plist cp ../../theme-icons/Mac/*.icns $(MAC_APP_DIR)/Contents/Resources/ # Native launch scripts @echo "" @echo "Copying launch scripts into app bundle" @echo "" cp monostub $(MACOS)/MonoDevelop cp monostub $(MACOS)/mdtool # Remove addins that don't work on OSX @echo "" @echo "Removing unsupported addins" @echo "" rm -rf $(ADDINS)/GnomePlatform* \ $(ADDINS)/WindowsPlatform* # remove stuff we don't need @echo "" @echo "Removing unneeded files" @echo "" rm -rf $(MAC_APP_LIB_DIR)/bin/UnitTests.dll* \ $(MAC_APP_LIB_DIR)/bin/TestResult.xml \ $(MAC_APP_LIB_DIR)/bin/addin-db* \ $(MAC_APP_LIB_DIR)/bin/local \ $(MAC_APP_LIB_DIR)/bin/repository-cache* \ $(MAC_APP_LIB_DIR)/bin/addins-setup.config \ $(MAC_APP_LIB_DIR)/AddIns/MonoDevelop.TextTemplating/Mono.TextTemplating.Tests* # add the binary artifacts if they exist @echo "" @echo "Copying binary artifacts into app bundle" @echo "" mkdir -p $(LIB_DIR)/pkgconfig mkdir -p $(MACOS)/MonoDoc.app/ test ! -d $(ARTIFACTS)/MonoDoc.app || cp -pR $(ARTIFACTS)/MonoDoc.app/* $(MACOS)/MonoDoc.app/ cp -r MDMonitor.app $(MACOS) # update revision in updateinfo @echo "" @echo "Updating build information" @echo "" $(MD_CONFIGURE) gen-buildinfo "$(MAC_APP_LIB_DIR)/bin" # touch the directory so that update dependencies work touch MonoDevelop.app @echo "" @cat "$(MAC_APP_LIB_DIR)/bin/buildinfo" @if test -f missing-stuff; then echo ""; echo "Missing stuff:"; cat missing-stuff; fi @echo "" @rm -f missing-stuff .PHONY: app dmg