forked from Return-To-The-Roots/s25client
/
copyDepsToBuildDir.cmake
71 lines (66 loc) · 2.84 KB
/
copyDepsToBuildDir.cmake
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# Needs to be configured with @ONLY and called with -DCMAKE_BUILD_TYPE=...
set(CMAKE_HOST_UNIX "@CMAKE_HOST_UNIX@")
set(CMAKE_SOURCE_DIR "@CMAKE_SOURCE_DIR@")
SET(RTTR_BINDIR "@RTTR_BINDIR@")
SET(RTTR_DATADIR "@RTTR_DATADIR@")
SET(RTTR_GAMEDIR "@RTTR_GAMEDIR@")
SET(RTTR_LIBDIR "@RTTR_LIBDIR@")
SET(RTTR_DOCDIR "@RTTR_DOCDIR@")
SET(RTTR_DRIVERDIR "@RTTR_DRIVERDIR@")
set(RTTR_OUTPUT_DIR "@RTTR_OUTPUT_DIR@")
set(RTTR_OUTPUT_DIR_RELEASE "@RTTR_OUTPUT_DIR_RELEASE@")
set(RTTR_OUTPUT_DIR_DEBUG "@RTTR_OUTPUT_DIR_DEBUG@")
set(RTTR_OUTPUT_DIR_RELWITHDEBINFO "@RTTR_OUTPUT_DIR_RELWITHDEBINFO@")
set(RTTR_OUTPUT_DIR_MINSIZEREL "@RTTR_OUTPUT_DIR_MINSIZEREL@")
################################################################################
# Create symlinks for easier debugging
################################################################################
function(symlinkFolder dst symLinkPath)
IF(NOT EXISTS "${symLinkPath}")
IF(EXISTS "${dst}")
unset(symlink_failed)
message(STATUS "Creating symlink: '${symLinkPath}' -> '${dst}'")
execute_process(COMMAND ${CMAKE_COMMAND} -E create_symlink "${dst}" "${symLinkPath}" RESULT_VARIABLE symlink_failed)
if(symlink_failed)
message(FATAL_ERROR "Creating symlink failed")
endif()
ELSE()
message(WARNING "Directory '${dst}' missing!")
ENDIF()
ENDIF()
endfunction()
if(NOT CMAKE_BUILD_TYPE)
set(CUR_OUTPUT_DIR ${RTTR_OUTPUT_DIR})
else()
string(TOUPPER ${CMAKE_BUILD_TYPE} UPPER_BUILD_TYPE)
set(CUR_OUTPUT_DIR ${RTTR_OUTPUT_DIR_${UPPER_BUILD_TYPE}})
endif()
IF(CMAKE_HOST_UNIX)
message(STATUS "Creating symlinks in ${CUR_OUTPUT_DIR} to ease debugging.")
file(MAKE_DIRECTORY "${CUR_OUTPUT_DIR}/${RTTR_DATADIR}")
symlinkFolder("${CMAKE_SOURCE_DIR}/RTTR" "${CUR_OUTPUT_DIR}/${RTTR_DATADIR}/RTTR")
file(MAKE_DIRECTORY "${CMAKE_SOURCE_DIR}/S2")
symlinkFolder("${CMAKE_SOURCE_DIR}/S2" "${CUR_OUTPUT_DIR}/${RTTR_GAMEDIR}")
ELSE()
message(STATUS "Host system is not Unix. Will use copies instead of symlinks to init ${CUR_OUTPUT_DIR}.")
file(COPY "${CMAKE_SOURCE_DIR}/RTTR" DESTINATION "${CUR_OUTPUT_DIR}"
PATTERN "*.po" EXCLUDE
PATTERN "*.pot" EXCLUDE
PATTERN ".*" EXCLUDE
)
set(S2_GAME_PATHS ${CMAKE_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/S2
${RTTR_OUTPUT_DIR}
${RTTR_OUTPUT_DIR_RELEASE} ${RTTR_OUTPUT_DIR_DEBUG} ${RTTR_OUTPUT_DIR_RELWITHDEBINFO} ${RTTR_OUTPUT_DIR_MINSIZEREL})
if(NOT EXISTS ${CUR_OUTPUT_DIR}/DATA)
find_path(S2_DATA_DIR DATA/IO.LST PATHS ${S2_GAME_PATHS})
if(S2_DATA_DIR)
file(COPY ${S2_DATA_DIR}/DATA DESTINATION ${CUR_OUTPUT_DIR})
endif()
endif()
if(NOT EXISTS ${CUR_OUTPUT_DIR}/GFX)
find_path(S2_GFX_DIR GFX/PALETTE/PAL5.BBM PATHS ${S2_GAME_PATHS})
if(S2_GFX_DIR)
file(COPY ${S2_GFX_DIR}/GFX DESTINATION ${CUR_OUTPUT_DIR})
endif()
endif()
ENDIF()