mirror of
https://github.com/anope/anope.git
synced 2026-07-02 23:43:12 +02:00
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
This commit is contained in:
+154
-26
@@ -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)
|
||||
|
||||
+32
-26
@@ -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)
|
||||
|
||||
+57
-15
@@ -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})
|
||||
|
||||
+19
-15
@@ -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)
|
||||
|
||||
+18
-15
@@ -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)
|
||||
|
||||
+18
-15
@@ -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)
|
||||
|
||||
+18
-15
@@ -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})
|
||||
|
||||
Reference in New Issue
Block a user