mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	Cmake: adjust dlllist.cmake to no longer be created on the fly
Because of this a bunch of variables need to be passed in and the quoting changes in rather subtle ways. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
		
							parent
							
								
									63290e3155
								
							
						
					
					
						commit
						c7278cd9ed
					
				
					 2 changed files with 6 additions and 5 deletions
				
			
		|  | @ -389,7 +389,7 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows") | |||
| 	# the script we created above is now added as a command to run at | ||||
| 	# install time - so this ensures that subsurface.exe has been | ||||
| 	# built before this is run | ||||
| 	install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -DSTAGING=${WINDOWSSTAGING} -P cmake/Modules/dlllist.cmake)") | ||||
| 	install(CODE "execute_process(COMMAND ${CMAKE_COMMAND} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DSUBSURFACE_TARGET=${SUBSURFACE_TARGET} -DSUBSURFACE_SOURCE=${CMAKE_SOURCE_DIR} -DSTAGING=${WINDOWSSTAGING} -P ${CMAKE_SOURCE_DIR}/cmake/Modules/dlllist.cmake)") | ||||
| 
 | ||||
| 	# create the subsurface-x.y.z.exe installer - this needs to depend | ||||
| 	# on the install target but cmake doesn't allow that, so we depend | ||||
|  |  | |||
|  | @ -9,10 +9,11 @@ execute_process( | |||
| # figure out where we should search for libraries | ||||
| execute_process( | ||||
| 	COMMAND ${CMAKE_C_COMPILER} -print-search-dirs | ||||
| 	COMMAND sed -nE "/^libraries: =/{s///;s,/lib/?\\\(:|\\\$\\\$\\\),/bin\\\\1,g;p;q;}" | ||||
| 	COMMAND sed -nE "/^libraries: =/{s///;s,/lib/?\(:|\$\$\),/bin\\1,g;p;q;}" | ||||
| 	OUTPUT_VARIABLE ADDPATH | ||||
| 	OUTPUT_STRIP_TRAILING_WHITESPACE | ||||
| ) | ||||
| message(STATUS "addpath is ${ADDPATH}") | ||||
| # since cmake doesn't appear to give us a variable with | ||||
| # all libraries we link against, grab the link.txt script | ||||
| # instead and drop the command name from it (before the | ||||
|  | @ -20,20 +21,20 @@ execute_process( | |||
| # linker used contains a space... | ||||
| execute_process( | ||||
| 	COMMAND tail -1 CMakeFiles/subsurface.dir/link.txt | ||||
| 	COMMAND cut -d\\  -f 2- | ||||
| 	COMMAND cut -d\  -f 2- | ||||
| 	OUTPUT_VARIABLE LINKER_LINE | ||||
| 	OUTPUT_STRIP_TRAILING_WHITESPACE | ||||
| ) | ||||
| # finally run our win-ldd.pl script against that to | ||||
| # collect all the required dlls | ||||
| execute_process( | ||||
| 	COMMAND sh -c "OBJDUMP=${OBJDUMP}-objdump PATH=$ENV{PATH}:${ADDPATH} perl ${CMAKE_SOURCE_DIR}/scripts/win-ldd.pl ${SUBSURFACE_TARGET}.exe ${LINKER_LINE}" | ||||
| 	COMMAND sh -c "OBJDUMP=${OBJDUMP}-objdump PATH=$ENV{PATH}:${ADDPATH} perl ${SUBSURFACE_SOURCE}/scripts/win-ldd.pl ${SUBSURFACE_TARGET}.exe ${LINKER_LINE}" | ||||
| 	WORKING_DIRECTORY ${CMAKE_BINARY_DIR} | ||||
| 	OUTPUT_VARIABLE DLLS | ||||
| 	OUTPUT_STRIP_TRAILING_WHITESPACE | ||||
| ) | ||||
| # replace newlines with semicolons so this is a cmake list | ||||
| string(REPLACE "\\n" ";" DLLLIST ${DLLS}) | ||||
| string(REPLACE "\n" ";" DLLLIST ${DLLS}) | ||||
| # executing 'install' as a command seems hacky, but you | ||||
| # can't use the install() cmake function in a script | ||||
| foreach(DLL ${DLLLIST}) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue