diff options
-rw-r--r-- | CMakeLists.txt | 180 | ||||
-rw-r--r-- | include/CMakeLists.txt | 58 | ||||
-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 |
7 files changed, 316 insertions, 127 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 5169b6082..3e5205998 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,11 +18,11 @@ enable_language(C) if(MINGW) set(CMAKE_RC_COMPILER_INIT windres) - message(STATUS "CMAKE_RC_OUTPUT_EXTENSION: ${CMAKE_RC_OUTPUT_EXTENSION}") + #message(STATUS "CMAKE_RC_OUTPUT_EXTENSION: ${CMAKE_RC_OUTPUT_EXTENSION}") enable_language(RC) - message(STATUS "CMAKE_RC_OUTPUT_EXTENSION: ${CMAKE_RC_OUTPUT_EXTENSION}") - set(CMAKE_RC_OUTPUT_EXTENSION .o) - message(STATUS "CMAKE_RC_OUTPUT_EXTENSION: ${CMAKE_RC_OUTPUT_EXTENSION}") + #message(STATUS "CMAKE_RC_OUTPUT_EXTENSION: ${CMAKE_RC_OUTPUT_EXTENSION}") + #set(CMAKE_RC_OUTPUT_EXTENSION .o) + #message(STATUS "CMAKE_RC_OUTPUT_EXTENSION: ${CMAKE_RC_OUTPUT_EXTENSION}") set(CMAKE_RC_COMPILE_OBJECT "<CMAKE_RC_COMPILER> <FLAGS> <DEFINES> -o <OBJECT> <SOURCE>") endif(MINGW) @@ -39,7 +39,7 @@ endif(NOT WIN32) if(WIN32 AND MSVC) string(REPLACE "/EHsc " "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) string(REPLACE "/GX " "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) - set(CXXFLAGS "${CXXFLAGS} /W4 /EHa /RTC1 /D_WIN32 /DMSVCPP /I ${Anope_SOURCE_DIR}/include /I ${Anope_BINARY_DIR}/include /I ${Anope_BINARY_DIR}/lang") + set(CXXFLAGS "${CXXFLAGS} /W4 /EHs /RTC1 /D_WIN32 /DMSVCPP /I${Anope_SOURCE_DIR}/include /I${Anope_BINARY_DIR}/include /I${Anope_BINARY_DIR}/lang") set(MODULE_CXXFLAGS "${CXXFLAGS} /DMODULE_COMPILE") else(WIN32 AND MSVC) set(CXXFLAGS "${CXXFLAGS} -Wall -Wshadow -I${Anope_SOURCE_DIR}/include -I${Anope_BINARY_DIR}/include -I${Anope_BINARY_DIR}/lang") @@ -53,7 +53,7 @@ else(WIN32 AND MSVC) endif(UNIX) set(MODULE_CXXFLAGS "${CXXFLAGS}") endif(WIN32 AND MSVC) -message(STATUS "CMAKE_CXX_CREATE_SHARED_MODULE: ${CMAKE_CXX_CREATE_SHARED_MODULE}") +#message(STATUS "CMAKE_CXX_CREATE_SHARED_MODULE: ${CMAKE_CXX_CREATE_SHARED_MODULE}") #if(CMAKE_BUILD_TYPE) # set(CXXFLAGS "${CXXFLAGS} ${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}}") #endif(CMAKE_BUILD_TYPE) @@ -75,28 +75,30 @@ else(WIN32) #set(CMAKE_CXX_CREATE_SHARED_MODULE "<CMAKE_CXX_COMPILER> ${CXXFLAGS} <CMAKE_SHARED_LIBRARY_CXX_FLAGS> <LANGUAGE_COMPILE_FLAGS> <LINK_FLAGS> <CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS> <CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG><TARGET_SONAME> -o <TARGET> <OBJECTS> ${LDFLAGS}") endif(WIN32) -if(NOT WIN32) +if(NOT WIN32 OR NOT MSVC) check_cxx_compiler_flag(-pipe HAVE_PIPE_FLAG) if(HAVE_PIPE_FLAG) set(CXXFLAGS "${CXXFLAGS} -pipe") endif(HAVE_PIPE_FLAG) - check_library_exists(nsl inet_ntoa "" HAVE_NSL_LIB) - if(HAVE_NSL_LIB) - set(LDFLAGS "${LDFLAGS} -lnsl") - endif(HAVE_NSL_LIB) - check_library_exists(socket socket "" HAVE_SOCKET_LIB) - if(HAVE_SOCKET_LIB) - set(LDFLAGS "${LDFLAGS} -lsocket") - endif(HAVE_SOCKET_LIB) - check_library_exists(resolv res_query "" HAVE_RESOLV_LIB) - if(HAVE_RESOLV_LIB) - set(LDFLAGS "${LDFLAGS} -lresolv") - endif(HAVE_RESOLV_LIB) - check_library_exists(bsd revoke "" HAVE_BSD_LIB) - if(HAVE_BSD_LIB) - set(LDFLAGS "${LDFLAGS} -lbsd") - endif(HAVE_BSD_LIB) + if(NOT WIN32) + check_library_exists(nsl inet_ntoa "" HAVE_NSL_LIB) + if(HAVE_NSL_LIB) + set(LDFLAGS "${LDFLAGS} -lnsl") + endif(HAVE_NSL_LIB) + check_library_exists(socket socket "" HAVE_SOCKET_LIB) + if(HAVE_SOCKET_LIB) + set(LDFLAGS "${LDFLAGS} -lsocket") + endif(HAVE_SOCKET_LIB) + check_library_exists(resolv res_query "" HAVE_RESOLV_LIB) + if(HAVE_RESOLV_LIB) + set(LDFLAGS "${LDFLAGS} -lresolv") + endif(HAVE_RESOLV_LIB) + check_library_exists(bsd revoke "" HAVE_BSD_LIB) + if(HAVE_BSD_LIB) + set(LDFLAGS "${LDFLAGS} -lbsd") + endif(HAVE_BSD_LIB) + endif(NOT WIN32) try_run(RUN_VA_LIST_AS_ARRAY COMPILE_VA_LIST_AS_ARRAY ${Anope_SOURCE_DIR} ${Anope_SOURCE_DIR}/va_list_check.c @@ -104,7 +106,7 @@ if(NOT WIN32) if(COMPILE_VA_LIST_AS_ARRAY AND NOT RUN_VA_LIST_AS_ARRAY) set(HAVE_VA_LIST_AS_ARRAY 1) endif(COMPILE_VA_LIST_AS_ARRAY AND NOT RUN_VA_LIST_AS_ARRAY) -endif(NOT WIN32) +endif(NOT WIN32 OR NOT MSVC) if(NOT DEFUMASK) if(RUNGROUP) @@ -141,7 +143,7 @@ if(LDFLAGS) string(STRIP ${LDFLAGS} LDFLAGS) endif(LDFLAGS) -if(NOT WIN32) +#if(NOT WIN32) find_program(GREP grep) find_program(SH sh) find_program(CHGRP chgrp) @@ -157,7 +159,7 @@ if(NOT WIN32) set(CMAKE_CXX_CREATE_SHARED_MODULE "${Anope_SOURCE_DIR}/run-cc.pl ${CMAKE_CXX_CREATE_SHARED_MODULE}") endif(USE_RUN_CC_PL) endif(PERL) -endif(NOT WIN32) +#endif(NOT WIN32) #set(CMAKE_BUILD_TYPE DEBUG) #message(STATUS "CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}: ${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}}") @@ -221,6 +223,132 @@ if(WIN32) configure_file(${Anope_SOURCE_DIR}/src/win32.rc.cmake ${Anope_BINARY_DIR}/src/win32.rc) endif(WIN32) +file(GLOB_RECURSE ALL_HEADERS "*.h") +foreach(HEADER ${ALL_HEADERS}) + if(NOT HEADER MATCHES ".*obsolete.*") + list(APPEND TMP_HEADERS ${HEADER}) + get_filename_component(HEADER_FILENAME ${HEADER} NAME) + set(${HEADER_FILENAME}_FULLPATH ${HEADER}) + endif(NOT HEADER MATCHES ".*obsolete.*") +endforeach(HEADER) +set(ALL_HEADERS ${TMP_HEADERS}) +list(SORT ALL_HEADERS) +message(STATUS "ALL_HEADERS: ${ALL_HEADERS}") + +# Calculate dependencies for each header +# I would've done this inside the CMakeLists.txt for the include directory, but since it's added AFTER everything else, it won't help... + +# Preparse step 1: get filenames sans paths +foreach(HEADER ${ALL_HEADERS}) + file(STRINGS ${HEADER} INCLUDES REGEX "^[ \t]*#[ \t]*include[ \t]*\".*\"[ \t]*$") + message(STATUS "${HEADER}'s includes: ${INCLUDES}") + get_filename_component(HEADER_FILENAME ${HEADER} NAME) + 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}) + endforeach(INCLUDE) + if(${HEADER_FILENAME}_HEADERS) + message(STATUS "${HEADER_FILENAME}_HEADERS: ${${HEADER_FILENAME}_HEADERS}") + endif(${HEADER_FILENAME}_HEADERS) +endforeach(HEADER) + +# Preparse step 2: for every header from above that had includes, recursively find the headers each header relies on +foreach(HEADER ${ALL_HEADERS}) + get_filename_component(HEADER_FILENAME ${HEADER} NAME) + if(${HEADER_FILENAME}_HEADERS) + set(OLD_HEADERS) + set(HEADERS ${${HEADER_FILENAME}_HEADERS}) + set(NEW_HEADERS) + #message(STATUS "Before start of WHILE() for ${HEADER_FILENAME} - ${HEADERS}") + while(HEADERS) + foreach(CURR_HEADER ${HEADERS}) + #message(STATUS "CURR_HEADER: ${CURR_HEADER}") + if(${CURR_HEADER}_HEADERS) + #message(STATUS "${CURR_HEADER}_HEADERS: ${${CURR_HEADER}_HEADERS}") + #message(STATUS "NEW_HEADERS BEFORE: ${NEW_HEADERS}") + foreach(CURR_HEADERS_HEADER ${${CURR_HEADER}_HEADERS}) + list(APPEND NEW_HEADERS ${CURR_HEADERS_HEADER}) + endforeach(CURR_HEADERS_HEADER) + #message(STATUS "NEW_HEADERS AFTER: ${NEW_HEADERS}") + endif(${CURR_HEADER}_HEADERS) + endforeach(CURR_HEADER) + #message(STATUS "NEW_HEADERS: ${NEW_HEADERS}") + list(APPEND OLD_HEADERS ${HEADERS}) + set(HEADERS ${NEW_HEADERS}) + set(NEW_HEADERS) + endwhile(HEADERS) + list(REMOVE_DUPLICATES OLD_HEADERS) + list(SORT OLD_HEADERS) + message(STATUS "${HEADER_FILENAME}'s OLD_HEADERS: ${OLD_HEADERS}") + set(${HEADER_FILENAME}_HEADERS ${OLD_HEADERS}) + endif(${HEADER_FILENAME}_HEADERS) +endforeach(HEADER) + +# The following headers are generated from CMake rules and won't be found with the above +list(APPEND ALL_HEADERS ${Anope_BINARY_DIR}/lang/language.h ${Anope_BINARY_DIR}/include/sysconf.h ${Anope_BINARY_DIR}/include/version.h) +set(language.h_FULLPATH ${Anope_BINARY_DIR}/lang/language.h) +set(sysconf.h_FULLPATH ${Anope_BINARY_DIR}/include/sysconf.h) +set(version.h_FULLPATH ${Anope_BINARY_DIR}/include/version.h) + +# Final step: Replace the filename in each header's dependency list with full paths (MOVE TO OTHER CMakeLists.txt LATER!) +#foreach(HEADER ${ALL_HEADERS}) +# get_filename_component(HEADER_FILENAME ${HEADER} NAME) +# if(${HEADER_FILENAME}_HEADERS) +# set(NEW_HEADERS) +# foreach(CURR_HEADER ${${HEADER_FILENAME}_HEADERS}) +# list(APPEND NEW_HEADERS ${${CURR_HEADER}_FULLPATH}) +# endforeach(CURR_HEADER) +# message(STATUS "${HEADER_FILENAME}'s NEW_HEADERS: ${NEW_HEADERS}") +# set(${HEADER_FILENAME}_HEADERS ${NEW_HEADERS}) +# endif(${HEADER_FILENAME}_HEADERS) +#endforeach(HEADER) + +function(calculate_depends SRC) + 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) + if(HEADERS) + list(REMOVE_DUPLICATES HEADERS) + list(SORT 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) +endfunction(calculate_depends) + add_subdirectory(data) add_subdirectory(lang) add_subdirectory(src) diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt index bfdbadee6..aacfd508c 100644 --- a/include/CMakeLists.txt +++ b/include/CMakeLists.txt @@ -29,32 +29,32 @@ else(WIN32) ) endif(WIN32) -foreach(HEADER ${HEADERS_REL}) - if(NOT WIN32) - add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/${HEADER} - COMMAND ${CMAKE_COMMAND} -E touch_nocreate ${CMAKE_CURRENT_SOURCE_DIR}/${HEADER} - ) - endif(NOT WIN32) - set(HEADERS_FULL ${HEADERS_FULL} ${CMAKE_CURRENT_SOURCE_DIR}/${HEADER}) - set(HEADERS) - if(${HEADER}_HEADERS) - foreach(HEADER_REL ${${HEADER}_HEADERS}) - string(SUBSTRING ${HEADER_REL} 0 1 FIRST_CHAR) - string(SUBSTRING ${HEADER_REL} 1 1 SECOND_CHAR) - if(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":") - set(HEADERS ${HEADERS} ${HEADER_REL}) - else(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":") - set(HEADERS ${HEADERS} ${Anope_SOURCE_DIR}/include/${HEADER_REL}) - endif(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":") - endforeach(HEADER_REL) - endif(${HEADER}_HEADERS) - if(HEADERS) - set_source_files_properties(${HEADER} PROPERTIES OBJECT_DEPENDS "${HEADERS}") - endif(HEADERS) -endforeach(HEADER) +#foreach(HEADER ${HEADERS_REL}) +# if(NOT WIN32) +# add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/${HEADER} +# COMMAND ${CMAKE_COMMAND} -E touch_nocreate ${CMAKE_CURRENT_SOURCE_DIR}/${HEADER} +# ) +# endif(NOT WIN32) +# set(HEADERS_FULL ${HEADERS_FULL} ${CMAKE_CURRENT_SOURCE_DIR}/${HEADER}) +# set(HEADERS) +# if(${HEADER}_HEADERS) +# foreach(HEADER_REL ${${HEADER}_HEADERS}) +# string(SUBSTRING ${HEADER_REL} 0 1 FIRST_CHAR) +# string(SUBSTRING ${HEADER_REL} 1 1 SECOND_CHAR) +# if(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":") +# set(HEADERS ${HEADERS} ${HEADER_REL}) +# else(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":") +# set(HEADERS ${HEADERS} ${Anope_SOURCE_DIR}/include/${HEADER_REL}) +# endif(FIRST_CHAR STREQUAL "/" OR SECOND_CHAR STREQUAL ":") +# endforeach(HEADER_REL) +# endif(${HEADER}_HEADERS) +# if(HEADERS) +# set_source_files_properties(${HEADER} PROPERTIES OBJECT_DEPENDS "${HEADERS}") +# endif(HEADERS) +#endforeach(HEADER) -set(HEADERS_FULL ${HEADERS_FULL} ${CMAKE_CURRENT_BINARY_DIR}/version.h) -message(STATUS "HEADERS_FULL: ${HEADERS_FULL}") +#set(HEADERS_FULL ${HEADERS_FULL} ${CMAKE_CURRENT_BINARY_DIR}/version.h) +#message(STATUS "HEADERS_FULL: ${HEADERS_FULL}") #add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/services.h # COMMAND ${CMAKE_COMMAND} -E touch_nocreate ${CMAKE_CURRENT_SOURCE_DIR}/services.h @@ -76,7 +76,13 @@ message(STATUS "HEADERS_FULL: ${HEADERS_FULL}") #add_custom_target(include ALL) #add_custom_target(include) #add_custom_target(headers DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/version.h ${CMAKE_CURRENT_SOURCE_DIR}/services.h ${CMAKE_CURRENT_SOURCE_DIR}/extern.h ${CMAKE_CURRENT_SOURCE_DIR}/pseudo.h) -add_custom_target(headers DEPENDS ${HEADERS_FULL}) +#add_custom_target(headers DEPENDS ${HEADERS_FULL}) +if(ALL_HEADERS) + set_source_files_properties(${ALL_HEADERS} PROPERTIES HEADER_FILE_ONLY TRUE) + add_custom_target(headers DEPENDS ${ALL_HEADERS}) +else(ALL_HEADERS) + add_custom_target(headers) +endif(ALL_HEADERS) #add_dependencies(include include_version_h) set(HEADERS_CLEAN ${CMAKE_CURRENT_BINARY_DIR}/version.h) 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}) |