diff options
| -rw-r--r-- | CMakeLists.txt | 10 | ||||
| -rw-r--r-- | cmake/SlangTarget.cmake | 8 |
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} |
