diff options
Diffstat (limited to 'qt4/cmake/modules/TelepathyDefaults.cmake')
-rw-r--r-- | qt4/cmake/modules/TelepathyDefaults.cmake | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/qt4/cmake/modules/TelepathyDefaults.cmake b/qt4/cmake/modules/TelepathyDefaults.cmake new file mode 100644 index 000000000..0886fecf2 --- /dev/null +++ b/qt4/cmake/modules/TelepathyDefaults.cmake @@ -0,0 +1,146 @@ +# Enable testing using CTest +enable_testing() + +# Always include srcdir and builddir in include path +# This saves typing ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} in about every subdir +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +# put the include dirs which are in the source or build tree +# before all other include dirs, so the headers in the sources +# are prefered over the already installed ones +set(CMAKE_INCLUDE_DIRECTORIES_PROJECT_BEFORE ON) + +# Use colored output +set(CMAKE_COLOR_MAKEFILE ON) + +# Set compiler flags +if(CMAKE_COMPILER_IS_GNUCXX) + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -ggdb") + set(CMAKE_CXX_FLAGS_RELEASE "-O2 -DNDEBUG") + set(CMAKE_CXX_FLAGS_DEBUG "-ggdb -O2 -fno-reorder-blocks -fno-schedule-insns -fno-inline") + set(CMAKE_CXX_FLAGS_DEBUGFULL "-O0 -g3 -ggdb -fno-inline") + set(CMAKE_CXX_FLAGS_PROFILE "-pg -g3 -ggdb -DNDEBUG") + + set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -ggdb") + set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG") + set(CMAKE_C_FLAGS_DEBUG "-ggdb -O2 -fno-reorder-blocks -fno-schedule-insns -fno-inline") + set(CMAKE_C_FLAGS_DEBUGFULL "-O0 -g3 -ggdb -fno-inline") + set(CMAKE_C_FLAGS_PROFILE "-pg -g3 -ggdb -DNDEBUG") + + set(CMAKE_EXE_LINKER_FLAGS_PROFILE "-pg -ggdb") + set(CMAKE_SHARED_LINKER_FLAGS_PROFILE "-pg -ggdb") + + set(DISABLE_WERROR 0 CACHE BOOL "compile without -Werror (normally enabled in development builds)") + + include(CompilerWarnings) + include(TestCXXAcceptsFlag) + + CHECK_CXX_ACCEPTS_FLAG("-fvisibility=hidden" CXX_FVISIBILITY_HIDDEN) + if (CXX_FVISIBILITY_HIDDEN) + set(VISIBILITY_HIDDEN_FLAGS "-fvisibility=hidden") + else (CXX_FVISIBILITY_HIDDEN) + set(VISIBILITY_HIDDEN_FLAGS) + endif (CXX_FVISIBILITY_HIDDEN) + + CHECK_CXX_ACCEPTS_FLAG("-Wdeprecated-declarations" CXX_DEPRECATED_DECLARATIONS) + if (CXX_DEPRECATED_DECLARATIONS) + set(DEPRECATED_DECLARATIONS_FLAGS "-Wdeprecated-declarations -DTELEPATHY_QT4_DEPRECATED_WARNINGS") + else (CXX_DEPRECATED_DECLARATIONS) + set(DEPRECATED_DECLARATIONS_FLAGS) + endif (CXX_DEPRECATED_DECLARATIONS) + + if(${TP_QT4_NANO_VERSION} EQUAL 0) + set(NOT_RELEASE 0) + else(${TP_QT4_NANO_VERSION} EQUAL 0) + set(NOT_RELEASE 1) + endif(${TP_QT4_NANO_VERSION} EQUAL 0) + + set(desired + all + extra + sign-compare + pointer-arith + format-security + init-self + non-virtual-dtor) + set(undesired + missing-field-initializers + unused-parameter) + compiler_warnings(CMAKE_CXX_FLAGS_WARNINGS cxx ${NOT_RELEASE} "${desired}" "${undesired}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_WARNINGS}") + + set(desired_c + all + extra + declaration-after-statement + shadow + strict-prototypes + missing-prototypes + sign-compare + nested-externs + pointer-arith + format-security + init-self) + set(undesired_c + missing-field-initializers + unused-parameter) + compiler_warnings(CMAKE_C_FLAGS_WARNINGS c ${NOT_RELEASE} "${desired_c}" "${undesired_c}") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_WARNINGS}") + + # Link development builds with -Wl,--no-add-needed + # TODO: binutils 2.21 renames the flag to --no-copy-dt-needed-entries, though it keeps the old + # one as a deprecated alias. + if(${NOT_RELEASE} EQUAL 1) + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--no-add-needed") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--no-add-needed") + endif(${NOT_RELEASE} EQUAL 1) + + if(CMAKE_SYSTEM_NAME MATCHES Linux) + add_definitions(-D_BSD_SOURCE) + endif(CMAKE_SYSTEM_NAME MATCHES Linux) + + # Compiler coverage + set(ENABLE_COMPILER_COVERAGE OFF CACHE BOOL "Enables compiler coverage tests through lcov. Enabling this option will build +Telepathy-Qt4 as a static library.") + + if (ENABLE_COMPILER_COVERAGE) + check_cxx_accepts_flag("-fprofile-arcs -ftest-coverage" CXX_FPROFILE_ARCS) + check_cxx_accepts_flag("-ftest-coverage" CXX_FTEST_COVERAGE) + + if (CXX_FPROFILE_ARCS AND CXX_FTEST_COVERAGE) + find_program(LCOV lcov) + find_program(LCOV_GENHTML genhtml) + if (NOT LCOV OR NOT LCOV_GENHTML) + message(FATAL_ERROR "You chose to use compiler coverage tests, but lcov or genhtml could not be found in your PATH.") + else (NOT LCOV OR NOT LCOV_GENHTML) + message(STATUS "Compiler coverage tests enabled - Telepathy-Qt4 will be compiled as a static library") + set(COMPILER_COVERAGE_FLAGS "-fprofile-arcs -ftest-coverage") + endif (NOT LCOV OR NOT LCOV_GENHTML) + else (CXX_FPROFILE_ARCS AND CXX_FTEST_COVERAGE) + message(FATAL_ERROR "You chose to use compiler coverage tests, but it appears your compiler is not able to support them.") + endif (CXX_FPROFILE_ARCS AND CXX_FTEST_COVERAGE) + else (ENABLE_COMPILER_COVERAGE) + set(COMPILER_COVERAGE_FLAGS) + endif (ENABLE_COMPILER_COVERAGE) + + # gcc under Windows + if(MINGW) + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--export-all-symbols -Wl,--disable-auto-import") + set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--export-all-symbols -Wl,--disable-auto-import") + + # we always link against the release version of QT with mingw + # (even for debug builds). So we need to define QT_NO_DEBUG + # or else QPluginLoader rejects plugins because it thinks + # they're built against the wrong QT. + add_definitions(-DQT_NO_DEBUG) + endif(MINGW) +endif(CMAKE_COMPILER_IS_GNUCXX) + +if(MSVC) + set(ESCAPE_CHAR ^) +endif(MSVC) + +set(LIB_SUFFIX "" CACHE STRING "Define suffix of library directory name (32/64)" ) +set(LIB_INSTALL_DIR "lib${LIB_SUFFIX}" CACHE PATH "The subdirectory where libraries will be installed (default is ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX})" FORCE) +set(INCLUDE_INSTALL_DIR "include" CACHE PATH "The subdirectory where header files will be installed (default is ${CMAKE_INSTALL_PREFIX}/include)" FORCE) +set(DATA_INSTALL_DIR "share/telepathy" CACHE PATH "The subdirectory where data files will be installed (default is ${CMAKE_INSTALL_PREFIX}/share/telepathy)" FORCE) |