mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-31 13:10:19 -04:00 
			
		
		
		
	Rearrange bundle fixup to ensure all executables are installed
The INSTALL (CODE ...) targets to fixup the installed bundle may run before all the executable files are installed if run from the top level CMake script. By creating a new sub-directory just to run the bundle fixup its timing can be controlled by ensuring it is only included after all sub-directory that might install executable files.
This commit is contained in:
		
							parent
							
								
									2d68e857dc
								
							
						
					
					
						commit
						e32d9e1d28
					
				
							
								
								
									
										168
									
								
								CMakeLists.txt
									
									
									
									
									
								
							
							
						
						
									
										168
									
								
								CMakeLists.txt
									
									
									
									
									
								
							| @ -1675,16 +1675,6 @@ if (NOT WIN32 AND NOT APPLE) | ||||
|     ) | ||||
| endif (NOT WIN32 AND NOT APPLE) | ||||
| 
 | ||||
| 
 | ||||
| # | ||||
| # bundle fixup only done in non-Debug configurations | ||||
| # | ||||
| if (NOT is_debug_build) | ||||
| 
 | ||||
|   get_target_property (QtCore_location Qt5::Core LOCATION) | ||||
|   get_filename_component (QtCore_location ${QtCore_location} PATH) | ||||
|   list (APPEND fixup_library_dirs ${QtCore_location}) | ||||
| 
 | ||||
| if (APPLE) | ||||
|   set (CMAKE_POSTFLIGHT_SCRIPT | ||||
|     "${wsjtx_BINARY_DIR}/postflight.sh") | ||||
| @ -1696,156 +1686,16 @@ if (NOT is_debug_build) | ||||
|     "${CMAKE_POSTUPGRADE_SCRIPT}") | ||||
| endif () | ||||
| 
 | ||||
|   if (APPLE OR WIN32) | ||||
|     # install rules for including 3rd party libs such as Qt | ||||
| 
 | ||||
