refactor(Cmake): add support build selected applications and tools (#11836)

This commit is contained in:
Kargatum
2022-05-31 17:05:39 +07:00
committed by GitHub
parent 40a5eef152
commit 4fbec972a8
56 changed files with 1006 additions and 622 deletions

View File

@@ -8,9 +8,155 @@
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
add_subdirectory(map_extractor)
add_subdirectory(vmap4_assembler)
add_subdirectory(vmap4_extractor)
add_subdirectory(mmaps_generator)
# Make the tools list available in the current scope
GetToolsList(TOOLS_BUILD_LIST)
if (TOOLS_BUILD STREQUAL "none")
set(TOOLS_DEFAULT_BUILD "disabled")
else()
set(TOOLS_DEFAULT_BUILD "enabled")
endif()
# Sets BUILD_TOOLS_USE_WHITELIST
# Sets BUILD_TOOLS_WHITELIST
if (TOOLS_BUILD MATCHES "-only")
set(BUILD_TOOLS_USE_WHITELIST ON)
if (TOOLS_BUILD STREQUAL "maps-only")
list(APPEND BUILD_TOOLS_WHITELIST map_extractor mmaps_generator vmap4_assembler vmap4_extractor)
endif()
# if (TOOLS_BUILD STREQUAL "db-only")
# list(APPEND BUILD_TOOLS_WHITELIST dbimport)
# endif()
endif()
# Set the TOOL_${TOOL_BUILD_NAME} variables from the
# variables set above
foreach(TOOL_BUILD_NAME ${TOOLS_BUILD_LIST})
ToolNameToVariable(${TOOL_BUILD_NAME} TOOL_BUILD_VARIABLE)
if(${TOOL_BUILD_VARIABLE} STREQUAL "default")
if(BUILD_TOOLS_USE_WHITELIST)
list(FIND BUILD_TOOLS_WHITELIST "${TOOL_BUILD_NAME}" INDEX)
if(${INDEX} GREATER -1)
set(${TOOL_BUILD_VARIABLE} ${TOOLS_DEFAULT_BUILD})
else()
set(${TOOL_BUILD_VARIABLE} "disabled")
endif()
else()
set(${TOOL_BUILD_VARIABLE} ${TOOLS_DEFAULT_BUILD})
endif()
endif()
# Build the Graph values
if(${TOOL_BUILD_VARIABLE} MATCHES "enabled")
list(APPEND TOOL_BUILD_GRAPH_KEYS tools)
set(TOOL_BUILD_VALUE_DISPLAY_tools tools)
list(APPEND TOOL_BUILD_VALUE_CONTAINS_tools ${TOOL_BUILD_NAME})
else()
list(APPEND TOOL_BUILD_GRAPH_KEYS disabled)
set(TOOL_BUILD_VALUE_DISPLAY_disabled disabled)
list(APPEND TOOL_BUILD_VALUE_CONTAINS_disabled ${TOOL_BUILD_NAME})
endif()
endforeach()
list(SORT TOOL_BUILD_GRAPH_KEYS)
list(REMOVE_DUPLICATES TOOL_BUILD_GRAPH_KEYS)
# Display the graphs
# message("")
message("* Tools build list (${TOOLS_BUILD}):")
message(" |")
foreach(TOOL_BUILD_GRAPH_KEY ${TOOL_BUILD_GRAPH_KEYS})
if(NOT TOOL_BUILD_GRAPH_KEY STREQUAL "disabled")
message(" +- ${TOOL_BUILD_VALUE_DISPLAY_${TOOL_BUILD_GRAPH_KEY}}")
else()
message(" | ${TOOL_BUILD_VALUE_DISPLAY_${TOOL_BUILD_GRAPH_KEY}}")
endif()
foreach(TOOL_BUILD_GRAPH_ENTRY ${TOOL_BUILD_VALUE_CONTAINS_${TOOL_BUILD_GRAPH_KEY}})
message(" | +- ${TOOL_BUILD_GRAPH_ENTRY}")
endforeach()
message(" |")
endforeach()
message("")
GroupSources(${CMAKE_CURRENT_SOURCE_DIR})
# Generates the actual tools projects
foreach(TOOL_NAME ${TOOLS_BUILD_LIST})
GetPathToTool(${TOOL_NAME} SOURCE_TOOL_PATH)
ToolNameToVariable(${TOOL_NAME} TOOL_BUILD_VARIABLE)
if (${TOOL_BUILD_VARIABLE} STREQUAL "disabled")
continue()
endif()
unset(TOOL_PRIVATE_SOURCES)
CollectSourceFiles(
${SOURCE_TOOL_PATH}
TOOL_PRIVATE_SOURCES)
if (WIN32)
list(APPEND TOOL_PRIVATE_SOURCES ${winDebugging})
endif()
GetProjectNameOfToolName(${TOOL_NAME} TOOL_PROJECT_NAME)
# Create the application project
add_executable(${TOOL_PROJECT_NAME}
${TOOL_PRIVATE_SOURCES})
add_dependencies(${TOOL_PROJECT_NAME} revision.h)
# Need fix errors
# target_link_libraries(${TOOL_PROJECT_NAME}
# PRIVATE
# acore-core-interface)
# if (${TOOL_PROJECT_NAME} MATCHES "dbimport")
# target_link_libraries(${TOOL_PROJECT_NAME}
# PUBLIC
# database)
# # Install config
# CopyToolConfig(${TOOL_PROJECT_NAME} ${TOOL_NAME})
# else()
target_link_libraries(${TOOL_PROJECT_NAME}
PUBLIC
common
mpq
zlib
Recast
g3dlib)
# endif()
unset(TOOL_PUBLIC_INCLUDES)
CollectIncludeDirectories(
${SOURCE_TOOL_PATH}
TOOL_PUBLIC_INCLUDES)
target_include_directories(${TOOL_PROJECT_NAME}
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(${TOOL_PROJECT_NAME}
PUBLIC
${TOOL_PUBLIC_INCLUDES}
PRIVATE
${CMAKE_CURRENT_BINARY_DIR}/${TOOL_NAME})
set_target_properties(${TOOL_PROJECT_NAME}
PROPERTIES
FOLDER
"tools")
if (UNIX)
install(TARGETS ${TOOL_PROJECT_NAME} DESTINATION bin)
elseif (WIN32)
install(TARGETS ${TOOL_PROJECT_NAME} DESTINATION "${CMAKE_INSTALL_PREFIX}")
endif()
endforeach()

View File

@@ -1,55 +0,0 @@
#
# This file is part of the AzerothCore Project. See AUTHORS file for Copyright information
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
CollectSourceFiles(
${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE_SOURCES)
add_executable(mapextractor
${PRIVATE_SOURCES}
)
target_include_directories(mapextractor
PUBLIC
${CMAKE_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/loadlib)
target_link_libraries(mapextractor
PRIVATE
acore-core-interface
PUBLIC
common
mpq)
CollectIncludeDirectories(
${CMAKE_CURRENT_SOURCE_DIR}
PUBLIC_INCLUDES)
# Group sources
GroupSources(${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(mapextractor
PUBLIC
${PUBLIC_INCLUDES}
PRIVATE
${CMAKE_CURRENT_BINARY_DIR})
set_target_properties(mapextractor
PROPERTIES
FOLDER
"tools")
if( UNIX )
install(TARGETS mapextractor DESTINATION bin)
elseif( WIN32 )
install(TARGETS mapextractor DESTINATION "${CMAKE_INSTALL_PREFIX}")
endif()

View File

@@ -1,50 +0,0 @@
#
# This file is part of the AzerothCore Project. See AUTHORS file for Copyright information
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
CollectSourceFiles(
${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE_SOURCES)
add_executable(mmaps_generator ${PRIVATE_SOURCES})
target_link_libraries(mmaps_generator
PRIVATE
acore-core-interface
PUBLIC
common
Recast
mpq)
# Group sources
GroupSources(${CMAKE_CURRENT_SOURCE_DIR})
CollectIncludeDirectories(
${CMAKE_CURRENT_SOURCE_DIR}
PUBLIC_INCLUDES)
target_include_directories(mmaps_generator
PUBLIC
${PUBLIC_INCLUDES}
PRIVATE
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_SOURCE_DIR}/src/server/game/Conditions)
set_target_properties(mmaps_generator
PROPERTIES
FOLDER
"tools")
if( UNIX )
install(TARGETS mmaps_generator DESTINATION bin)
elseif( WIN32 )
install(TARGETS mmaps_generator DESTINATION "${CMAKE_INSTALL_PREFIX}")
endif()

View File

@@ -1,38 +0,0 @@
#
# This file is part of the AzerothCore Project. See AUTHORS file for Copyright information
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
add_executable(vmap4assembler VMapAssembler.cpp)
if(CMAKE_SYSTEM_NAME MATCHES "Darwin")
set_target_properties(vmap4assembler PROPERTIES LINK_FLAGS "-framework Carbon")
endif()
target_link_libraries(vmap4assembler
PRIVATE
acore-core-interface
PUBLIC
common
zlib)
# Group sources
GroupSources(${CMAKE_CURRENT_SOURCE_DIR})
set_target_properties(vmap4assembler
PROPERTIES
FOLDER
"tools")
if( UNIX )
install(TARGETS vmap4assembler DESTINATION bin)
elseif( WIN32 )
install(TARGETS vmap4assembler DESTINATION "${CMAKE_INSTALL_PREFIX}")
endif()

View File

@@ -1,46 +0,0 @@
#
# This file is part of the AzerothCore Project. See AUTHORS file for Copyright information
#
# This file is free software; as a special exception the author gives
# unlimited permission to copy and/or distribute it, with or without
# modifications, as long as this notice is preserved.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#
CollectSourceFiles(
${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE_SOURCES)
add_executable(vmap4extractor ${PRIVATE_SOURCES})
target_link_libraries(vmap4extractor
PUBLIC
g3dlib
mpq)
# Group sources
GroupSources(${CMAKE_CURRENT_SOURCE_DIR})
CollectIncludeDirectories(
${CMAKE_CURRENT_SOURCE_DIR}
PUBLIC_INCLUDES)
target_include_directories(vmap4extractor
PUBLIC
${PUBLIC_INCLUDES}
PRIVATE
${CMAKE_CURRENT_BINARY_DIR})
set_target_properties(vmap4extractor
PROPERTIES
FOLDER
"tools")
if( UNIX )
install(TARGETS vmap4extractor DESTINATION bin)
elseif( WIN32 )
install(TARGETS vmap4extractor DESTINATION "${CMAKE_INSTALL_PREFIX}")
endif()