Allow building external dependency libraries in Debug mode.
Add ExternalDependencies (Debug) scheme to ExternalDependencies Xcode project.
Add --debug option to fetchDependencies script.
Support Release, Debug & Latest directories in External/build directory.
Enable DEPLOYMENT_POSTPROCESSING build setting when compiling
SPIRV-Tools to avoid warning spam when building dylibs.
Disable visibility warnings when building MoltenVKShaderConverter
in Release mode from external libraries built in Debug mode.
Always use -Xlinker -w option when creating dylibs to disable visibility warnings.
diff --git a/Docs/Whats_New.md b/Docs/Whats_New.md
index f35087c..1b0f7de 100644
--- a/Docs/Whats_New.md
+++ b/Docs/Whats_New.md
@@ -20,7 +20,8 @@
- Don't use setVertexBytes() for passing tessellation vertex counts.
- Fix zero local threadgroup size in indirect tessellated rendering.
-- MoltenVKShaderConverter tool add MSL version and platform command-line options.
+- `MoltenVKShaderConverter` tool: Add MSL version and platform command-line options.
+- Allow building external dependency libraries in Debug mode.
diff --git a/ExternalDependencies.xcodeproj/project.pbxproj b/ExternalDependencies.xcodeproj/project.pbxproj
index 9eead95..d381c3b 100644
--- a/ExternalDependencies.xcodeproj/project.pbxproj
+++ b/ExternalDependencies.xcodeproj/project.pbxproj
@@ -3666,6 +3666,7 @@
BITCODE_GENERATION_MODE = bitcode;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+ DEPLOYMENT_POSTPROCESSING = YES;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
HEADER_SEARCH_PATHS = (
"$(inherited)",
@@ -3687,6 +3688,7 @@
BITCODE_GENERATION_MODE = bitcode;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "";
+ DEPLOYMENT_POSTPROCESSING = YES;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
HEADER_SEARCH_PATHS = (
"$(inherited)",
@@ -3704,6 +3706,7 @@
A972A82121CECBE90013AB25 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ DEPLOYMENT_POSTPROCESSING = YES;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
HEADER_SEARCH_PATHS = (
"$(inherited)",
@@ -3720,6 +3723,7 @@
A972A82221CECBE90013AB25 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
+ DEPLOYMENT_POSTPROCESSING = YES;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
HEADER_SEARCH_PATHS = (
"$(inherited)",
diff --git "a/ExternalDependencies.xcodeproj/xcshareddata/xcschemes/ExternalDependencies \050Debug\051.xcscheme" "b/ExternalDependencies.xcodeproj/xcshareddata/xcschemes/ExternalDependencies \050Debug\051.xcscheme"
new file mode 100644
index 0000000..5cd87df
--- /dev/null
+++ "b/ExternalDependencies.xcodeproj/xcshareddata/xcschemes/ExternalDependencies \050Debug\051.xcscheme"
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+ LastUpgradeVersion = "1020"
+ version = "2.0">
+ <BuildAction
+ parallelizeBuildables = "YES"
+ buildImplicitDependencies = "YES">
+ <BuildActionEntries>
+ <BuildActionEntry
+ buildForTesting = "YES"
+ buildForRunning = "YES"
+ buildForProfiling = "YES"
+ buildForArchiving = "YES"
+ buildForAnalyzing = "YES">
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "A972A7F221CEC81B0013AB25"
+ BuildableName = "ExternalDependencies"
+ BlueprintName = "ExternalDependencies"
+ ReferencedContainer = "container:ExternalDependencies.xcodeproj">
+ </BuildableReference>
+ </BuildActionEntry>
+ </BuildActionEntries>
+ </BuildAction>
+ <TestAction
+ buildConfiguration = "Debug"
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+ shouldUseLaunchSchemeArgsEnv = "YES">
+ <Testables>
+ </Testables>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ </TestAction>
+ <LaunchAction
+ buildConfiguration = "Debug"
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+ disableMainThreadChecker = "YES"
+ launchStyle = "0"
+ useCustomWorkingDirectory = "NO"
+ ignoresPersistentStateOnLaunch = "NO"
+ debugDocumentVersioning = "NO"
+ debugXPCServices = "NO"
+ debugServiceExtension = "internal"
+ enableGPUFrameCaptureMode = "3"
+ enableGPUValidationMode = "1"
+ allowLocationSimulation = "NO"
+ queueDebuggingEnabled = "No">
+ <MacroExpansion>
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "A972A7F221CEC81B0013AB25"
+ BuildableName = "ExternalDependencies"
+ BlueprintName = "ExternalDependencies"
+ ReferencedContainer = "container:ExternalDependencies.xcodeproj">
+ </BuildableReference>
+ </MacroExpansion>
+ <AdditionalOptions>
+ </AdditionalOptions>
+ </LaunchAction>
+ <ProfileAction
+ buildConfiguration = "Release"
+ shouldUseLaunchSchemeArgsEnv = "YES"
+ savedToolIdentifier = ""
+ useCustomWorkingDirectory = "NO"
+ debugDocumentVersioning = "YES">
+ <MacroExpansion>
+ <BuildableReference
+ BuildableIdentifier = "primary"
+ BlueprintIdentifier = "A972A7F221CEC81B0013AB25"
+ BuildableName = "ExternalDependencies"
+ BlueprintName = "ExternalDependencies"
+ ReferencedContainer = "container:ExternalDependencies.xcodeproj">
+ </BuildableReference>
+ </MacroExpansion>
+ </ProfileAction>
+ <AnalyzeAction
+ buildConfiguration = "Debug">
+ </AnalyzeAction>
+ <ArchiveAction
+ buildConfiguration = "Release"
+ revealArchiveInOrganizer = "YES">
+ </ArchiveAction>
+</Scheme>
diff --git a/ExternalRevisions/README.md b/ExternalRevisions/README.md
index e99a998..9ed3706 100644
--- a/ExternalRevisions/README.md
+++ b/ExternalRevisions/README.md
@@ -43,8 +43,10 @@
To retrieve and build these libraries from their sources, run the `fetchDependencies`
script in the main repository directory:
- ./fetchDependencies
+ ./fetchDependencies [--debug]
+The `--debug` option will build the external libraries in Debug mode, which may
+be useful when debugging and tracing calls into those libraries.
<a name="updating"></a>
diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/project.pbxproj b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/project.pbxproj
index 6919f29..8d0a209 100644
--- a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/project.pbxproj
+++ b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/project.pbxproj
@@ -225,7 +225,7 @@
A972AD3421CEE7330013AB25 /* libSPIRVTools.a */,
);
name = Frameworks;
- path = ../External/build;
+ path = ../External/build/Latest;
sourceTree = SOURCE_ROOT;
};
A97CC73C1C7527F3004A5C7E /* MoltenVKShaderConverterTool */ = {
@@ -713,7 +713,10 @@
buildSettings = {
GENERATE_MASTER_OBJECT_FILE = NO;
MACH_O_TYPE = mh_execute;
- OTHER_LDFLAGS = "-ObjC";
+ OTHER_LDFLAGS = (
+ "-ObjC",
+ "-w",
+ );
PRODUCT_NAME = MoltenVKShaderConverter;
SDKROOT = macosx;
};
@@ -729,7 +732,7 @@
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = NO;
GCC_WARN_CHECK_SWITCH_STATEMENTS = NO;
GCC_WARN_UNUSED_PARAMETER = NO;
- LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../External/build/iOS\"";
+ LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../External/build/Latest/iOS\"";
PRODUCT_NAME = MoltenVKGLSLToSPIRVConverter;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
@@ -747,7 +750,7 @@
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = NO;
GCC_WARN_CHECK_SWITCH_STATEMENTS = NO;
GCC_WARN_UNUSED_PARAMETER = NO;
- LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../External/build/iOS\"";
+ LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../External/build/Latest/iOS\"";
PRODUCT_NAME = MoltenVKGLSLToSPIRVConverter;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
@@ -767,7 +770,7 @@
"$(inherited)",
"\"$(SRCROOT)/glslang/External/spirv-tools/include\"",
);
- LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../External/build/macOS\"";
+ LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../External/build/Latest/macOS\"";
PRODUCT_NAME = MoltenVKGLSLToSPIRVConverter;
SDKROOT = macosx;
};
@@ -785,7 +788,7 @@
"$(inherited)",
"\"$(SRCROOT)/glslang/External/spirv-tools/include\"",
);
- LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../External/build/macOS\"";
+ LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../External/build/Latest/macOS\"";
PRODUCT_NAME = MoltenVKGLSLToSPIRVConverter;
SDKROOT = macosx;
};
@@ -807,7 +810,7 @@
"\"$(SRCROOT)/glslang/External/spirv-tools/\"",
"\"$(SRCROOT)/glslang/build/External/spirv-tools\"",
);
- LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../External/build/iOS\"";
+ LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../External/build/Latest/iOS\"";
PRODUCT_NAME = MoltenVKSPIRVToMSLConverter;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
@@ -831,7 +834,7 @@
"\"$(SRCROOT)/glslang/External/spirv-tools/\"",
"\"$(SRCROOT)/glslang/build/External/spirv-tools\"",
);
- LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../External/build/iOS\"";
+ LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../External/build/Latest/iOS\"";
PRODUCT_NAME = MoltenVKSPIRVToMSLConverter;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
@@ -853,7 +856,7 @@
"\"$(SRCROOT)/glslang/External/spirv-tools/\"",
"\"$(SRCROOT)/glslang/build/External/spirv-tools\"",
);
- LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../External/build/macOS\"";
+ LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../External/build/Latest/macOS\"";
PRODUCT_NAME = MoltenVKSPIRVToMSLConverter;
SDKROOT = macosx;
};
@@ -873,7 +876,7 @@
"\"$(SRCROOT)/glslang/External/spirv-tools/\"",
"\"$(SRCROOT)/glslang/build/External/spirv-tools\"",
);
- LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../External/build/macOS\"";
+ LIBRARY_SEARCH_PATHS = "\"$(SRCROOT)/../External/build/Latest/macOS\"";
PRODUCT_NAME = MoltenVKSPIRVToMSLConverter;
SDKROOT = macosx;
};
diff --git a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter.xcscheme b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter.xcscheme
index 0b76225..5c18980 100644
--- a/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter.xcscheme
+++ b/MoltenVKShaderConverter/MoltenVKShaderConverter.xcodeproj/xcshareddata/xcschemes/MoltenVKShaderConverter.xcscheme
@@ -42,9 +42,9 @@
</AdditionalOptions>
</TestAction>
<LaunchAction
- buildConfiguration = "Release"
- selectedDebuggerIdentifier = ""
- selectedLauncherIdentifier = "Xcode.IDEFoundation.Launcher.PosixSpawn"
+ buildConfiguration = "Debug"
+ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+ selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
disableMainThreadChecker = "YES"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
@@ -84,7 +84,7 @@
isEnabled = "YES">
</CommandLineArgument>
<CommandLineArgument
- argument = "path-to-GLSL-shader-file"
+ argument = "/Users/bill/Desktop/shaders-msl/comp/basic.comp"
isEnabled = "YES">
</CommandLineArgument>
<CommandLineArgument
diff --git a/Scripts/create_dylib.sh b/Scripts/create_dylib.sh
index b4b1856..6731d13 100755
--- a/Scripts/create_dylib.sh
+++ b/Scripts/create_dylib.sh
@@ -18,6 +18,10 @@
MVK_SAN="-fsanitize=address"
fi
+# Suppress visibility warning spam when linking in Release or Debug mode
+# and external libraries built in the other mode.
+MVK_LINK_WARN="-Xlinker -w"
+
clang++ \
-stdlib=${CLANG_CXX_LIBRARY} \
-dynamiclib \
diff --git a/Scripts/create_dylib_macos.sh b/Scripts/create_dylib_macos.sh
index b897aaa..47f0fc0 100755
--- a/Scripts/create_dylib_macos.sh
+++ b/Scripts/create_dylib_macos.sh
@@ -7,9 +7,4 @@
export MVK_MIN_OS_VERSION=${MACOSX_DEPLOYMENT_TARGET}
export MVK_IOSURFACE_FWK="-framework IOSurface"
-#Suppress visibility warning spam when linking Debug to SPIRV-Cross Release
-if test "$CONFIGURATION" = Debug; then
- export MVK_LINK_WARN="-Xlinker -w"
-fi
-
. "${SRCROOT}/../Scripts/create_dylib.sh"
diff --git a/Scripts/package_ext_libs.sh b/Scripts/package_ext_libs.sh
index 68cb1ca..221e7e1 100755
--- a/Scripts/package_ext_libs.sh
+++ b/Scripts/package_ext_libs.sh
@@ -2,14 +2,17 @@
set -e
-export MVK_EXT_LIB_DST_DIR="External"
-export MVK_EXT_LIB_DST_OS_PATH="${PROJECT_DIR}/${MVK_EXT_LIB_DST_DIR}/build/${MVK_OS}"
+export MVK_EXT_LIB_DST_PATH="${PROJECT_DIR}/External/build/"
+export MVK_EXT_LIB_DST_OS_PATH="${MVK_EXT_LIB_DST_PATH}/${CONFIGURATION}/${MVK_OS}"
rm -rf "${MVK_EXT_LIB_DST_OS_PATH}"
mkdir -p "${MVK_EXT_LIB_DST_OS_PATH}"
cp -a "${MVK_BUILT_PROD_PATH}/"*.a "${MVK_EXT_LIB_DST_OS_PATH}"
+# Assign symlink to Latest
+ln -sfn "${CONFIGURATION}" "${MVK_EXT_LIB_DST_PATH}/Latest"
+
# Clean MoltenVK to ensure the next MoltenVK build will use the latest external library versions.
make --quiet clean
diff --git a/fetchDependencies b/fetchDependencies
index 47d942a..6526b4b 100755
--- a/fetchDependencies
+++ b/fetchDependencies
@@ -4,7 +4,7 @@
#
# fetchDependencies - Retrieves the correct versions of all dependencies
#
-# macOS usage: ./fetchDependencies [--v-headers-root path] [--spirv-cross-root path] [--glslang-root path]
+# macOS usage: ./fetchDependencies [-v] [--debug] [--v-headers-root path] [--spirv-cross-root path] [--glslang-root path]
#
# --v-headers-root path
# "path" specifies a directory path to a
@@ -24,11 +24,16 @@
#
# -v verbose output
#
+# --debug
+# Build the external libraries in Debug mode, which may be useful
+# when debugging and tracing calls into those libraries.
+#
set -o errexit
# ----------------- Functions -------------------
+XC_SCHEME_SFX=""
XC_BUILD_VERBOSITY="-quiet"
V_HEADERS_ROOT=""
SPIRV_CROSS_ROOT=""
@@ -36,6 +41,10 @@
while (( "$#" )); do
case "$1" in
+ --debug)
+ XC_SCHEME_SFX=" (Debug)"
+ shift 1
+ ;;
-v)
XC_BUILD_VERBOSITY=""
shift 1
@@ -253,12 +262,15 @@
echo
EXT_DEPS=ExternalDependencies
+XC_PROJ="${EXT_DEPS}.xcodeproj"
+XC_SCHEME="${EXT_DEPS}${XC_SCHEME_SFX}"
+XC_DD_PATH="${EXT_DIR}/build"
-xcodebuild \
- -project "${EXT_DEPS}.xcodeproj" \
- -scheme "${EXT_DEPS}" \
- -derivedDataPath "${EXT_DIR}/build" \
- ${XC_BUILD_VERBOSITY} \
+xcodebuild \
+ -project "${XC_PROJ}" \
+ -scheme "${XC_SCHEME}" \
+ -derivedDataPath "${XC_DD_PATH}" \
+ ${XC_BUILD_VERBOSITY} \
build
echo ========== Done! ==========