XC_PROJ := MoltenVKPackaging.xcodeproj XC_SCHEME := MoltenVK Package XCODEBUILD := set -o pipefail && $(shell command -v xcodebuild) # Used to determine if xcpretty is available XCPRETTY_PATH := $(shell command -v xcpretty 2> /dev/null) OUTPUT_FMT_CMD = ifdef XCPRETTY_PATH # Pipe output to xcpretty, while preserving full log as xcodebuild.log OUTPUT_FMT_CMD = | tee "xcodebuild.log" | xcpretty -c else # Use xcodebuild -quiet parameter OUTPUT_FMT_CMD = -quiet endif # Use 'make MVK_HIDE_VULKAN_SYMBOLS=1' (or set it as env var) to hide Vulkan API symbols # in the resulting MoltenVK library, to avoid library linking conflicts when bound to a # Vulkan Loader that also exports identical symbols. ifndef MVK_HIDE_VULKAN_SYMBOLS MVK_HIDE_VULKAN_SYMBOLS=0 endif # Specify individually (not as dependencies) so the sub-targets don't run in parallel .PHONY: all all: @$(MAKE) macos @$(MAKE) ios @$(MAKE) iossim @$(MAKE) maccat @$(MAKE) tvos @$(MAKE) tvossim .PHONY: all-debug all-debug: @$(MAKE) macos-debug @$(MAKE) ios-debug @$(MAKE) iossim-debug @$(MAKE) maccat-debug @$(MAKE) tvos-debug @$(MAKE) tvossim-debug .PHONY: macos macos: $(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (macOS only)" -destination "generic/platform=macOS" MVK_HIDE_VULKAN_SYMBOLS=$(MVK_HIDE_VULKAN_SYMBOLS) $(OUTPUT_FMT_CMD) .PHONY: macos-debug macos-debug: $(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (macOS only)" -destination "generic/platform=macOS" -configuration "Debug" MVK_HIDE_VULKAN_SYMBOLS=$(MVK_HIDE_VULKAN_SYMBOLS) $(OUTPUT_FMT_CMD) .PHONY: ios ios: $(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (iOS only)" -destination "generic/platform=iOS" MVK_HIDE_VULKAN_SYMBOLS=$(MVK_HIDE_VULKAN_SYMBOLS) $(OUTPUT_FMT_CMD) .PHONY: ios-debug ios-debug: $(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (iOS only)" -destination "generic/platform=iOS" -configuration "Debug" MVK_HIDE_VULKAN_SYMBOLS=$(MVK_HIDE_VULKAN_SYMBOLS) $(OUTPUT_FMT_CMD) .PHONY: iossim iossim: $(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (iOS only)" -destination "generic/platform=iOS Simulator" MVK_HIDE_VULKAN_SYMBOLS=$(MVK_HIDE_VULKAN_SYMBOLS) $(OUTPUT_FMT_CMD) .PHONY: iossim-debug iossim-debug: $(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (iOS only)" -destination "generic/platform=iOS Simulator" -configuration "Debug" MVK_HIDE_VULKAN_SYMBOLS=$(MVK_HIDE_VULKAN_SYMBOLS) $(OUTPUT_FMT_CMD) .PHONY: maccat maccat: $(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (iOS only)" -destination "generic/platform=macOS,variant=Mac Catalyst" MVK_HIDE_VULKAN_SYMBOLS=$(MVK_HIDE_VULKAN_SYMBOLS) $(OUTPUT_FMT_CMD) .PHONY: maccat-debug maccat-debug: $(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (iOS only)" -destination "generic/platform=macOS,variant=Mac Catalyst" -configuration "Debug" MVK_HIDE_VULKAN_SYMBOLS=$(MVK_HIDE_VULKAN_SYMBOLS) $(OUTPUT_FMT_CMD) .PHONY: tvos tvos: $(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (tvOS only)" -destination "generic/platform=tvOS" MVK_HIDE_VULKAN_SYMBOLS=$(MVK_HIDE_VULKAN_SYMBOLS) $(OUTPUT_FMT_CMD) .PHONY: tvos-debug tvos-debug: $(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (tvOS only)" -destination "generic/platform=tvOS" -configuration "Debug" MVK_HIDE_VULKAN_SYMBOLS=$(MVK_HIDE_VULKAN_SYMBOLS) $(OUTPUT_FMT_CMD) .PHONY: tvossim tvossim: $(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (tvOS only)" -destination "generic/platform=tvOS Simulator" MVK_HIDE_VULKAN_SYMBOLS=$(MVK_HIDE_VULKAN_SYMBOLS) $(OUTPUT_FMT_CMD) .PHONY: tvossim-debug tvossim-debug: $(XCODEBUILD) build -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (tvOS only)" -destination "generic/platform=tvOS Simulator" -configuration "Debug" MVK_HIDE_VULKAN_SYMBOLS=$(MVK_HIDE_VULKAN_SYMBOLS) $(OUTPUT_FMT_CMD) .PHONY: clean clean: $(XCODEBUILD) clean -project "$(XC_PROJ)" -scheme "$(XC_SCHEME) (macOS only)" -destination "generic/platform=macOS" $(OUTPUT_FMT_CMD) rm -rf Package # Usually requires 'sudo make install' .PHONY: install install: rm -rf /Library/Frameworks/MoltenVK.framework rm -rf /Library/Frameworks/MoltenVK.xcframework cp -a Package/Latest/MoltenVK/MoltenVK.xcframework /Library/Frameworks/ # Deprecated target names .PHONY: iosfat iosfat: @$(MAKE) ios @$(MAKE) iossim .PHONY: iosfat-debug iosfat-debug: @$(MAKE) ios-debug @$(MAKE) iossim-debug .PHONY: tvosfat tvosfat: @$(MAKE) tvos @$(MAKE) tvossim .PHONY: tvosfat-debug tvosfat-debug: @$(MAKE) tvos-debug @$(MAKE) tvossim-debug