summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcyberbotx <cyberbotx@5417fbe8-f217-4b02-8779-1006273d7864>2008-12-17 20:18:11 +0000
committercyberbotx <cyberbotx@5417fbe8-f217-4b02-8779-1006273d7864>2008-12-17 20:18:11 +0000
commitfd45a3ad4219bffcf2f68fcc1dce3ff33b531b89 (patch)
treef6d1e3ff092a1f8881c633005eabd4aace92c121 /src
parentad7b5bdd30405b92042c4a1872175be80d8d111f (diff)
Implemented dependency calculation within CMake, now header file dependencies are no longer hardcoded.
Also a few minor changes to the CMakeLists.txt files. git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@1840 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt72
-rw-r--r--src/core/CMakeLists.txt34
-rw-r--r--src/modules/CMakeLists.txt33
-rw-r--r--src/protocol/CMakeLists.txt33
-rw-r--r--src/tools/CMakeLists.txt33
5 files changed, 130 insertions, 75 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index cf1d51bb4..53b2f10ca 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -61,6 +61,8 @@ set(sockutil.c_HEADERS services.h)
set(timeout.c_HEADERS services.h pseudo.h)
set(users.c_HEADERS services.h)
+set(${PROGRAM_NAME}_HEADERS)
+
foreach(SRC ${SRC_SRCS})
#string(REGEX REPLACE "\\." "_" SRC_TARGET ${SRC})
#string(REGEX REPLACE "\\.cpp$" ".x" SRC_X ${SRC})
@@ -76,21 +78,61 @@ foreach(SRC ${SRC_SRCS})
#add_custom_target(src_${OBJ_TARGET} DEPENDS ${BUILD_DIR}/${OBJ})
#add_custom_target(src_${SRC_TARGET} DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${SRC})
#add_dependencies(src_srcs src_${SRC_TARGET})
- set(HEADERS)
- if(${SRC}_HEADERS)
- foreach(HEADER ${${SRC}_HEADERS})
- string(SUBSTRING ${HEADER} 0 1 FIRST_CHAR)
- string(SUBSTRING ${HEADER} 1 1 SECOND_CHAR)
- if(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
- set(HEADERS ${HEADERS} ${HEADER})
- else(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
- set(HEADERS ${HEADERS} ${Anope_SOURCE_DIR}/include/${HEADER})
- endif(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
- endforeach(HEADER)
- endif(${SRC}_HEADERS)
- if(HEADERS)
- set_source_files_properties(${SRC} PROPERTIES OBJECT_DEPENDS "${HEADERS}")
- endif(HEADERS)
+ #set(HEADERS)
+ #if(${SRC}_HEADERS)
+ # foreach(HEADER ${${SRC}_HEADERS})
+ # string(SUBSTRING ${HEADER} 0 1 FIRST_CHAR)
+ # string(SUBSTRING ${HEADER} 1 1 SECOND_CHAR)
+ # if(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
+ # set(HEADERS ${HEADERS} ${HEADER})
+ # else(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
+ # set(HEADERS ${HEADERS} ${Anope_SOURCE_DIR}/include/${HEADER})
+ # endif(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
+ # endforeach(HEADER)
+ #endif(${SRC}_HEADERS)
+
+ #file(STRINGS ${SRC} INCLUDES REGEX "^[ \t]*#[ \t]*include[ \t]*\".*\"[ \t]*$")
+ ##message(STATUS "${SRC}'s includes: ${INCLUDES}")
+ ##get_filename_component(HEADER_FILENAME ${HEADER} NAME)
+ #set(HEADERS)
+ #foreach(INCLUDE ${INCLUDES})
+ # string(STRIP ${INCLUDE} INCLUDE)
+ # string(REGEX MATCH "\".*\"$" FILENAME ${INCLUDE})
+ # string(LENGTH ${FILENAME} FILENAME_LEN)
+ # math(EXPR FILENAME_LEN "${FILENAME_LEN} - 2")
+ # string(SUBSTRING ${FILENAME} 1 ${FILENAME_LEN} FILENAME)
+ # #message(STATUS "INCLUDE FILENAME: ${FILENAME}")
+ # #list(APPEND ${HEADER_FILENAME}_HEADERS ${FILENAME})
+ # list(APPEND HEADERS ${FILENAME})
+ #endforeach(INCLUDE)
+ ##message(STATUS "${SRC}'s HEADERS: ${HEADERS}")
+ #set(NEW_HEADERS)
+ #foreach(HEADER ${HEADERS})
+ # #message(STATUS "HEADER: ${HEADER} - ${HEADERS}_HEADERS: ${${HEADERS}_HEADERS}")
+ # if(${HEADER}_HEADERS)
+ # list(APPEND NEW_HEADERS ${${HEADER}_HEADERS})
+ # endif(${HEADER}_HEADERS)
+ #endforeach(HEADER)
+ #if(NEW_HEADERS)
+ # list(APPEND HEADERS ${NEW_HEADERS})
+ #endif(NEW_HEADERS)
+ #list(REMOVE_DUPLICATES HEADERS)
+ #list(SORT HEADERS)
+ #if(HEADERS)
+ # #message(STATUS "${SRC}'s HEADERS after NEW_HEADERS: ${HEADERS}")
+ # set(HEADERS_FULL)
+ # foreach(HEADER ${HEADERS})
+ # get_filename_component(HEADER_FILENAME ${HEADER} NAME)
+ # list(APPEND HEADERS_FULL ${${HEADER_FILENAME}_FULLPATH})
+ # endforeach(HEADER)
+ # #message(STATUS "${SRC}'s HEADERS_FULL: ${HEADERS_FULL}")
+ # set_source_files_properties(${SRC} PROPERTIES OBJECT_DEPENDS "${HEADERS_FULL}")
+ # list(APPEND ${PROGRAM_NAME}_HEADERS ${HEADERS_FULL})
+ #endif(HEADERS)
+ calculate_depends(${SRC})
+ get_source_file_property(HEADERS ${SRC} OBJECT_DEPENDS)
+ message(STATUS "${SRC}'s OBJECT_DEPENDS: ${HEADERS}")
+
endforeach(SRC)
#add_custom_target(src_srcs DEPENDS ${SRC_SRCS_FULL})
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index ebe8f6dca..27c9c038e 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -40,21 +40,25 @@ foreach(SRC ${CORE_SRCS})
#)
#add_custom_target(core_${SO_TARGET} DEPENDS ${BUILD_DIR}/${SO})
#add_dependencies(core core_${SO_TARGET})
- set(HEADERS ${Anope_SOURCE_DIR}/include/module.h)
- if(${SRC}_HEADERS)
- foreach(HEADER ${${SRC}_HEADERS})
- string(SUBSTRING ${HEADER} 0 1 FIRST_CHAR)
- string(SUBSTRING ${HEADER} 1 1 SECOND_CHAR)
- if(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
- set(HEADERS ${HEADERS} ${HEADER})
- else(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
- set(HEADERS ${HEADERS} ${Anope_SOURCE_DIR}/include/${HEADER})
- endif(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
- endforeach(HEADER)
- endif(${SRC}_HEADERS)
- if(HEADERS)
- set_source_files_properties(${SRC} PROPERTIES OBJECT_DEPENDS "${HEADERS}")
- endif(HEADERS)
+ #set(HEADERS ${Anope_SOURCE_DIR}/include/module.h)
+ #if(${SRC}_HEADERS)
+ # foreach(HEADER ${${SRC}_HEADERS})
+ # string(SUBSTRING ${HEADER} 0 1 FIRST_CHAR)
+ # string(SUBSTRING ${HEADER} 1 1 SECOND_CHAR)
+ # if(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
+ # set(HEADERS ${HEADERS} ${HEADER})
+ # else(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
+ # set(HEADERS ${HEADERS} ${Anope_SOURCE_DIR}/include/${HEADER})
+ # endif(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
+ # endforeach(HEADER)
+ #endif(${SRC}_HEADERS)
+ #if(HEADERS)
+ # set_source_files_properties(${SRC} PROPERTIES OBJECT_DEPENDS "${HEADERS}")
+ #endif(HEADERS)
+ calculate_depends(${SRC})
+ get_source_file_property(HEADERS ${SRC} OBJECT_DEPENDS)
+ message(STATUS "${SRC}'s OBJECT_DEPENDS: ${HEADERS}")
+ set_source_files_properties(${HEADERS} PROPERTIES HEADER_FILE_ONLY TRUE)
if(WIN32 AND MSVC)
set(SRC ${SRC} ${Anope_SOURCE_DIR}/src/win32_memory.cpp)
endif(WIN32 AND MSVC)
diff --git a/src/modules/CMakeLists.txt b/src/modules/CMakeLists.txt
index 34924e362..73d1cad61 100644
--- a/src/modules/CMakeLists.txt
+++ b/src/modules/CMakeLists.txt
@@ -35,21 +35,24 @@ foreach(SRC ${MODULES_SRCS})
#)
#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)
- string(SUBSTRING ${HEADER} 1 1 SECOND_CHAR)
- if(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
- set(HEADERS ${HEADERS} ${HEADER})
- else(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
- set(HEADERS ${HEADERS} ${Anope_SOURCE_DIR}/include/${HEADER})
- endif(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
- endforeach(HEADER)
- endif(${SRC}_HEADERS)
- if(HEADERS)
- set_source_files_properties(${SRC} PROPERTIES OBJECT_DEPENDS "${HEADERS}")
- endif(HEADERS)
+ #set(HEADERS ${Anope_SOURCE_DIR}/include/module.h)
+ #if(${SRC}_HEADERS)
+ # foreach(HEADER ${${SRC}_HEADERS})
+ # string(SUBSTRING ${HEADER} 0 1 FIRST_CHAR)
+ # string(SUBSTRING ${HEADER} 1 1 SECOND_CHAR)
+ # if(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
+ # set(HEADERS ${HEADERS} ${HEADER})
+ # else(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
+ # set(HEADERS ${HEADERS} ${Anope_SOURCE_DIR}/include/${HEADER})
+ # endif(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
+ # endforeach(HEADER)
+ #endif(${SRC}_HEADERS)
+ #if(HEADERS)
+ # set_source_files_properties(${SRC} PROPERTIES OBJECT_DEPENDS "${HEADERS}")
+ #endif(HEADERS)
+ calculate_depends(${SRC})
+ get_source_file_property(HEADERS ${SRC} OBJECT_DEPENDS)
+ message(STATUS "${SRC}'s OBJECT_DEPENDS: ${HEADERS}")
if(WIN32 AND MSVC)
set(SRC ${SRC} ${Anope_SOURCE_DIR}/src/win32_memory.cpp)
endif(WIN32 AND MSVC)
diff --git a/src/protocol/CMakeLists.txt b/src/protocol/CMakeLists.txt
index 1c91a1ff2..f6a039aed 100644
--- a/src/protocol/CMakeLists.txt
+++ b/src/protocol/CMakeLists.txt
@@ -35,21 +35,24 @@ foreach(SRC ${PROTOCOL_SRCS})
#)
#add_custom_target(protocol_${SO_TARGET} DEPENDS ${BUILD_DIR}/${SO})
#add_dependencies(protocol protocol_${SO_TARGET})
- set(HEADERS ${Anope_SOURCE_DIR}/include/services.h ${Anope_SOURCE_DIR}/include/pseudo.h)
- if(${SRC}_HEADERS)
- foreach(HEADER ${${SRC}_HEADERS})
- string(SUBSTRING ${HEADER} 0 1 FIRST_CHAR)
- string(SUBSTRING ${HEADER} 1 1 SECOND_CHAR)
- if(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
- set(HEADERS ${HEADERS} ${HEADER})
- else(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
- set(HEADERS ${HEADERS} ${Anope_SOURCE_DIR}/include/${HEADER})
- endif(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
- endforeach(HEADER)
- endif(${SRC}_HEADERS)
- if(HEADERS)
- set_source_files_properties(${SRC} PROPERTIES OBJECT_DEPENDS "${HEADERS}")
- endif(HEADERS)
+ #set(HEADERS ${Anope_SOURCE_DIR}/include/services.h ${Anope_SOURCE_DIR}/include/pseudo.h)
+ #if(${SRC}_HEADERS)
+ # foreach(HEADER ${${SRC}_HEADERS})
+ # string(SUBSTRING ${HEADER} 0 1 FIRST_CHAR)
+ # string(SUBSTRING ${HEADER} 1 1 SECOND_CHAR)
+ # if(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
+ # set(HEADERS ${HEADERS} ${HEADER})
+ # else(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
+ # set(HEADERS ${HEADERS} ${Anope_SOURCE_DIR}/include/${HEADER})
+ # endif(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
+ # endforeach(HEADER)
+ #endif(${SRC}_HEADERS)
+ #if(HEADERS)
+ # set_source_files_properties(${SRC} PROPERTIES OBJECT_DEPENDS "${HEADERS}")
+ #endif(HEADERS)
+ calculate_depends(${SRC})
+ get_source_file_property(HEADERS ${SRC} OBJECT_DEPENDS)
+ message(STATUS "${SRC}'s OBJECT_DEPENDS: ${HEADERS}")
if(WIN32 AND MSVC)
set(SRC ${SRC} ${Anope_SOURCE_DIR}/src/win32_memory.cpp)
endif(WIN32 AND MSVC)
diff --git a/src/tools/CMakeLists.txt b/src/tools/CMakeLists.txt
index aa8de50dd..384755670 100644
--- a/src/tools/CMakeLists.txt
+++ b/src/tools/CMakeLists.txt
@@ -30,21 +30,24 @@ foreach(SRC ${TOOLS_SRCS})
#add_custom_target(src_${OBJ_TARGET} DEPENDS ${BUILD_DIR}/${OBJ})
#add_custom_target(src_${SRC_TARGET} DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${SRC})
#add_dependencies(src_srcs src_${SRC_TARGET})
- set(HEADERS)
- if(${SRC}_HEADERS)
- foreach(HEADER ${${SRC}_HEADERS})
- string(SUBSTRING ${HEADER} 0 1 FIRST_CHAR)
- string(SUBSTRING ${HEADER} 1 1 SECOND_CHAR)
- if(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
- set(HEADERS ${HEADERS} ${HEADER})
- else(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
- set(HEADERS ${HEADERS} ${Anope_SOURCE_DIR}/include/${HEADER})
- endif(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
- endforeach(HEADER)
- endif(${SRC}_HEADERS)
- if(HEADERS)
- set_source_files_properties(${SRC} PROPERTIES OBJECT_DEPENDS "${HEADERS}")
- endif(HEADERS)
+ #set(HEADERS)
+ #if(${SRC}_HEADERS)
+ # foreach(HEADER ${${SRC}_HEADERS})
+ # string(SUBSTRING ${HEADER} 0 1 FIRST_CHAR)
+ # string(SUBSTRING ${HEADER} 1 1 SECOND_CHAR)
+ # if(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
+ # set(HEADERS ${HEADERS} ${HEADER})
+ # else(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
+ # set(HEADERS ${HEADERS} ${Anope_SOURCE_DIR}/include/${HEADER})
+ # endif(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":")
+ # endforeach(HEADER)
+ #endif(${SRC}_HEADERS)
+ #if(HEADERS)
+ # set_source_files_properties(${SRC} PROPERTIES OBJECT_DEPENDS "${HEADERS}")
+ #endif(HEADERS)
+ calculate_depends(${SRC})
+ get_source_file_property(HEADERS ${SRC} OBJECT_DEPENDS)
+ message(STATUS "${SRC}'s OBJECT_DEPENDS: ${HEADERS}")
add_executable(${EXE} ${SRC})
set_target_properties(${EXE} PROPERTIES LINK_FLAGS "${LDFLAGS}")
add_dependencies(${EXE} ${PROGRAM_NAME})