aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Kniager <jeremyk@lunarg.com>2018-05-17 11:15:43 -0600
committerjeremyk-lunarg <jeremyk@lunarg.com>2018-05-21 15:50:49 -0600
commitba8dbbfe37a76d473703ee5123bc048cee9d096f (patch)
tree6bed4832162e3e9a0759ed1b8e418f4c35d6935c
parent9f377cd6236f47bc5403431f81e323c2b8a489b2 (diff)
downloadusermoji-ba8dbbfe37a76d473703ee5123bc048cee9d096f.tar.xz
cmake: Update CMake files to build for MacOS
Updated CMake scripts to add building for MacOS Change-Id: I413f79e337d33f37891092da97380597e28c8257
-rw-r--r--CMakeLists.txt3
-rw-r--r--cube/CMakeLists.txt46
-rw-r--r--cube/macOS/cube/cube.cmake12
-rw-r--r--cube/macOS/cubepp/cubepp.cmake14
-rw-r--r--mac_common.cmake (renamed from cube/macOS/common.cmake)16
-rw-r--r--vulkaninfo/CMakeLists.txt56
-rw-r--r--vulkaninfo/macOS/vulkaninfo.cmake26
7 files changed, 96 insertions, 77 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 240ec707..32c91d4f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -107,6 +107,9 @@ if(UNIX)
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
endif()
+if(APPLE)
+ include(mac_common.cmake)
+endif()
if(BUILD_CUBE)
add_subdirectory(cube)
endif()
diff --git a/cube/CMakeLists.txt b/cube/CMakeLists.txt
index f907a9a8..c90ab904 100644
--- a/cube/CMakeLists.txt
+++ b/cube/CMakeLists.txt
@@ -138,31 +138,27 @@ file(COPY ${TEXTURES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
-if(APPLE)
- # TODO: Set libs for apple
-else()
- if(DEFINED LOADER_REPO_ROOT)
- message(STATUS "Using user-supplied path to locate Vulkan")
- if(WIN32)
- set (LOADER_SEARCH_PATHS
- "${LOADER_REPO_ROOT}/${BUILDTGT_DIR}/loader/${DEBUG_DECORATION}"
- "${LOADER_REPO_ROOT}/${BUILDTGT_DIR}/loader/${RELEASE_DECORATION}"
- )
- elseif(UNIX)
- set (LOADER_SEARCH_PATHS
- "${LOADER_REPO_ROOT}/${BUILDTGT_DIR}/loader"
- )
- endif()
-
- find_library(LIBVK NAMES vulkan vulkan-1
- HINTS ${LOADER_SEARCH_PATHS}
+if(DEFINED LOADER_REPO_ROOT)
+ message(STATUS "Using user-supplied path to locate Vulkan")
+ if(WIN32)
+ set (LOADER_SEARCH_PATHS
+ "${LOADER_REPO_ROOT}/${BUILDTGT_DIR}/loader/${DEBUG_DECORATION}"
+ "${LOADER_REPO_ROOT}/${BUILDTGT_DIR}/loader/${RELEASE_DECORATION}"
)
- message(STATUS "Found Vulkan: ${LIBVK}")
else()
- message(STATUS "Using find_package to locate Vulkan")
- find_package(Vulkan)
- set (LIBVK "Vulkan::Vulkan")
+ set (LOADER_SEARCH_PATHS
+ "${LOADER_REPO_ROOT}/${BUILDTGT_DIR}/loader"
+ )
endif()
+
+ find_library(LIBVK NAMES vulkan vulkan-1
+ HINTS ${LOADER_SEARCH_PATHS}
+ )
+ message(STATUS "Found Vulkan: ${LIBVK}")
+else()
+ message(STATUS "Using find_package to locate Vulkan")
+ find_package(Vulkan)
+ set (LIBVK "Vulkan::Vulkan")
endif()
if(WIN32)
@@ -200,9 +196,9 @@ if(WIN32)
endif()
# MacOS setup
-if(APPLE)
- include(macOS/common.cmake)
-endif()
+#if(APPLE)
+# include(macOS/common.cmake)
+#endif()
include_directories(
${CUBE_INCLUDE_DIRS}
diff --git a/cube/macOS/cube/cube.cmake b/cube/macOS/cube/cube.cmake
index b298933b..11be95f4 100644
--- a/cube/macOS/cube/cube.cmake
+++ b/cube/macOS/cube/cube.cmake
@@ -11,7 +11,7 @@ set(cube_HDRS
)
set(cube_RESOURCES
${CMAKE_CURRENT_SOURCE_DIR}/lunarg.ppm
- ${CMAKE_CURRENT_BINARY_DIR}/staging-json/MoltenVK_icd.json
+ ${CMAKE_BINARY_DIR}/staging-json/MoltenVK_icd.json
${CMAKE_CURRENT_SOURCE_DIR}/macOS/cube/Resources/LunarGIcon.icns
)
@@ -50,7 +50,7 @@ target_include_directories(cube PRIVATE
${MOLTENVK_DIR}/MoltenVK/include
)
-target_link_libraries(cube ${LIBRARIES} "-framework Cocoa -framework QuartzCore")
+target_link_libraries(cube ${LIBVK} "-framework Cocoa -framework QuartzCore")
set_target_properties(cube PROPERTIES
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/macOS/cube/Info.plist
@@ -64,20 +64,20 @@ set_target_properties(cube PROPERTIES
set_source_files_properties(${cube_RESOURCES} PROPERTIES
MACOSX_PACKAGE_LOCATION "Resources"
)
-set_source_files_properties("${CMAKE_CURRENT_BINARY_DIR}/staging-json/MoltenVK_icd.json" PROPERTIES
+set_source_files_properties("${CMAKE_BINARY_DIR}/staging-json/MoltenVK_icd.json" PROPERTIES
MACOSX_PACKAGE_LOCATION "Resources/vulkan/icd.d"
)
# Copy the MoltenVK lib into the bundle.
if(${CMAKE_GENERATOR} MATCHES "^Xcode.*")
add_custom_command(TARGET cube POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy "${MOLTENVK_DIR}/MoltenVK/MacOS/libMoltenVK.dylib"
+ COMMAND ${CMAKE_COMMAND} -E copy "${MOLTENVK_DIR}/MoltenVK/macOS/libMoltenVK.dylib"
${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/cube.app/Contents/Frameworks/libMoltenVK.dylib
DEPENDS vulkan
)
else()
add_custom_command(TARGET cube POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy "${MOLTENVK_DIR}/MoltenVK/MacOS/libMoltenVK.dylib"
+ COMMAND ${CMAKE_COMMAND} -E copy "${MOLTENVK_DIR}/MoltenVK/macOS/libMoltenVK.dylib"
${CMAKE_CURRENT_BINARY_DIR}/cube.app/Contents/Frameworks/libMoltenVK.dylib
DEPENDS vulkan
)
@@ -86,7 +86,7 @@ endif()
# Fix up the library search path in the executable to find (loader) libraries in the bundle.
install(CODE "
include(BundleUtilities)
- fixup_bundle(${CMAKE_INSTALL_PREFIX}/demos/cube.app \"\" \"\")
+ fixup_bundle(${CMAKE_INSTALL_PREFIX}/cube/cube.app \"\" \"\")
" COMPONENT Runtime
)
diff --git a/cube/macOS/cubepp/cubepp.cmake b/cube/macOS/cubepp/cubepp.cmake
index 874ed25f..e61736ef 100644
--- a/cube/macOS/cubepp/cubepp.cmake
+++ b/cube/macOS/cubepp/cubepp.cmake
@@ -11,7 +11,7 @@ set(cubepp_HDRS
)
set(cubepp_RESOURCES
${CMAKE_CURRENT_SOURCE_DIR}/lunarg.ppm
- ${CMAKE_CURRENT_BINARY_DIR}/staging-json/MoltenVK_icd.json
+ ${CMAKE_BINARY_DIR}/staging-json/MoltenVK_icd.json
${CMAKE_CURRENT_SOURCE_DIR}/macOS/cubepp/Resources/LunarGIcon.icns
)
@@ -50,7 +50,7 @@ target_include_directories(cubepp PRIVATE
${MOLTENVK_DIR}/MoltenVK/include
)
-target_link_libraries(cubepp ${LIBRARIES} "-framework Cocoa -framework QuartzCore")
+target_link_libraries(cubepp ${LIBVK} "-framework Cocoa -framework QuartzCore")
set_target_properties(cubepp PROPERTIES
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/macOS/cubepp/Info.plist
@@ -64,12 +64,12 @@ set_target_properties(cubepp PROPERTIES
set_source_files_properties(${cubepp_RESOURCES} PROPERTIES
MACOSX_PACKAGE_LOCATION "Resources"
)
-set_source_files_properties("${CMAKE_CURRENT_BINARY_DIR}/staging-json/MoltenVK_icd.json" PROPERTIES
+set_source_files_properties("${CMAKE_BINARY_DIR}/staging-json/MoltenVK_icd.json" PROPERTIES
MACOSX_PACKAGE_LOCATION "Resources/vulkan/icd.d"
)
# Direct the MoltenVK library to the right place.
-install(FILES "${MOLTENVK_DIR}/MoltenVK/MacOS/libMoltenVK.dylib"
+install(FILES "${MOLTENVK_DIR}/MoltenVK/macOS/libMoltenVK.dylib"
DESTINATION "demos/cubepp.app/Contents/Frameworks"
COMPONENT Runtime
)
@@ -77,13 +77,13 @@ install(FILES "${MOLTENVK_DIR}/MoltenVK/MacOS/libMoltenVK.dylib"
# Copy the MoltenVK lib into the bundle.
if(${CMAKE_GENERATOR} MATCHES "^Xcode.*")
add_custom_command(TARGET cubepp POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy "${MOLTENVK_DIR}/MoltenVK/MacOS/libMoltenVK.dylib"
+ COMMAND ${CMAKE_COMMAND} -E copy "${MOLTENVK_DIR}/MoltenVK/macOS/libMoltenVK.dylib"
${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/cubepp.app/Contents/Frameworks/libMoltenVK.dylib
DEPENDS vulkan
)
else()
add_custom_command(TARGET cubepp POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy "${MOLTENVK_DIR}/MoltenVK/MacOS/libMoltenVK.dylib"
+ COMMAND ${CMAKE_COMMAND} -E copy "${MOLTENVK_DIR}/MoltenVK/macOS/libMoltenVK.dylib"
${CMAKE_CURRENT_BINARY_DIR}/cubepp.app/Contents/Frameworks/libMoltenVK.dylib
DEPENDS vulkan
)
@@ -92,7 +92,7 @@ endif()
# Fix up the library search path in the executable to find (loader) libraries in the bundle.
install(CODE "
include(BundleUtilities)
- fixup_bundle(${CMAKE_INSTALL_PREFIX}/demos/cubepp.app \"\" \"\")
+ fixup_bundle(${CMAKE_INSTALL_PREFIX}/cube/cubepp.app \"\" \"\")
" COMPONENT Runtime
)
diff --git a/cube/macOS/common.cmake b/mac_common.cmake
index 6a35db95..4b74614e 100644
--- a/cube/macOS/common.cmake
+++ b/mac_common.cmake
@@ -1,24 +1,30 @@
# Set up common settings for building all demos on Apple platforms.
# Source for the MoltenVK ICD library and JSON file
-set(MOLTENVK_DIR "${PROJECT_SOURCE_DIR}/external/MoltenVK")
+set(MOLTENVK_DIR ${MOLTENVK_REPO_ROOT})
# MoltenVK JSON File
+execute_process(COMMAND mkdir -p ${CMAKE_BINARY_DIR}/staging-json)
+execute_process(
+ COMMAND sed -e "/\"library_path\":/s$:[[:space:]]*\"[[:space:]]*[\\.\\/]*$: \"..\\/..\\/..\\/Frameworks\\/$" ${MOLTENVK_DIR}/MoltenVK/icd/MoltenVK_icd.json
+ OUTPUT_FILE ${CMAKE_BINARY_DIR}/staging-json/MoltenVK_icd.json
+)
+
# Modify the ICD JSON file to adjust the library path.
# The ICD JSON file goes in the Resources/vulkan/icd.d directory, so adjust the
# library_path to the relative path to the Frameworks directory in the bundle..
# The regex does: substitute ':<whitespace>"<whitespace><all occurences of . and />' with:
# ': "../../../Frameworks/'
add_custom_target(MoltenVK_icd-staging-json ALL
- COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/staging-json
+ COMMAND mkdir -p ${CMAKE_BINARY_DIR}/staging-json
COMMAND sed -e "/\"library_path\":/s$:[[:space:]]*\"[[:space:]]*[\\.\\/]*$: \"..\\/..\\/..\\/Frameworks\\/$"
${MOLTENVK_DIR}/MoltenVK/icd/MoltenVK_icd.json >
- ${CMAKE_CURRENT_BINARY_DIR}/staging-json/MoltenVK_icd.json
+ ${CMAKE_BINARY_DIR}/staging-json/MoltenVK_icd.json
VERBATIM
DEPENDS "${MOLTENVK_DIR}/MoltenVK/icd/MoltenVK_icd.json"
)
-set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/staging-json/MoltenVK_icd.json PROPERTIES
+set_source_files_properties(${CMAKE_BINARY_DIR}/staging-json/MoltenVK_icd.json PROPERTIES
GENERATED TRUE
)
@@ -30,7 +36,7 @@ if (NOT ${CMAKE_GENERATOR} MATCHES "^Xcode.*")
# skip generation of this project
find_program(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin")
if (${IBTOOL} STREQUAL "IBTOOL-NOTFOUND")
- message(SEND_ERROR
+ message(SEND_ERROR
"ibtool can not be found and is needed to compile the .xib files. "
"It should have been installed with the Apple developer tools. "
"The default system paths were searched in addition to ${OSX_DEVELOPER_ROOT}/usr/bin."
diff --git a/vulkaninfo/CMakeLists.txt b/vulkaninfo/CMakeLists.txt
index ed7dcd9a..81a3896f 100644
--- a/vulkaninfo/CMakeLists.txt
+++ b/vulkaninfo/CMakeLists.txt
@@ -12,32 +12,40 @@ else()
endif()
if(APPLE)
- target_link_libraries(${API_LOWERCASE}info ${LIBRARIES} "-framework AppKit -framework QuartzCore")
- target_include_directories(${API_LOWERCASE}info PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo)
-else()
- if(DEFINED LOADER_REPO_ROOT)
- message(STATUS "Using user-supplied path to locate Vulkan")
- if(WIN32)
- set (LOADER_SEARCH_PATHS
- "${LOADER_REPO_ROOT}/${BUILDTGT_DIR}/loader/${DEBUG_DECORATION}"
- "${LOADER_REPO_ROOT}/${BUILDTGT_DIR}/loader/${RELEASE_DECORATION}"
- )
- elseif(UNIX)
- set (LOADER_SEARCH_PATHS
- "${LOADER_REPO_ROOT}/${BUILDTGT_DIR}/loader"
- )
- endif()
+endif()
- find_library(LIBVK NAMES vulkan vulkan-1
- HINTS ${LOADER_SEARCH_PATHS}
+if(DEFINED LOADER_REPO_ROOT)
+ message(STATUS "Using user-supplied path to locate Vulkan")
+ if(WIN32)
+ set (LOADER_SEARCH_PATHS
+ "${LOADER_REPO_ROOT}/${BUILDTGT_DIR}/loader/${DEBUG_DECORATION}"
+ "${LOADER_REPO_ROOT}/${BUILDTGT_DIR}/loader/${RELEASE_DECORATION}"
)
- message(STATUS "Found Vulkan: ${LIBVK}")
+ else()
+ set (LOADER_SEARCH_PATHS
+ "${LOADER_REPO_ROOT}/${BUILDTGT_DIR}/loader"
+ )
+ endif()
+
+ find_library(LIBVK NAMES vulkan vulkan-1
+ HINTS ${LOADER_SEARCH_PATHS}
+ )
+ message(STATUS "Found Vulkan: ${LIBVK}")
+ if(APPLE)
+ target_link_libraries(vulkaninfo ${LIBVK} "-framework AppKit -framework QuartzCore")
+ target_include_directories(vulkaninfo PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo)
+ else()
target_link_libraries(vulkaninfo ${LIBVK})
+ endif()
+ else()
+ message(STATUS "Using find_package to locate Vulkan")
+ find_package(Vulkan)
+ set (LIBVK "Vulkan::Vulkan")
+ if(APPLE)
+ target_link_libraries(vulkaninfo ${LIBVK} "-framework AppKit -framework QuartzCore")
+ target_include_directories(vulkaninfo PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo)
else()
- message(STATUS "Using find_package to locate Vulkan")
- find_package(Vulkan)
- set (LIBVK "Vulkan::Vulkan")
- target_link_libraries(vulkaninfo Vulkan::Vulkan)
+ target_link_libraries(vulkaninfo ${LIBVK})
endif()
endif()
@@ -50,7 +58,7 @@ endif()
# Create vulkaninfo application bundle for MacOS
if(APPLE)
- include(macOS/vulkaninfo/vulkaninfo.cmake)
+ include(${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo.cmake)
endif()
if(WIN32)
@@ -65,6 +73,8 @@ if(WIN32)
endforeach()
file(COPY vulkaninfo.vcxproj.user DESTINATION ${CMAKE_BINARY_DIR}/demos)
+elseif(APPLE)
+ add_definitions(-DVK_USE_PLATFORM_MACOS_MVK)
endif()
if(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
diff --git a/vulkaninfo/macOS/vulkaninfo.cmake b/vulkaninfo/macOS/vulkaninfo.cmake
index d5da172c..5299f918 100644
--- a/vulkaninfo/macOS/vulkaninfo.cmake
+++ b/vulkaninfo/macOS/vulkaninfo.cmake
@@ -6,40 +6,44 @@
# Note that the executable is a script that launches Terminal to see the output.
add_executable(vulkaninfo-bundle MACOSX_BUNDLE
vulkaninfo.c
- ${CMAKE_CURRENT_BINARY_DIR}/staging-json/MoltenVK_icd.json
- ${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo/vulkaninfo.sh
- ${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo/Resources/LunarGIcon.icns
+ ${CMAKE_BINARY_DIR}/staging-json/MoltenVK_icd.json
+ ${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo.sh
+ ${CMAKE_CURRENT_SOURCE_DIR}/macOS/Resources/LunarGIcon.icns
${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo/metal_view.m
${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo/metal_view.h
)
set_target_properties(vulkaninfo-bundle PROPERTIES
OUTPUT_NAME vulkaninfo
- MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo/Info.plist
+ MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/macOS/Info.plist
)
-target_link_libraries(vulkaninfo-bundle ${LIBRARIES} "-framework AppKit -framework QuartzCore")
+target_link_libraries(vulkaninfo-bundle ${LIBVK} "-framework AppKit -framework QuartzCore")
target_include_directories(vulkaninfo-bundle PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo)
add_dependencies(vulkaninfo-bundle MoltenVK_icd-staging-json)
-set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo/vulkaninfo.sh PROPERTIES
+set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo.sh PROPERTIES
MACOSX_PACKAGE_LOCATION "MacOS"
)
-set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/macOS/vulkaninfo/Resources/LunarGIcon.icns PROPERTIES
+set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/macOS/Resources/LunarGIcon.icns PROPERTIES
MACOSX_PACKAGE_LOCATION "Resources"
)
+set_source_files_properties(${CMAKE_BINARY_DIR}/staging-json/MoltenVK_icd.json PROPERTIES
+ MACOSX_PACKAGE_LOCATION "Resources/vulkan/icd.d"
+)
+
# Direct the MoltenVK library to the right place.
-install(FILES "${MOLTENVK_DIR}/MoltenVK/MacOS/libMoltenVK.dylib"
+install(FILES "${MOLTENVK_DIR}/MoltenVK/macOS/libMoltenVK.dylib"
DESTINATION "demos/vulkaninfo.app/Contents/Frameworks"
COMPONENT Runtime
)
# Xcode projects need some extra help with what would be install steps.
if(${CMAKE_GENERATOR} MATCHES "^Xcode.*")
add_custom_command(TARGET vulkaninfo-bundle POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy "${MOLTENVK_DIR}/MoltenVK/MacOS/libMoltenVK.dylib"
+ COMMAND ${CMAKE_COMMAND} -E copy "${MOLTENVK_DIR}/MoltenVK/macOS/libMoltenVK.dylib"
${CMAKE_CURRENT_BINARY_DIR}/$<CONFIG>/vulkaninfo.app/Contents/Frameworks/libMoltenVK.dylib
DEPENDS vulkan
)
else()
add_custom_command(TARGET vulkaninfo-bundle POST_BUILD
- COMMAND ${CMAKE_COMMAND} -E copy "${MOLTENVK_DIR}/MoltenVK/MacOS/libMoltenVK.dylib"
+ COMMAND ${CMAKE_COMMAND} -E copy "${MOLTENVK_DIR}/MoltenVK/macOS/libMoltenVK.dylib"
${CMAKE_CURRENT_BINARY_DIR}/vulkaninfo.app/Contents/Frameworks/libMoltenVK.dylib
DEPENDS vulkan
)
@@ -51,6 +55,6 @@ endif()
# Instead pass it the explicit name of the executable.
install(CODE "
include(BundleUtilities)
- fixup_bundle(${CMAKE_INSTALL_PREFIX}/demos/vulkaninfo.app/Contents/MacOS/vulkaninfo \"\" \"\")
+ fixup_bundle(${CMAKE_INSTALL_PREFIX}/vulkaninfo/vulkaninfo.app/Contents/MacOS/vulkaninfo \"\" \"\")
" COMPONENT Runtime
)