From 6e590c31d0ceaf3edc717d4e79aacc9afed46f5c Mon Sep 17 00:00:00 2001 From: Mark Lobodzinski Date: Wed, 11 Apr 2018 13:38:11 -0600 Subject: cube: Move cube directory up to top level dir Change-Id: Ie1116b0b6de742b4f85834a4c9d1927dd641e19b --- cube/macOS/cubepp/cubepp.cmake | 104 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 cube/macOS/cubepp/cubepp.cmake (limited to 'cube/macOS/cubepp/cubepp.cmake') diff --git a/cube/macOS/cubepp/cubepp.cmake b/cube/macOS/cubepp/cubepp.cmake new file mode 100644 index 00000000..874ed25f --- /dev/null +++ b/cube/macOS/cubepp/cubepp.cmake @@ -0,0 +1,104 @@ +# Cube Application Bundle + +set(cubepp_SRCS + ${CMAKE_CURRENT_SOURCE_DIR}/macOS/cubepp/main.mm + ${CMAKE_CURRENT_SOURCE_DIR}/macOS/cubepp/AppDelegate.mm + ${CMAKE_CURRENT_SOURCE_DIR}/macOS/cubepp/DemoViewController.mm +) +set(cubepp_HDRS + ${CMAKE_CURRENT_SOURCE_DIR}/macOS/cubepp/AppDelegate.h + ${CMAKE_CURRENT_SOURCE_DIR}/macOS/cubepp/DemoViewController.h +) +set(cubepp_RESOURCES + ${CMAKE_CURRENT_SOURCE_DIR}/lunarg.ppm + ${CMAKE_CURRENT_BINARY_DIR}/staging-json/MoltenVK_icd.json + ${CMAKE_CURRENT_SOURCE_DIR}/macOS/cubepp/Resources/LunarGIcon.icns +) + +# Have Xcode handle the Storyboard +if(${CMAKE_GENERATOR} MATCHES "^Xcode.*") + set(cubepp_RESOURCES ${cubepp_RESOURCES} + ${CMAKE_CURRENT_SOURCE_DIR}/macOS/cubepp/Resources/Main.storyboard + ) +endif() + +add_executable(cubepp MACOSX_BUNDLE + ${cubepp_SRCS} + ${cubepp_HDRS} + ${cubepp_RESOURCES} + cube.vert.inc cube.frag.inc +) + +# Handle the Storyboard ourselves +if(NOT ${CMAKE_GENERATOR} MATCHES "^Xcode.*") + # Compile the storyboard file with the ibtool. + add_custom_command(TARGET cubepp POST_BUILD + COMMAND ${IBTOOL} --errors --warnings --notices --output-format human-readable-text + --compile ${CMAKE_CURRENT_BINARY_DIR}/cubepp.app/Contents/Resources/Main.storyboardc + ${CMAKE_CURRENT_SOURCE_DIR}/macOS/cubepp/Resources/Main.storyboard + COMMENT "Compiling storyboard" + ) +endif() + +add_dependencies(cubepp MoltenVK_icd-staging-json) + +# Include demo source code dir because the MacOS cubepp's Objective-C source includes +# the "original" cubepp application C++ source code. +# Also include the MoltenVK helper files. +target_include_directories(cubepp PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR} + ${MOLTENVK_DIR}/MoltenVK/include +) + +target_link_libraries(cubepp ${LIBRARIES} "-framework Cocoa -framework QuartzCore") + +set_target_properties(cubepp PROPERTIES + MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/macOS/cubepp/Info.plist +) + +# The RESOURCE target property cannot be used in conjunction with the MACOSX_PACKAGE_LOCATION +# property. We need fine-grained control over the Resource directory, so we have to specify +# the destination of all the resource files on a per-destination-directory basis. +# If all the files went into the top-level Resource directory, then we could simply set +# the RESOURCE property to a list of all the resource files. +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 + MACOSX_PACKAGE_LOCATION "Resources/vulkan/icd.d" +) + +# Direct the MoltenVK library to the right place. +install(FILES "${MOLTENVK_DIR}/MoltenVK/MacOS/libMoltenVK.dylib" + DESTINATION "demos/cubepp.app/Contents/Frameworks" + COMPONENT Runtime +) + +# 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" + ${CMAKE_CURRENT_BINARY_DIR}/$/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" + ${CMAKE_CURRENT_BINARY_DIR}/cubepp.app/Contents/Frameworks/libMoltenVK.dylib + DEPENDS vulkan + ) +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 \"\" \"\") + " COMPONENT Runtime +) + +# Not sure this is needed. When activated, it makes a symlink from +# libvulkan.dylib to libvulkan.1.dylib (which in turn symlinks to libvulkan.1.0.xx.dylib.) +# install(FILES +# "${CMAKE_BINARY_DIR}/loader/libvulkan.dylib" +# DESTINATION "demos/cubepp.app/Contents/MacOS" +# COMPONENT Runtime) -- cgit v1.2.3