Files
azerothcore-wotlk/src/tools/CMakeLists.txt
Ben Carter 6e5cd04591 fix(docker): Modules SQL do not get updated or populated for docker set ups (#19870)
* Added modules to dbimport so sql cab accessed by loader

* updated dbimport tools config option to enable module sql to be updated and populated

* Updated casting around GetOption and changed default to all
2024-09-06 12:37:00 -03:00

174 lines
4.7 KiB
CMake

#
# 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.
# 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 in maps tools
# target_link_libraries(${TOOL_PROJECT_NAME}
# PRIVATE
# acore-dependency-interface)
if (${TOOL_PROJECT_NAME} MATCHES "dbimport")
target_link_libraries(${TOOL_PROJECT_NAME}
PUBLIC
database
PRIVATE
modules
scripts
acore-core-interface)
# Install config
CopyToolConfig(${TOOL_PROJECT_NAME} ${TOOL_NAME})
else()
target_link_libraries(${TOOL_PROJECT_NAME}
PRIVATE
acore-dependency-interface)
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}
${CMAKE_SOURCE_DIR}/src
${CMAKE_SOURCE_DIR}/modules
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()