Skip to content

Commit b45a279

Browse files
committed
Move install related code into BuildInstall.cmake
1 parent d156eaa commit b45a279

File tree

2 files changed

+122
-109
lines changed

2 files changed

+122
-109
lines changed

CMakeLists.txt

Lines changed: 19 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ set(APPDATADIR "${CMAKE_INSTALL_PREFIX}/share/games/supertux2")
6161

6262
set(BUILD_DATA_DIR "${CMAKE_CURRENT_SOURCE_DIR}/data")
6363
set(BUILD_CONFIG_DATA_DIR "${CMAKE_BINARY_DIR}/data")
64-
## Check endianess
6564

65+
## Check endianess
6666
if(NOT EMSCRIPTEN)
6767
# FIXME: Any reason why we need this?
6868
include(TestBigEndian)
@@ -76,6 +76,23 @@ elseif(CMAKE_BUILD_TYPE MATCHES Debug)
7676
add_definitions(-DDEBUG)
7777
endif()
7878

79+
# Options for install
80+
if(WIN32 AND NOT UNIX)
81+
set(INSTALL_SUBDIR_BIN "bin" CACHE STRING "Installation subdir for binaries")
82+
set(INSTALL_SUBDIR_SHARE "data" CACHE STRING "Installation subdir for data")
83+
set(INSTALL_SUBDIR_DOC "doc" CACHE STRING "Installation subdir for docs")
84+
else()
85+
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND DISABLE_CPACK_BUNDLING)
86+
set(INSTALL_SUBDIR_BIN "SuperTux.app/Contents/MacOS" CACHE STRING "Installation subdir for binaries")
87+
set(INSTALL_SUBDIR_SHARE "SuperTux.app/Contents/Resources/data" CACHE STRING "Installation subdir for data")
88+
set(INSTALL_SUBDIR_DOC "SuperTux.app/Contents/Resources" CACHE STRING "Installation subdir for docs")
89+
else()
90+
set(INSTALL_SUBDIR_BIN "games" CACHE STRING "Installation subdir for binaries")
91+
set(INSTALL_SUBDIR_SHARE "share/games/supertux2" CACHE STRING "Installation subdir for data")
92+
set(INSTALL_SUBDIR_DOC "share/doc/supertux2" CACHE STRING "Installation subdir for docs")
93+
endif()
94+
endif()
95+
7996
if(EMSCRIPTEN)
8097
set(CMAKE_EXECUTABLE_SUFFIX .html)
8198
set(IS_EMSCRIPTEN_BUILD ON)
@@ -265,116 +282,9 @@ if(NOT EMSCRIPTEN)
265282
endif()
266283

