diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-06-15 16:01:22 +0200 |
---|---|---|
committer | Ovahlord <dreadkiller@gmx.de> | 2024-06-20 01:21:24 +0200 |
commit | 063551a65f73936c589e6dcdb3e8652e6f56c739 (patch) | |
tree | cea30aebe49060d52d2e618eeed4677d3922b779 | |
parent | b7c0028bf5672aec2dad6146c986e4efb48fddb3 (diff) |
Build: Normalize executable locations in build directory for all platforms
(cherry picked from commit a7c42f1ed55e586d0d817dd99865aa7c024b0140)
# Conflicts:
# .github/workflows/win-x64-build.yml
-rw-r--r-- | .github/workflows/win-x64-build.yml | 18 | ||||
-rw-r--r-- | cmake/compiler/msvc/settings.cmake | 8 | ||||
-rw-r--r-- | cmake/platform/unix/settings.cmake | 4 | ||||
-rw-r--r-- | cmake/platform/win/settings.cmake | 3 | ||||
-rw-r--r-- | cmake/showoptions.cmake | 2 | ||||
-rw-r--r-- | src/server/bnetserver/CMakeLists.txt | 42 | ||||
-rw-r--r-- | src/server/worldserver/CMakeLists.txt | 22 |
7 files changed, 37 insertions, 62 deletions
diff --git a/.github/workflows/win-x64-build.yml b/.github/workflows/win-x64-build.yml index f67628fef09..a4df60cb65f 100644 --- a/.github/workflows/win-x64-build.yml +++ b/.github/workflows/win-x64-build.yml @@ -7,6 +7,10 @@ on: jobs: build: runs-on: windows-latest + env: + CMAKE_BUILD_TYPE: RelWithDebInfo + MYSQL_ROOT_DIR: C:/Program Files/MySQL/MySQL Server 8.0 + OPENSSL_ROOT_DIR: C:/libs/openssl steps: - uses: actions/checkout@v4 @@ -16,11 +20,6 @@ jobs: run: | echo "build-output-dir=${{ github.workspace }}/build" >> "$GITHUB_OUTPUT" - - name: Set Environment Variables - run: | - echo "OPENSSL_ROOT_DIR=C:/libs/openssl" >> $env:GITHUB_ENV - echo "MYSQL_ROOT_DIR=C:/Program Files/MySQL/MySQL Server 8.0" >> $env:GITHUB_ENV - - name: Get current OpenSSL version id: openssl-info run: | @@ -37,7 +36,7 @@ jobs: Where-Object { $_.installer -eq 'exe' } | Sort-Object -Descending @{ Expression = { [version]$_.basever } } | Select-Object -First 1 - [System.String]::Format("cache-key=openssl-{0}-{1}-{2}", $openSSL.basever, $openSSL.arch, $openSSL.bits) >> $env:GITHUB_OUTPUT + [System.String]::Format("cache-key=openssl-{0}-win-{1}-{2}", $openSSL.basever, $openSSL.arch, $openSSL.bits) >> $env:GITHUB_OUTPUT [System.String]::Format("url={0}", $openSSL.url) >> $env:GITHUB_OUTPUT - name: Cache OpenSSL @@ -75,7 +74,6 @@ jobs: CFLAGS: /WX CXXFLAGS: /WX BOOST_ROOT: ${{ steps.install-boost.outputs.BOOST_ROOT }} - CMAKE_BUILD_TYPE: RelWithDebInfo run: > cmake -GNinja -S ${{ github.workspace }} -B ${{ steps.strings.outputs.build-output-dir }} -DTOOLS=ON @@ -86,7 +84,7 @@ jobs: - name: Copy Dependencies run: | - cd ${{ steps.strings.outputs.build-output-dir }}/bin + cd ${{ steps.strings.outputs.build-output-dir }}/bin/${{ env.CMAKE_BUILD_TYPE }} copy "${{ env.MYSQL_ROOT_DIR }}/lib/libmysql.dll" libmysql.dll copy "${{ env.OPENSSL_ROOT_DIR }}/bin/libssl-3-x64.dll" libssl-3-x64.dll copy "${{ env.OPENSSL_ROOT_DIR }}/bin/libcrypto-3-x64.dll" libcrypto-3-x64.dll @@ -94,14 +92,14 @@ jobs: - name: Check binaries run: | - cd ${{ steps.strings.outputs.build-output-dir }}/bin + cd ${{ steps.strings.outputs.build-output-dir }}/bin/${{ env.CMAKE_BUILD_TYPE }} ./bnetserver --version ./worldserver --version - name: Upload Artifacts uses: actions/upload-artifact@v4 with: - path: ${{ steps.strings.outputs.build-output-dir }}/bin + path: ${{ steps.strings.outputs.build-output-dir }}/bin/${{ env.CMAKE_BUILD_TYPE }} name: TrinityCoreCataClassicWin64VS2022 # Set a custom retention for artifacts #retention-days: 7 diff --git a/cmake/compiler/msvc/settings.cmake b/cmake/compiler/msvc/settings.cmake index 4858aa242e6..b7f67874329 100644 --- a/cmake/compiler/msvc/settings.cmake +++ b/cmake/compiler/msvc/settings.cmake @@ -1,6 +1,3 @@ -# set up output paths for executable binaries (.exe-files, and .dll-files on DLL-capable platforms) -set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) - set(MSVC_EXPECTED_VERSION 19.32) set(MSVC_EXPECTED_VERSION_STRING "Microsoft Visual Studio 2022 17.2") @@ -31,10 +28,6 @@ target_compile_options(trinity-compile-option-interface INTERFACE /permissive-) -# set up output paths ofr static libraries etc (commented out - shown here as an example only) -#set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) -#set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) - if(PLATFORM EQUAL 64) # This definition is necessary to work around a bug with Intellisense described # here: http://tinyurl.com/2cb428. Syntax highlighting is important for proper @@ -59,7 +52,6 @@ else() message(STATUS "MSVC: Disabled Safe Exception Handlers for debug builds") endif() -# msbuild/devenv don't set CMAKE_MAKE_PROGRAM, you can choose build type from a dropdown after generating projects if("${CMAKE_MAKE_PROGRAM}" MATCHES "MSBuild") # multithreaded compiling on VS target_compile_options(trinity-compile-option-interface diff --git a/cmake/platform/unix/settings.cmake b/cmake/platform/unix/settings.cmake index 2dd8197e293..bcd25af4903 100644 --- a/cmake/platform/unix/settings.cmake +++ b/cmake/platform/unix/settings.cmake @@ -46,6 +46,10 @@ if(APPLE) endif() message(STATUS "UNIX: Detected compiler: ${CMAKE_C_COMPILER}") + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/$<CONFIG>/bin") +set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/$<CONFIG>/lib") + if(CMAKE_C_COMPILER MATCHES "gcc" OR CMAKE_C_COMPILER_ID STREQUAL "GNU") include(${CMAKE_SOURCE_DIR}/cmake/compiler/gcc/settings.cmake) elseif(CMAKE_C_COMPILER MATCHES "icc") diff --git a/cmake/platform/win/settings.cmake b/cmake/platform/win/settings.cmake index 63c118f76e0..297b46d75ac 100644 --- a/cmake/platform/win/settings.cmake +++ b/cmake/platform/win/settings.cmake @@ -4,6 +4,9 @@ add_definitions(-DWIN32_LEAN_AND_MEAN) add_definitions(-DNOMINMAX) add_definitions(-DTRINITY_REQUIRED_WINDOWS_BUILD=18362) +# set up output paths for executable binaries (.exe-files, and .dll-files on DLL-capable platforms) +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin/$<CONFIG>") + if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC" OR CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC") include(${CMAKE_SOURCE_DIR}/cmake/compiler/msvc/settings.cmake) elseif(CMAKE_CXX_PLATFORM_ID MATCHES "MinGW") diff --git a/cmake/showoptions.cmake b/cmake/showoptions.cmake index 0cf0862dd00..9ea4a13199c 100644 --- a/cmake/showoptions.cmake +++ b/cmake/showoptions.cmake @@ -1,7 +1,7 @@ # output generic information about the core and buildtype chosen message("") message("* TrinityCore revision : ${rev_hash} ${rev_date} (${rev_branch} branch)") -if(NOT "${CMAKE_MAKE_PROGRAM}" MATCHES "MSBuild") +if(NOT ("${CMAKE_GENERATOR}" MATCHES "Visual Studio" OR "${CMAKE_GENERATOR}" STREQUAL "Ninja Multi-Config")) message("* TrinityCore buildtype : ${CMAKE_BUILD_TYPE}") endif() message("") diff --git a/src/server/bnetserver/CMakeLists.txt b/src/server/bnetserver/CMakeLists.txt index 97f8f5f7989..ffb37f4012f 100644 --- a/src/server/bnetserver/CMakeLists.txt +++ b/src/server/bnetserver/CMakeLists.txt @@ -64,45 +64,29 @@ set_target_properties(bnetserver FOLDER "server") -if (COPY_CONF AND WIN32) - if ("${CMAKE_MAKE_PROGRAM}" MATCHES "MSBuild") - add_custom_command(TARGET bnetserver - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bnetserver.conf.dist ${CMAKE_BINARY_DIR}/bin/$(ConfigurationName)/ - ) - else () - add_custom_command(TARGET bnetserver - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bnetserver.conf.dist ${CMAKE_BINARY_DIR}/bin/ - ) - endif() -endif() - -if (WIN32) - if ("${CMAKE_MAKE_PROGRAM}" MATCHES "MSBuild") - add_custom_command(TARGET bnetserver - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bnetserver.cert.pem ${CMAKE_BINARY_DIR}/bin/$(ConfigurationName)/ - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bnetserver.key.pem ${CMAKE_BINARY_DIR}/bin/$(ConfigurationName)/ - ) - else () - add_custom_command(TARGET bnetserver - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bnetserver.cert.pem ${CMAKE_BINARY_DIR}/bin/ - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bnetserver.key.pem ${CMAKE_BINARY_DIR}/bin/ - ) - endif() -endif() +add_custom_command(TARGET bnetserver + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bnetserver.cert.pem ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/bnetserver.cert.pem + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bnetserver.key.pem ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/bnetserver.key.pem +) if (UNIX) install(TARGETS bnetserver DESTINATION bin) if (COPY_CONF) + add_custom_command(TARGET bnetserver + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bnetserver.conf.dist ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/../etc/bnetserver.conf.dist + ) install(FILES bnetserver.conf.dist DESTINATION ${CONF_DIR}) endif() install(FILES bnetserver.cert.pem bnetserver.key.pem DESTINATION bin) elseif (WIN32) install(TARGETS bnetserver DESTINATION "${CMAKE_INSTALL_PREFIX}") if (COPY_CONF) + add_custom_command(TARGET bnetserver + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/bnetserver.conf.dist ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/bnetserver.conf.dist + ) install(FILES bnetserver.conf.dist DESTINATION "${CMAKE_INSTALL_PREFIX}") endif() install(FILES bnetserver.cert.pem bnetserver.key.pem DESTINATION "${CMAKE_INSTALL_PREFIX}") diff --git a/src/server/worldserver/CMakeLists.txt b/src/server/worldserver/CMakeLists.txt index 528cd24db26..0820b3b020f 100644 --- a/src/server/worldserver/CMakeLists.txt +++ b/src/server/worldserver/CMakeLists.txt @@ -76,28 +76,22 @@ if(WORLDSERVER_DYNAMIC_SCRIPT_MODULES_DEPENDENCIES) add_dependencies(worldserver ${WORLDSERVER_DYNAMIC_SCRIPT_MODULES_DEPENDENCIES}) endif() -if(COPY_CONF AND WIN32) - if("${CMAKE_MAKE_PROGRAM}" MATCHES "MSBuild") - add_custom_command(TARGET worldserver - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/worldserver.conf.dist ${CMAKE_BINARY_DIR}/bin/$(ConfigurationName)/ - ) - else() - add_custom_command(TARGET worldserver - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/worldserver.conf.dist ${CMAKE_BINARY_DIR}/bin/ - ) - endif() -endif() - if(UNIX) install(TARGETS worldserver DESTINATION bin) if(COPY_CONF) + add_custom_command(TARGET worldserver + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/worldserver.conf.dist ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/../etc/worldserver.conf.dist + ) install(FILES worldserver.conf.dist DESTINATION ${CONF_DIR}) endif() elseif(WIN32) install(TARGETS worldserver DESTINATION "${CMAKE_INSTALL_PREFIX}") if(COPY_CONF) + add_custom_command(TARGET worldserver + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/worldserver.conf.dist ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ + ) install(FILES worldserver.conf.dist DESTINATION "${CMAKE_INSTALL_PREFIX}") endif() endif() |