diff options
author | cyberbotx <cyberbotx@5417fbe8-f217-4b02-8779-1006273d7864> | 2008-12-17 20:18:11 +0000 |
---|---|---|
committer | cyberbotx <cyberbotx@5417fbe8-f217-4b02-8779-1006273d7864> | 2008-12-17 20:18:11 +0000 |
commit | fd45a3ad4219bffcf2f68fcc1dce3ff33b531b89 (patch) | |
tree | f6d1e3ff092a1f8881c633005eabd4aace92c121 /src | |
parent | ad7b5bdd30405b92042c4a1872175be80d8d111f (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.txt | 72 | ||||
-rw-r--r-- | src/core/CMakeLists.txt | 34 | ||||
-rw-r--r-- | src/modules/CMakeLists.txt | 33 | ||||
-rw-r--r-- | src/protocol/CMakeLists.txt | 33 | ||||
-rw-r--r-- | src/tools/CMakeLists.txt | 33 |
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}) |