From 81b7aa657110db03ceb861d8206fc6e805ede9c8 Mon Sep 17 00:00:00 2001 From: cyberbotx Date: Wed, 17 Dec 2008 20:18:40 +0000 Subject: 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 --- include/CMakeLists.txt | 96 ++++++++----------------------------------------- include/extern.h | 2 +- include/modules.h | 2 +- include/sysconf.h.cmake | 6 ---- 4 files changed, 17 insertions(+), 89 deletions(-) (limited to 'include') 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) diff --git a/include/extern.h b/include/extern.h index 8bbf3fde5..c10614133 100644 --- a/include/extern.h +++ b/include/extern.h @@ -569,7 +569,7 @@ E const char version_build[]; E char *version_protocol; E const char version_flags[]; -E const char *services_dir; +E std::string services_dir; E const char *log_filename; E int debug; E int readonly; diff --git a/include/modules.h b/include/modules.h index dc00807c9..32310617c 100644 --- a/include/modules.h +++ b/include/modules.h @@ -34,7 +34,7 @@ typedef void * ano_module_t; #define ano_modopen(file) dlopen(file, RTLD_LAZY) #define ano_moderr() dlerror() -#define ano_modsym(file, symbol) dlsym(file, DL_PREFIX symbol) +#define ano_modsym(file, symbol) dlsym(file, symbol) #define ano_modclose(file) dlclose(file) /* We call dlerror() here because it clears the module error after being * called. This previously read 'errno = 0', but that didn't work on diff --git a/include/sysconf.h.cmake b/include/sysconf.h.cmake index e7464492d..c19e634cf 100644 --- a/include/sysconf.h.cmake +++ b/include/sysconf.h.cmake @@ -17,14 +17,8 @@ #cmakedefine HAVE_SYS_SELECT_H 1 #cmakedefine HAVE_UMASK 1 #cmakedefine HAVE_VA_LIST_AS_ARRAY 1 -// Temporary, change elsewhere to be SERVICES_DIR/modules/ -#define MODULE_PATH "@SERVICES_DIR@/modules/" #cmakedefine RUNGROUP "@RUNGROUP@" #cmakedefine SERVICES_BIN "@SERVICES_BIN@" -#cmakedefine SERVICES_DIR "@SERVICES_DIR@" - -// Temporary, remove from here later as well as elsewhere in the code -#define DL_PREFIX "" #cmakedefine HAVE_UINT8_T 1 #cmakedefine HAVE_U_INT8_T 1 -- cgit