mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-13 01:08:35 +00:00
Implemented dynamic module loading and hooks system for cmake
This commit is contained in:
@@ -36,6 +36,9 @@ endif()
|
||||
include(CheckCXXSourceRuns)
|
||||
include(CheckIncludeFiles)
|
||||
|
||||
# some utils for cmake
|
||||
include(src/cmake/utils.cmake)
|
||||
|
||||
# set default buildoptions and print them
|
||||
include(src/cmake/options.cmake)
|
||||
|
||||
@@ -76,8 +79,16 @@ include(src/cmake/genrev.cmake)
|
||||
# print out the results before continuing
|
||||
include(src/cmake/showoptions.cmake)
|
||||
|
||||
# add dependencies
|
||||
add_subdirectory(modules/dep)
|
||||
# add modules and dependencies
|
||||
AZTH_SUBDIRLIST(sub_DIRS "${CMAKE_SOURCE_DIR}/modules" FALSE FALSE)
|
||||
FOREACH(subdir ${sub_DIRS})
|
||||
message("Loading module: ${subdir}")
|
||||
add_subdirectory("${subdir}")
|
||||
ENDFOREACH()
|
||||
|
||||
RUN_HOOK("BEFORE_SRC_LOAD")
|
||||
|
||||
# add core sources
|
||||
add_subdirectory(src)
|
||||
|
||||
RUN_HOOK("AFTER_SRC_LOAD")
|
||||
|
||||
@@ -24,9 +24,11 @@ function configure() {
|
||||
# -DCMAKE_BUILD_TYPE=$CCTYPE disable optimization "slow and huge amount of ram"
|
||||
# -DWITH_COREDEBUG=$CDEBUG compiled with debug information
|
||||
|
||||
#-DSCRIPTS_COMMANDS=$CSCRIPTS -DSCRIPTS_CUSTOM=$CSCRIPTS -DSCRIPTS_EASTERNKINGDOMS=$CSCRIPTS -DSCRIPTS_EVENTS=$CSCRIPTS -DSCRIPTS_KALIMDOR=$CSCRIPTS \
|
||||
#-DSCRIPTS_NORTHREND=$CSCRIPTS -DSCRIPTS_OUTDOORPVP=$CSCRIPTS -DSCRIPTS_OUTLAND=$CSCRIPTS -DSCRIPTS_PET=$CSCRIPTS -DSCRIPTS_SPELLS=$CSCRIPTS -DSCRIPTS_WORLD=$CSCRIPTS \
|
||||
|
||||
cmake $SRCPATH -DCMAKE_INSTALL_PREFIX=$BINPATH -DCONF_DIR=$CONFDIR -DSERVERS=$CSERVERS \
|
||||
-DSCRIPTS=$CSCRIPTS -DSCRIPTS_COMMANDS=$CSCRIPTS -DSCRIPTS_CUSTOM=$CSCRIPTS -DSCRIPTS_EASTERNKINGDOMS=$CSCRIPTS -DSCRIPTS_EVENTS=$CSCRIPTS -DSCRIPTS_KALIMDOR=$CSCRIPTS \
|
||||
-DSCRIPTS_NORTHREND=$CSCRIPTS -DSCRIPTS_OUTDOORPVP=$CSCRIPTS -DSCRIPTS_OUTLAND=$CSCRIPTS -DSCRIPTS_PET=$CSCRIPTS -DSCRIPTS_SPELLS=$CSCRIPTS -DSCRIPTS_WORLD=$CSCRIPTS \
|
||||
-DSCRIPTS=$CSCRIPTS \
|
||||
-DTOOLS=$CTOOLS -DUSE_SCRIPTPCH=$CSCRIPTPCH -DUSE_COREPCH=$CCOREPCH -DWITH_COREDEBUG=$CDEBUG -DCMAKE_BUILD_TYPE=$CCTYPE -DWITH_WARNINGS=$CWARNINGS \
|
||||
-DAZTH_WITH_UNIT_TEST=$CAZTH_UNIT_TEST -DAZTH_WITH_CUSTOM_PLUGINS=$CAZTH_CUSTOM_PLG -DAZTH_WITH_PLUGINS=$CAZTH_PLG \
|
||||
-DCMAKE_C_COMPILER=$CCOMPILERC -DCMAKE_CXX_COMPILER=$CCOMPILERCXX
|
||||
|
||||
115
src/cmake/utils.cmake
Normal file
115
src/cmake/utils.cmake
Normal file
@@ -0,0 +1,115 @@
|
||||
|
||||
#
|
||||
# AZTH_SUBDIRLIST
|
||||
#
|
||||
FUNCTION(AZTH_SUBDIRLIST result curdir recursive includeRoot)
|
||||
# glob recurse seem's doesn't work
|
||||
FILE(GLOB children RELATIVE ${curdir} "${curdir}/[^\\.]*")
|
||||
if (${includeRoot})
|
||||
SET(dirlist "${curdir}")
|
||||
else()
|
||||
SET(dirlist "")
|
||||
endif()
|
||||
|
||||
FOREACH(child ${children})
|
||||
IF(IS_DIRECTORY "${curdir}/${child}")
|
||||
if (${recursive})
|
||||
AZTH_SUBDIRLIST(sub_Dirs "${curdir}/${child}" TRUE FALSE)
|
||||
SET(dirlist "${curdir}/${child}" ${sub_Dirs} ${dirlist})
|
||||
else()
|
||||
SET(dirlist "${curdir}/${child}" ${dirlist})
|
||||
endif()
|
||||
ENDIF()
|
||||
ENDFOREACH()
|
||||
SET(${result} ${dirlist} PARENT_SCOPE)
|
||||
ENDFUNCTION(AZTH_SUBDIRLIST result curdir recursive)
|
||||
|
||||
#
|
||||
# AZTH_SET_GLOBAL
|
||||
#
|
||||
MACRO(AZTH_SET_GLOBAL name val)
|
||||
set_property ( GLOBAL PROPERTY ${name} ${val})
|
||||
# after set , create the variable for current scope
|
||||
AZTH_GET_GLOBAL(${name})
|
||||
ENDMACRO()
|
||||
|
||||
#
|
||||
# AZTH_GET_GLOBAL
|
||||
#
|
||||
MACRO(AZTH_GET_GLOBAL name)
|
||||
get_property(${name} GLOBAL PROPERTY ${name})
|
||||
ENDMACRO()
|
||||
|
||||
#
|
||||
# AZTH_SET_CACHE
|
||||
#
|
||||
MACRO(AZTH_SET_CACHE name val)
|
||||
set(${name} ${val} CACHE INTERNAL "AZTH Var")
|
||||
ENDMACRO()
|
||||
|
||||
|
||||
#
|
||||
# AZTH_SET_PATH
|
||||
#
|
||||
MACRO(AZTH_SET_PATH name val)
|
||||
AZTH_SET_CACHE(${name} ${val})
|
||||
|
||||
AZTH_ADD_INC_PATH(${val})
|
||||
ENDMACRO()
|
||||
|
||||
#
|
||||
# AZTH_ADD_INC_PATH
|
||||
#
|
||||
MACRO(AZTH_ADD_INC_PATH val)
|
||||
set(AZTH_INC_PATHS
|
||||
${AZTH_INC_PATHS}
|
||||
${val}
|
||||
)
|
||||
#update cache
|
||||
AZTH_SET_CACHE("AZTH_INC_PATHS" ${AZTH_INC_PATHS})
|
||||
include_directories(${val})
|
||||
ENDMACRO()
|
||||
|
||||
|
||||
#
|
||||
# AZTH_LOAD_INC_PATHS
|
||||
#
|
||||
MACRO(AZTH_LOAD_INC_PATHS)
|
||||
include_directories(${AZTH_INC_PATHS})
|
||||
ENDMACRO()
|
||||
|
||||
#
|
||||
# AZTH_SET_PARENT
|
||||
#
|
||||
MACRO(AZTH_SET_PARENT name val)
|
||||
set(${name} ${val} PARENT_SCOPE)
|
||||
ENDMACRO()
|
||||
|
||||
#
|
||||
# AZTH_ADD_CORE_TG
|
||||
#
|
||||
MACRO(AZTH_ADD_CORE_TG val)
|
||||
AZTH_GET_GLOBAL("AZTH_CORE_TGS")
|
||||
|
||||
set(AZTH_CORE_TGS
|
||||
${AZTH_CORE_TGS}
|
||||
${val}
|
||||
)
|
||||
#update cache
|
||||
AZTH_SET_GLOBAL("AZTH_CORE_TGS" "${AZTH_CORE_TGS}")
|
||||
ENDMACRO()
|
||||
|
||||
MACRO(RUN_HOOK hook_name)
|
||||
message("Running cmake hook: ${hook_name}")
|
||||
if (${hook_name})
|
||||
set(HOOK_ARRAY ${${hook_name}})
|
||||
FOREACH (hook_file ${HOOK_ARRAY})
|
||||
message("Including ${hook_file}")
|
||||
include("${hook_file}")
|
||||
ENDFOREACH()
|
||||
else()
|
||||
message("No hooks registered for ${hook_name}")
|
||||
endif()
|
||||
ENDMACRO()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user