@@ -4,10 +4,22 @@ include(CMakePackageConfigHelpers)
44# Paths
55if (LSL_UNIXFOLDERS)
66 include (GNUInstallDirs)
7+ set (CMAKE_INSTALL_FRAMEWORK_DIR Library/Frameworks CACHE PATH "Install directory for frameworks on macOS" )
78else ()
89 set (CMAKE_INSTALL_BINDIR LSL)
910 set (CMAKE_INSTALL_LIBDIR LSL)
1011 set (CMAKE_INSTALL_INCLUDEDIR LSL/include )
12+ set (CMAKE_INSTALL_FRAMEWORK_DIR LSL/Frameworks CACHE PATH "Install directory for frameworks on macOS" )
13+ endif ()
14+
15+ # For Apple frameworks, we need to next the install directories within the framework.
16+ if (APPLE AND LSL_FRAMEWORK)
17+ # For the includes, this is insufficient. Later we will create more accessible symlinks.
18+ set (LSL_INSTALL_INCLUDEDIR ${CMAKE_INSTALL_FRAMEWORK_DIR} /lsl.framework /Versions/A/include )
19+ set (LSL_CONFIG_INSTALL_DIR ${CMAKE_INSTALL_FRAMEWORK_DIR} /lsl.framework /Resources/CMake)
20+ else ()
21+ set (LSL_INSTALL_INCLUDEDIR ${CMAKE_INSTALL_INCLUDEDIR} )
22+ set (LSL_CONFIG_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR} /cmake/lsl)
1123endif ()
1224
1325# Generate a version file for the package.
@@ -30,20 +42,20 @@ install(TARGETS ${LSLTargets}
3042 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
3143 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
3244 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
33- FILE_SET HEADERS DESTINATION ${CMAKE_INSTALL_INCLUDEDIR }
45+ FILE_SET HEADERS DESTINATION ${LSL_INSTALL_INCLUDEDIR }
3446)
3547
3648# Generate the LSLConfig.cmake file and mark it for installation
3749install (EXPORT LSLTargets
3850 FILE LSLConfig.cmake
3951 COMPONENT liblsl
4052 NAMESPACE "LSL::"
41- DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/LSL
53+ DESTINATION ${LSL_CONFIG_INSTALL_DIR}
4254)
4355# A common alternative to installing the exported package config file is to generate it from a template.
4456#configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/lslConfig.cmake.in
4557# ${CMAKE_CURRENT_BINARY_DIR}/LSLConfig.cmake
46- # INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/lsl )
58+ # INSTALL_DESTINATION ${LSL_CONFIG_INSTALL_DIR} )
4759# If we use this method, then we need a corresponding install(FILES ...) command to install the generated file.
4860
4961# Install the version file and the helper CMake script.
@@ -52,5 +64,17 @@ install(
5264 cmake/LSLCMake.cmake
5365 ${CMAKE_CURRENT_BINARY_DIR} /LSLConfigVersion.cmake
5466 COMPONENT liblsl
55- DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/LSL
67+ DESTINATION ${LSL_CONFIG_INSTALL_DIR}
5668)
69+
70+ if (APPLE AND LSL_FRAMEWORK)
71+ # Create symlinks for the framework. The variables we want to use to identify the symlink locations
72+ # are not available at install time. Instead, we create a script during configuration time that will
73+ # be run at install time to create the symlinks.
74+ configure_file (
75+ ${CMAKE_CURRENT_SOURCE_DIR} /cmake/CreateFrameworkSymlinks.cmake.in
76+ ${CMAKE_CURRENT_BINARY_DIR} /CreateFrameworkSymlinks.cmake
77+ @ONLY
78+ )
79+ install (SCRIPT ${CMAKE_CURRENT_BINARY_DIR} /CreateFrameworkSymlinks.cmake COMPONENT liblsl)
80+ endif ()
0 commit comments