Skip to content

Commit 654578e

Browse files
committed
Leverage LSLCMake.cmake
1 parent 491f793 commit 654578e

1 file changed

Lines changed: 28 additions & 103 deletions

File tree

CMakeLists.txt

Lines changed: 28 additions & 103 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ if(LSL_SOURCE_DIR)
4343
add_library(LSL::lsl ALIAS lsl)
4444
endif()
4545
set(LSL_BUILT_FROM_SOURCE TRUE)
46+
include("${LSL_SOURCE_DIR}/cmake/LSLCMake.cmake")
4647
else()
4748
# Priority 2 & 3: Try to find installed version
4849
set(_lsl_hints)
@@ -51,6 +52,9 @@ else()
5152
endif()
5253
# Common development layout hints (including CLion cmake-build-* directories)
5354
string(TOLOWER "${CMAKE_BUILD_TYPE}" _build_type_lower)
55+
if(NOT _build_type_lower)
56+
set(_build_type_lower "release")
57+
endif()
5458
if(MSVC)
5559
set(_clion_build_dir "cmake-build-${_build_type_lower}-visual-studio")
5660
else()
@@ -88,6 +92,7 @@ else()
8892
if(LSL_FOUND)
8993
message(STATUS "Found installed liblsl: ${LSL_DIR}")
9094
set(LSL_BUILT_FROM_SOURCE FALSE)
95+
include("${LSL_DIR}/LSLCMake.cmake")
9196
elseif(LSL_FETCH_IF_MISSING)
9297
# Priority 4: Fetch from GitHub
9398
message(STATUS "liblsl not found locally, fetching ${LSL_FETCH_REF} from GitHub...")
@@ -105,6 +110,7 @@ else()
105110
add_library(LSL::lsl ALIAS lsl)
106111
endif()
107112
set(LSL_BUILT_FROM_SOURCE TRUE)
113+
include("${liblsl_SOURCE_DIR}/cmake/LSLCMake.cmake")
108114
message(STATUS "liblsl fetched and configured")
109115
else()
110116
message(FATAL_ERROR
@@ -172,6 +178,11 @@ else()
172178
FetchContent_MakeAvailable(pugixml)
173179
endif()
174180

181+
# =============================================================================
182+
# RPATH Configuration (must be set before targets are created)
183+
# =============================================================================
184+
LSL_configure_rpath()
185+
175186
# =============================================================================
176187
# Targets
177188
# =============================================================================
@@ -215,14 +226,6 @@ else()
215226
set(INSTALL_DATADIR "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}")
216227
endif()
217228

218-
# Set RPATH for finding bundled liblsl
219-
if(APPLE)
220-
set(CMAKE_INSTALL_RPATH "@executable_path;@executable_path/../Frameworks")
221-
elseif(UNIX AND NOT ANDROID)
222-
set(CMAKE_INSTALL_RPATH "$ORIGIN;$ORIGIN/../${CMAKE_INSTALL_LIBDIR}")
223-
endif()
224-
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
225-
226229
# Install CLI
227230
if(EGIAMP_BUILD_CLI)
228231
install(TARGETS EGIAmpServerCLI
@@ -246,76 +249,24 @@ endif()
246249
install(FILES ampserver_config.cfg DESTINATION "${_install_dest}")
247250

248251
# =============================================================================
249-
# Bundle liblsl with the application (install rules only - post-build in subdirs)
252+
# Bundle liblsl with the application
250253
# =============================================================================
251-
if(WIN32)
252-
install(FILES $<TARGET_FILE:LSL::lsl> DESTINATION "${INSTALL_BINDIR}")
253-
elseif(APPLE AND EGIAMP_BUILD_GUI)
254-
install(FILES $<TARGET_FILE:LSL::lsl>
255-
DESTINATION "${INSTALL_BINDIR}/${PROJECT_NAME}.app/Contents/Frameworks"
256-
)
257-
else()
258-
# Linux
259-
install(FILES $<TARGET_FILE:LSL::lsl> DESTINATION "${INSTALL_LIBDIR}")
260-
endif()
254+
LSL_install_liblsl(
255+
DESTINATION "${INSTALL_LIBDIR}"
256+
FRAMEWORK_DESTINATION "${INSTALL_BINDIR}/${PROJECT_NAME}.app/Contents/Frameworks"
257+
)
261258

262259
# =============================================================================
263-
# Qt Deployment (install rules only - post-build handled in gui/CMakeLists.txt)
260+
# Qt Deployment
264261
# =============================================================================
265262
if(EGIAMP_BUILD_GUI)
266-
get_target_property(QT_QMAKE_EXECUTABLE Qt6::qmake IMPORTED_LOCATION)
267-
get_filename_component(QT_BIN_DIR "${QT_QMAKE_EXECUTABLE}" DIRECTORY)
268-
269-
if(WIN32)
270-
find_program(WINDEPLOYQT_EXECUTABLE windeployqt HINTS "${QT_BIN_DIR}")
271-
if(WINDEPLOYQT_EXECUTABLE)
272-
install(CODE "
273-
message(STATUS \"Running windeployqt for installation...\")
274-
execute_process(
275-
COMMAND \"${WINDEPLOYQT_EXECUTABLE}\"
276-
--no-translations
277-
--no-system-d3d-compiler
278-
--no-opengl-sw
279-
--no-compiler-runtime
280-
--dir \"\${CMAKE_INSTALL_PREFIX}/${INSTALL_BINDIR}\"
281-
\"\${CMAKE_INSTALL_PREFIX}/${INSTALL_BINDIR}/${PROJECT_NAME}.exe\"
282-
)
283-
")
284-
endif()
285-
286-
elseif(APPLE)
287-
find_program(MACDEPLOYQT_EXECUTABLE macdeployqt HINTS "${QT_BIN_DIR}")
288-
if(MACDEPLOYQT_EXECUTABLE)
289-
install(CODE "
290-
message(STATUS \"Running macdeployqt...\")
291-
execute_process(
292-
COMMAND \"${MACDEPLOYQT_EXECUTABLE}\"
293-
\"\${CMAKE_INSTALL_PREFIX}/${INSTALL_BINDIR}/${PROJECT_NAME}.app\"
294-
-verbose=1
295-
-always-overwrite
296-
)
297-
")
298-
endif()
299-
endif()
263+
LSL_deploy_qt(TARGET "${PROJECT_NAME}" DESTINATION "${INSTALL_BINDIR}")
300264
endif()
301265

302266
# =============================================================================
303267
# MinGW Runtime Deployment
304-
# Copy MinGW runtime DLLs so executables work outside the build environment
305268
# =============================================================================
306-
if(MINGW)
307-
get_filename_component(MINGW_BIN_DIR "${CMAKE_CXX_COMPILER}" DIRECTORY)
308-
set(MINGW_RUNTIME_DLLS
309-
"${MINGW_BIN_DIR}/libgcc_s_seh-1.dll"
310-
"${MINGW_BIN_DIR}/libstdc++-6.dll"
311-
"${MINGW_BIN_DIR}/libwinpthread-1.dll"
312-
)
313-
foreach(_dll ${MINGW_RUNTIME_DLLS})
314-
if(EXISTS "${_dll}")
315-
install(FILES "${_dll}" DESTINATION "${INSTALL_BINDIR}")
316-
endif()
317-
endforeach()
318-
endif()
269+
LSL_install_mingw_runtime(DESTINATION "${INSTALL_BINDIR}")
319270

320271
# =============================================================================
321272
# macOS: Code signing
@@ -325,54 +276,28 @@ if(APPLE AND EGIAMP_BUILD_GUI)
325276
set(MACOSX_BUNDLE_BUNDLE_VERSION "${PROJECT_VERSION}")
326277
set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${PROJECT_VERSION}")
327278

328-
install(CODE "
329-
set(_app \"\${CMAKE_INSTALL_PREFIX}/${INSTALL_BINDIR}/${PROJECT_NAME}.app\")
330-
set(_ent \"${CMAKE_CURRENT_SOURCE_DIR}/app.entitlements\")
331-
332-
message(STATUS \"Signing app bundle...\")
333-
execute_process(
334-
COMMAND codesign --force --deep --sign - --entitlements \"\${_ent}\" \"\${_app}\"
335-
RESULT_VARIABLE _sign_result
336-
)
337-
338-
execute_process(COMMAND codesign --verify --verbose \"\${_app}\" RESULT_VARIABLE _verify_result)
339-
if(_verify_result EQUAL 0)
340-
message(STATUS \"App bundle signature verified successfully\")
341-
else()
342-
message(WARNING \"App bundle signature verification failed!\")
343-
endif()
344-
")
279+
LSL_codesign(
280+
TARGET "${PROJECT_NAME}"
281+
DESTINATION "${INSTALL_BINDIR}"
282+
ENTITLEMENTS "${CMAKE_CURRENT_SOURCE_DIR}/app.entitlements"
283+
BUNDLE
284+
)
345285
endif()
346286

347287
# Post-build commands for copying config file are in subdirectory CMakeLists.txt
348288

349289
# =============================================================================
350290
# CPack Configuration
351291
# =============================================================================
352-
if(CMAKE_SYSTEM_PROCESSOR MATCHES "^(aarch64|arm64|ARM64)")
353-
set(PACKAGE_ARCH "arm64")
354-
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86_64|amd64|AMD64)")
355-
set(PACKAGE_ARCH "amd64")
356-
elseif(CMAKE_SYSTEM_PROCESSOR MATCHES "^(i.86|x86)")
357-
set(PACKAGE_ARCH "i386")
358-
else()
359-
set(PACKAGE_ARCH "${CMAKE_SYSTEM_PROCESSOR}")
360-
endif()
361-
362-
if(APPLE)
363-
set(PACKAGE_OS "macOS")
364-
elseif(WIN32)
365-
set(PACKAGE_OS "Win")
366-
else()
367-
set(PACKAGE_OS "Linux")
368-
endif()
292+
LSL_get_target_arch()
293+
LSL_get_os_name()
369294

370295
set(CPACK_PACKAGE_NAME "${PROJECT_NAME}")
371296
set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION}")
372297
set(CPACK_PACKAGE_VENDOR "Labstreaminglayer")
373298
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_DESCRIPTION}")
374299
set(CPACK_PACKAGE_HOMEPAGE_URL "${PROJECT_HOMEPAGE_URL}")
375-
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}-${PACKAGE_OS}_${PACKAGE_ARCH}")
300+
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-${PROJECT_VERSION}-${LSL_OS}_${LSL_ARCH}")
376301
set(CPACK_STRIP_FILES ON)
377302

378303
if(WIN32)

0 commit comments

Comments
 (0)