@@ -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" )
4647else ()
4748 # Priority 2 & 3: Try to find installed version
4849 set (_lsl_hints)
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 ()
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)
173179endif ()
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} " )
216227endif ()
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
227230if (EGIAMP_BUILD_CLI)
228231 install (TARGETS EGIAmpServerCLI
@@ -246,76 +249,24 @@ endif()
246249install (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# =============================================================================
265262if (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} " )
300264endif ()
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+ )
345285endif ()
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
370295set (CPACK_PACKAGE_NAME "${PROJECT_NAME} " )
371296set (CPACK_PACKAGE_VERSION "${PROJECT_VERSION} " )
372297set (CPACK_PACKAGE_VENDOR "Labstreaminglayer" )
373298set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_DESCRIPTION} " )
374299set (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 } " )
376301set (CPACK_STRIP_FILES ON )
377302
378303if (WIN32 )
0 commit comments