summaryrefslogtreecommitdiff
path: root/include/CMakeLists.txt
diff options
context:
space:
mode:
authorcyberbotx <cyberbotx@5417fbe8-f217-4b02-8779-1006273d7864>2008-12-17 20:18:40 +0000
committercyberbotx <cyberbotx@5417fbe8-f217-4b02-8779-1006273d7864>2008-12-17 20:18:40 +0000
commit81b7aa657110db03ceb861d8206fc6e805ede9c8 (patch)
tree8437f5ce65de3e27e5e02196711bd770aa86b7f5 /include/CMakeLists.txt
parentfd45a3ad4219bffcf2f68fcc1dce3ff33b531b89 (diff)
Massive cleanup of the CMakeLists.txt files to finalize them.
Edited configuration scripts for *nix and Windows to use CMake as well as support both in-source and out-of-source builds. Changed directory structure for *nix to match Windows to remove some conditionals in both CMake and Anope itself. git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@1841 5417fbe8-f217-4b02-8779-1006273d7864
Diffstat (limited to 'include/CMakeLists.txt')
-rw-r--r--include/CMakeLists.txt96
1 files changed, 15 insertions, 81 deletions
diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt
index aacfd508c..cc0ffc614 100644
--- a/include/CMakeLists.txt
+++ b/include/CMakeLists.txt
@@ -1,89 +1,23 @@
-# NOTE: Need a better dependency system here!
-
-set(HEADERS_REL commands.h extern.h messages.h module.h modules.h pseudo.h services.h)
-
-set(commands.h_HEADERS modules.h)
-set(extern.h_HEADERS slist.h)
-set(messages.h_HEADERS modules.h)
-set(module.h_HEADERS services.h commands.h ${Anope_BINARY_DIR}/lang/language.h modules.h ${CMAKE_CURRENT_BINARY_DIR}/version.h)
-set(modules.h_HEADERS services.h)
-set(pseudo.h_HEADERS commands.h ${Anope_BINARY_DIR}/lang/language.h timeout.h encrypt.h datafiles.h slist.h)
-set(services.h_HEADERS ${CMAKE_CURRENT_BINARY_DIR}/sysconf.h config.h sockets.h defs.h slist.h events.h bots.h account.h regchannel.h users.h extern.h configreader.h)
-
-if(WIN32)
+# If we are building for Visual Studio OR if the system we are on doesn't have sh (which would be odd on a *nix system...), we'll build a C++ program to create version.h
+if(MSVC OR NOT SH)
+ # Set version.sh.c to use C++ as well as set it's compile flags
set_source_files_properties(version.sh.c PROPERTIES LANGUAGE CXX COMPILE_FLAGS "${CXXFLAGS}")
- add_executable(version.sh version.sh.c)
- set_target_properties(version.sh PROPERTIES LINK_FLAGS "${LDFLAGS}")
+ # Generate version_sh executable to create version.h from the contents of version.sh, setting it's linker flags as well
+ add_executable(version_sh version.sh.c)
+ set_target_properties(version_sh PROPERTIES LINK_FLAGS "${LDFLAGS}")
+ # Generate version.h from the above executable and the version.log file from the main source directory, with dependencies to the given headers and all source files in the main Anope build
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/version.h
- COMMAND version.sh ${Anope_SOURCE_DIR}/version.log ${CMAKE_CURRENT_SOURCE_DIR}/version.sh ${CMAKE_CURRENT_BINARY_DIR}/version.h
- MAIN_DEPENDENCY version.sh DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/services.h ${CMAKE_CURRENT_SOURCE_DIR}/pseudo.h ${CMAKE_CURRENT_SOURCE_DIR}/messages.h ${SRC_SRCS}
+ COMMAND version_sh ${Anope_SOURCE_DIR}/version.log ${CMAKE_CURRENT_SOURCE_DIR}/version.sh ${CMAKE_CURRENT_BINARY_DIR}/version.h
+ MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/version.sh DEPENDS version_sh ${CMAKE_CURRENT_SOURCE_DIR}/services.h ${CMAKE_CURRENT_SOURCE_DIR}/pseudo.h ${CMAKE_CURRENT_SOURCE_DIR}/messages.h ${SRC_SRCS}
)
-else(WIN32)
+# For any non-Visual Studio platforms that do have sh, we will run version.h through the version.h shell script
+else(MSVC OR NOT SH)
+ # Generate version.h from version.sh and the version.log file from the main source directory, with dependencies to the given headers and all source files in the main Anope build
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/version.h
- #COMMAND ${CMAKE_COMMAND} -E copy ${Anope_SOURCE_DIR}/version.log ../
COMMAND ${SH} ${CMAKE_CURRENT_SOURCE_DIR}/version.sh ${Anope_SOURCE_DIR}/version.log ${CMAKE_CURRENT_BINARY_DIR}/version.h
- #COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR}/version.h ${CMAKE_CURRENT_SOURCE_DIR}/
- #COMMAND ${CMAKE_COMMAND} -E remove ../version.log
MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/version.sh DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/services.h ${CMAKE_CURRENT_SOURCE_DIR}/pseudo.h ${CMAKE_CURRENT_SOURCE_DIR}/messages.h ${SRC_SRCS}
- # MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/version.sh DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/services.h ${CMAKE_CURRENT_SOURCE_DIR}/pseudo.h ${CMAKE_CURRENT_SOURCE_DIR}/messages.h
)
-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)
-
-#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
-# MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/extern.h DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/sysconf.h ${CMAKE_CURRENT_SOURCE_DIR}/config.h
-#)
-#add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/extern.h
-# COMMAND ${CMAKE_COMMAND} -E touch_nocreate ${CMAKE_CURRENT_SOURCE_DIR}/extern.h
-# MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/slist.h
-#)
-#add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/pseudo.h
-# COMMAND ${CMAKE_COMMAND} -E touch_nocreate ${CMAKE_CURRENT_SOURCE_DIR}/pseudo.h
-# MAIN_DEPENDENCY ${CMAKE_CURRENT_SOURCE_DIR}/timeout.h DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/commands.h ${CMAKE_CURRENT_SOURCE_DIR}/encrypt.h ${CMAKE_CURRENT_SOURCE_DIR}/datafiles.h ${CMAKE_CURRENT_SOURCE_DIR}/slist.h
-#)
-#add_dependencies(${CMAKE_CURRENT_SOURCE_DIR}/version.h src_srcs)
-#add_custom_target(include_version_h ALL DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/version.h)
-#add_custom_target(include_version_h DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/version.h)
-#add_dependencies(include_version_h src_srcs)
-
-#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})
-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)
+endif(MSVC OR NOT SH)
-set(HEADERS_CLEAN ${CMAKE_CURRENT_BINARY_DIR}/version.h)
-set_directory_properties(PROPERTIES CLEAN_NO_CUSTOM yes ADDITIONAL_MAKE_CLEAN_FILES "${HEADERS_CLEAN}")
+# Add a custom target to the above file
+add_custom_target(headers DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/version.h)