Warning, /system/qtcurve/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 ## Setup
0002 cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
0003 
0004 project(QtCurve)
0005 
0006 include(FeatureSummary)
0007 
0008 ## Temporary
0009 function(translate_add_sources)
0010 endfunction()
0011 
0012 set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}"
0013   "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
0014 
0015 include(CMakeCMacros)
0016 
0017 ## Version
0018 set(QTCURVE_VERSION_MAJOR "1")
0019 set(QTCURVE_VERSION_MINOR "9")
0020 set(QTCURVE_VERSION_PATCH "0-rc1")
0021 set(QTCURVE_VERSION "${QTCURVE_VERSION_MAJOR}.${QTCURVE_VERSION_MINOR}")
0022 set(QTCURVE_VERSION_FULL "${QTCURVE_VERSION}.${QTCURVE_VERSION_PATCH}")
0023 
0024 find_package(Git QUIET)
0025 add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/version.cpp"
0026   DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/tools/gen-version.sh"
0027   WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
0028 add_custom_target(gen-git-ver ALL
0029   COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/tools/gen-version.sh"
0030   "${CMAKE_CURRENT_BINARY_DIR}/version.cpp" "${QTCURVE_VERSION_FULL}"
0031   "${GIT_EXECUTABLE}"
0032   DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/version.cpp")
0033 
0034 ## Options
0035 function(qtc_option name doc def_val)
0036   if(DEFINED "${name}")
0037     set("${name}_DEFINED" On PARENT_SCOPE)
0038   else()
0039     set("${name}_DEFINED" Off PARENT_SCOPE)
0040     set("${name}" "${def_val}" PARENT_SCOPE)
0041   endif()
0042 endfunction()
0043 qtc_option(ENABLE_QT4 "Building Qt4 theme." On)
0044 qtc_option(ENABLE_QT5 "Building Qt5 theme." On)
0045 qtc_option(ENABLE_GTK2 "Building Gtk2 theme." On)
0046 # option(ENABLE_GTK3 "Building Gtk3 theme." On)
0047 option(BUILD_TESTING "Enable testing." On)
0048 option(QTC_ENABLE_X11 "Enable X11" On)
0049 option(QTC_INSTALL_PO "Install translation files." On)
0050 
0051 if(ENABLE_QT4)
0052     qtc_option(QTC_QT4_ENABLE_KDE "Building Qt4 style with KDE4 support." On)
0053 else()
0054     qtc_option(QTC_QT4_ENABLE_KDE "Building Qt4 style with KDE4 support." Off)
0055 endif()
0056 if(ENABLE_QT5)
0057     qtc_option(QTC_QT5_ENABLE_KDE
0058       "Building Qt5 style with KDE Frameworks 5 support." On)
0059 else()
0060     qtc_option(QTC_QT5_ENABLE_KDE
0061       "Building Qt5 style with KDE Frameworks 5 support." Off)
0062 endif()
0063 
0064 option(QTC_QT4_STYLE_SUPPORT
0065   "Qt4 support for creating a style for each QtCurve theme." Off)
0066 
0067 ## Common settings.
0068 # support an infix argument to have different qtcurve-utils libraries, e.g. for
0069 # GTk2, Qt4 and Qt5
0070 qtc_option(QTC_UTILSLIB_INFIX "Infix for having multiple qtcurve-utils's" "")
0071 qtc_option(QTC_KDE4_DEFAULT_HOME
0072   "Path of kde4 home (relative to user home), for reading old theme files only"
0073   ".kde4")
0074 
0075 if((QTC_KDE4_DEFAULT_HOME STREQUAL ".kde4") OR
0076     (QTC_KDE4_DEFAULT_HOME STREQUAL ".kde") OR
0077     (QTC_KDE4_DEFAULT_HOME STREQUAL ".kde4/") OR
0078     (QTC_KDE4_DEFAULT_HOME STREQUAL ".kde/") OR
0079     (QTC_KDE4_DEFAULT_HOME STREQUAL ""))
0080   set(QTC_KDE4_DEFAULT_HOME_DEFAULT True)
0081 else()
0082   set(QTC_KDE4_DEFAULT_HOME_DEFAULT False)
0083 endif()
0084 
0085 # set compiler flags earlier to prevent potential failure running find_package(KDE4)
0086 # glibc 2.20 warns about _BSD_SOURCE if _DEFAULT_SOURCE is not defined.
0087 cmake_c_add_flags(CMAKE_C_FLAGS -Wall -Wextra -Wno-cast-align
0088   -std=gnu99 -D_DEFAULT_SOURCE)
0089 # Register storage class is deprecated in C++11 but is still used in Qt.
0090 # Use compiler option (-Wno-deprecated-register) to suppress
0091 # the warning in clang++.
0092 # We use `override` in certain Qt Classes but the QObject macro does not use it
0093 # Use compiler option (-Wno-inconsistent-missing-override) to suppress
0094 # the warning in clang++ 3.6+.
0095 cmake_c_add_flags(CMAKE_CXX_FLAGS -Wall -Wextra
0096   -Wno-deprecated-register -Wno-cast-align
0097   -Wno-inconsistent-missing-override)
0098 if(NOT APPLE)
0099   # -std=c++0x is deprecated but gcc < 4.7 do not recognise c++11 ....
0100   cmake_c_add_flags(CMAKE_CXX_FLAGS -std=c++0x -D_DEFAULT_SOURCE)
0101   cmake_c_add_flags(CMAKE_SHARED_LINKER_FLAGS -Wl,--as-needed -Wl,--no-undefined)
0102   cmake_c_add_flags(CMAKE_MODULE_LINKER_FLAGS -Wl,--as-needed -Wl,--no-undefined)
0103 else()
0104   cmake_c_add_flags(CMAKE_CXX_FLAGS -std=c++11)
0105 endif()
0106 
0107 if(QTC_QT4_ENABLE_KDE)
0108     find_package(KDE4 QUIET)
0109     set(KDE4_KDECONFIG_EXECUTABLE)
0110     find_program(KDE4_KDECONFIG_EXECUTABLE NAMES kde4-config
0111       PATHS "${CMAKE_INSTALL_PREFIX}/bin" ${_KDEDIRS} /opt/kde4/bin
0112       NO_DEFAULT_PATH)
0113     if(NOT KDE4_KDECONFIG_EXECUTABLE)
0114       find_program(KDE4_KDECONFIG_EXECUTABLE NAMES kde4-config)
0115     endif()
0116 endif()
0117 
0118 function(get_cmd_var varname def cmd)
0119   if(DEFINED ${varname})
0120     return()
0121   endif()
0122   if(cmd)
0123     execute_process(COMMAND "${cmd}" ${ARGN} OUTPUT_VARIABLE _cmd_out
0124       RESULT_VARIABLE _cmd_res)
0125     if("${_cmd_res}" EQUAL 0)
0126       string(STRIP "${_cmd_out}" _cmd_out)
0127     else()
0128       set(_cmd_out "${def}")
0129     endif()
0130   else()
0131     set(_cmd_out "${def}")
0132   endif()
0133   set("${varname}" "${_cmd_out}" PARENT_SCOPE)
0134 endfunction()
0135 
0136 function(get_kde_var var def)
0137   get_cmd_var(_output "${def}" "${KDE4_KDECONFIG_EXECUTABLE}" ${ARGN})
0138   set(${var} "${_output}" PARENT_SCOPE)
0139 endfunction()
0140 
0141 get_kde_var(QTC_KDE4_PREFIX "${CMAKE_INSTALL_PREFIX}" --prefix)
0142 get_kde_var(QTC_KDE4_ICONS_PREFIX "${QTC_KDE4_PREFIX}/share/icons"
0143   --install icon)
0144 
0145 ## Handle options
0146 find_package(Libexecinfo)
0147 if(LIBEXECINFO_LIB_FOUND)
0148   set(QTC_ENABLE_BACKTRACE On)
0149 else()
0150   set(QTC_ENABLE_BACKTRACE Off)
0151 endif()
0152 
0153 if(QTC_ENABLE_X11)
0154   macro(qtc_check_x11)
0155     find_package(PkgConfig)
0156     if(NOT PKG_CONFIG_FOUND)
0157       message(WARNING "Cannot find pkg-config, disable x11 support.")
0158       set(QTC_ENABLE_X11 Off)
0159       set(QTC_X11_FOUND Off)
0160       return()
0161     endif()
0162     unset(__pkg_config_checked_QTC_X11 CACHE)
0163     # pkg_check_modules(QTC_X11 xcb x11-xcb xrender)
0164     if(QTC_ENABLE_X11)
0165       pkg_check_modules(QTC_X11 xcb x11-xcb)
0166     else()
0167       pkg_check_modules(QTC_X11 xcb)
0168     endif()
0169     if(NOT QTC_X11_FOUND AND QTC_ENABLE_X11)
0170       message(WARNING
0171         "Cannot find required modules for x11, disable x11 support.")
0172       set(QTC_ENABLE_X11 Off)
0173       return()
0174     endif()
0175   endmacro()
0176   qtc_check_x11()
0177 else()
0178   set(QTC_X11_FOUND Off)
0179 endif()
0180 
0181 if(QTC_X11_FOUND)
0182   include_directories(${QTC_X11_INCLUDE_DIRS})
0183   add_definitions(${QTC_X11_CFLAGS})
0184 else()
0185   include_directories(SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/lib/xcb-defs")
0186 endif()
0187 
0188 if(ENABLE_GTK2 AND NOT ENABLE_GTK2_DEFINED)
0189   find_package(PkgConfig)
0190   if(NOT PKG_CONFIG_FOUND)
0191     message(WARNING "pkg-config not found, disable Gtk2 build.")
0192     set(ENABLE_GTK2 Off)
0193   else()
0194     unset(__pkg_config_checked_GTK2 CACHE)
0195     pkg_check_modules(GTK2 gtk+-2.0)
0196     if(NOT GTK2_FOUND)
0197       message(WARNING "gtk+-2.0 not found, disable Gtk2 build.")
0198       set(ENABLE_GTK2 Off)
0199     endif()
0200   endif()
0201 endif()
0202 
0203 if(ENABLE_GTK2)
0204   find_package(PkgConfig REQUIRED)
0205   unset(__pkg_config_checked_GTK2 CACHE)
0206   pkg_check_modules(GTK2 REQUIRED gtk+-2.0)
0207   if(GTK2_THEME_PREFIX)
0208     set(GTK2_PREFIX "${GTK2_THEME_PREFIX}")
0209   elseif(NOT GTK2_PREFIX)
0210     set(GTK2_PREFIX "${CMAKE_INSTALL_PREFIX}")
0211   endif()
0212   if(NOT GTK2_LIBDIR)
0213     set(GTK2_LIBDIR "${GTK2_PREFIX}/lib")
0214   endif()
0215   _pkgconfig_invoke(gtk+-2.0 GTK2 BIN_VERSION "" --variable=gtk_binary_version)
0216   set(GTK2_THEME_DIR ${GTK2_PREFIX}/share/themes/QtCurve)
0217 endif()
0218 
0219 configure_file(config.h.in config.h @ONLY)
0220 
0221 include_directories("${CMAKE_CURRENT_BINARY_DIR}")
0222 cmake_c_fix_include_path(lib/utils qtcurve-utils)
0223 cmake_c_fix_include_path(lib/cairo qtcurve-cairo)
0224 add_definitions("-D_GNU_SOURCE -pthread")
0225 
0226 if(NOT DEFINED LIB_INSTALL_DIR)
0227   set(LIB_INSTALL_DIR lib)
0228 endif()
0229 
0230 cmake_c_include_fix_path()
0231 if(ENABLE_QT4 OR ENABLE_QT5 OR ENABLE_GTK2)
0232     add_subdirectory(lib)
0233     add_subdirectory(tools)
0234 endif()
0235 if(ENABLE_QT4)
0236     add_subdirectory(qt4)
0237 endif()
0238 if(ENABLE_QT5)
0239     add_subdirectory(qt5)
0240 endif()
0241 if(ENABLE_GTK2)
0242     add_subdirectory(gtk2)
0243 endif()
0244 if(BUILD_TESTING)
0245   enable_testing()
0246   add_subdirectory(test)
0247 endif()
0248 
0249 if(QTC_INSTALL_PO)
0250     find_package(ECM 1.2.0 REQUIRED NO_MODULE)
0251     set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH})
0252 
0253     find_package(KF5 REQUIRED COMPONENTS
0254       I18n)
0255     ki18n_install(po)
0256 endif()
0257 feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)