summaryrefslogtreecommitdiff
path: root/src/modules/CMakeLists.txt
diff options
context:
space:
mode:
authorcyberbotx <cyberbotx@5417fbe8-f217-4b02-8779-1006273d7864>2008-12-17 20:16:25 +0000
committercyberbotx <cyberbotx@5417fbe8-f217-4b02-8779-1006273d7864>2008-12-17 20:16:25 +0000
commit1cd73b4dadb8e618a0ec56289408922be42aac8a (patch)
treeb437cb421d0ed2da6eca57ec4925a8b740aa00d1 /src/modules/CMakeLists.txt
parent1fca479d8eb793bf6473226ff248cfe7b814a3e8 (diff)
Implemented CMake build system to replace the old autoconf-based build system.
(Note: Although each Makefile was changed, they will be removed later as CMake reconstructs them.) Also fixed generation of language files and version.h to not rely on the current directory they are in. Edited Config to send parameters to cmake, but it is no longer a requirement. git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@1835 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src/modules/CMakeLists.txt')
-rw-r--r--src/modules/CMakeLists.txt59
1 files changed, 59 insertions, 0 deletions
diff --git a/src/modules/CMakeLists.txt b/src/modules/CMakeLists.txt
new file mode 100644
index 000000000..1e153a933
--- /dev/null
+++ b/src/modules/CMakeLists.txt
@@ -0,0 +1,59 @@
+#if(${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR})
+# set(BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR})
+#else(${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR})
+# file(RELATIVE_PATH DIR ${Anope_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
+# set(BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/${DIR})
+#endif(${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR})
+
+file(GLOB MODULES_SRCS_C RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.c")
+file(GLOB MODULES_SRCS_CPP RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.cpp")
+set(MODULES_SRCS ${MODULES_SRCS_C} ${MODULES_SRCS_CPP})
+list(SORT MODULES_SRCS)
+
+#add_custom_target(modules ALL)
+#add_custom_target(modules)
+#add_dependencies(modules build)
+
+set_source_files_properties(${MODULES_SRCS} PROPERTIES LANGUAGE CXX COMPILE_FLAGS "${CXXFLAGS}")
+
+foreach(SRC ${MODULES_SRCS})
+ string(REGEX REPLACE "\\.cpp$" ".x" SRC_X ${SRC})
+ string(REGEX REPLACE "\\.c$" ".o" SRC_O ${SRC_X})
+ string(REGEX REPLACE "\\.x$" ".o" OBJ ${SRC_O})
+ #string(REGEX REPLACE "\\." "_" OBJ_TARGET ${OBJ})
+ string(REGEX REPLACE "\\.o" ".so" SO ${OBJ})
+ #string(REGEX REPLACE "\\.o" "" SO ${OBJ})
+ #string(REGEX REPLACE "\\." "_" SO_TARGET ${SO})
+ #add_custom_command(OUTPUT ${BUILD_DIR}/${OBJ}
+ # COMMAND ${MY_COMPILER} ${MY_COMP_ARG} ${CMAKE_CXX_CFLAGS} -I${Anope_SOURCE_DIR}/include -c ${SRC} -o ${BUILD_DIR}/${OBJ}
+ # MAIN_DEPENDENCY ${SRC}
+ #)
+ #add_custom_target(modules_${OBJ_TARGET} DEPENDS ${BUILD_DIR}/${OBJ})
+ #add_custom_command(OUTPUT ${BUILD_DIR}/${SO}
+ # COMMAND ${MY_COMPILER} ${MY_COMP_ARG} ${CMAKE_CXX_CFLAGS} ${CMAKE_SHARED_LIBRARY_CXX_FLAGS} ${CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS} ${BUILD_DIR}/${OBJ} -o ${BUILD_DIR}/${SO}
+ # MAIN_DEPENDENCY ${BUILD_DIR}/${OBJ}
+ #)
+ #add_custom_target(modules_${SO_TARGET} DEPENDS ${BUILD_DIR}/${SO})
+ #add_dependencies(modules modules_${SO_TARGET})
+ set(HEADERS ${Anope_SOURCE_DIR}/include/module.h)
+ if(${SRC}_HEADERS)
+ foreach(HEADER ${${SRC}_HEADERS})
+ string(SUBSTRING ${HEADER} 0 1 FIRST_CHAR)
+ if(FIRST_CHAR STREQUAL "/")
+ set(HEADERS ${HEADERS} ${HEADER})
+ else(FIRST_CHAR STREQUAL "/")
+ set(HEADERS ${HEADERS} ${Anope_SOURCE_DIR}/include/${HEADER})
+ endif(FIRST_CHAR STREQUAL "/")
+ endforeach(HEADER)
+ endif(${SRC}_HEADERS)
+ if(HEADERS)
+ set_source_files_properties(${SRC} PROPERTIES OBJECT_DEPENDS "${HEADERS}")
+ endif(HEADERS)
+ add_library(${SO} MODULE ${SRC})
+ add_dependencies(${SO} services)
+ #set_target_properties(${SO} PROPERTIES PREFIX "" SUFFIX "" COMPILE_FLAGS ${CXXFLAGS})
+ set_target_properties(${SO} PROPERTIES PREFIX "" SUFFIX "")
+ install(TARGETS ${SO}
+ DESTINATION "${DATADIR}/modules"
+ )
+endforeach(SRC)