|     # install a qt.conf file | ||||
|     install (CODE " | ||||
|         get_filename_component (the_qt_conf \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${WSJT_QT_CONF_DESTINATION}/qt.conf\" REALPATH) | ||||
|         file (WRITE \"\${the_qt_conf}\" | ||||
| \"[Paths] | ||||
| \") | ||||
| " | ||||
|       #COMPONENT runtime | ||||
|       ) | ||||
| 
 | ||||
|     # if a system Qt is used (e.g. installed in /usr/lib/), it will not be included in the installation | ||||
|     set (fixup_exe "\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}/${CMAKE_PROJECT_NAME}${CMAKE_EXECUTABLE_SUFFIX}") | ||||
| 
 | ||||
|     #get_filename_component (hamlib_lib_dir ${Hamlib_LIBRARIES} PATH) | ||||
| 
 | ||||
|     if (APPLE) | ||||
|       # install required Qt plugins | ||||
|       install ( | ||||
| 	DIRECTORY | ||||
| 	${QT_PLUGINS_DIR}/platforms | ||||
| 	${QT_PLUGINS_DIR}/audio | ||||
| 	${QT_PLUGINS_DIR}/accessible | ||||
| 	${QT_PLUGINS_DIR}/imageformats | ||||
| 	${QT_PLUGINS_DIR}/styles | ||||
| 	DESTINATION ${WSJT_PLUGIN_DESTINATION} | ||||
| 	CONFIGURATIONS Release MinSizeRel RelWithDebInfo | ||||
| 	#COMPONENT runtime | ||||
| 	FILES_MATCHING PATTERN "*${CMAKE_SHARED_LIBRARY_SUFFIX}" | ||||
| 	PATTERN "*minimal*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
| 	PATTERN "*offscreen*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
| 	PATTERN "*quick*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
| 	PATTERN "*webgl*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
| 	PATTERN "*_debug${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
| 	PATTERN "*${CMAKE_SHARED_LIBRARY_SUFFIX}.dSYM" EXCLUDE | ||||
| 	) | ||||
|       install ( | ||||
| 	FILES | ||||
| 	${QT_PLUGINS_DIR}/sqldrivers/libqsqlite${CMAKE_SHARED_LIBRARY_SUFFIX} | ||||
| 	DESTINATION ${WSJT_PLUGIN_DESTINATION}/sqldrivers | ||||
| 	CONFIGURATIONS Release MinSizeRel RelWithDebInfo | ||||
| 	#COMPONENT runtime | ||||
| 	) | ||||
|       # install ( | ||||
|       # 	DIRECTORY | ||||
|       # 	${QT_PLUGINS_DIR}/platforms | ||||
|       # 	${QT_PLUGINS_DIR}/audio | ||||
|       #         ${QT_PLUGINS_DIR}/accessible | ||||
|       # 	DESTINATION ${WSJT_PLUGIN_DESTINATION} | ||||
|       # 	CONFIGURATIONS Debug | ||||
|       # 	#COMPONENT runtime | ||||
|       # 	FILES_MATCHING PATTERN "*_debug${CMAKE_SHARED_LIBRARY_SUFFIX}" | ||||
|       # 	PATTERN "*minimal*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
|       # 	PATTERN "*offscreen*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
|       # 	PATTERN "*quick*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
|       # 	) | ||||
| 
 | ||||
|       # add plugins path for Mac Bundle | ||||
|       install (CODE " | ||||
|           get_filename_component (the_qt_conf \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${WSJT_QT_CONF_DESTINATION}/qt.conf\" REALPATH) | ||||
|           file (APPEND \"\${the_qt_conf}\" | ||||
| \"Plugins = PlugIns | ||||
| \") | ||||
| " | ||||
| 	#COMPONENT runtime | ||||
| 	) | ||||
|     endif (APPLE) | ||||
| 
 | ||||
|     if (WIN32) | ||||
|       # DLL directories | ||||
|       get_filename_component (hamlib_lib_dir ${Hamlib_LIBRARY} PATH) | ||||
|       list (APPEND fixup_library_dirs ${hamlib_lib_dir}/../bin) | ||||
| 
 | ||||
|       get_filename_component (usb_lib_dir ${Usb_LIBRARY} PATH) | ||||
|       list (APPEND fixup_library_dirs ${usb_lib_dir}) | ||||
| 
 | ||||
|       get_filename_component (portaudio_lib_dir ${Portaudio_LIBRARY} PATH) | ||||
|       list (APPEND fixup_library_dirs ${portaudio_lib_dir}/../bin) | ||||
| 
 | ||||
|       get_filename_component (fftw_lib_dir ${FFTW3F_LIBRARY} PATH) | ||||
|       list (APPEND fixup_library_dirs ${fftw_lib_dir}) | ||||
| 
 | ||||
|       # install required Qt plugins | ||||
|       install ( | ||||
| 	DIRECTORY | ||||
| 	${QT_PLUGINS_DIR}/platforms | ||||
| 	${QT_PLUGINS_DIR}/styles | ||||
| 	${QT_PLUGINS_DIR}/accessible | ||||
| 	${QT_PLUGINS_DIR}/audio | ||||
| 	${QT_PLUGINS_DIR}/imageformats | ||||
| 	DESTINATION ${WSJT_PLUGIN_DESTINATION} | ||||
| 	CONFIGURATIONS Release MinSizeRel RelWithDebInfo | ||||
| 	#COMPONENT runtime | ||||
| 	FILES_MATCHING PATTERN "*${CMAKE_SHARED_LIBRARY_SUFFIX}" | ||||
| 	PATTERN "*minimal*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
| 	PATTERN "*offscreen*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
| 	PATTERN "*quick*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
| 	PATTERN "*d${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
| 	) | ||||
|       install ( | ||||
| 	FILES | ||||
| 	${QT_PLUGINS_DIR}/sqldrivers/qsqlite${CMAKE_SHARED_LIBRARY_SUFFIX} | ||||
| 	DESTINATION ${WSJT_PLUGIN_DESTINATION}/sqldrivers | ||||
| 	CONFIGURATIONS Release MinSizeRel RelWithDebInfo | ||||
| 	#COMPONENT runtime | ||||
| 	) | ||||
|       # install ( | ||||
|       # 	DIRECTORY | ||||
|       # 	${QT_PLUGINS_DIR}/platforms | ||||
|       # 	${QT_PLUGINS_DIR}/accessible | ||||
|       # 	${QT_PLUGINS_DIR}/audio | ||||
|       # 	DESTINATION ${WSJT_PLUGIN_DESTINATION} | ||||
|       # 	CONFIGURATIONS Debug | ||||
|       # 	#COMPONENT runtime | ||||
|       # 	FILES_MATCHING PATTERN "*d${CMAKE_SHARED_LIBRARY_SUFFIX}" | ||||
|       # 	PATTERN "*minimal*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
|       # 	PATTERN "*offscreen*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
|       # 	PATTERN "*quick*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
|       # 	) | ||||
| 
 | ||||
|       # add paths for WIN32 | ||||
|       file (RELATIVE_PATH _plugins_path "${CMAKE_INSTALL_PREFIX}/${WSJT_QT_CONF_DESTINATION}" "${CMAKE_INSTALL_PREFIX}/${WSJT_PLUGIN_DESTINATION}") | ||||
|       install (CODE " | ||||
|         get_filename_component (the_qt_conf \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${WSJT_QT_CONF_DESTINATION}/qt.conf\" REALPATH) | ||||
|         file (APPEND \"\${the_qt_conf}\" | ||||
| \"Plugins = ${_plugins_path} | ||||
| \") | ||||
| " | ||||
| 	#COMPONENT runtime | ||||
| 	) | ||||
| 
 | ||||
|       set (gp_tool "objdump")	# we want MinGW tool - not MSVC (See GetPrerequisites.cmake) | ||||
|     endif (WIN32) | ||||
| 
 | ||||
|     INSTALL (CODE " | ||||
|         get_filename_component (the_path \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${WSJT_PLUGIN_DESTINATION}\" REALPATH) | ||||
|         file (GLOB_RECURSE QTPLUGINS \"\${the_path}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\") | ||||
|         include (BundleUtilities) | ||||
|         set (BU_CHMOD_BUNDLE_ITEMS ON) | ||||
|         set (gp_tool ${gp_tool}) | ||||
|         # canonicalize path in install context | ||||
|         get_filename_component (the_exe ${fixup_exe} REALPATH) | ||||
|         fixup_bundle (\"\${the_exe}\" \"\${QTPLUGINS}\" \"${fixup_library_dirs}\")" | ||||
|       #COMPONENT runtime | ||||
|       ) | ||||
|   endif (APPLE OR WIN32) | ||||
| 
 | ||||
| endif (NOT is_debug_build) | ||||
| # | ||||
| # bundle fixup only done in non-Debug configurations | ||||
| # | ||||
| if (NOT is_debug_build) | ||||
|   # add this sub-sirectory after all install steps and other | ||||
|   # sub-directories to ensure that all executables are in-place before | ||||
|   # any fixup is done | ||||
|   add_subdirectory (bundle_fixup) | ||||
| endif () | ||||
| 
 | ||||
| 
 | ||||
| # | ||||
|  | ||||
							
								
								
									
										153
									
								
								bundle_fixup/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										153
									
								
								bundle_fixup/CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,153 @@ | ||||
| get_target_property (QtCore_location Qt5::Core LOCATION) | ||||
| get_filename_component (QtCore_location ${QtCore_location} PATH) | ||||
| list (APPEND fixup_library_dirs ${QtCore_location}) | ||||
| 
 | ||||
| if (APPLE OR WIN32) | ||||
|   # install rules for including 3rd party libs such as Qt | ||||
| 
 | ||||
|   # install a qt.conf file | ||||
|   install (CODE " | ||||
|         get_filename_component (the_qt_conf \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${WSJT_QT_CONF_DESTINATION}/qt.conf\" REALPATH) | ||||
|         file (WRITE \"\${the_qt_conf}\" | ||||
| \"[Paths] | ||||
| \") | ||||
| " | ||||
|     #COMPONENT runtime | ||||
|     ) | ||||
| 
 | ||||
|   # if a system Qt is used (e.g. installed in /usr/lib/), it will not be included in the installation | ||||
|   set (fixup_exe "\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}/${CMAKE_PROJECT_NAME}${CMAKE_EXECUTABLE_SUFFIX}") | ||||
| 
 | ||||
|   #get_filename_component (hamlib_lib_dir ${Hamlib_LIBRARIES} PATH) | ||||
| 
 | ||||
|   if (APPLE) | ||||
|     # install required Qt plugins | ||||
|     install ( | ||||
|       DIRECTORY | ||||
|       ${QT_PLUGINS_DIR}/platforms | ||||
|       ${QT_PLUGINS_DIR}/audio | ||||
|       ${QT_PLUGINS_DIR}/accessible | ||||
|       ${QT_PLUGINS_DIR}/imageformats | ||||
|       ${QT_PLUGINS_DIR}/styles | ||||
|       DESTINATION ${WSJT_PLUGIN_DESTINATION} | ||||
|       CONFIGURATIONS Release MinSizeRel RelWithDebInfo | ||||
|       #COMPONENT runtime | ||||
|       FILES_MATCHING PATTERN "*${CMAKE_SHARED_LIBRARY_SUFFIX}" | ||||
|       PATTERN "*minimal*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
|       PATTERN "*offscreen*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
|       PATTERN "*quick*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
|       PATTERN "*webgl*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
|       PATTERN "*_debug${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
|       PATTERN "*${CMAKE_SHARED_LIBRARY_SUFFIX}.dSYM" EXCLUDE | ||||
|       ) | ||||
|     install ( | ||||
|       FILES | ||||
|       ${QT_PLUGINS_DIR}/sqldrivers/libqsqlite${CMAKE_SHARED_LIBRARY_SUFFIX} | ||||
|       DESTINATION ${WSJT_PLUGIN_DESTINATION}/sqldrivers | ||||
|       CONFIGURATIONS Release MinSizeRel RelWithDebInfo | ||||
|       #COMPONENT runtime | ||||
|       ) | ||||
|     # install ( | ||||
|     # 	DIRECTORY | ||||
|     # 	${QT_PLUGINS_DIR}/platforms | ||||
|     # 	${QT_PLUGINS_DIR}/audio | ||||
|     #         ${QT_PLUGINS_DIR}/accessible | ||||
|     # 	DESTINATION ${WSJT_PLUGIN_DESTINATION} | ||||
|     # 	CONFIGURATIONS Debug | ||||
|     # 	#COMPONENT runtime | ||||
|     # 	FILES_MATCHING PATTERN "*_debug${CMAKE_SHARED_LIBRARY_SUFFIX}" | ||||
|     # 	PATTERN "*minimal*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
|     # 	PATTERN "*offscreen*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
|     # 	PATTERN "*quick*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
|     # 	) | ||||
| 
 | ||||
|     # add plugins path for Mac Bundle | ||||
|     install (CODE " | ||||
|           get_filename_component (the_qt_conf \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${WSJT_QT_CONF_DESTINATION}/qt.conf\" REALPATH) | ||||
|           file (APPEND \"\${the_qt_conf}\" | ||||
| \"Plugins = PlugIns | ||||
| \") | ||||
| " | ||||
|       #COMPONENT runtime | ||||
|       ) | ||||
|   endif (APPLE) | ||||
| 
 | ||||
|   if (WIN32) | ||||
|     # DLL directories | ||||
|     get_filename_component (hamlib_lib_dir ${Hamlib_LIBRARY} PATH) | ||||
|     list (APPEND fixup_library_dirs ${hamlib_lib_dir}/../bin) | ||||
| 
 | ||||
|     get_filename_component (usb_lib_dir ${Usb_LIBRARY} PATH) | ||||
|     list (APPEND fixup_library_dirs ${usb_lib_dir}) | ||||
| 
 | ||||
|     get_filename_component (portaudio_lib_dir ${Portaudio_LIBRARY} PATH) | ||||
|     list (APPEND fixup_library_dirs ${portaudio_lib_dir}/../bin) | ||||
| 
 | ||||
|     get_filename_component (fftw_lib_dir ${FFTW3F_LIBRARY} PATH) | ||||
|     list (APPEND fixup_library_dirs ${fftw_lib_dir}) | ||||
| 
 | ||||
|     # install required Qt plugins | ||||
|     install ( | ||||
|       DIRECTORY | ||||
|       ${QT_PLUGINS_DIR}/platforms | ||||
|       ${QT_PLUGINS_DIR}/styles | ||||
|       ${QT_PLUGINS_DIR}/accessible | ||||
|       ${QT_PLUGINS_DIR}/audio | ||||
|       ${QT_PLUGINS_DIR}/imageformats | ||||
|       DESTINATION ${WSJT_PLUGIN_DESTINATION} | ||||
|       CONFIGURATIONS Release MinSizeRel RelWithDebInfo | ||||
|       #COMPONENT runtime | ||||
|       FILES_MATCHING PATTERN "*${CMAKE_SHARED_LIBRARY_SUFFIX}" | ||||
|       PATTERN "*minimal*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
|       PATTERN "*offscreen*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
|       PATTERN "*quick*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
|       PATTERN "*d${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
|       ) | ||||
|     install ( | ||||
|       FILES | ||||
|       ${QT_PLUGINS_DIR}/sqldrivers/qsqlite${CMAKE_SHARED_LIBRARY_SUFFIX} | ||||
|       DESTINATION ${WSJT_PLUGIN_DESTINATION}/sqldrivers | ||||
|       CONFIGURATIONS Release MinSizeRel RelWithDebInfo | ||||
|       #COMPONENT runtime | ||||
|       ) | ||||
|     # install ( | ||||
|     # 	DIRECTORY | ||||
|     # 	${QT_PLUGINS_DIR}/platforms | ||||
|     # 	${QT_PLUGINS_DIR}/accessible | ||||
|     # 	${QT_PLUGINS_DIR}/audio | ||||
|     # 	DESTINATION ${WSJT_PLUGIN_DESTINATION} | ||||
|     # 	CONFIGURATIONS Debug | ||||
|     # 	#COMPONENT runtime | ||||
|     # 	FILES_MATCHING PATTERN "*d${CMAKE_SHARED_LIBRARY_SUFFIX}" | ||||
|     # 	PATTERN "*minimal*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
|     # 	PATTERN "*offscreen*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
|     # 	PATTERN "*quick*${CMAKE_SHARED_LIBRARY_SUFFIX}" EXCLUDE | ||||
|     # 	) | ||||
| 
 | ||||
|     # add paths for WIN32 | ||||
|     file (RELATIVE_PATH _plugins_path "${CMAKE_INSTALL_PREFIX}/${WSJT_QT_CONF_DESTINATION}" "${CMAKE_INSTALL_PREFIX}/${WSJT_PLUGIN_DESTINATION}") | ||||
|     install (CODE " | ||||
|         get_filename_component (the_qt_conf \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${WSJT_QT_CONF_DESTINATION}/qt.conf\" REALPATH) | ||||
|         file (APPEND \"\${the_qt_conf}\" | ||||
| \"Plugins = ${_plugins_path} | ||||
| \") | ||||
| " | ||||
|       #COMPONENT runtime | ||||
|       ) | ||||
| 
 | ||||
|     set (gp_tool "objdump")	# we want MinGW tool - not MSVC (See GetPrerequisites.cmake) | ||||
|   endif (WIN32) | ||||
| 
 | ||||
|   INSTALL (CODE " | ||||
|         get_filename_component (the_path \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${WSJT_PLUGIN_DESTINATION}\" REALPATH) | ||||
|         file (GLOB_RECURSE QTPLUGINS \"\${the_path}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\") | ||||
|         include (BundleUtilities) | ||||
|         set (BU_CHMOD_BUNDLE_ITEMS ON) | ||||
|         set (gp_tool ${gp_tool}) | ||||
|         # canonicalize path in install context | ||||
|         get_filename_component (the_exe ${fixup_exe} REALPATH) | ||||
|         fixup_bundle (\"\${the_exe}\" \"\${QTPLUGINS}\" \"${fixup_library_dirs}\")" | ||||
|     #COMPONENT runtime | ||||
|     ) | ||||
| endif (APPLE OR WIN32) | ||||
| 
 | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user