summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCraig Kolb <craig@kolb.net>2024-03-13 18:35:59 -0700
committerGitHub <noreply@github.com>2024-03-13 18:35:59 -0700
commit67704d0eee756be8647165ff2c73f1dc074874a2 (patch)
treefecc5aa2c8dbf043cf38d236e4f1e1f15450b735
parente4b01c4ba53c40ff0704e72615422e5a96f636e3 (diff)
CMake fixes for MacOS (#3761)
Co-authored-by: Yong He <yonghe@outlook.com>
-rw-r--r--CMakeLists.txt10
-rw-r--r--cmake/SlangTarget.cmake8
2 files changed, 15 insertions, 3 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 62fc0868b..4b0b14d6d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -96,7 +96,7 @@ option(SLANG_ENABLE_TESTS "Enable test targets, requires SLANG_ENABLE_GFX, SLANG
option(SLANG_ENABLE_EXAMPLES "Enable example targets, requires SLANG_ENABLE_GFX" ON)
enum_option(
- SLANG_LIB_TYPE
+ SLANG_LIB_TYPE
# Default
SHARED
"How to build the slang lib:"
@@ -458,9 +458,10 @@ if(SLANG_ENABLE_GFX)
core
imgui
$<$<BOOL:${SLANG_ENABLE_XLIB}>:X11::X11>
- $<$<PLATFORM_ID:Darwin>:-framework Cocoa>
- $<$<PLATFORM_ID:Darwin>:-framework QuartzCore>
${CMAKE_DL_LIBS}
+ LINK_WITH_FRAMEWORK
+ Cocoa
+ QuartzCore
EXTRA_COMPILE_DEFINITIONS_PRIVATE
$<$<BOOL:${SLANG_ENABLE_XLIB}>:SLANG_ENABLE_XLIB>
INCLUDE_FROM_PRIVATE gfx
@@ -481,6 +482,9 @@ if(SLANG_ENABLE_GFX)
Vulkan-Headers
$<$<BOOL:${SLANG_ENABLE_XLIB}>:X11::X11>
$<$<BOOL:${SLANG_ENABLE_CUDA}>:CUDA::cudart;CUDA::cuda_driver>
+ LINK_WITH_FRAMEWORK
+ Cocoa
+ QuartzCore
EXTRA_COMPILE_DEFINITIONS_PRIVATE
$<$<BOOL:${SLANG_ENABLE_CUDA}>:GFX_ENABLE_CUDA>
$<$<BOOL:${SLANG_ENABLE_OPTIX}>:GFX_OPTIX>
diff --git a/cmake/SlangTarget.cmake b/cmake/SlangTarget.cmake
index cb4443d0e..62c3c2a89 100644
--- a/cmake/SlangTarget.cmake
+++ b/cmake/SlangTarget.cmake
@@ -54,6 +54,8 @@ function(slang_add_target dir type)
EXTRA_COMPILE_DEFINITIONS_PUBLIC
# Targets with which to link privately
LINK_WITH_PRIVATE
+ # Frameworks with which to link privately
+ LINK_WITH_FRAMEWORK
# Targets whose headers we use, but don't link with
INCLUDE_FROM_PRIVATE
# Any include directories other targets need to use this target
@@ -208,6 +210,12 @@ function(slang_add_target dir type)
#
target_link_libraries(${target} PRIVATE ${ARG_LINK_WITH_PRIVATE})
+ if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
+ foreach(link_framework ${ARG_LINK_WITH_FRAMEWORK})
+ target_link_libraries(${target} PRIVATE "-framework ${link_framework}")
+ endforeach()
+ endif()
+
foreach(include_from ${ARG_INCLUDE_FROM_PRIVATE})
target_include_directories(
${target}