267284
## Install stuff
268-
if(WIN32 AND NOT UNIX)
269-
270-
set(INSTALL_SUBDIR_BIN "bin" CACHE STRING "Installation subdir for binaries")
271-
set(INSTALL_SUBDIR_SHARE "data" CACHE STRING "Installation subdir for data")
272-
set(INSTALL_SUBDIR_DOC "doc" CACHE STRING "Installation subdir for docs")
273-
274-
if(VCPKG_BUILD)
275-
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/\${CMAKE_INSTALL_CONFIG_NAME}/" DESTINATION ${INSTALL_SUBDIR_BIN} FILES_MATCHING PATTERN "*.dll")
276-
else()
277-
install(FILES ${DLLS} DESTINATION ${INSTALL_SUBDIR_BIN})
278-
endif()
279-
280-
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/images/engine/icons/supertux.png ${CMAKE_CURRENT_SOURCE_DIR}/data/images/engine/icons/supertux.ico DESTINATION ".")
281-
282-
option(PACKAGE_VCREDIST "Package the VCREDIST libraries with the program" OFF)
283-
284-
if(PACKAGE_VCREDIST)
285-
set(CMAKE_INSTALL_UCRT_LIBRARIES true)
286-
include(InstallRequiredSystemLibraries)
287-
endif()
288-
289-
else()
290-
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND DISABLE_CPACK_BUNDLING)
291-
292-
set(INFOPLIST_CFBUNDLEEXECUTABLE "supertux2")
293-
294-
set(INSTALL_SUBDIR_BIN "SuperTux.app/Contents/MacOS" CACHE STRING "Installation subdir for binaries")
295-
set(INSTALL_SUBDIR_SHARE "SuperTux.app/Contents/Resources/data" CACHE STRING "Installation subdir for data")
296-
set(INSTALL_SUBDIR_DOC "SuperTux.app/Contents/Resources" CACHE STRING "Installation subdir for docs")
297-
298-
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tools/darwin/info.plist.in ${CMAKE_BINARY_DIR}/tools/darwin/info.plist)
299-
install(FILES ${CMAKE_BINARY_DIR}/tools/darwin/info.plist DESTINATION "SuperTux.app/Contents/")
300-
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/tools/darwin/receipt DESTINATION "SuperTux.app/Contents/_MASReceipt/")
301-
302-
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/images/engine/icons/supertux.png ${CMAKE_CURRENT_SOURCE_DIR}/data/images/engine/icons/supertux.icns DESTINATION "SuperTux.app/Contents/Resources/")
303-
304-
else()
305-
306-
set(INSTALL_SUBDIR_BIN "games" CACHE STRING "Installation subdir for binaries")
307-
set(INSTALL_SUBDIR_SHARE "share/games/supertux2" CACHE STRING "Installation subdir for data")
308-
set(INSTALL_SUBDIR_DOC "share/doc/supertux2" CACHE STRING "Installation subdir for docs")
309-
310-
if(UBUNTU_TOUCH)
311-
set(LINUX_DESKTOP_ICON "assets/supertux-256x256.png")
312-
# FIXME: The "install" folder is a folder managed by Clickable and shouldn't be hardcoded here
313-
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/supertux2.desktop.in "install/supertux2.desktop")
314-
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/mk/clickable/supertux2.apparmor DESTINATION ".")
315-
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/mk/clickable/manifest.json.in ${CMAKE_CURRENT_BINARY_DIR}/install/manifest.json)
316-
set(APPS "\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/supertux2")
317-
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/images/engine/icons/supertux-256x256.png DESTINATION "assets")
318-
else()
319-
set(LINUX_DESKTOP_ICON "supertux2")
320-
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/supertux2.desktop.in "supertux2.desktop")
321-
install(FILES ${CMAKE_BINARY_DIR}/supertux2.desktop DESTINATION "share/applications")
322-
set(APPS "\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${INSTALL_SUBDIR_BIN}/supertux2")
323-
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/images/engine/icons/supertux.png ${CMAKE_CURRENT_SOURCE_DIR}/data/images/engine/icons/supertux.xpm DESTINATION "share/pixmaps/")
324-
endif()
325-
326-
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/supertux2.svg DESTINATION "share/icons/hicolor/scalable/apps")
327-
328-
endif()
329-
endif()
330-
331-
if(UBUNTU_TOUCH)
332-
install(TARGETS supertux2 DESTINATION ".")
333-
else()
334-
install(TARGETS supertux2 DESTINATION ${INSTALL_SUBDIR_BIN})
335-
endif()
336-
337-
if(EMSCRIPTEN)
338-
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/mk/emscripten/template.html.in ${CMAKE_CURRENT_BINARY_DIR}/template.html)
339-
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/mk/emscripten/supertux2.png ${CMAKE_CURRENT_BINARY_DIR}/supertux2.png COPYONLY)
340-
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/mk/emscripten/supertux2_bkg.png ${CMAKE_CURRENT_BINARY_DIR}/supertux2_bkg.png COPYONLY)
341-
endif()
342-
343-
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/INSTALL.md ${CMAKE_CURRENT_SOURCE_DIR}/README.md ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt ${CMAKE_CURRENT_SOURCE_DIR}/NEWS.md DESTINATION ${INSTALL_SUBDIR_DOC})
344-
345-
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/credits.stxt DESTINATION ${INSTALL_SUBDIR_SHARE})
346-
347-
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/supertux2.appdata.xml DESTINATION "share/metainfo" )
348-
349-
install(DIRECTORY
350-
${CMAKE_CURRENT_SOURCE_DIR}/data/images
351-
${CMAKE_CURRENT_SOURCE_DIR}/data/fonts
352-
${CMAKE_CURRENT_SOURCE_DIR}/data/music
353-
${CMAKE_CURRENT_SOURCE_DIR}/data/particles
354-
${CMAKE_CURRENT_SOURCE_DIR}/data/scripts
355-
${CMAKE_CURRENT_SOURCE_DIR}/data/shader
356-
${CMAKE_CURRENT_SOURCE_DIR}/data/speech
357-
${CMAKE_CURRENT_SOURCE_DIR}/data/sounds
358-
${CMAKE_CURRENT_SOURCE_DIR}/data/locale
359-
DESTINATION ${INSTALL_SUBDIR_SHARE})
360-
361-
if(CMAKE_BUILD_TYPE MATCHES "Release|RelWithDebInfo")
362-
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/data/levels
363-
DESTINATION ${INSTALL_SUBDIR_SHARE}
364-
PATTERN "data/levels/test" EXCLUDE
365-
PATTERN "data/levels/test_old" EXCLUDE
366-
PATTERN "data/levels/incubator" EXCLUDE
367-
PATTERN "data/levels/misc/menu.stl.in" EXCLUDE)
368-
else()
369-
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/data/levels
370-
DESTINATION ${INSTALL_SUBDIR_SHARE}
371-
PATTERN "data/levels/misc/menu.stl.in" EXCLUDE)
372-
endif()
373-
374-
install(FILES "${CMAKE_BINARY_DIR}/data/levels/misc/menu.stl" DESTINATION "${INSTALL_SUBDIR_SHARE}/levels/misc")
285+
include(SuperTux/BuildInstall)
375286

