| 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 |