X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=CMakeLists.txt;h=e59a517674f45c3bc14b9960c940b23c3c896649;hp=00674330710ade8989765ab56c9563188c8c9538;hb=7db27b8f24670fd40cf24755f2782a104ad24594;hpb=e87df0bb071ba21d6e3d6a47cb797c135605eba5 diff --git a/CMakeLists.txt b/CMakeLists.txt index 0067433..e59a517 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,13 +1,17 @@ -PROJECT(madmutt C) +SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/Modules) + +PROJECT(madmutt C D) SET(PACKAGE madmutt) -SET(CMAKE_MODULE_PATH ${madmutt_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH}) -# TODO {{{ -# USE_SETGID -# DOTLOCK_{GROUP,PERMISSION} -# }}} +# Using Phobos OR Tango (can be specified from cmake command line) +if (NOT CMAKE_D_USE_PHOBOS AND NOT CMAKE_D_USE_TANGO) + # default to phobos + message(STATUS "This application can be built with either Phobos or Tango!") + message(STATUS "You did not specify a standard library -- defaulting to Phobos.") + message(STATUS "If you wish to use Tango add -DCMAKE_D_USE_TANGO=True to cmake command line.") + set(CMAKE_D_USE_PHOBOS True) +endif (NOT CMAKE_D_USE_PHOBOS AND NOT CMAKE_D_USE_TANGO) -INCLUDE(CMakeDetermineCCompiler) include(Cpkg2c) include(XConfig) @@ -32,23 +36,13 @@ ADD_DEFINITIONS("-DMUTTLOCALEDIR=\\\"${DATADIR}/locale\\\"") SET(MAILPATH CACHE STRING "Where new mail is spooled") OPTION(WITH_GPGME "Use GPGME [default: on]" ON) -OPTION(WITH_NNTP "Build NNTP support [default: off]") OPTION(WITH_IDN "Use GNU libidn for domain names [default: off]") -OPTION(WITH_LIBESMTP "Use libESMTP [default: off]") -OPTION(WITH_SLANG "Use S-Lang instead of ncurses [default:off]") - -OPTION(USE_FLOCK "Use flock to lock files [default: off]") -OPTION(USE_FCNTL "Use fcntl to lock files [default: on]" ON) OPTION(USE_HCACHE "Enable headers caching [default: off]") FIND_FILE(SENDMAIL sendmail PATHS /usr/sbin /sbin /usr/lib DOC "path to sendmail executable" ) -FIND_FILE(MIXMASTER mixmaster DOC "path to mixmaster") -IF(NOT MIXMASTER) - SET(MIXMASTER "mixmaster") -ENDIF(NOT MIXMASTER) IF(NOT MAILPATH) IF(EXISTS /var/mail) @@ -77,8 +71,6 @@ CHECK_INCLUDE_FILE(langinfo.h HAVE_LANGINFO_H) CHECK_INCLUDE_FILE(limits.h HAVE_LIMITS_H) CHECK_INCLUDE_FILE(locale.h HAVE_LOCALE_H) CHECK_INCLUDE_FILE(memory.h HAVE_MEMORY_H) -CHECK_INCLUDE_FILE(ncurses.h HAVE_NCURSES_H) -CHECK_INCLUDE_FILE(ncurses/ncurses.h HAVE_NCURSES_NCURSES_H) CHECK_INCLUDE_FILE(ncursesw/ncurses.h HAVE_NCURSESW_NCURSES_H) CHECK_INCLUDE_FILE(regex.h HAVE_REGEX_H) CHECK_INCLUDE_FILE(stdarg.h HAVE_STDARG_H) @@ -117,75 +109,36 @@ INCLUDE (CheckFunctionExists) CHECK_FUNCTION_EXISTS(strlimit HAVE_SETRLIMIT) CHECK_FUNCTION_EXISTS(getsid HAVE_GETSID) CHECK_FUNCTION_EXISTS(setegid HAVE_SETEGID) -CHECK_FUNCTION_EXISTS(isctype HAVE_ISCTYPE) CHECK_FUNCTION_EXISTS(getopt HAVE_GETOPT) -CHECK_FUNCTION_EXISTS(regcomp HAVE_REGCOMP) -CHECK_FUNCTION_EXISTS(iswalnum HAVE_ISWALNUM) -CHECK_FUNCTION_EXISTS(iswalpha HAVE_ISWALPHA) -CHECK_FUNCTION_EXISTS(iswcntrl HAVE_ISWCNTRL) -CHECK_FUNCTION_EXISTS(iswdigit HAVE_ISWDIGIT) -CHECK_FUNCTION_EXISTS(iswgraph HAVE_ISWGRAPH) -CHECK_FUNCTION_EXISTS(iswlower HAVE_ISWLOWER) -CHECK_FUNCTION_EXISTS(iswprint HAVE_ISWPRINT) -CHECK_FUNCTION_EXISTS(iswpunct HAVE_ISWPUNCT) -CHECK_FUNCTION_EXISTS(iswspace HAVE_ISWSPACE) -CHECK_FUNCTION_EXISTS(iswupper HAVE_ISWUPPER) -CHECK_FUNCTION_EXISTS(iswxdigit HAVE_ISWXDIGIT) -CHECK_FUNCTION_EXISTS(towupper HAVE_TOWUPPER) -CHECK_FUNCTION_EXISTS(towlower HAVE_TOWLOWER) CHECK_FUNCTION_EXISTS(nl_langinfo HAVE_LANGINFO_CODESET) # }}} # libraries {{{ INCLUDE(CheckLibraryExists) -INCLUDE(UsePkgConfig) - -IF(WITH_SLANG) - IF(EXISTS ${CMAKE_INSTALL_PREFIX}/include/slang) - INCLUDE_DIRECTORIES(${CMAKE_INSTALL_PREFIX}/include/slang) - ELSEIF(EXISTS /usr/include/slang) - INCLUDE_DIRECTORIES(/usr/include/slang) - ENDIF(EXISTS ${CMAKE_INSTALL_PREFIX}/include/slang) - CHECK_LIBRARY_EXISTS(slang SLtt_get_terminfo "" USE_SLANG_CURSES) - IF(NOT USE_SLANG_CURSES) - MESSAGE(FATAL_ERROR "s-lang not found") - ENDIF(NOT USE_SLANG_CURSES) -ELSE(WITH_SLANG) - IF(HAVE_NCURSESW_NCURSES_H) - SET(CMAKE_REQUIRED_INCLUDES "ncursesw/ncurses.h") - SET(MUTTLIBS "${MUTTLIBS} -lncursesw") - ELSEIF(HAVE_NCURSES_H) - SET(CMAKE_REQUIRED_INCLUDES "ncurses.h") - SET(MUTTLIBS "${MUTTLIBS} -lncurses") - ELSEIF(HAVE_NCURSES_H OR HAVE_NCURSES_NCURSES_H) - SET(CMAKE_REQUIRED_INCLUDES "ncurses/ncurses.h") - SET(MUTTLIBS "${MUTTLIBS} -lncurses") - ELSE(HAVE_NCURSESW_NCURSES_H) - MESSAGE(FATAL_ERROR "could not find ncurses.h") - ENDIF(HAVE_NCURSESW_NCURSES_H) - SET(CMAKE_REQUIRED_LIBRARIES ${MUTTLIBS}) - CHECK_FUNCTION_EXISTS(start_color HAVE_START_COLOR) - CHECK_FUNCTION_EXISTS(typeahead HAVE_TYPEAHEAD) - CHECK_FUNCTION_EXISTS(bkgdset HAVE_BKGDSET) - CHECK_FUNCTION_EXISTS(curs_set HAVE_CURS_SET) - CHECK_FUNCTION_EXISTS(meta HAVE_META) - CHECK_FUNCTION_EXISTS(use_default_colors HAVE_USE_DEFAULT_COLORS) - CHECK_FUNCTION_EXISTS(resizeterm HAVE_RESIZETERM) - SET(CMAKE_REQUIRED_LIBRARIES) - SET(CMAKE_REQUIRED_INCLUDES) -ENDIF(WITH_SLANG) - -PKGCONFIG(lua5.1 lua_INCDIR lua_LINKDIR lua_LDFLAGS lua_CFLAGS) -MESSAGE(STATUS "found lua5.1 at: INCDIR ${lua_INCDIR}") -INCLUDE_DIRECTORIES(${lua_INCDIR}) -ADD_DEFINITIONS(${lua_CFLAGS}) -SET(MUTTLIBS "${MUTTLIBS} ${lua_LDFLAGS}") +INCLUDE(FindPkgConfig) + +FIND_LIBRARY(LIBUTIL NAMES util) +IF(NOT LIBUTIL) + MESSAGE(FATAL_ERROR "could not find libutil") +ENDIF(NOT LIBUTIL) +LIST(APPEND MUTTLIBS -lutil) + +FIND_LIBRARY(NCURSESW NAMES ncursesw) +IF(NOT NCURSESW OR NOT HAVE_NCURSESW_NCURSES_H) + MESSAGE(FATAL_ERROR "could not libncursesw") +ENDIF(NOT NCURSESW OR NOT HAVE_NCURSESW_NCURSES_H) +SET(CMAKE_REQUIRED_INCLUDES "ncursesw/ncurses.h") +LIST(APPEND MUTTLIBS -lncursesw) + +pkg_search_module(LUA REQUIRED lua5.1) +ADD_DEFINITIONS(${LUA_CFLAGS}) +LIST(APPEND MUTTLIBS ${LUA_LDFLAGS}) IF(WITH_GPGME) XCONFIG(gpgme-config gpgme_INCDIR gpgme_LINKDIR gpgme_LDFLAGS gpgme_CFLAGS) INCLUDE_DIRECTORIES(${gpgme_INCDIR}) ADD_DEFINITIONS(${gpgme_CFLAGS}) - SET(MUTTLIBS "${MUTTLIBS} ${gpgme_LDFLAGS}") + LIST(APPEND MUTTLIBS ${gpgme_LDFLAGS}) SET(HAVE_GPGME 1) ENDIF(WITH_GPGME) @@ -193,45 +146,45 @@ XCONFIG(libgnutls-config gnutls_INCDIR gnutls_LINKDIR gnutls_LDFLAGS gnutls_CFLA INCLUDE_DIRECTORIES(${gnutls_INCDIR}) ADD_DEFINITIONS(${gnutls_CFLAGS}) CHECK_INCLUDE_FILE(gnutls/openssl.h HAVE_GNUTLS_OPENSSL_H) -SET(MUTTLIBS "${MUTTLIBS} ${gnutls_LDFLAGS}") +LIST(APPEND MUTTLIBS ${gnutls_LDFLAGS}) CHECK_LIBRARY_EXISTS(sasl2 sasl_client_init "" WITH_SASL) IF(NOT WITH_SASL) MESSAGE(FATAL_ERROR "sasl2 not found") ENDIF(NOT WITH_SASL) -SET(MUTTLIBS "${MUTTLIBS} -lsasl2") +LIST(APPEND MUTTLIBS -lsasl2) IF(WITH_IDN) - PKGCONFIG(libidn idn_INCDIR idn_LINKDIR idn_LDFLAGS idn_CFLAGS) - SET(MUTTLIBS "${MUTTLIBS} ${idn_LDFLAGS}") + pkg_search_module(IDN REQUIRED libidn) + LIST(APPEND MUTTLIBS ${IDN_LDFLAGS}) SET(HAVE_LIBIDN 1) ENDIF(WITH_IDN) +CHECK_LIBRARY_EXISTS(lockfile lockfile_create "" WITH_LOCKFILE) +IF(NOT WITH_LOCKFILE) + MESSAGE(FATAL_ERROR "lockfile not found") +ENDIF(NOT WITH_LOCKFILE) +LIST(APPEND MUTTLIBS -llockfile) + IF(USE_HCACHE) - OPTION(WITH_QDBM "Use qdbm for header caching [default: on]" ON) + OPTION(WITH_TC "Use tokyocabinet for header caching [default: on]" ON) OPTION(WITH_GDBM "Use gdbm for header caching [default: off]") SET(USE_HCACHE) - IF(WITH_QDBM) - PKGCONFIG(qdbm qdbm_INCDIR qdbm_LINKDIR qdbm_LDFLAGS qdbm_CFLAGS) - IF(qdbm_LDFLAGS) - MESSAGE(STATUS "qdbm found") - ELSE(qdbm_LDFLAGS) - MESSAGE(FATAL_ERROR "qdbm not found") - ENDIF(qdbm_LDFLAGS) - INCLUDE_DIRECTORIES(${qdbm_INCDIR}) - ADD_DEFINITIONS(${qdbm_CFLAGS}) - SET(MUTTLIBS "${MUTTLIBS} ${qdbm_LDFLAGS}") + if(WITH_TC) + pkg_search_module(TC REQUIRED tokyocabinet) + ADD_DEFINITIONS(${TC_CFLAGS}) + LIST(APPEND MUTTLIBS ${TC_LDFLAGS}) SET(USE_HCACHE 1) - SET(HAVE_QDBM 1) - ENDIF(WITH_QDBM) + SET(HAVE_TOKYOCABINET 1) + ENDIF(WITH_TC) IF(NOT USE_HCACHE AND WITH_GDBM) CHECK_LIBRARY_EXISTS(gdbm gdbm_open "" GDBM) IF(NOT GDBM) MESSAGE(FATAL_ERROR "gdbm not found") ENDIF(NOT GDBM) - SET(MUTTLIBS "${MUTTLIBS} -lgdbm") + LIST(APPEND MUTTLIBS -lgdbm) SET(USE_HCACHE 1) SET(HAVE_GDBM 1) ENDIF(NOT USE_HCACHE AND WITH_GDBM) @@ -241,16 +194,6 @@ IF(USE_HCACHE) ENDIF(NOT USE_HCACHE) ENDIF(USE_HCACHE) -IF(WITH_LIBESMTP) - SET(USE_LIBESMTP 1) - SET(MUTTLIBS "${MUTTLIBS} -lesmtp") -ENDIF(WITH_LIBESMTP) - -IF(WITH_NNTP AND NOT USE_NNTP) - SET(USE_NNTP 1) - MESSAGE(STATUS "building NNTP support") -ENDIF(WITH_NNTP AND NOT USE_NNTP) - # }}} # C flags {{{ # big debug flags @@ -299,6 +242,36 @@ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wmissing-prototypes") # warn about functions without format attribute that should have one SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wmissing-format-attribute") # }}} +# D flags {{{ +# big debug flags +SET(CMAKE_D_FLAGS "${CMAKE_D_FLAGS} -ggdb3") +# Use pipes and not temp files. +SET(CMAKE_D_FLAGS "${CMAKE_D_FLAGS} -pipe") +# optimize even more +SET(CMAKE_D_FLAGS "${CMAKE_D_FLAGS} -O2") +# let the type char be unsigned by default +SET(CMAKE_D_FLAGS "${CMAKE_D_FLAGS} -funsigned-char") +SET(CMAKE_D_FLAGS "${CMAKE_D_FLAGS} -fstrict-aliasing") +# turn on all common warnings +SET(CMAKE_D_FLAGS "${CMAKE_D_FLAGS} -Wall") +# turn on extra warnings +SET(CMAKE_D_FLAGS "${CMAKE_D_FLAGS} -W") +# treat warnings as errors +#SET(CMAKE_D_FLAGS "${CMAKE_D_FLAGS} -Werror") +# warn about local variable shadowing another local variable +SET(CMAKE_D_FLAGS "${CMAKE_D_FLAGS} -Wshadow") +# warn about casting of pointers to increased alignment requirements +SET(CMAKE_D_FLAGS "${CMAKE_D_FLAGS} -Wcast-align") +# warn about comparisons between signed and unsigned values +SET(CMAKE_D_FLAGS "${CMAKE_D_FLAGS} -Wsign-compare") +# warn about unused declared stuff +SET(CMAKE_D_FLAGS "${CMAKE_D_FLAGS} -Wunused") +SET(CMAKE_D_FLAGS "${CMAKE_D_FLAGS} -Wno-unused-parameter") +# warn about variable use before initialization +SET(CMAKE_D_FLAGS "${CMAKE_D_FLAGS} -Wuninitialized") +# let's read GPGME's Reference Manual +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_FILE_OFFSET_BITS=64") +# }}} CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h) @@ -308,11 +281,9 @@ ADD_SUBDIRECTORY(lib-mime) ADD_SUBDIRECTORY(lib-sys) ADD_SUBDIRECTORY(lib-ui) ADD_SUBDIRECTORY(imap) -IF(WITH_NNTP) - ADD_SUBDIRECTORY(nntp) -ENDIF(WITH_NNTP) ADD_SUBDIRECTORY(lib-mx) ADD_SUBDIRECTORY(lib-lua) +ADD_SUBDIRECTORY(po) MADMUTT_SOURCES(madmuttsrc madmuttgen alias.cpkg @@ -323,13 +294,11 @@ MADMUTT_SOURCES(madmuttsrc madmuttgen account.c attach.c - browser.c commands.c compose.c copy.c editmsg.c flags.c - from.c handler.c headers.c help.c @@ -341,11 +310,9 @@ MADMUTT_SOURCES(madmuttsrc madmuttgen mutt_sasl.c pager.c pattern.c - pop.c postpone.c recvattach.c recvcmd.c - remailer.c send.c sendlib.c sort.c @@ -355,16 +322,13 @@ MADMUTT_SOURCES(madmuttsrc madmuttgen main.c ) +STRING(REGEX REPLACE ";" " " MUTTLIBS "${MUTTLIBS}") ADD_EXECUTABLE(madmutt ${madmuttsrc}) -IF(WITH_NNTP) - TARGET_LINK_LIBRARIES(madmutt mime sys mx lua imap nntp ui lib) -ELSE(WITH_NNTP) - TARGET_LINK_LIBRARIES(madmutt mime sys mx lua imap ui lib) -ENDIF(WITH_NNTP) -SET_TARGET_PROPERTIES(madmutt PROPERTIES LINK_FLAGS ${MUTTLIBS}) - -ADD_EXECUTABLE(madmutt_dotlock dotlock.c) -TARGET_LINK_LIBRARIES(madmutt_dotlock lib) +TARGET_LINK_LIBRARIES(madmutt mime sys mx lua ui imap lib) +SET_TARGET_PROPERTIES(madmutt PROPERTIES + LINK_FLAGS "${MUTTLIBS}" + # LINKER_LANGUAGE D +) # generate_files hack {{{