summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt15
-rw-r--r--bin/compiler/includes/functions.sh6
-rw-r--r--src/cmake/utils.cmake115
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()
+
+