aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-06-15 16:01:22 +0200
committerShauren <shauren.trinity@gmail.com>2024-06-15 16:01:22 +0200
commita7c42f1ed55e586d0d817dd99865aa7c024b0140 (patch)
tree77583068a6456f6aeb3b2493ce4bc3578956a908
parent078bc6fe3fc764eaa2d528a19fe6d40972ee3537 (diff)
Build: Normalize executable locations in build directory for all platforms
-rw-r--r--.github/workflows/win-x64-build.yml18
-rw-r--r--cmake/compiler/msvc/settings.cmake8
-rw-r--r--cmake/platform/unix/settings.cmake4
-rw-r--r--cmake/platform/win/settings.cmake3
-rw-r--r--cmake/showoptions.cmake2
-rw-r--r--src/server/bnetserver/CMakeLists.txt42
-rw-r--r--src/server/worldserver/CMakeLists.txt22
7 files changed, 37 insertions, 62 deletions
diff --git a/.github/workflows/win-x64-build.yml b/.github/workflows/win-x64-build.yml
index a52ba5db67d..b659f4e778c 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: TrinityCoreMasterWin64VS2022
# 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()