diff options
| author | 2008-04-19 01:29:52 +0000 | |
|---|---|---|
| committer | 2008-04-19 01:29:52 +0000 | |
| commit | 19f53db5887ffcd9770946a793aeda3eb52d42a8 (patch) | |
| tree | fbe95b34013c36a7d306bf0b8f92c8b9326d5b58 | |
| parent | quick fix (diff) | |
| download | KVIrc-19f53db5887ffcd9770946a793aeda3eb52d42a8.tar.gz KVIrc-19f53db5887ffcd9770946a793aeda3eb52d42a8.tar.bz2 KVIrc-19f53db5887ffcd9770946a793aeda3eb52d42a8.zip | |
CMake: offer a nice interface for the user to switch the options on/off. Use WANT_<something> for any feature that can be enabled or disabled. Provide a short description for the option.
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@1514 17fca916-40b9-46aa-a4ea-0a15b648b75c
| -rw-r--r-- | CMakeLists.txt | 207 | ||||
| -rw-r--r-- | cmake/kvi_sysconfig.h.cmake | 9 |
2 files changed, 139 insertions, 77 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 1aec4f769..6582c2d9f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -91,19 +91,24 @@ CHECK_INCLUDE_FILES(strings.h SYSTEM_HAS_STRINGS_H) #INCLUDE(TestBigEndian) #TEST_BIG_ENDIAN(SYSTEM_IS_BIG_ENDIAN) -OPTION(WANT_PCH "Whether to use pre-compiled headers" ON) -IF(WANT_PCH) - FIND_PACKAGE(PCHSupport) - IF(PCHSupport_FOUND) - SET(CMAKE_STATUS_PCH_SUPPORT "yes") - LIST(APPEND CMAKE_KVIRC_BUILD_FLAGS -DUSE_PCH=1) - ELSE() - SET(CMAKE_STATUS_PCH_SUPPORT "not available") - ENDIF() -ELSE() - ADD_DEFINITIONS(-DUSE_PCH=0) - SET(CMAKE_STATUS_PCH_SUPPORT "user disabled") -ENDIF() +############################################################################### +# Option for precompiled headers usage (currently broken because of bad gcc support) +############################################################################### +# +#OPTION(WANT_PCH "Whether to use pre-compiled headers" ON) +#IF(WANT_PCH) +# FIND_PACKAGE(PCHSupport) +# IF(PCHSupport_FOUND) +# SET(CMAKE_STATUS_PCH_SUPPORT "yes") +# LIST(APPEND CMAKE_KVIRC_BUILD_FLAGS -DUSE_PCH=1) +# ELSE() +# SET(CMAKE_STATUS_PCH_SUPPORT "not available") +# ENDIF() +#ELSE() +# ADD_DEFINITIONS(-DUSE_PCH=0) +# SET(CMAKE_STATUS_PCH_SUPPORT "user disabled") +#ENDIF() +# ############################################################################### # @@ -165,7 +170,10 @@ ELSE() SET(CMAKE_STATUS_X11_SUPPORT "not needed") ENDIF() +############################################################################ # Check for Qt4 +############################################################################ + FIND_PACKAGE(Qt4 REQUIRED) IF(QT4_FOUND) SET(QT_USE_QT3SUPPORT true) @@ -190,15 +198,18 @@ IF(QT4_FOUND) SET(CMAKE_STATUS_PHONON_SUPPORT "not available") ENDIF() - ADD_DEFINITIONS(-DCOMPILE_USE_QT4) + SET(COMPILE_USE_QT4 1) INCLUDE(${QT_USE_FILE}) INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR} ${QT_INCLUDES}) LIST(APPEND LIBS ${QT_LIBRARIES}) ENDIF() +############################################################################ # Check for KDE4 -OPTION(WITH_KDE4 "Whether to use kde4 support (experimental)" OFF) -IF(WITH_KDE4) +############################################################################ + +OPTION(WANT_KDE4 "Whether to use kde4 support (experimental)" OFF) +IF(WANT_KDE4) FIND_PACKAGE(KDE4) IF(KDE4_FOUND) INCLUDE_DIRECTORIES(${KDE4_INCLUDES}) @@ -212,66 +223,99 @@ IF(WITH_KDE4) SET(CMAKE_STATUS_KDE4_SUPPORT "not available") ENDIF() ELSE() - SET(CMAKE_STATUS_KDE4_SUPPORT "not requested") + SET(CMAKE_STATUS_KDE4_SUPPORT "user disabled") ENDIF() +############################################################################ # Check for MacOS X universal binary -IF(COMPILE_UNIVERSAL) - IF(APPLE) +############################################################################ + +IF(APPLE) + OPTION(WANT_UNIVERSAL_BINARY "Whether to compile an Universal Binary on MacOSX" OFF) + + IF(WANT_UNIVERSAL_BINARY) SET(CMAKE_OSX_ARCHITECTURES ppc;i386) - SET(CMAKE_STATUS_UNIVERSAL_SUPPORT "yes") - LIST(APPEND CMAKE_KVIRC_BUILD_FLAGS -DCOMPILE_UNIVERSAL=1) + SET(CMAKE_STATUS_BUILD_UNIVERSAL_BINARY "yes") + LIST(APPEND CMAKE_KVIRC_BUILD_FLAGS -DCOMPILE_MACOSX_UNIVERSAL_BINARY=1) #FIXME: This should be handled with CMAKE_OSX_SYSROOT (TOM) #SET(CMAKE_SHARED_LINKER_FLAGS "-mmacosx-version-min=10.4") #SET(CMAKE_EXE_LINKER_FLAGS "-mmacosx-version-min=10.4") + ELSE() + SET(CMAKE_STATUS_BUILD_UNIVERSAL_BINARY "no") ENDIF() ELSE() - SET(CMAKE_STATUS_UNIVERSAL_SUPPORT "not available") + SET(CMAKE_STATUS_BUILD_UNIVERSAL_BINARY "not applicable") ENDIF() -# Check for OpenSSL -FIND_PACKAGE(OpenSSL) -IF(OPENSSL_FOUND) - INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR}) - LIST(APPEND LIBS ${OPENSSL_LIBRARIES}) - ADD_DEFINITIONS(-DCOMPILE_SSL_SUPPORT) - ADD_DEFINITIONS(-DCOMPILE_CRYPT_SUPPORT) - LIST(APPEND CMAKE_KVIRC_BUILD_FLAGS -DCOMPILE_SSL_SUPPORT=1) - LIST(APPEND CMAKE_KVIRC_BUILD_FLAGS -DCOMPILE_CRYPT_SUPPORT=1) - SET(CMAKE_STATUS_SSL_SUPPORT "yes") - SET(CMAKE_STATUS_CRYPT_SUPPORT "yes") - IF(APPLE) - LIST(APPEND LIBS -lcrypto) +############################################################################ +# OpenSSL support (Secure Sockets, Certificates, Digests etc...) +############################################################################ + +OPTION(WANT_OPENSSL "Whether to use OpenSSL library, if found" ON) + +IF(WANT_OPENSSL) + FIND_PACKAGE(OpenSSL) + IF(OPENSSL_FOUND) + INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR}) + LIST(APPEND LIBS ${OPENSSL_LIBRARIES}) + SET(COMPILE_SSL_SUPPORT 1) + LIST(APPEND CMAKE_KVIRC_BUILD_FLAGS -DCOMPILE_SSL_SUPPORT=1) + SET(CMAKE_STATUS_SSL_SUPPORT "yes") + SET(CMAKE_STATUS_CRYPT_SUPPORT "yes") + IF(APPLE) + LIST(APPEND LIBS -lcrypto) + ENDIF() + ELSE() + SET(CMAKE_STATUS_SSL_SUPPORT "not available") ENDIF() ELSE() - SET(CMAKE_STATUS_SSL_SUPPORT "not available") + SET(CMAKE_STATUS_SSL_SUPPORT "user disabled") ENDIF() -# Check for crypt support, enabled per default -IF(WITHOUT_CRYPT) - REMOVE_DEFINITIONS(-DCOMPILE_CRYPT_SUPPORT) - LIST(APPEND CMAKE_KVIRC_BUILD_FLAGS -DWITHOUT_CRYPT) - SET(CMAKE_STATUS_CRYPT_SUPPORT "no") +############################################################################ +# Crypt engines support +############################################################################ + +OPTION(WANT_CRYPT "Compile Cryptographic Support and Engines" ON) + +IF(WANT_CRYPT) + SET(COMPILE_CRYPT_SUPPORT 1) + LIST(APPEND CMAKE_KVIRC_BUILD_FLAGS -DCOMPILE_CRYPT_SUPPORT=1) + SET(CMAKE_STATUS_CRYPT_SUPPORT "yes") +ELSE() + SET(CMAKE_STATUS_CRYPT_SUPPORT "user disabled") ENDIF() -# Check for IPv6 support, enabled per default -ADD_DEFINITIONS(-DCOMPILE_IPV6_SUPPORT) -SET(CMAKE_STATUS_IPv6_SUPPORT "yes") -IF(WITHOUT_IPV6) - REMOVE_DEFINITIONS(-DCOMPILE_IPV6_SUPPORT) - LIST(APPEND CMAKE_KVIRC_BUILD_FLAGS -DWITHOUT_IPv6) - SET(CMAKE_STATUS_IPv6_SUPPORT "no") +############################################################################ +# IPV6 support +############################################################################ + +OPTION(WANT_IPV6 "Compile IPV6 Support" ON) + +IF(WANT_IPV6) + SET(COMPILE_IPV6_SUPPORT 1) + SET(CMAKE_STATUS_IPV6_SUPPORT "yes") + LIST(APPEND CMAKE_KVIRC_BUILD_FLAGS -DCOMPILE_IPV6_SUPPORT) +ELSE() + SET(CMAKE_STATUS_IPV6_SUPPORT "user disabled") ENDIF() -# Check for pseudo transparency support -ADD_DEFINITIONS(-DWITHOUT_TRANSPARENCY) -SET(CMAKE_STATUS_TRANSPARENCY_SUPPORT "yes") -IF(WITHOUT_TRANSPARENCY) - REMOVE_DEFINITIONS(-DWITHOUT_TRANSPARENCY) - LIST(APPEND CMAKE_KVIRC_BUILD_FLAGS -DWITHOUT_TRANSPARENCY) - SET(CMAKE_STATUS_TRANSPARENCY_SUPPORT "no") +############################################################################ +# Do we want pseudo-transparency ? +############################################################################ + +OPTION(WANT_TRANSPARENCY "Compile Pseudo-Transparency Support" ON) + +IF(WANT_TRANSPARENCY) + SET(CMAKE_STATUS_TRANSPARENCY_SUPPORT "yes") + SET(COMPILE_PSEUDO_TRANSPARENCY 1) + LIST(APPEND CMAKE_KVIRC_BUILD_FLAGS -DCOMPILE_PSEUDO_TRANSPARENCY) +ELSE() + SET(CMAKE_STATUS_TRANSPARENCY_SUPPORT "user disabled") ENDIF() + + # Check for Perl support # FIXME: This shouldn't be required (we should be able to live without it) FIND_PACKAGE(Perl REQUIRED) @@ -474,6 +518,17 @@ CONFIGURE_FILE( IMMEDIATE @ONLY ) +############################################################################### +# Mark as advanced some variables we really don't want to see in "simple" mode +# All of them *should* be auto-detected. +############################################################################### + +MARK_AS_ADVANCED(FORCE QT_QMAKE_EXECUTABLE) +MARK_AS_ADVANCED(FORCE GETTEXT_MSGFMT_EXECUTABLE) +MARK_AS_ADVANCED(FORCE GETTEXT_MSGMERGE_EXECUTABLE) +MARK_AS_ADVANCED(FORCE LIBRARY_OUTPUT_PATH) +MARK_AS_ADVANCED(FORCE CMAKE_BACKWARDS_COMPATIBILITY) +MARK_AS_ADVANCED(FORCE EXECUTABLE_OUTPUT_PATH) ############################################################################### # FINAL OUTPUT @@ -485,30 +540,30 @@ IF(${CONFIG_IS_UPTODATE}) MESSAGE(STATUS "(I found an old config that was exactly the same and kept it to save compilation time)") ENDIF() MESSAGE(STATUS " ") -MESSAGE(STATUS " Threading : ${CMAKE_STATUS_THREADS_SUPPORT}") -MESSAGE(STATUS " X11 support : ${CMAKE_STATUS_X11_SUPPORT}") -MESSAGE(STATUS " PCH support : ${CMAKE_STATUS_PCH_SUPPORT}") -MESSAGE(STATUS " Phonon support : ${CMAKE_STATUS_PHONON_SUPPORT}") -MESSAGE(STATUS " KDE4 support : ${CMAKE_STATUS_KDE4_SUPPORT}") -MESSAGE(STATUS " Universal support : ${CMAKE_STATUS_UNIVERSAL_SUPPORT}") -MESSAGE(STATUS " SSL support : ${CMAKE_STATUS_SSL_SUPPORT}") -MESSAGE(STATUS " Crypt support : ${CMAKE_STATUS_CRYPT_SUPPORT}") -MESSAGE(STATUS " IPv6 support : ${CMAKE_STATUS_IPv6_SUPPORT}") -MESSAGE(STATUS " Transparency support : ${CMAKE_STATUS_TRANSPARENCY_SUPPORT}") -MESSAGE(STATUS " Perl support : ${CMAKE_STATUS_PERL_SUPPORT}") -MESSAGE(STATUS " IPC support : ${CMAKE_STATUS_IPC_SUPPORT}") -MESSAGE(STATUS " System memmove support : ${CMAKE_STATUS_SYSTEM_MEMMOVE_SUPPORT}") -MESSAGE(STATUS " GSM support : ${CMAKE_STATUS_GSM_SUPPORT}") -MESSAGE(STATUS " DCC voice support : ${CMAKE_STATUS_DCC_VOICE_SUPPORT}") -MESSAGE(STATUS " Dynamic labels support : ${CMAKE_STATUS_DYN_LABELS_SUPPORT}") +MESSAGE(STATUS " Threading : ${CMAKE_STATUS_THREADS_SUPPORT}") +MESSAGE(STATUS " X11 support : ${CMAKE_STATUS_X11_SUPPORT}") +#MESSAGE(STATUS " PCH support : ${CMAKE_STATUS_PCH_SUPPORT}") +MESSAGE(STATUS " Phonon support : ${CMAKE_STATUS_PHONON_SUPPORT}") +MESSAGE(STATUS " KDE4 support : ${CMAKE_STATUS_KDE4_SUPPORT}") +MESSAGE(STATUS " OpenSSL Support : ${CMAKE_STATUS_SSL_SUPPORT}") +MESSAGE(STATUS " Crypt Support and Engines : ${CMAKE_STATUS_CRYPT_SUPPORT}") +MESSAGE(STATUS " IPV6 support : ${CMAKE_STATUS_IPV6_SUPPORT}") +MESSAGE(STATUS " Pseudo-Transparency Support : ${CMAKE_STATUS_TRANSPARENCY_SUPPORT}") +MESSAGE(STATUS " Perl support : ${CMAKE_STATUS_PERL_SUPPORT}") +MESSAGE(STATUS " IPC support : ${CMAKE_STATUS_IPC_SUPPORT}") +MESSAGE(STATUS " System memmove support : ${CMAKE_STATUS_SYSTEM_MEMMOVE_SUPPORT}") +MESSAGE(STATUS " GSM support : ${CMAKE_STATUS_GSM_SUPPORT}") +MESSAGE(STATUS " DCC voice support : ${CMAKE_STATUS_DCC_VOICE_SUPPORT}") +MESSAGE(STATUS " Dynamic labels support : ${CMAKE_STATUS_DYN_LABELS_SUPPORT}") +MESSAGE(STATUS " Build Universal Binary : ${CMAKE_STATUS_BUILD_UNIVERSAL_BINARY}") -MESSAGE(STATUS " ix86 asm support : ${CMAKE_STATUS_ix86_ASM_SUPPORT}") -MESSAGE(STATUS " Memory profile support : ${CMAKE_STATUS_MEMORY_PROFILE_SUPPORT}") -MESSAGE(STATUS " Memory checks support : ${CMAKE_STATUS_MEMORY_CHECKS_SUPPORT}") -MESSAGE(STATUS " Doxygen support : ${CMAKE_STATUS_DOXYGEN_SUPPORT}") +MESSAGE(STATUS " ix86 asm support : ${CMAKE_STATUS_ix86_ASM_SUPPORT}") +MESSAGE(STATUS " Memory profile support : ${CMAKE_STATUS_MEMORY_PROFILE_SUPPORT}") +MESSAGE(STATUS " Memory checks support : ${CMAKE_STATUS_MEMORY_CHECKS_SUPPORT}") +MESSAGE(STATUS " Doxygen support : ${CMAKE_STATUS_DOXYGEN_SUPPORT}") MESSAGE(STATUS " ") -MESSAGE(STATUS " Build date : ${CMAKE_KVIRC_BUILD_DATE}") +MESSAGE(STATUS " Build date : ${CMAKE_KVIRC_BUILD_DATE}") MESSAGE(STATUS " ") MESSAGE(STATUS "I'm ready to build kvirc for you: please type 'make' now...") MESSAGE(STATUS " ") diff --git a/cmake/kvi_sysconfig.h.cmake b/cmake/kvi_sysconfig.h.cmake index 6ecca39ea..6c6b8f8e8 100644 --- a/cmake/kvi_sysconfig.h.cmake +++ b/cmake/kvi_sysconfig.h.cmake @@ -18,9 +18,16 @@ #cmakedefine COMPILE_THREADS_USE_POSIX 1 #cmakedefine COMPILE_THREADS_USE_WIN32 1 #cmakedefine COMPILE_THREADS_USE_SOLARIS_LIBTHREAD 1 -#define COMPILE_USE_STANDALONE_MOC_SOURCES 1 +#cmakedefine COMPILE_CRYPT_SUPPORT 1 +#cmakedefine COMPILE_SSL_SUPPORT 1 #cmakedefine COMPILE_X11_SUPPORT 1 +#cmakedefine COMPILE_IPV6_SUPPORT 1 +#cmakedefine COMPILE_PSEUDO_TRANSPARENCY
1 +#cmakedefine COMPILE_USE_QT4 1 + +#define COMPILE_USE_STANDALONE_MOC_SOURCES 1 + #define KVIRC_VERSION_RELEASE "${CMAKE_KVIRC_VERSION_RELEASE}" #define KVIRC_VERSION_BRANCH "${CMAKE_KVIRC_VERSION_BRANCH}" |
