This repository has been archived by the owner. It is now read-only.
Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
with
1,257 additions
and 71 deletions.
- +3 −1 .github/workflows/build-cmake-conan.yml
- +123 −54 CMakeLists.txt
- +76 −0 cmake/CPackProjectConfig.cmake.in
- +1,010 −0 cmake/NSIS.template.in
- +6 −1 conanfile.py
- +17 −0 resources/create_ico.py
- BIN resources/logo.bmp
- BIN resources/logo.ico
- BIN { → resources}/logo.png
- 0 { → resources}/logo.svg
- +18 −11 src/CMakeLists.txt
- BIN src/skel/win/gta3.ico
- BIN src/skel/win/re3.ico
- +4 −4 src/skel/win/win.rc
There are no files selected for viewing
| @@ -1,82 +1,151 @@ | ||
| cmake_minimum_required(VERSION 3.8) | ||
|
|
||
| set(EXECUTABLE re3) | ||
| set(PROJECT RE3) | ||
|
|
||
| cmake_minimum_required(VERSION 3.8) | ||
| project(${EXECUTABLE} C CXX) | ||
| set(PROJECT_AUTHOR "GTAModding") | ||
| set(PROJECT_URL "https://github.com/gtamodding/re3") | ||
|
|
||
| list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") | ||
|
|
||
| if(WIN32) | ||
| set(${PROJECT}_AUDIOS "OAL" "MSS") | ||
| set(RE3_AUDIOS "OAL" "MSS") | ||
| else() | ||
| set(${PROJECT}_AUDIOS "OAL") | ||
| set(RE3_AUDIOS "OAL") | ||
| endif() | ||
|
|
||
| set(${PROJECT}_AUDIO "OAL" CACHE STRING "Audio") | ||
| set(RE3_AUDIO "OAL" CACHE STRING "Audio") | ||
|
|
||
| include(CMakeDependentOption) | ||
|
|
||
| option(RE3_INSTALL "Install ${EXECUTABLE}" OFF) | ||
| option(RE3_WITH_OPUS "Build ${EXECUTABLE} with opus support" OFF) | ||
| option(RE3_WITH_LIBSNDFILE "Build ${EXECUTABLE} with libsndfile (instead of internal decoder)" OFF) | ||
|
|
||
| cmake_dependent_option(RE3_INSTALL_NSIS "Create NSIS installer" ON "WIN32;RE3_INSTALL" OFF) | ||
| cmake_dependent_option(RE3_INSTALL_SRC "Create sources archive" OFF "RE3_INSTALL" OFF) | ||
|
|
||
| option(${PROJECT}_WITH_OPUS "Build ${EXECUTABLE} with opus support" OFF) | ||
| option(${PROJECT}_WITH_LIBSNDFILE "Build ${EXECUTABLE} with libsndfile (instead of internal decoder)" OFF) | ||
| if(RE3_INSTALL_NSIS) | ||
| find_program(MAKENSIS_BIN makensis) | ||
| if(NOT MAKENSIS_BIN) | ||
| message(FATAL_ERROR "Cannot find `makensis` for creating NSIS installer.") | ||
| endif() | ||
| endif() | ||
|
|
||
| set_property(CACHE ${PROJECT}_AUDIO PROPERTY STRINGS ${${PROJECT}_AUDIOS}) | ||
| message(STATUS "${PROJECT}_AUDIO = ${${PROJECT}_AUDIO} (choices=${${PROJECT}_AUDIOS})") | ||
| set("${PROJECT}_AUDIO_${${PROJECT}_AUDIO}" ON) | ||
| if(NOT ${PROJECT}_AUDIO IN_LIST ${PROJECT}_AUDIOS) | ||
| message(FATAL_ERROR "Illegal ${PROJECT}_AUDIO=${${PROJECT}_AUDIO}") | ||
| set_property(CACHE RE3_AUDIO PROPERTY STRINGS ${RE3_AUDIOS}) | ||
| message(STATUS "RE3_AUDIO = ${RE3_AUDIO} (choices=${RE3_AUDIOS})") | ||
| set("RE3_AUDIO_${RE3_AUDIO}" ON) | ||
| if(NOT RE3_AUDIO IN_LIST RE3_AUDIOS) | ||
| message(FATAL_ERROR "Illegal RE3_AUDIO=${RE3_AUDIO}") | ||
| endif() | ||
|
|
||
| option(${PROJECT}_VENDORED_LIBRW "Use vendored librw" ON) | ||
| if(${PROJECT}_VENDORED_LIBRW) | ||
| option(RE3_VENDORED_LIBRW "Use vendored librw" ON) | ||
| if(RE3_VENDORED_LIBRW) | ||
| add_subdirectory(vendor/librw) | ||
| else() | ||
| find_package(librw REQUIRED) | ||
| endif() | ||
| add_subdirectory(src) | ||
| set_property(DIRECTORY PROPERTY VS_STARTUP_PROJECT ${EXECUTABLE}) | ||
|
|
||
| if(${PROJECT}_INSTALL) | ||
| install(DIRECTORY gamefiles/ DESTINATION ".") | ||
| if(LIBRW_PLATFORM_NULL) | ||
| set(platform "-null") | ||
| elseif(LIBRW_PLATFORM_PS2) | ||
| set(platform "-ps2") | ||
| elseif(LIBRW_PLATFORM_GL3) | ||
| if(LIBRW_GL3_GFXLIB STREQUAL "GLFW") | ||
| set(platform "-gl3-glfw") | ||
| else() | ||
| set(platform "-gl3-sdl2") | ||
| endif() | ||
| elseif(LIBRW_PLATFORM_D3D9) | ||
| set(platform "-d3d9") | ||
| endif() | ||
| if(${PROJECT}_AUDIO_OAL) | ||
| set(audio "-oal") | ||
| elseif(${PROJECT}_AUDIO_MSS) | ||
| set(audio "-mss") | ||
| endif() | ||
| if(${PROJECT}_WITH_OPUS) | ||
| set(audio "${audio}-opus") | ||
| endif() | ||
| if(NOT LIBRW_PLATFORM_PS2) | ||
| if(WIN32) | ||
| set(os "-win") | ||
| elseif(APPLE) | ||
| set(os "-apple") | ||
| elseif(UNIX) | ||
| set(os "-linux") | ||
| else() | ||
| set(compiler "-UNK") | ||
| message(WARNING "Unknown os. Created cpack package will be wrong. (override using cpack -P)") | ||
| endif() | ||
| if(RE3_INSTALL) | ||
| install(DIRECTORY gamefiles/ DESTINATION "." COMPONENT comp2_gamedata) | ||
| configure_file(cmake/CPackProjectConfig.cmake.in CPackProjectConfig.cmake @ONLY) | ||
| #file(GENERATE OUTPUT CPackProjectConfig.cmake INPUT "${CMAKE_CURRENT_SOURCE_DIR}/cmake/CPackProjectConfig.cmake.in" TARGET ${EXECUTABLE}) | ||
| set(CPACK_PACKAGE_DIRECTORY "${CMAKE_BINARY_DIR}/dist") | ||
|
|
||
| if(RE3_INSTALL_SRC) | ||
| install( | ||
| DIRECTORY cmake gamefiles resources src utils | ||
| DESTINATION . | ||
| COMPONENT compZ_sources | ||
| EXCLUDE_FROM_ALL | ||
| ) | ||
| install( | ||
| FILES conanfile.py CMakeLists.txt premake5.lua README.md CODING_STYLE.md | ||
| DESTINATION . | ||
| COMPONENT compZ_sources | ||
| EXCLUDE_FROM_ALL | ||
| ) | ||
| endif() | ||
|
|
||
| set(CPACK_PACKAGE_NAME "${PROJECT_NAME}${platform}${audio}${os}${compiler}") | ||
| set(CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME}") | ||
| set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}") | ||
| set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "GTA III reversed") | ||
| set(CPACK_PACKAGE_VENDOR "GTAModding") | ||
| set(CPACK_PACKAGE_VENDOR "${PROJECT_AUTHOR}") | ||
| set(CPACK_PROJECT_CONFIG_FILE "${CMAKE_CURRENT_BINARY_DIR}/CPackProjectConfig.cmake") | ||
| # FIXME: missing license (https://github.com/GTAmodding/re3/issues/794) | ||
| # set(CPACK_PACKAGE_DESCRIPTION_FILE "${PROJECT_SOURCE_DIR}/LICENSE") | ||
| # set(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/LICENSE") | ||
| set(CPACK_PACKAGE_INSTALL_DIRECTORY "${CPACK_PACKAGE_NAME}") | ||
| set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}") | ||
| set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}") | ||
| set(CPACK_GENERATOR "TXZ") | ||
| # FIXME: this is displayed in the GUI installer!!! Needs a disclaimer about trademarks etc. | ||
| # set(CPACK_RESOURCE_FILE_LICENSE) | ||
| set(CPACK_PACKAGE_ICON "${PROJECT_SOURCE_DIR}\\\\resources\\\\logo.bmp") | ||
| set(CPACK_PACKAGE_CHECKSUM "SHA256") | ||
|
|
||
| list(REMOVE_ITEM CPACK_COMPONENTS_ALL "compZ_sources") | ||
|
|
||
| set(CPACK_ARCHIVE_COMPONENT_INSTALL ON) | ||
|
|
||
| if(WIN32) | ||
| set(NEED_RUNTIME OFF) | ||
| if(MSVC) | ||
| if(NOT "-MT" MATCHES CMAKE_C_FLAGS) | ||
| # Install MSVC runtime when using dynamic runtime (-MD, -MDd) | ||
| if("-MDd" MATCHES CMAKE_C_FLAGS) | ||
| set(CMAKE_INSTALL_DEBUG_LIBRARIES_ONLY ON) | ||
| endif() | ||
| set(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION ".") | ||
| set(CMAKE_INSTALL_SYSTEM_RUNTIME_COMPONENT comp3_runtime) | ||
| include(InstallRequiredSystemLibraries) | ||
| set(NEED_RUNTIME ON) | ||
| endif() | ||
| endif() | ||
| if(RE3_INSTALL_NSIS) | ||
| list(APPEND CPACK_GENERATOR "NSIS") | ||
| endif() | ||
|
|
||
| set(CPACK_NSIS_COMPONENT_INSTALL ON) | ||
| set(CPACK_NSIS_DEFINES "!RequestExecutionLevel user") | ||
| set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON) | ||
| set(CPACK_NSIS_DISPLAY_NAME "${PROJECT_NAME} (${PROJECT_AUTHOR})") | ||
| set(CPACK_NSIS_HELP_LINK "${PROJECT_URL}") | ||
| set(CPACK_NSIS_URL_INFO_ABOUT "${PROJECT_URL}") | ||
| set(CPACK_NSIS_MUI_ICON "${PROJECT_SOURCE_DIR}\\\\resources\\\\logo.ico") | ||
| set(CPACK_NSIS_MUI_UNIICON "${PROJECT_SOURCE_DIR}\\\\resources\\\\logo.ico") | ||
| set(CPACK_NSIS_EXECUTABLES_DIRECTORY ".") | ||
| set(CPACK_NSIS_MUI_FINISHPAGE_RUN "${EXECUTABLE}") | ||
| endif() | ||
|
|
||
| include(CPackComponent) | ||
|
|
||
| cpack_add_component(comp1_core | ||
| DISPLAY_NAME "Game executable(s)" | ||
| DESCRIPTION "Install the game executable(s)." | ||
| REQUIRED | ||
| ) | ||
| cpack_add_component(comp2_gamedata | ||
| DISPLAY_NAME "Game data fixes" | ||
| DESCRIPTION "Install game data fixes." | ||
| REQUIRED | ||
| DEPENDS "comp1_core" | ||
| ) | ||
| cpack_add_component(comp3_runtime | ||
| DISPLAY_NAME "System runtime" | ||
| DESCRIPTION "Install C runtime. Not required if a suitable MSVC runtime is already available." | ||
| DEPENDS "comp1_core" | ||
| ) | ||
| cpack_add_component(comp4_debug | ||
| DISPLAY_NAME "Debug symbols" | ||
| DESCRIPTION "Enables debugging your problems. Hopefully not needed." | ||
| DEPENDS "comp1_core" | ||
| DISABLED | ||
| ) | ||
| cpack_add_component(compZ_sources | ||
| DISPLAY_NAME "sources" | ||
| DESCRIPTION "The sources of ${PROJECT_NAME}." | ||
| DISABLED | ||
| HIDDEN | ||
| ) | ||
|
|
||
| include(CPack) | ||
| endif() |
| @@ -0,0 +1,76 @@ | ||
| set(PROJECT_NAME "@PROJECT_NAME@") | ||
| set(PROJECT_AUTHOR "@PROJECT_AUTHOR@") | ||
|
|
||
| set(LIBRW_PLATFORM "@LIBRW_PLATFORM@") | ||
| set(LIBRW_GL3_GFXLIB "@LIBRW_GL3_GFXLIB@") | ||
| set(RE3_AUDIO "@RE3_AUDIO@") | ||
| set(RE3_WITH_OPUS "@RE3_WITH_OPUS@") | ||
| set(WIN32 @WIN32@) | ||
| set(APPLE @APPLE@) | ||
| set(UNIZ @UNIX@) | ||
| set(CMAKE_SIZEOF_VOID_P @CMAKE_SIZEOF_VOID_P@) | ||
|
|
||
| if(LIBRW_PLATFORM STREQUAL "NULL") | ||
| set(platform "-null") | ||
| elseif(LIBRW_PLATFORM STREQUAL "PS2") | ||
| set(platform "-ps2") | ||
| elseif(LIBRW_PLATFORM STREQUAL "GL3") | ||
| if(LIBRW_GL3_GFXLIB STREQUAL "GLFW") | ||
| set(platform "-gl3-glfw") | ||
| else() | ||
| set(platform "-gl3-sdl2") | ||
| endif() | ||
| elseif(LIBRW_PLATFORM STREQUAL "D3D9") | ||
| set(platform "-d3d9") | ||
| endif() | ||
|
|
||
| if(RE3_AUDIO STREQUAL "OAL") | ||
| set(audio "-oal") | ||
| elseif(RE3_AUDIO STREQUAL "MSS") | ||
| set(audio "-mss") | ||
| endif() | ||
| if(RE3_WITH_OPUS) | ||
| set(audio "${audio}-opus") | ||
| endif() | ||
|
|
||
| if(WIN32) | ||
| set(os "-win") | ||
| if(CMAKE_SIZEOF_VOID_P EQUAL 8) | ||
| set(os "${os}64") | ||
| else() | ||
| set(os "${os}32") | ||
| endif() | ||
| elseif(APPLE) | ||
| set(os "-apple") | ||
| elseif(UNIX) | ||
| set(os "-linux") | ||
| else() | ||
| set(os "-UNK") | ||
| message(WARNING "Unknown os. Created cpack package will be wrong. (override using cpack -P)") | ||
| endif() | ||
|
|
||
| set(name_osarch "${PROJECT_NAME}${platform}${audio}${os}${compiler}") | ||
|
|
||
| set(CPACK_PACKAGE_FILE_NAME "${name_osarch}") | ||
|
|
||
|
|
||
| if(CPACK_GENERATOR MATCHES "^(7Z|TBZ|TGZ|TXZ|TZ|TZST|ZIP)$") | ||
| set(CPACK_COMPONENTS_GROUPING "ONE_PER_GROUP") | ||
|
|
||
| set(CPACK_COMPONENT_COMP1_CORE_GROUP "BinaryGroup") | ||
| set(CPACK_COMPONENT_COMP2_GAMEDATA_GROUP "BinaryGroup") | ||
| set(CPACK_COMPONENT_COMP3_RUNTIME_GROUP "BinaryGroup") | ||
| set(CPACK_COMPONENT_COMP4_DEBUG_GROUP "BinaryGroup") | ||
| set(CPACK_COMPONENT_COMPZ_SOURCES_GROUP "SourceGroup") | ||
|
|
||
| set(CPACK_ARCHIVE_SOURCEGROUP_FILE_NAME "${PROJECT_NAME}-src") | ||
| set(CPACK_ARCHIVE_BINARYGROUP_FILE_NAME "${CPACK_PACKAGE_FILE_NAME}") | ||
| elseif(CPACK_GENERATOR MATCHES "^NSIS(64)?$") | ||
| list(REMOVE_ITEM CPACK_COMPONENTS_ALL "compZ_sources") | ||
|
|
||
| set(CPACK_PACKAGE_FILE_NAME "${name_osarch}-setup") | ||
| set(CPACK_PACKAGE_INSTALL_DIRECTORY "${PROJECT_NAME} (${PROJECT_AUTHOR})") | ||
|
|
||
| set(CPACK_NSIS_CREATE_ICONS_EXTRA "CreateShortCut \"$SMPROGRAMS\\$STARTMENU_FOLDER\\${PROJECT_NAME}.lnk\" \"$INSTDIR\\${PROJECT_NAME}.exe\"") | ||
| set(CPACK_NSIS_DELETE_ICONS_EXTRA "Delete \"$SMPROGRAMS\\$MUI_TEMP\${PROJECT_NAME}.lnk\"") | ||
| endif() |
Oops, something went wrong.