diff --git a/doomsday/apps/client/CMakeLists.txt b/doomsday/apps/client/CMakeLists.txt index 5423d2a09d..672bf5f8de 100644 --- a/doomsday/apps/client/CMakeLists.txt +++ b/doomsday/apps/client/CMakeLists.txt @@ -70,6 +70,9 @@ elseif (WIN32) deng_glob_sources (SOURCES src/windows/*.cpp) list (APPEND SOURCES res/windows/doomsday.rc) endif () +if (MSYS) + list (APPEND SOURCES res/windows/doomsday.rc) +endif () if (UNIX) include_directories (include/unix) deng_merge_sources (unix src/unix/*.cpp) diff --git a/doomsday/apps/server/CMakeLists.txt b/doomsday/apps/server/CMakeLists.txt index ca0440c144..714da7c2ee 100644 --- a/doomsday/apps/server/CMakeLists.txt +++ b/doomsday/apps/server/CMakeLists.txt @@ -78,6 +78,10 @@ if (WIN32) list (APPEND SHARED_WITH_CLIENT ${src}/src/init_windows.cpp) endif () +if (WIN32 OR MSYS) + list (APPEND SOURCES res/windows/doomsday.rc) +endif () + if (UNIX) include_directories (../client/include/unix) list (APPEND SHARED_WITH_CLIENT ${src}/src/init_unix.cpp) diff --git a/doomsday/cmake/FindFMOD.cmake b/doomsday/cmake/FindFMOD.cmake index 28b5daabb5..eb9a198158 100644 --- a/doomsday/cmake/FindFMOD.cmake +++ b/doomsday/cmake/FindFMOD.cmake @@ -66,17 +66,19 @@ if (FMOD_FMOD_H AND NOT TARGET fmodex) set (fmodInstLib ${fmodLib}) endif () target_link_libraries (fmodex INTERFACE ${fmodLib}) - install (TARGETS fmodex - EXPORT fmod - ARCHIVE DESTINATION ${DE_INSTALL_LIB_DIR} - COMPONENT libs - ) - install (EXPORT fmod - DESTINATION ${DE_INSTALL_CMAKE_DIR}/fmod - FILE fmod-config.cmake - NAMESPACE FMOD:: - COMPONENT sdk - ) + if (DE_ENABLE_SDK) + install (TARGETS fmodex + EXPORT fmod + ARCHIVE DESTINATION ${DE_INSTALL_LIB_DIR} + COMPONENT libs + ) + install (EXPORT fmod + DESTINATION ${DE_INSTALL_CMAKE_DIR}/fmod + FILE fmod-config.cmake + NAMESPACE FMOD:: + COMPONENT sdk + ) + endif () if (fmodInstLib) deng_install_library (${fmodInstLib}) endif () diff --git a/doomsday/cmake/MsysInnoSetup.cmake b/doomsday/cmake/MsysInnoSetup.cmake new file mode 100644 index 0000000000..2fb53286f4 --- /dev/null +++ b/doomsday/cmake/MsysInnoSetup.cmake @@ -0,0 +1,65 @@ +message (STATUS "Packaging with Inno Setup for MSYS") + +set (INNOSETUP_COMMAND $ENV{INNOSETUP_DIR}/iscc.exe) + +file (GLOB_RECURSE files + RELATIVE ${CPACK_TEMPORARY_DIRECTORY} + ${CPACK_TEMPORARY_DIRECTORY}/* +) + +set (deployScript ${CMAKE_CURRENT_LIST_DIR}/../build/scripts/deploy_msys.py) +message (STATUS "Script: ${deployScript}") +set (outFile ${CPACK_TEMPORARY_DIRECTORY}/setup.iss) +set (depsDir ${CPACK_TEMPORARY_DIRECTORY}/deps) +file (MAKE_DIRECTORY ${depsDir}) +set (binaries) + +file (WRITE ${outFile} " +[Setup] +AppName=Doomsday Engine +AppVersion=${CPACK_PACKAGE_VERSION} +WizardStyle=modern +DefaultDirName={autopf}\\Doomsday Engine +DefaultGroupName=Doomsday Engine +UninstallDisplayIcon={app}\\doomsday.exe +Compression=lzma2 +SolidCompression=yes +OutputBaseFilename=${CPACK_PACKAGE_FILE_NAME} +OutputDir=..\\..\\..\\.. +ArchitecturesAllowed=x64 +ArchitecturesInstallIn64BitMode=x64 + +[Files] +") + +foreach (fn ${files}) + get_filename_component (fnDir ${fn} DIRECTORY) + get_filename_component (fnName ${fn} NAME) + get_filename_component (fnExt ${fn} EXT) + string (REGEX REPLACE "[^/]+/(.*)" "\\1" fnDir ${fnDir}) + if (fnExt STREQUAL ".exe" OR fnExt STREQUAL ".dll") + list (APPEND binaries ${depsDir}/${fnName}) + file (COPY ${CPACK_TEMPORARY_DIRECTORY}/${fn} DESTINATION ${depsDir}) + endif () + file (APPEND ${outFile} "Source: \"${fn}\"; DestDir: \"{app}/${fnDir}\"\n") +endforeach (fn) + +message (STATUS "Copying dependencies") +execute_process (COMMAND python3 ${deployScript} ${depsDir}) +file (REMOVE ${binaries}) +file (GLOB deps ${depsDir}/*.dll) +foreach (fn ${deps}) + get_filename_component (fnName ${fn} NAME) + file (APPEND ${outFile} "Source: \"deps/${fnName}\"; DestDir: \"{app}/bin\"\n") +endforeach () + +file (APPEND ${outFile} " +[Icons] +Name: \"{group}\\Doomsday Engine\"; Filename: \"{app}\\doomsday.exe\" +Name: \"{group}\\Doomsday Shell\"; Filename: \"{app}\\doomsday-shell.exe\" +") + +execute_process (COMMAND "${INNOSETUP_COMMAND}" setup.iss + WORKING_DIRECTORY ${CPACK_TEMPORARY_DIRECTORY} +) + diff --git a/doomsday/cmake/Packaging.cmake b/doomsday/cmake/Packaging.cmake index e71f2782eb..e1ca2054df 100644 --- a/doomsday/cmake/Packaging.cmake +++ b/doomsday/cmake/Packaging.cmake @@ -52,14 +52,17 @@ if (APPLE) set (CPACK_DMG_FORMAT UDZO) set (CPACK_DMG_BACKGROUND_IMAGE "${DE_SOURCE_DIR}/build/macx/dmg_background.jpg") set (CPACK_DMG_DS_STORE_SETUP_SCRIPT "${DE_CMAKE_DIR}/DMGSetup.scpt") +elseif (MSYS) + set (CPACK_GENERATOR External) + set (CPACK_EXTERNAL_PACKAGE_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/MsysInnoSetup.cmake) + set (CPACK_EXTERNAL_ENABLE_STAGING YES) elseif (UNIX) - #set (CPACK_GENERATOR RPM;DEB) - # Set CPACK_GENERATOR manually. + # CPACK_GENERATOR is set manually. set (CPACK_PROJECT_CONFIG_FILE ${CMAKE_CURRENT_LIST_DIR}/PackagingUnix.cmake) else () - set (CPACK_PACKAGE_NAME "Doomsday ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") + set (CPACK_PACKAGE_NAME "Doomsday ${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") set (CPACK_GENERATOR WIX;ZIP) - set (CPACK_PROJECT_CONFIG_FILE ${CMAKE_CURRENT_LIST_DIR}/WIX.cmake) + set (CPACK_PROJECT_CONFIG_FILE ${CMAKE_CURRENT_LIST_DIR}/WIX.cmake) set (CPACK_WIX_UI_DIALOG "${DE_SOURCE_DIR}/build/win32/installer_dialog.png") set (CPACK_WIX_UI_BANNER "${DE_SOURCE_DIR}/build/win32/installer_banner.png") endif () @@ -88,6 +91,7 @@ if (NOT CPack_CMake_INCLUDED) if (DE_ENABLE_TESTS) list (APPEND CPACK_COMPONENTS_ALL tests) endif () + list (APPEND CPACK_COMPONENTS_ALL post) include (CPack) @@ -132,6 +136,10 @@ if (NOT CPack_CMake_INCLUDED) DEPENDS libs packs INSTALL_TYPES sdk ) + cpack_add_component (post + DISPLAY_NAME "Post-install tasks" + HIDDEN REQUIRED + ) cpack_add_install_type (gui DISPLAY_NAME "Standard") cpack_add_install_type (sdk DISPLAY_NAME "Developer") diff --git a/doomsday/post/CMakeLists.txt b/doomsday/post/CMakeLists.txt index 763a1379c4..9fd865e1d1 100644 --- a/doomsday/post/CMakeLists.txt +++ b/doomsday/post/CMakeLists.txt @@ -17,9 +17,10 @@ if (DE_ENABLE_DEPLOYMENT) message (STATUS \"Copying dependencies...\") execute_process ( COMMAND ${PYTHON_EXECUTABLE} ${DE_SOURCE_DIR}/build/scripts/${scriptName} - ${CMAKE_INSTALL_PREFIX}/bin + \${CMAKE_INSTALL_PREFIX}/bin OUTPUT_QUIET - )") + )" + COMPONENT post) endif () endif () diff --git a/doomsday/tools/dshell/CMakeLists.txt b/doomsday/tools/dshell/CMakeLists.txt index 480ee6745b..0a29869b4d 100644 --- a/doomsday/tools/dshell/CMakeLists.txt +++ b/doomsday/tools/dshell/CMakeLists.txt @@ -45,4 +45,5 @@ deng_install_tool (dshell) if (CYGWIN OR MSYS) # Curses requires terminfo to be available. install (FILES /usr/share/terminfo/63/cygwin DESTINATION share/terminfo/63) + install (FILES /usr/share/terminfo/78/xterm-256color DESTINATION share/terminfo/78) endif () diff --git a/doomsday/tools/shell/CMakeLists.txt b/doomsday/tools/shell/CMakeLists.txt index a2d3010581..33544dba6a 100644 --- a/doomsday/tools/shell/CMakeLists.txt +++ b/doomsday/tools/shell/CMakeLists.txt @@ -22,7 +22,7 @@ set (MAC_RES res/macx/English.lproj,Resources ) set (MACOSX_BUNDLE_ICON_FILE "shell.icns") -if (WIN32) +if (WIN32 OR MSYS) list (APPEND SOURCES res/windows/shell.rc) endif ()