376287
## Create config.h now that INSTALL_SUBDIR_* have been set.
377-
378288
configure_file(config.h.cmake ${CMAKE_BINARY_DIR}/config.h )
379289

380290
## Configure main menu logo
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
if(WIN32 AND NOT UNIX)
2+
if(VCPKG_BUILD)
3+
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/\${CMAKE_INSTALL_CONFIG_NAME}/" DESTINATION ${INSTALL_SUBDIR_BIN} FILES_MATCHING PATTERN "*.dll")
4+
else()
5+
install(FILES ${DLLS} DESTINATION ${INSTALL_SUBDIR_BIN})
6+
endif()
7+
8+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/images/engine/icons/supertux.png ${CMAKE_CURRENT_SOURCE_DIR}/data/images/engine/icons/supertux.ico DESTINATION ".")
9+
10+
option(PACKAGE_VCREDIST "Package the VCREDIST libraries with the program" OFF)
11+
12+
if(PACKAGE_VCREDIST)
13+
set(CMAKE_INSTALL_UCRT_LIBRARIES true)
14+
include(InstallRequiredSystemLibraries)
15+
endif()
16+
17+
else()
18+
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND DISABLE_CPACK_BUNDLING)
19+
20+
set(INFOPLIST_CFBUNDLEEXECUTABLE "supertux2")
21+
22+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tools/darwin/info.plist.in ${CMAKE_BINARY_DIR}/tools/darwin/info.plist)
23+
install(FILES ${CMAKE_BINARY_DIR}/tools/darwin/info.plist DESTINATION "SuperTux.app/Contents/")
24+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/tools/darwin/receipt DESTINATION "SuperTux.app/Contents/_MASReceipt/")
25+
26+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/images/engine/icons/supertux.png ${CMAKE_CURRENT_SOURCE_DIR}/data/images/engine/icons/supertux.icns DESTINATION "SuperTux.app/Contents/Resources/")
27+
28+
else()
29+
30+
if(UBUNTU_TOUCH)
31+
set(LINUX_DESKTOP_ICON "assets/supertux-256x256.png")
32+
# FIXME: The "install" folder is a folder managed by Clickable and shouldn't be hardcoded here
33+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/supertux2.desktop.in "install/supertux2.desktop")
34+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/mk/clickable/supertux2.apparmor DESTINATION ".")
35+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/mk/clickable/manifest.json.in ${CMAKE_CURRENT_BINARY_DIR}/install/manifest.json)
36+
set(APPS "\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/supertux2")
37+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/images/engine/icons/supertux-256x256.png DESTINATION "assets")
38+
else()
39+
set(LINUX_DESKTOP_ICON "supertux2")
40+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/supertux2.desktop.in "supertux2.desktop")
41+
install(FILES ${CMAKE_BINARY_DIR}/supertux2.desktop DESTINATION "share/applications")
42+
set(APPS "\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${INSTALL_SUBDIR_BIN}/supertux2")
43+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/images/engine/icons/supertux.png ${CMAKE_CURRENT_SOURCE_DIR}/data/images/engine/icons/supertux.xpm DESTINATION "share/pixmaps/")
44+
endif()
45+
46+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/supertux2.svg DESTINATION "share/icons/hicolor/scalable/apps")
47+
48+
endif()
49+
endif()
50+
51+
if(UBUNTU_TOUCH)
52+
install(TARGETS supertux2 DESTINATION ".")
53+
else()
54+
install(TARGETS supertux2 DESTINATION ${INSTALL_SUBDIR_BIN})
55+
endif()
56+
57+
if(EMSCRIPTEN)
58+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/mk/emscripten/template.html.in ${CMAKE_CURRENT_BINARY_DIR}/template.html)
59+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/mk/emscripten/supertux2.png ${CMAKE_CURRENT_BINARY_DIR}/supertux2.png COPYONLY)
60+
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/mk/emscripten/supertux2_bkg.png ${CMAKE_CURRENT_BINARY_DIR}/supertux2_bkg.png COPYONLY)
61+
endif()
62+
63+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/INSTALL.md ${CMAKE_CURRENT_SOURCE_DIR}/README.md ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.txt ${CMAKE_CURRENT_SOURCE_DIR}/NEWS.md DESTINATION ${INSTALL_SUBDIR_DOC})
64+
65+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/data/credits.stxt DESTINATION ${INSTALL_SUBDIR_SHARE})
66+
67+
install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/supertux2.appdata.xml DESTINATION "share/metainfo" )
68+
69+
install(DIRECTORY
70+
${CMAKE_CURRENT_SOURCE_DIR}/data/images
71+
${CMAKE_CURRENT_SOURCE_DIR}/data/fonts
72+
${CMAKE_CURRENT_SOURCE_DIR}/data/music
73+
${CMAKE_CURRENT_SOURCE_DIR}/data/particles
74+
${CMAKE_CURRENT_SOURCE_DIR}/data/scripts
75+
${CMAKE_CURRENT_SOURCE_DIR}/data/shader
76+
${CMAKE_CURRENT_SOURCE_DIR}/data/speech
77+
${CMAKE_CURRENT_SOURCE_DIR}/data/sounds
78+
${CMAKE_CURRENT_SOURCE_DIR}/data/locale
79+
DESTINATION ${INSTALL_SUBDIR_SHARE})
80+
81+
if(CMAKE_BUILD_TYPE MATCHES "Release|RelWithDebInfo")
82+
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/data/levels
83+
DESTINATION ${INSTALL_SUBDIR_SHARE}
84+
PATTERN "data/levels/test" EXCLUDE
85+
PATTERN "data/levels/test_old" EXCLUDE
86+
PATTERN "data/levels/incubator" EXCLUDE
87+
PATTERN "data/levels/misc/menu.stl.in" EXCLUDE)
88+
else()
89+
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/data/levels
90+
DESTINATION ${INSTALL_SUBDIR_SHARE}
91+
PATTERN "data/levels/misc/menu.stl.in" EXCLUDE)
92+
endif()
93+
94+
install(FILES "${CMAKE_BINARY_DIR}/data/levels/misc/menu.stl" DESTINATION "${INSTALL_SUBDIR_SHARE}/levels/misc")
95+
96+
# move some config clutter to the advanced section
97+
mark_as_advanced(
98+
INSTALL_SUBDIR_BIN
99+
INSTALL_SUBDIR_SHARE
100+
INSTALL_SUBDIR_DOC
101+
)
102+
103+
# EOF #

0 commit comments

Comments
 (0)