diff options
| author | cyberbotx <cyberbotx@5417fbe8-f217-4b02-8779-1006273d7864> | 2008-12-17 20:16:25 +0000 |
|---|---|---|
| committer | cyberbotx <cyberbotx@5417fbe8-f217-4b02-8779-1006273d7864> | 2008-12-17 20:16:25 +0000 |
| commit | 1cd73b4dadb8e618a0ec56289408922be42aac8a (patch) | |
| tree | b437cb421d0ed2da6eca57ec4925a8b740aa00d1 | |
| parent | 1fca479d8eb793bf6473226ff248cfe7b814a3e8 (diff) | |
Implemented CMake build system to replace the old autoconf-based build system.
(Note: Although each Makefile was changed, they will be removed later as CMake reconstructs them.)
Also fixed generation of language files and version.h to not rely on the current directory they are in.
Edited Config to send parameters to cmake, but it is no longer a requirement.
git-svn-id: http://anope.svn.sourceforge.net/svnroot/anope/trunk@1835 5417fbe8-f217-4b02-8779-1006273d7864
| -rw-r--r-- | CMakeLists.txt | 166 | ||||
| -rwxr-xr-x | Config | 332 | ||||
| -rw-r--r-- | data/CMakeLists.txt | 6 | ||||
| -rw-r--r-- | include/CMakeLists.txt | 69 | ||||
| -rw-r--r-- | include/Makefile | 188 | ||||
| -rw-r--r-- | include/sysconf.h.cmake | 78 | ||||
| -rw-r--r-- | include/version.sh | 8 | ||||
| -rw-r--r-- | lang/CMakeLists.txt | 84 | ||||
| -rw-r--r-- | lang/Makefile | 304 | ||||
| -rw-r--r-- | lang/langcomp.c | 21 | ||||
| -rwxr-xr-x | run-cc.pl | 2 | ||||
| -rw-r--r-- | src/CMakeLists.txt | 114 | ||||
| -rw-r--r-- | src/Makefile | 1401 | ||||
| -rw-r--r-- | src/bin/CMakeLists.txt | 8 | ||||
| -rw-r--r-- | src/bin/anoperc.cmake | 141 | ||||
| -rw-r--r-- | src/core/CMakeLists.txt | 64 | ||||
| -rw-r--r-- | src/core/Makefile | 5479 | ||||
| -rw-r--r-- | src/modules/CMakeLists.txt | 59 | ||||
| -rw-r--r-- | src/modules/Makefile | 568 | ||||
| -rw-r--r-- | src/protocol/CMakeLists.txt | 59 | ||||
| -rw-r--r-- | src/protocol/Makefile | 398 | ||||
| -rw-r--r-- | src/tools/CMakeLists.txt | 57 | ||||
| -rw-r--r-- | src/tools/Makefile | 308 | ||||
| -rw-r--r-- | va_list_check.c | 19 |
24 files changed, 9399 insertions, 534 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 000000000..e5ea631fd --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,166 @@ +cmake_minimum_required(VERSION 2.6) + +# +# If the user specifies -DCMAKE_BUILD_TYPE on the command line, take their definition +# and dump it in the cache along with proper documentation, otherwise set CMAKE_BUILD_TYPE +# to Debug prior to calling PROJECT() +# +IF(CMAKE_BUILD_TYPE) + SET(CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE} CACHE STRING "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.") +ELSE(CMAKE_BUILD_TYPE) + SET(CMAKE_BUILD_TYPE DEBUG CACHE STRING "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.") +ENDIF(CMAKE_BUILD_TYPE) + +project(Anope CXX) +enable_language(C) + +include(CheckFunctionExists) +include(CheckIncludeFile) +include(CheckTypeSize) +include(CheckCXXCompilerFlag) +include(CheckLibraryExists) + +option(USE_RUN_CC_PL "Use run-cc.pl for building" OFF) + +set(CXXFLAGS "${CXXFLAGS} ${CMAKE_CXX_CFLAGS} -Wall -ansi -pedantic -Wshadow -fno-leading-underscore -export-dynamic -I${Anope_SOURCE_DIR}/include -I${Anope_BINARY_DIR}/include -I${Anope_BINARY_DIR}/lang") +#message(STATUS "CMAKE_BUILD_TYPE: ${CMAKE_BUILD_TYPE}") +if(CMAKE_BUILD_TYPE) + set(CXXFLAGS "${CXXFLAGS} ${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}}") +endif(CMAKE_BUILD_TYPE) + +if(CMAKE_DL_LIBS) + set(LDFLAGS "${LDFLAGS} ${CMAKE_DL_LIBS}") +endif(CMAKE_DL_LIBS) + +#set(MY_COMPILER ${CMAKE_CXX_COMPILER}) +#set(MY_COMP_ARG) +set(CMAKE_CXX_LINK_EXECUTABLE "<CMAKE_CXX_COMPILER> ${CXXFLAGS} <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> ${LDFLAGS}") +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}") + +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) + +try_run(RUN_VA_LIST_AS_ARRAY COMPILE_VA_LIST_AS_ARRAY + ${Anope_SOURCE_DIR} ${Anope_SOURCE_DIR}/va_list_check.c +) +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) + +if(NOT DEFUMASK) + if(RUNGROUP) + set(DEFUMASK "007") + else(RUNGROUP) + set(DEFUMASK "077") + endif(RUNGROUP) +endif(NOT DEFUMASK) +check_include_file(sys/types.h HAVE_SYS_TYPES_H) +check_include_file(execinfo.h HAVE_BACKTRACE) +check_function_exists(gethostbyname HAVE_GETHOSTBYNAME) +check_function_exists(gettimeofday HAVE_GETTIMEOFDAY) +check_function_exists(setgrent HAVE_SETGRENT) +check_function_exists(strcasecmp HAVE_STRCASECMP) +check_function_exists(stricmp HAVE_STRICMP) +check_include_file(strings.h HAVE_STRINGS_H) +check_function_exists(strlcat HAVE_STRLCAT) +check_function_exists(strlcpy HAVE_STRLCPY) +check_include_file(sys/select.h HAVE_SYS_SELECT_H) +check_function_exists(umask HAVE_UMASK) +check_type_size(int16_t INT16_T) +check_type_size(uint16_t UINT16_T) +check_type_size(u_int16_t U_INT16_T) +check_type_size(int32_t INT32_T) +check_type_size(uint32_t UINT32_T) +check_type_size(u_int32_t U_INT32_T) + +if(BINDIR) + set(SERVICES_BIN "${BINDIR}/services") +else(BINDIR) + set(SERVICES_BIN "$ENV{HOME}/services/services") + set(BINDIR "$ENV{HOME}/services") +endif(BINDIR) + +if(DATADIR) + set(SERVICES_DIR "${DATADIR}") + #set(MODULE_PATH "${DATADIR}/modules/") +else(DATADIR) + set(SERVICES_DIR "$ENV{HOME}/services") + #set(MODULE_PATH "$ENV{HOME}/services/modules/") + set(DATADIR "$ENV{HOME}/services") +endif(DATADIR) + +configure_file(${Anope_SOURCE_DIR}/include/sysconf.h.cmake ${Anope_SOURCE_DIR}/include/sysconf.h) +configure_file(${Anope_SOURCE_DIR}/src/bin/anoperc.cmake ${Anope_SOURCE_DIR}/src/bin/anoperc) + +if(CXXFLAGS) + string(STRIP ${CXXFLAGS} CXXFLAGS) +endif(CXXFLAGS) +if(LDFLAGS) + string(STRIP ${LDFLAGS} LDFLAGS) +endif(LDFLAGS) + +find_program(GREP grep) +find_program(SH sh) +find_program(CHGRP chgrp) +find_program(CHMOD chmod) +#message(STATUS "grep: ${GREP}") +find_program(PERL perl) +if(PERL) + if(USE_RUN_CC_PL) + #set(MY_COMPILER ${Anope_SOURCE_DIR}/run-cc.pl) + #set(MY_COMP_ARG ${CMAKE_CXX_COMPILER}) + set(CMAKE_CXX_COMPILE_OBJECT "${Anope_SOURCE_DIR}/run-cc.pl <CMAKE_CXX_COMPILER> <DEFINES> <FLAGS> -o <OBJECT> -c <SOURCE>") + set(CMAKE_CXX_LINK_EXECUTABLE "${Anope_SOURCE_DIR}/run-cc.pl <CMAKE_CXX_COMPILER> ${CXXFLAGS} <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> ${LDFLAGS}") + set(CMAKE_CXX_CREATE_SHARED_MODULE "${Anope_SOURCE_DIR}/run-cc.pl <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(USE_RUN_CC_PL) +endif(PERL) + +#set(CMAKE_BUILD_TYPE DEBUG) +#message(STATUS "CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}: ${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}}") +#message(STATUS "CMAKE_CXX_COMPILE_OBJECT: ${CMAKE_CXX_COMPILE_OBJECT}") +#set(CMAKE_CXX_COMPILE_OBJECT "${Anope_SOURCE_DIR}/run-cc.pl <CMAKE_CXX_COMPILER> <DEFINES> <FLAGS> -o <OBJECT> -c <SOURCE>") +#message(STATUS "CMAKE_CXX_COMPILE_OBJECT: ${CMAKE_CXX_COMPILE_OBJECT}") +# CMAKE_CXX_COMPILE_OBJECT: <CMAKE_CXX_COMPILER> <DEFINES> <FLAGS> -o <OBJECT> -c <SOURCE> +# CMAKE_CXX_CREATE_SHARED_LIBRARY: <CMAKE_CXX_COMPILER> <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> <LINK_LIBRARIES> +# CMAKE_CXX_CREATE_SHARED_MODULE: <CMAKE_CXX_COMPILER> <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> <LINK_LIBRARIES> +# CMAKE_CXX_FLAGS_DEBUG: -g +# CMAKE_CXX_FLAGS_RELEASE: -O3 -DNDEBUG +# CMAKE_CXX_LINK_EXECUTABLE: <CMAKE_CXX_COMPILER> <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES> +# CMAKE_CXX_OUTPUT_EXTENSION: .o +# CMAKE_SHARED_LIBRARY_CXX_FLAGS: -fPIC +# CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS: -shared +# CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG: -Wl,-soname, + +add_subdirectory(data) +add_subdirectory(lang) +add_subdirectory(src) +add_subdirectory(include) + +install(CODE "file(MAKE_DIRECTORY \"${DATADIR}/backups\")") +install(CODE "file(MAKE_DIRECTORY \"${DATADIR}/logs\")") +install(CODE "file(MAKE_DIRECTORY \"${DATADIR}/modules/runtime\")") +if(RUNGROUP) + install(CODE "execute_process(COMMAND ${CHMOD} 2775 \"${DATADIR}/backups\")") + install(CODE "execute_process(COMMAND ${CHMOD} 2775 \"${DATADIR}/logs\")") + install(CODE "execute_process(COMMAND ${CHMOD} 2775 \"${DATADIR}/modules/runtime\")") + install(CODE "execute_process(COMMAND ${CHGRP} -R ${RUNGROUP} \"${DATADIR}\")") +endif(RUNGROUP) @@ -14,73 +14,80 @@ ########################################################################### echo2 () { - $ECHO2 "$*$ECHO2SUF" # these are defined later + $ECHO2 "$*$ECHO2SUF" # these are defined later } -exists () { # because some shells don't have test -e - if [ -f $1 -o -d $1 -o -p $1 -o -c $1 -o -b $1 ] ; then - return 0 - else - return 1 - fi +exists () { # because some shells don't have test -e + if [ -f $1 -o -d $1 -o -p $1 -o -c $1 -o -b $1 ] ; then + return 0 + else + return 1 + fi } Load_Cache () { - if [ -f config.cache -a -r config.cache -a ! "$IGNORE_CACHE" ] ; then - echo "Using defaults from config.cache. To ignore, ./Config -nocache" - echo "" - . config.cache - CAN_QUICK="yes" - else - CAN_QUICK="no" - fi + if [ -f config.cache -a -r config.cache -a ! "$IGNORE_CACHE" ] ; then + echo "Using defaults from config.cache. To ignore, ./Config -nocache" + echo "" + . config.cache + CAN_QUICK="yes" + else + CAN_QUICK="no" + fi } -Run_Configure () { -WITH_BIN="" -WITH_DATA="" -WITH_ENC="" -WITH_RUN="" -WITH_PERM="" -WITH_MYSQL="" - -if [ "$BINDEST" != "" ] ; then - WITH_BIN=" --with-bindir=$BINDEST" - WITH_DATA=" --with-datadir=$DATDEST" -fi +Run_CMake () { + WITH_BIN="" + WITH_DATA="" + WITH_RUN="" + WITH_PERM="" + BUILD_TYPE="" + RUN_CC_PL="" + + if [ "$BINDEST" != "" ] ; then + WITH_BIN="-DBINDIR:STRING=$BINDEST" + WITH_DATA="-DDATADIR:STRING=$DATDEST" + fi -if [ "$DATDEST" != "" ] ; then - WITH_DATA=" --with-datadir=$DATDEST" -fi + if [ "$DATDEST" != "" ] ; then + WITH_DATA="-DDATADIR:STRING=$DATDEST" + fi -if [ "$RUNGROUP" != "" ] ; then - WITH_RUN=" --with-rungroup=$RUNGROUP" -fi + if [ "$RUNGROUP" != "" ] ; then + WITH_RUN="-DRUNGROUP:STRING=$RUNGROUP" + fi -if [ "$UMASK" != "" ] ; then - WITH_PERM=" --with-permissions=$UMASK" -fi + if [ "$UMASK" != "" ] ; then + WITH_PERM="-DDEFUMASK:STRING=$UMASK" + fi -if [ "$MYSQL" != "yes" ] ; then - WITH_MYSQL=" --without-mysql" -fi + if [ "$DEBUG" = "yes" ] ; then + BUILD_TYPE="-DCMAKE_BUILD_TYPE:STRING=DEBUG" + else + BUILD_TYPE="-DCMAKE_BUILD_TYPE:STRING=RELEASE" + fi + if [ "$USE_RUN_CC_PL" = "yes" ] ; then + RUN_CC_PL="-DUSE_RUN_CC_PL:BOOLEAN=ON" + else + RUN_CC_PL="-DUSE_RUN_CC_PL:BOOLEAN=OFF" + fi -echo "./configure $WITH_BIN $WITH_DATA $WITH_ENC $WITH_RUN $WITH_PERM $WITH_MYSQL --with-debugsym" + echo "cmake $WITH_BIN $WITH_DATA $WITH_RUN $WITH_PERM $BUILD_TYPE $RUN_CC_PL ." -./configure $WITH_BIN $WITH_DATA $WITH_ENC $WITH_RUN $WITH_PERM $WITH_MYSQL + cmake $WITH_BIN $WITH_DATA $WITH_RUN $WITH_PERM $BUILD_TYPE $RUN_CC_PL . } ECHO2SUF='' if [ "`echo -n a ; echo -n b`" = "ab" ] ; then ECHO2='echo -n' elif [ "`echo 'a\c' ; echo 'b\c'`" = "ab" ] ; then - ECHO2='echo' ; ECHO2SUF='\c' + ECHO2='echo' ; ECHO2SUF='\c' elif [ "`printf 'a' 2>&1 ; printf 'b' 2>&1`" = "ab" ] ; then - ECHO2='printf "%s"' + ECHO2='printf "%s"' else - # oh well... - ECHO2='echo' + # oh well... + ECHO2='echo' fi export ECHO2 ECHO2SUF @@ -92,46 +99,49 @@ BINDEST=$HOME/services DATDEST=$HOME/services RUNGROUP= UMASK= -IRCTYPE="no default" +DEBUG="no" +RUN_CC_PL="no" CAN_QUICK="no" ########################################################################### # Check out the options ########################################################################### + while [ $# -ge 1 ] ; do - if [ $1 = "--help" ] ; then - echo "Config utility for Anope" - echo "------------------------" - echo "Syntax: ./Config [options]" - echo "-nocache Ignore settings saved in config.cache" - echo "-nointro Skip intro (disclaimer, etc)" - echo "-quick Skip questions, go straight to configure" - exit 0 - elif [ $1 = "-nocache" ] ; then - IGNORE_CACHE="1" - elif [ $1 = "-nointro" ] ; then - NO_INTRO="1" - elif [ $1 = "-quick" -o $1 = "-q" ] ; then - Load_Cache - if [ $CAN_QUICK = "yes" ] ; then - Run_Configure - else - echo "" - echo "Can't find cache file (config.cache), aborting..." - fi - exit 0 - fi - shift 1 + if [ $1 = "--help" ] ; then + echo "Config utility for Anope" + echo "------------------------" + echo "Syntax: ./Config [options]" + echo "-nocache Ignore settings saved in config.cache" + echo "-nointro Skip intro (disclaimer, etc)" + echo "-quick Skip questions, go straight to cmake" + exit 0 + elif [ $1 = "-nocache" ] ; then + IGNORE_CACHE="1" + elif [ $1 = "-nointro" ] ; then + NO_INTRO="1" + elif [ $1 = "-quick" -o $1 = "-q" ] ; then + Load_Cache + if [ "$CAN_QUICK" = "yes" ] ; then + Run_CMake + else + echo "" + echo "Can't find cache file (config.cache), aborting..." + fi + exit 0 + fi + shift 1 done ########################################################################### + if [ ! "$NO_INTRO" ] ; then - clear + clear . ./version.log - cat .BANNER | sed "s/CURVER/$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH$VERSION_EXTRA/" | more - echo "" + cat .BANNER | sed "s/CURVER/$VERSION_MAJOR.$VERSION_MINOR.$VERSION_PATCH$VERSION_EXTRA/" | more + echo "" else - echo "" + echo "" fi echo "Beginning Services configuration." @@ -140,8 +150,9 @@ echo "" ########################################################################### # Load the cache ########################################################################### + if [ ! "$IGNORE_CACHE" ] ; then - Load_Cache + Load_Cache fi # Ask the user anything we need to know ahead of time. @@ -188,29 +199,29 @@ echo "" ok=0 echo "Where do you want the data files to be installed?" while [ $ok -eq 0 ] ; do - echo2 "[$DATDEST] " - if read INPUT ; then : ; else echo "" ; exit 1 ; fi - if [ ! "$INPUT" ] ; then - INPUT=$DATDEST - fi - if [ ! -d "$INPUT" ] ; then - if exists "$INPUT" ; then - echo "$INPUT exists, but is not a directory!" - else - echo "$INPUT does not exist. Create it?" - echo2 "[y] " - read YN - if [ "$YN" != "n" ] ; then - if mkdir -p $INPUT ; then - ok=1 - fi - fi - fi - elif exists "$INPUT/include/services.h" ; then - echo "You cannot use the Services source directory as a target directory." - else - ok=1 - fi + echo2 "[$DATDEST] " + if read INPUT ; then : ; else echo "" ; exit 1 ; fi + if [ ! "$INPUT" ] ; then + INPUT=$DATDEST + fi + if [ ! -d "$INPUT" ] ; then + if exists "$INPUT" ; then + echo "$INPUT exists, but is not a directory!" + else + echo "$INPUT does not exist. Create it?" + echo2 "[y] " + read YN + if [ "$YN" != "n" ] ; then + if mkdir -p $INPUT ; then + ok=1 + fi + fi + fi + elif exists "$INPUT/include/services.h" ; then + echo "You cannot use the Services source directory as a target directory." + else + ok=1 + fi done DATDEST=$INPUT echo "" @@ -220,91 +231,102 @@ echo "" OLD_RUNGROUP="$RUNGROUP" if [ "$RUNGROUP" ] ; then - echo "Which group should all Services data files be owned by? (If Services" - echo "should not force files to be owned by a particular group, type "\"none\" - echo "(without the quotes) and press Return.)" + echo "Which group should all Services data files be owned by? (If Services" + echo "should not force files to be owned by a particular group, type \"none\"" + echo "(without the quotes) and press Return.)" else - echo "Which group should all Services data files be owned by? (If Services" - echo "should not force files to be owned by a particular group, just press" - echo "Return.)" + echo "Which group should all Services data files be owned by? (If Services" + echo "should not force files to be owned by a particular group, just press" + echo "Return.)" fi echo2 "[$RUNGROUP] " if read INPUT ; then : ; else echo "" ; exit 1 ; fi if [ "$INPUT" ] ; then - if [ "$INPUT" = "none" ] ; then - RUNGROUP="" - else - RUNGROUP="$INPUT" - fi + if [ "$INPUT" = "none" ] ; then + RUNGROUP="" + else + RUNGROUP="$INPUT" + fi fi echo "" #### if [ ! "$UMASK" -o "$RUNGROUP" != "$OLD_RUNGROUP" ] ; then - if [ "$RUNGROUP" ] ; then - UMASK=007 - else - UMASK=077 - fi + if [ "$RUNGROUP" ] ; then + UMASK=007 + else + UMASK=077 + fi fi ok=0 echo "What should the default umask for data files be (in octal)?" echo "(077 = only accessible by owner; 007 = accessible by owner and group)" while [ $ok -eq 0 ] ; do - echo2 "[$UMASK] " - if read INPUT ; then : ; else echo "" ; exit 1 ; fi - if [ ! "$INPUT" ] ; then - INPUT=$UMASK - fi - if [ `echo "$INPUT" | grep -c '[^0-7]'` -gt 0 ] ; then - echo "$UMASK is not a valid octal number!" - else - if [ "`echo $INPUT | cut -c1`" != "0" ] ; then - INPUT=0$INPUT - fi - ok=1 - fi + echo2 "[$UMASK] " + if read INPUT ; then : ; else echo "" ; exit 1 ; fi + if [ ! "$INPUT" ] ; then + INPUT=$UMASK + fi + if [ `echo "$INPUT" | grep -c '[^0-7]'` -gt 0 ] ; then + echo "$UMASK is not a valid octal number!" + else + if [ "`echo $INPUT | cut -c1`" != "0" ] ; then + INPUT=0$INPUT + fi + ok=1 + fi done UMASK=$INPUT echo "" #### -ok=0 -DEF=yes -echo "Allow anope to automatically check for mysql libaries?" -echo "unless you get errors with make, there is no need to" -echo "change this setting." -while [ $ok -eq 0 ] ; do - echo2 "[$DEF] " - if read INPUT ; then : ; else echo "" ; exit 1 ; fi - if [ ! "$INPUT" ] ; then - INPUT=$DEF - fi - case $INPUT in - n*|N*) - MYSQL= - ok=1 - ;; - y*|Y*) - MYSQL="yes" - ok=1 - ;; - *) - echo "Please enter 'yes' or 'no'." - ;; - esac -done +TEMP_YN="n" +if [ "$DEBUG" = "yes" ] ; then + TEMP_YN="y" +fi +echo "Would you like to build a debug version of Anope?" +echo2 "[$TEMP_YN] " +read YN +if [ "$YN" ] ; then + if [ "$YN" = "y" ] ; then + DEBUG="yes" + else + DEBUG="no" + fi +fi echo "" #### +TEMP_YN="n" +if [ "$RUN_CC_PL" = "yes" ] ; then + TEMP_YN="y" +fi +echo "You can optionally have the build run through run-cc.pl, which will" +echo "cause warnings and errors (if any) to be colored yellow and run," +echo "respectively. This relies on Perl being installed, so if you say yes" +echo "to this without Perl, the option will be ignored." +echo "Would you like to utilize run-cc.pl?" +echo2 "[$TEMP_YN] " +read YN +if [ "$YN" ] ; then + if [ "$YN" = "y" ] ; then + RUN_CC_PL="yes" + else + RUN_CC_PL="no" + fi +fi +echo "" + +#### ################################################################################ # Store values ################################################################################ + echo2 "Saving configuration results in config.cache... " cat <<EOT >config.cache @@ -312,9 +334,8 @@ BINDEST="$BINDEST" DATDEST="$DATDEST" RUNGROUP="$RUNGROUP" UMASK=$UMASK -IRCTYPE="$IRCTYPE" -IRCTYPE_DEF="$IRCTYPE_DEF" -MYSQL="$MYSQL" +DEBUG="$DEBUG" +RUN_CC_PL="$RUN_CC_PL" EOT echo "done." @@ -322,4 +343,5 @@ echo "done." ################################################################################ # Build the configure string ################################################################################ -Run_Configure + +Run_CMake diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt new file mode 100644 index 000000000..cecdad423 --- /dev/null +++ b/data/CMakeLists.txt @@ -0,0 +1,6 @@ +file(GLOB DATA RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "*") +list(REMOVE_ITEM DATA CMakeLists.txt CMakeFiles Makefile cmake_install.cmake) +install(FILES ${DATA} + DESTINATION "${DATADIR}" +) + diff --git a/include/CMakeLists.txt b/include/CMakeLists.txt new file mode 100644 index 000000000..8deeef120 --- /dev/null +++ b/include/CMakeLists.txt @@ -0,0 +1,69 @@ +# 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 sysconf.h config.h sockets.h defs.h slist.h events.h bots.h account.h regchannel.h users.h extern.h configreader.h) + +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 + #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 +) + +foreach(HEADER ${HEADERS_REL}) + add_custom_command(OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/${HEADER} + COMMAND ${CMAKE_COMMAND} -E touch_nocreate ${CMAKE_CURRENT_SOURCE_DIR}/${HEADER} + ) + set(HEADERS_FULL ${HEADERS_FULL} ${CMAKE_CURRENT_SOURCE_DIR}/${HEADER}) + set(HEADERS) + if(${HEADER}_HEADERS) + foreach(HEADER ${${HEADER}_HEADERS}) + string(SUBSTRING ${HEADER} 0 1 FIRST_CHAR) + if(FIRST_CHAR STREQUAL "/") + set(HEADERS ${HEADERS} ${HEADER}) + else(FIRST_CHAR STREQUAL "/") + set(HEADERS ${HEADERS} ${Anope_SOURCE_DIR}/include/${HEADER}) + endif(FIRST_CHAR STREQUAL "/") + endforeach(HEADER) + 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}) +#add_dependencies(include include_version_h) + +set_directory_properties(PROPERTIES CLEAN_NO_CUSTOM yes ADDITIONAL_MAKE_CLEAN_FILES "${CMAKE_CURRENT_BINARY_DIR}/version.h ${CMAKE_CURRENT_BINARY_DIR}/language.h") diff --git a/include/Makefile b/include/Makefile index b5641c71b..0f6f17e9b 100644 --- a/include/Makefile +++ b/include/Makefile @@ -1,20 +1,182 @@ +# CMAKE generated file: DO NOT EDIT! +# Generated by "Unix Makefiles" Generator, CMake Version 2.6 -all: services.h extern.h pseudo.h version.h +# Default target executed when no arguments are given to make. +default_target: all +.PHONY : default_target -version.h: Makefile version.sh services.h pseudo.h messages.h $(SRCS) - sh version.sh +#============================================================================= +# Special targets provided by cmake. -services.h: sysconf.h config.h extern.h - touch $@ +# Disable implicit rules so canoncical targets will work. +.SUFFIXES: -extern.h: slist.h - touch $@ +# Remove some rules from gmake that .SUFFIXES does not remove. +SUFFIXES = -pseudo.h: commands.h timeout.h encrypt.h datafiles.h slist.h - touch $@ +.SUFFIXES: .hpux_make_needs_suffix_list -clean: - (rm -f language.h) +# Suppress display of executed commands. +$(VERBOSE).SILENT: + +# A target that is always out of date. +cmake_force: +.PHONY : cmake_force + +#============================================================================= +# Set environment variables for the build. + +# The shell in which to execute make rules. +SHELL = /bin/sh + +# The CMake executable. +CMAKE_COMMAND = /usr/local/bin/cmake + +# The command to remove a file. +RM = /usr/local/bin/cmake -E remove -f + +# The program to use to edit the cache. +CMAKE_EDIT_COMMAND = /usr/local/bin/ccmake + +# The top-level source directory on which CMake was run. +CMAKE_SOURCE_DIR = /celes/anope + +# The top-level build directory on which CMake was run. +CMAKE_BINARY_DIR = /celes/anope + +#============================================================================= +# Targets provided globally by CMake. + +# Special rule for the target edit_cache +edit_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake cache editor..." + cd /celes/anope/include && /usr/local/bin/ccmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : edit_cache + +# Special rule for the target edit_cache +edit_cache/fast: edit_cache +.PHONY : edit_cache/fast + +# Special rule for the target install +install: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + cd /celes/anope/include && /usr/local/bin/cmake -P cmake_install.cmake +.PHONY : install + +# Special rule for the target install +install/fast: preinstall/fast + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Install the project..." + cd /celes/anope/include && /usr/local/bin/cmake -P cmake_install.cmake +.PHONY : install/fast + +# Special rule for the target install/local +install/local: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing only the local directory..." + cd /celes/anope/include && /usr/local/bin/cmake -DCMAKE_INSTALL_LOCAL_ONLY=1 -P cmake_install.cmake +.PHONY : install/local + +# Special rule for the target install/local +install/local/fast: install/local +.PHONY : install/local/fast + +# Special rule for the target install/strip +install/strip: preinstall + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Installing the project stripped..." + cd /celes/anope/include && /usr/local/bin/cmake -DCMAKE_INSTALL_DO_STRIP=1 -P cmake_install.cmake +.PHONY : install/strip + +# Special rule for the target install/strip +install/strip/fast: install/strip +.PHONY : install/strip/fast + +# Special rule for the target list_install_components +list_install_components: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Available install components are: \"Unspecified\"" +.PHONY : list_install_components + +# Special rule for the target list_install_components +list_install_components/fast: list_install_components +.PHONY : list_install_components/fast + +# Special rule for the target rebuild_cache +rebuild_cache: + @$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..." + cd /celes/anope/include && /usr/local/bin/cmake -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) +.PHONY : rebuild_cache + +# Special rule for the target rebuild_cache +rebuild_cache/fast: rebuild_cache +.PHONY : rebuild_cache/fast + +# The main all target +all: cmake_check_build_system + cd /celes/anope && $(CMAKE_COMMAND) -E cmake_progress_start /celes/anope/CMakeFiles /celes/anope/include/CMakeFiles/progress.make + cd /celes/anope && $(MAKE) -f CMakeFiles/Makefile2 include/all + $(CMAKE_COMMAND) -E cmake_progress_start /celes/anope/CMakeFiles 0 +.PHONY : all + +# The main clean target +clean: + cd /celes/anope && $(MAKE) -f CMakeFiles/Makefile2 include/clean +.PHONY : clean + +# The main clean target +clean/fast: clean +.PHONY : clean/fast + +# Prepare targets for installation. +preinstall: all + cd /celes/anope && $(MAKE) -f CMakeFiles/Makefile2 inc |
