anope

- supernets anope source code & configuration
git clone git://git.acid.vegas/anope.git
Log | Files | Refs | Archive | README

CMakeLists.txt (2942B)

      1 # Set version.cpp to use C++ as well as set its compile flags
      2 set_source_files_properties(version.cpp PROPERTIES LANGUAGE CXX COMPILE_FLAGS "${CXXFLAGS}")
      3 # Generate version-bin executable to modify version.h, setting it's linker flags as well
      4 add_executable(version-bin version.cpp)
      5 set_target_properties(version-bin PROPERTIES LINKER_LANGUAGE CXX LINK_FLAGS "${LDFLAGS}")
      6 get_target_property(version_BINARY version-bin LOCATION)
      7 # Modify version.h from the above executable, with dependencies to version.cpp
      8 # and all of the source files in the main build
      9 add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/version_build
     10   COMMAND ${version_BINARY} ${Anope_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}/version.h ${CMAKE_CURRENT_BINARY_DIR}/build.h
     11   DEPENDS version-bin ${SRC_SRCS}
     12 )
     13 # Add version-bin to list of files for CPack to ignore
     14 get_filename_component(version_BINARY ${version_BINARY} NAME)
     15 add_to_cpack_ignored_files("${version_BINARY}$" TRUE)
     16 if(NOT WIN32)
     17   add_to_cpack_ignored_files("version.h$" TRUE)
     18   add_to_cpack_ignored_files("build.h$" TRUE)
     19 endif(NOT WIN32)
     20 
     21 set(PCH_SOURCES_GCH "")
     22 if(USE_PCH AND CMAKE_COMPILER_IS_GNUCXX)
     23   string(REPLACE " " ";" PCH_CXXFLAGS "${CXXFLAGS} ${CMAKE_CXX_FLAGS}")
     24 
     25   file(GLOB PCH_SOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*.h")
     26   sort_list(PCH_SOURCES)
     27 
     28   foreach(PCH_SOURCE ${PCH_SOURCES})
     29     find_includes(${PCH_SOURCE} INCLUDES)
     30     set(INCLUDES_LIST)
     31     append_to_list(INCLUDES_LIST ${PCH_SOURCE})
     32     foreach(INCLUDE ${INCLUDES})
     33       # Extract the filename from the #include line
     34       extract_include_filename(${INCLUDE} FILENAME QUOTE_TYPE)
     35       if(QUOTE_TYPE STREQUAL "quotes")
     36         find_in_list(PCH_SOURCES "${FILENAME}" FOUND)
     37         if(NOT FOUND EQUAL -1)
     38           append_to_list(INCLUDES_LIST ${FILENAME})
     39         endif(NOT FOUND EQUAL -1)
     40       endif(QUOTE_TYPE STREQUAL "quotes")
     41     endforeach(INCLUDE)
     42 
     43     set(PCH_EXTRAFLAGS "")
     44     if(DEBUG_BUILD)
     45       set(PCH_EXTRAFLAGS "-g")
     46     endif(DEBUG_BUILD)
     47     if(PCH_SOURCE STREQUAL "module.h")
     48       set(PCH_EXTRAFLAGS ${PCH_EXTRAFLAGS} -fPIC)
     49     endif(PCH_SOURCE STREQUAL "module.h")
     50     if(GETTEXT_INCLUDE)
     51       set(PCH_GETTEXT_INCLUDE "-I${GETTEXT_INCLUDE}")
     52     endif(GETTEXT_INCLUDE)
     53 
     54     set(PCH_SOURCES_GCH "${PCH_SOURCES_GCH};${CMAKE_CURRENT_BINARY_DIR}/${PCH_SOURCE}.gch")
     55     add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${PCH_SOURCE}.gch
     56       COMMAND ${CMAKE_CXX_COMPILER} ARGS ${PCH_CXXFLAGS} ${PCH_EXTRAFLAGS}
     57       ${PCH_GETTEXT_INCLUDE} -I${CMAKE_CURRENT_BINARY_DIR} -I${Anope_SOURCE_DIR}/modules/pseudoclients ${CMAKE_CURRENT_SOURCE_DIR}/${PCH_SOURCE} -o ${CMAKE_CURRENT_BINARY_DIR}/${PCH_SOURCE}.gch
     58       DEPENDS ${INCLUDES_LIST} VERBATIM
     59     )
     60   endforeach(PCH_SOURCE ${PCH_SOURCES})
     61 endif(USE_PCH AND CMAKE_COMPILER_IS_GNUCXX)
     62 
     63 # Add a custom target to the above file
     64 add_custom_target(headers DEPENDS version-bin ${CMAKE_CURRENT_BINARY_DIR}/version_build ${PCH_SOURCES_GCH})