@@ -19,10 +19,12 @@ else()
19
19
set (SIMULATOR_NAME "simulator" )
20
20
endif ()
21
21
22
- # This the name that the user will see in the generated DMG and what the application
23
- # will be called under /Applications. We include the version string to make installing
24
- # different versions side-by-side
25
- set (COMPANION_OSX_APP_BUNDLE_NAME "EdgeTX Companion ${VERSION_MAJOR} .${VERSION_MINOR} " )
22
+ if (APPLE )
23
+ # This the name that the user will see in the generated DMG and what the application
24
+ # will be called under /Applications. We include the version string to make installing
25
+ # different versions side-by-side
26
+ set (COMPANION_OSX_APP_BUNDLE_NAME "EdgeTX Companion ${VERSION_MAJOR} .${VERSION_MINOR} " )
27
+ endif (APPLE )
26
28
27
29
option (DEBUG_STORAGE_IMPORT "Turn on debug output for storage import" ) # Disabled by default
28
30
if (DEBUG_STORAGE_IMPORT)
@@ -139,13 +141,13 @@ else()
139
141
endif ()
140
142
141
143
############# Import radio hardware definitions ###############
142
-
143
144
set (HWDEFS_DIR "${CMAKE_CURRENT_BINARY_DIR} /../../radio/src" )
144
145
set (HWDEFS_TMPL "${COMPANION_SRC_DIRECTORY} /hwdefs.qrc.in" )
145
146
set (HWDEFS_PHDR "HWDEF_JSON_LIST" )
146
147
set (HWDEFS_QRC "${CMAKE_CURRENT_BINARY_DIR} /hwdefs.qrc" )
147
148
set (HWDEFS_CMD "${COMPANION_SRC_DIRECTORY} /../util/generate_hwdefs_qrc.py" )
148
149
150
+ # qrc used by Companion and Simulator
149
151
add_custom_command (OUTPUT ${HWDEFS_QRC}
150
152
COMMAND ${HWDEFS_CMD} -d ${HWDEFS_DIR}
151
153
-t ${HWDEFS_TMPL}
@@ -311,9 +313,18 @@ include(FindDfuutil)
311
313
include (FindLibusb1)
312
314
include (FindOpenSSL)
313
315
316
+ set (COMPANION_TARGETS_PATH ${PROJECT_SOURCE_DIR} /companion/targets)
317
+ if (CMAKE_SYSTEM_NAME STREQUAL "Linux" )
318
+ set (COMPANION_TARGETS_PATH ${COMPANION_TARGETS_PATH} /linux)
319
+ elseif (APPLE )
320
+ set (COMPANION_TARGETS_PATH ${COMPANION_TARGETS_PATH} /mac)
321
+ elseif (WIN32 )
322
+ set (COMPANION_TARGETS_PATH ${COMPANION_TARGETS_PATH} /windows)
323
+ endif ()
324
+
314
325
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" )
315
- configure_file (${CMAKE_CURRENT_SOURCE_DIR} /../targets/linux /companion.desktop.in ${CMAKE_CURRENT_BINARY_DIR} /companion.desktop @ONLY)
316
- configure_file (${CMAKE_CURRENT_SOURCE_DIR} /../targets/linux /simulator.desktop.in ${CMAKE_CURRENT_BINARY_DIR} /simulator.desktop @ONLY)
326
+ configure_file (${COMPANION_TARGETS_PATH} /companion.desktop.in ${CMAKE_CURRENT_BINARY_DIR} /companion.desktop @ONLY)
327
+ configure_file (${COMPANION_TARGETS_PATH} /simulator.desktop.in ${CMAKE_CURRENT_BINARY_DIR} /simulator.desktop @ONLY)
317
328
message (STATUS "install " ${CMAKE_BINARY_DIR} " to " ${CMAKE_INSTALL_PREFIX} )
318
329
install (TARGETS ${COMPANION_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX} /bin)
319
330
install (TARGETS ${SIMULATOR_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX} /bin)
@@ -328,8 +339,8 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
328
339
install (FILES images/linuxicons/256x256/companion.png DESTINATION ${CMAKE_INSTALL_PREFIX} /share/icons/hicolor/256x256/apps RENAME companion${APP_NAME_SUFFIX} .png)
329
340
install (FILES images/linuxicons/512x512/companion.png DESTINATION ${CMAKE_INSTALL_PREFIX} /share/icons/hicolor/512x512/apps RENAME companion${APP_NAME_SUFFIX} .png)
330
341
install (FILES images/linuxicons/scalable/companion.svg DESTINATION ${CMAKE_INSTALL_PREFIX} /share/icons/hicolor/scalable/apps RENAME companion${APP_NAME_SUFFIX} .svg)
331
- install (FILES ${CMAKE_CURRENT_SOURCE_DIR} /../targets/linux /45-companion-taranis.rules DESTINATION ${CMAKE_INSTALL_PREFIX} /lib/udev/rules.d RENAME 45-companion${APP_NAME_SUFFIX} -taranis.rules)
332
- install (FILES ${CMAKE_CURRENT_SOURCE_DIR} /../targets/linux /45-usbasp.rules DESTINATION ${CMAKE_INSTALL_PREFIX} /lib/udev/rules.d RENAME 45-companion${APP_NAME_SUFFIX} -usbasp.rules)
342
+ install (FILES ${COMPANION_TARGETS_PATH} /45-companion-taranis.rules DESTINATION ${CMAKE_INSTALL_PREFIX} /lib/udev/rules.d RENAME 45-companion${APP_NAME_SUFFIX} -taranis.rules)
343
+ install (FILES ${COMPANION_TARGETS_PATH} /45-usbasp.rules DESTINATION ${CMAKE_INSTALL_PREFIX} /lib/udev/rules.d RENAME 45-companion${APP_NAME_SUFFIX} -usbasp.rules)
333
344
334
345
if (LIBSSL1_FOUND)
335
346
install (DIRECTORY ${LIBSSL1_LIBRARY_DIR} / DESTINATION ${CMAKE_INSTALL_PREFIX} /lib FILES_MATCHING PATTERN "libcrypto.so.*" PATTERN "libssl.so.*" )
@@ -370,7 +381,7 @@ elseif(WIN32)
370
381
if (DFU_UTIL_FOUND)
371
382
install (FILES "${DFU_UTIL_PATH} " DESTINATION ${INSTALL_DESTINATION} )
372
383
endif ()
373
- endif ()
384
+ endif (LIBUSB1_FOUND )
374
385
375
386
if (OPENSSL_FOUND)
376
387
get_filename_component (OPENSSL_SSL_LIBRARY_DIR ${OPENSSL_SSL_LIBRARY} DIRECTORY )
@@ -382,10 +393,10 @@ elseif(WIN32)
382
393
# install only files Qt networking requires
383
394
install (DIRECTORY ${OPENSSL_SSL_LIBRARY_DIR} / DESTINATION ${INSTALL_DESTINATION} FILES_MATCHING PATTERN "libcrypto-*.dll" PATTERN "libssl-*.dll" )
384
395
endif ()
385
- endif ()
396
+ endif (OPENSSL_FOUND )
386
397
387
398
set (LICENSE_FILE "${CMAKE_CURRENT_BINARY_DIR} /license.txt" )
388
- configure_file ("${COMPANION_SRC_DIRECTORY} /../targets/windows /license.txt.in" ${LICENSE_FILE} @ONLY)
399
+ configure_file ("${COMPANION_TARGETS_PATH} /license.txt.in" ${LICENSE_FILE} @ONLY)
389
400
install (FILES "${LICENSE_FILE} " DESTINATION ${INSTALL_DESTINATION} )
390
401
391
402
if (SDL2_FOUND AND DEFINED SDL2_LIB_PATH)
@@ -404,42 +415,7 @@ elseif(WIN32)
404
415
405
416
# Add installer command to execute windeployqt
406
417
message (STATUS "windeployqt command: ${QT_BIN_DIR} /windeployqt.exe ${wdqtopts} " )
407
- endif () # WIN32 install
408
-
409
- ############# Packaging ####################
410
-
411
- # Create Windows installer with NSIS
412
- if (WIN32 )
413
- find_program (NSIS_EXE makensis.exe PATHS
414
- "C:/Program Files/NSIS"
415
- "C:/Program Files (x86)/NSIS"
416
- "C:/Programs/NSIS"
417
- "${WIN_EXTRA_LIBS_PATH} /NSIS"
418
- )
419
-
420
- if (NSIS_EXE)
421
- file (TO_NATIVE_PATH "${INSTALL_DESTINATION} " NSIS_DISTRO) # all files in here will be included in installer
422
- set (NSI_FILE "${PROJECT_BINARY_DIR} /companion/companion.nsi" )
423
- configure_file ("${CMAKE_CURRENT_SOURCE_DIR} /../targets/windows/companion.nsi.in" "${NSI_FILE} " @ONLY)
424
-
425
- add_custom_target (installer
426
- # The 'install' target prepares all the distro files, make sure it has been executed first.
427
- COMMAND "${CMAKE_COMMAND} " --build "${CMAKE_BINARY_DIR} " --target install --config Release
428
- COMMAND "${QT_BIN_DIR} /windeployqt.exe" "${wdqtopts} "
429
- COMMAND "${NSIS_EXE} " "${NSI_FILE} "
430
- DEPENDS "${NSI_FILE} "
431
- COMMENT "Building Windows NSIS installer..."
432
- )
433
- endif ()
434
- endif ()
435
-
436
- set (CPACK_PACKAGE_NAME "companion${APP_NAME_SUFFIX} " )
437
- set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Models and settings editor for the EdgeTX open source firmware" )
438
- string (TOLOWER "${CPACK_PACKAGE_NAME} " CPACK_PACKAGE_NAME_LOWERCASE)
439
-
440
- # The file stripping is deliberately disabled, with the stripped file we get
441
- # very poor trace-backs from the users when they report Companion crash
442
- set (CPACK_STRIP_FILES FALSE )
418
+ endif (WIN32 )
443
419
444
420
# Qt + Cmake + Mac is poorly documented. A lot of this is guesswork
445
421
# and trial and error. Do not hesitate to fix it for the better
@@ -453,8 +429,8 @@ IF(APPLE)
453
429
set_target_properties (${SIMULATOR_NAME} PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Simulator ${VERSION_MAJOR} .${VERSION_MINOR} " )
454
430
455
431
# Use a non standard Info.plist that adds Retina support flags
456
- set_target_properties (${COMPANION_NAME} PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${PROJECT_SOURCE_DIR} /companion/targets/mac /MacOSXBundleInfo.plist.in)
457
- set_target_properties (${SIMULATOR_NAME} PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${PROJECT_SOURCE_DIR} /companion/targets/mac /MacOSXBundleInfo.plist.in)
432
+ set_target_properties (${COMPANION_NAME} PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${COMPANION_TARGETS_PATH} /MacOSXBundleInfo.plist.in)
433
+ set_target_properties (${SIMULATOR_NAME} PROPERTIES MACOSX_BUNDLE_INFO_PLIST ${COMPANION_TARGETS_PATH} /MacOSXBundleInfo.plist.in)
458
434
459
435
set (MACOSX_BUNDLE_GUI_IDENTIFIER "org.edgetx.companion" )
460
436
@@ -473,7 +449,7 @@ IF(APPLE)
473
449
COMPONENT Runtime)
474
450
475
451
# menu file
476
- install (DIRECTORY ${PROJECT_SOURCE_DIR} /companion/targets/mac /qt_menu.nib DESTINATION "${companion_res_dir} " COMPONENT Runtime)
452
+ install (DIRECTORY ${COMPANION_TARGETS_PATH} /qt_menu.nib DESTINATION "${companion_res_dir} " COMPONENT Runtime)
477
453
478
454
# manually add the required plugins
479
455
foreach (plugin ${Qt${QT_VERSION_MAJOR} Multimedia_PLUGINS} ${Qt${QT_VERSION_MAJOR} PrintSupport_PLUGINS} ${Qt${QT_VERSION_MAJOR} Gui_PLUGINS} ${Qt${QT_VERSION_MAJOR} Svg_PLUGINS})
@@ -501,13 +477,13 @@ IF(APPLE)
501
477
install (PROGRAMS ${DFU_UTIL_ABSOLUTE_PATH} DESTINATION ${companion_res_dir} COMPONENT Runtime)
502
478
503
479
set (bundle_tools_path "\$ {CMAKE_INSTALL_PREFIX}/${companion_res_dir} /dfu-util;" )
504
- endif ()
480
+ endif (DFU_UTIL_FOUND )
505
481
506
482
if (OPENSSL_FOUND)
507
483
# Copy openssl, resolve symlink first
508
484
#get_filename_component(OPENSSL_ABSOLUTE_PATH ${OPENSSL_SSL_LIBRARY} REALPATH)
509
485
#install(FILES ${OPENSSL_ABSOLUTE_PATH} DESTINATION ${companion_res_dir} COMPONENT Runtime)
510
- endif ()
486
+ endif (OPENSSL_FOUND )
511
487
512
488
# Include depencies (adding frameworks, fixing the embbeded libraries)
513
489
# I get write errors without setting BU_CHMOD_BUNDLE_ITEMS even though it is
@@ -519,27 +495,37 @@ IF(APPLE)
519
495
fixup_bundle(\" ${APPS} \" \"\$ {bundle_simulator_libs};${bundle_qt_libs} ;${bundle_tools_path} \" \" ${QT_LIB_DIR} \" )
520
496
file(RENAME \"\$ {CMAKE_INSTALL_PREFIX}/${COMPANION_NAME} .app\" \"\$ {CMAKE_INSTALL_PREFIX}/${COMPANION_OSX_APP_BUNDLE_NAME} .app\" )
521
497
" COMPONENT Runtime)
522
- endif ()
498
+ endif (APPLE )
499
+
500
+ ############# Packaging ####################
501
+
502
+ set (CPACK_PACKAGE_NAME "companion${APP_NAME_SUFFIX} " )
503
+ set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "Models and settings editor for the EdgeTX open source firmware" )
504
+ string (TOLOWER "${CPACK_PACKAGE_NAME} " CPACK_PACKAGE_NAME_LOWERCASE)
505
+
506
+ # The file stripping is deliberately disabled, with the stripped file we get
507
+ # very poor trace-backs from the users when they report Companion crash
508
+ set (CPACK_STRIP_FILES FALSE )
523
509
524
510
if (APPLE )
525
511
set (CPACK_GENERATOR "DragNDrop" )
526
512
# set(CPACK_GENERATOR "TGZ") # for quick testing
527
513
set (CPACK_BINARY_DRAGNDROP ON )
528
514
set (CPACK_DMG_BACKGROUND_IMAGE ${COMPANION_SRC_DIRECTORY} /images/splash_dmg.png)
529
515
set (CPACK_DMG_VOLUME_NAME "EdgeTX Companion" )
530
- set (CPACK_DMG_DS_STORE ${PROJECT_SOURCE_DIR} /companion/targets/mac /DS_Store)
516
+ set (CPACK_DMG_DS_STORE ${COMPANION_TARGETS_PATH} /DS_Store)
531
517
set (CPACK_PACKAGE_FILE_NAME "edgetx-${CPACK_PACKAGE_NAME_LOWERCASE} -${VERSION} " )
532
518
endif (APPLE )
533
519
534
- if (CMAKE_SYSTEM_NAME STREQUAL "Linux" )
520
+ if (CMAKE_SYSTEM_NAME STREQUAL "Linux" )
535
521
set (LINUXDEPLOY_APPIMAGE "linuxdeploy-x86_64.AppImage" )
536
522
set (LINUXDEPLOY_PLUGIN_QT "linuxdeploy-plugin-qt-x86_64.AppImage" )
537
523
set (LINUXDEPLOY_URL "https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous" )
538
524
set (LINUXDEPLOY_PLUGIN_QT_URL "https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous" )
539
525
set (LINUXDEPLOY_DIRECTORY "${CMAKE_BINARY_DIR} /linuxdeploy" )
540
526
set (LINUXDEPLOY_APP "${LINUXDEPLOY_DIRECTORY} /usr/bin/linuxdeploy" )
541
527
542
- if (NOT EXISTS "${LINUXDEPLOY_DIRECTORY} " )
528
+ if (NOT EXISTS "${LINUXDEPLOY_DIRECTORY} " )
543
529
message (STATUS "Downloading linuxdeploy and plugins..." )
544
530
545
531
file (DOWNLOAD "${LINUXDEPLOY_URL} /${LINUXDEPLOY_APPIMAGE} " "${CMAKE_BINARY_DIR} /${LINUXDEPLOY_APPIMAGE} " )
@@ -582,8 +568,33 @@ if (CMAKE_SYSTEM_NAME STREQUAL "Linux")
582
568
set (APPIMAGE_DIR "${CPACK_PACKAGE_DIRECTORY} /_CPack_Packages/Linux/External/AppImage" )
583
569
set (CPN_DESKTOP_FILE ${APPIMAGE_DIR} /usr/share/applications/${COMPANION_NAME} .desktop)
584
570
585
- configure_file (${CMAKE_CURRENT_SOURCE_DIR} /../targets/linux/ CPackLinuxDeploy.cmake.in "${CMAKE_BINARY_DIR} /CPackExternal.cmake" @ONLY)
571
+ configure_file (" ${COMPANION_TARGETS_PATH} / CPackLinuxDeploy.cmake.in" "${CMAKE_BINARY_DIR} /CPackExternal.cmake" @ONLY)
586
572
set (CPACK_EXTERNAL_PACKAGE_SCRIPT "${CMAKE_BINARY_DIR} /CPackExternal.cmake" )
587
- endif ()
573
+ endif (Linux)
574
+
575
+ # Create Windows installer with NSIS
576
+ if (WIN32 )
577
+ find_program (NSIS_EXE makensis.exe PATHS
578
+ "C:/Program Files/NSIS"
579
+ "C:/Program Files (x86)/NSIS"
580
+ "C:/Programs/NSIS"
581
+ "${WIN_EXTRA_LIBS_PATH} /NSIS"
582
+ )
583
+
584
+ if (NSIS_EXE)
585
+ file (TO_NATIVE_PATH "${INSTALL_DESTINATION} " NSIS_DISTRO) # all files in here will be included in installer
586
+ set (NSI_FILE "${PROJECT_BINARY_DIR} /companion/companion.nsi" )
587
+ configure_file ("${COMPANION_TARGETS_PATH} /companion.nsi.in" "${NSI_FILE} " @ONLY)
588
+
589
+ add_custom_target (installer
590
+ # The 'install' target prepares all the distro files, make sure it has been executed first.
591
+ COMMAND "${CMAKE_COMMAND} " --build "${CMAKE_BINARY_DIR} " --target install --config Release
592
+ COMMAND "${QT_BIN_DIR} /windeployqt.exe" "${wdqtopts} "
593
+ COMMAND "${NSIS_EXE} " "${NSI_FILE} "
594
+ DEPENDS "${NSI_FILE} "
595
+ COMMENT "Building Windows NSIS installer..."
596
+ )
597
+ endif ()
598
+ endif (WIN32 )
588
599
589
600
include (CPack)
0 commit comments