mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-30 22:20:21 +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…
Reference in a new issue