diff options
| -rw-r--r-- | CMakeLists.txt | 15 | ||||
| -rw-r--r-- | bin/compiler/includes/functions.sh | 6 | ||||
| -rw-r--r-- | src/cmake/utils.cmake | 115 |
3 files changed, 132 insertions, 4 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 76260629c5..1bdcbab758 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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") diff --git a/bin/compiler/includes/functions.sh b/bin/compiler/includes/functions.sh index 9f97b43b80..269f892a79 100644 --- a/bin/compiler/includes/functions.sh +++ b/bin/compiler/includes/functions.sh @@ -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 diff --git a/src/cmake/utils.cmake b/src/cmake/utils.cmake new file mode 100644 index 0000000000..e5e63f088b --- /dev/null +++ b/src/cmake/utils.cmake @@ -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() + + |
