@@ -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.
@@ -27,20 +39,20 @@ install(TARGETS ${LSLTargets}
2739 RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
2840 LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
2941 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
30- FILE_SET HEADERS DESTINATION ${CMAKE_INSTALL_INCLUDEDIR }
42+ FILE_SET HEADERS DESTINATION ${LSL_INSTALL_INCLUDEDIR }
3143)
3244
3345# Generate the LSLConfig.cmake file and mark it for installation
3446install (EXPORT LSLTargets
3547 FILE LSLConfig.cmake
3648 COMPONENT liblsl
3749 NAMESPACE "LSL::"
38- DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/LSL
50+ DESTINATION ${LSL_CONFIG_INSTALL_DIR}
3951)
4052# A common alternative to installing the exported package config file is to generate it from a template.
4153#configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/lslConfig.cmake.in
4254# ${CMAKE_CURRENT_BINARY_DIR}/LSLConfig.cmake
43- # INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/lsl )
55+ # INSTALL_DESTINATION ${LSL_CONFIG_INSTALL_DIR} )
4456# If we use this method, then we need a corresponding install(FILES ...) command to install the generated file.
4557
4658# Install the version file and the helper CMake script.
@@ -49,5 +61,17 @@ install(
4961 cmake/LSLCMake.cmake
5062 ${CMAKE_CURRENT_BINARY_DIR} /LSLConfigVersion.cmake
5163 COMPONENT liblsl
52- DESTINATION ${CMAKE_INSTALL_LIBDIR} /cmake/LSL
64+ DESTINATION ${LSL_CONFIG_INSTALL_DIR}
5365)
66+
67+ if (APPLE AND LSL_FRAMEWORK)
68+ # Create symlinks for the framework. The variables we want to use to identify the symlink locations
69+ # are not available at install time. Instead, we create a script during configuration time that will
70+ # be run at install time to create the symlinks.
71+ configure_file (
72+ ${CMAKE_CURRENT_SOURCE_DIR} /cmake/CreateFrameworkSymlinks.cmake.in
73+ ${CMAKE_CURRENT_BINARY_DIR} /CreateFrameworkSymlinks.cmake
74+ @ONLY
75+ )
76+ install (SCRIPT ${CMAKE_CURRENT_BINARY_DIR} /CreateFrameworkSymlinks.cmake COMPONENT liblsl)
77+ endif ()
0 commit comments