katie/CMakeLists.txt
Ivailo Monev 9ebc979ae2 make some X11 extensions optional as was in stock Qt4
this makes it possible to build without tricks on Slitaz for an example (or
at least the GUI component, I have yet to test everything) where only the
bare minimum is installed/available

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
2016-07-10 02:53:30 +03:00

756 lines
25 KiB
CMake

# Editors notes:
#
# * To find all FIXME/TODO related to the CMake build system (and those
# inherited from the autotools build system) execute the following in the
# top-level directory of the source tree:
#
# find -name '*.cmake' -exec grep -E 'TODO|FIXME' {} +
# find -name CMakeLists.txt -exec grep -E 'TODO|FIXME' {} +
cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
project(Katie C CXX ASM)
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules")
set(CMAKE_AUTOMOC FALSE)
set(CMAKE_AUTOUIC FALSE)
set(CMAKE_AUTORCC FALSE)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib")
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/staticlib")
include(CheckIncludeFile)
include(CheckTypeSize)
include(FeatureSummary)
include(KatieMacros)
include(KatieBuildMacros)
# components and tools that will be build, changed depending on the requirements availability
set(KATIE_COMPONENTS "Core Gui Declarative Designer DesignerComponents Help Multimedia Network Sql Svg Xml XmlPatterns Script ScriptTools Test UiTools")
set(KATIE_TOOLS "moc uic rcc qhelpgenerator qcollectiongenerator lupdate lrelease lconvert designer")
# optional package features
option(WITH_THREADS "Build threads support" ON)
add_feature_info(threads WITH_THREADS "an open source something")
option(WITH_OPENSSL "Build openssl support" ON)
add_feature_info(openssl WITH_OPENSSL "an open source something")
option(WITH_ZLIB "Build zlib support" ON)
add_feature_info(zlib WITH_ZLIB "an open source something")
option(WITH_NIS "Build nis support" ON)
add_feature_info(nis WITH_NIS "an open source something")
option(WITH_CUPS "Build cups support" ON)
add_feature_info(cups WITH_CUPS "an open source something")
option(WITH_ALSA "Build alsa support" ON)
add_feature_info(alsa WITH_ALSA "an open source something")
option(WITH_PNG "Build png support" ON)
add_feature_info(png WITH_PNG "an open source something")
option(WITH_JPEG "Build jpeg support" ON)
add_feature_info(jpeg WITH_JPEG "an open source something")
option(WITH_TIFF "Build tiff support" ON)
add_feature_info(tiff WITH_TIFF "an open source something")
option(WITH_MNG "Build mng support" ON)
add_feature_info(mng WITH_MNG "an open source something")
option(WITH_NAS "Build nas support" ON)
add_feature_info(nas WITH_NAS "an open source something")
option(WITH_ICONV "Build iconv support" ON)
add_feature_info(iconv WITH_ICONV "an open source something")
option(WITH_GLIB2 "Build glib2 support" OFF)
add_feature_info(glib2 WITH_GLIB2 "an open source something")
option(WITH_DBUS "Build dbus support" ON)
add_feature_info(dbus WITH_DBUS "an open source something")
option(WITH_GTK2 "Build gtk2 support" ON)
add_feature_info(gtk2 WITH_GTK2 "an open source something")
option(WITH_EGL "Build egl support" OFF)
add_feature_info(egl WITH_EGL "an open source something")
option(WITH_OPENGL "Build opengl support" ON)
add_feature_info(opengl WITH_OPENGL "an open source something")
option(WITH_FREETYPE "Build freetype2 support" ON)
add_feature_info(freetype2 WITH_FREETYPE "an open source something")
option(WITH_FONTCONFIG "Build fontconfig support" ON)
add_feature_info(fontconfig WITH_FONTCONFIG "an open source something")
option(WITH_ICU "Build icu support" ON)
add_feature_info(icu WITH_ICU "an open source something")
# TODO: enable when building against external harfbuzz works
option(WITH_HARFBUZZ "Build harfbuzz support" OFF)
add_feature_info(harfbuzz WITH_HARFBUZZ "an open source something")
option(WITH_ODBC "Build ODBC database plugin" ON)
add_feature_info(odbc WITH_ODBC "an open source something")
option(WITH_PSQL "Build PostgreSQL database plugin" ON)
add_feature_info(postgresql WITH_PSQL "the world's most advanced open source database")
option(WITH_MYSQL "Build MySQL database plugin" ON)
add_feature_info(mysql WITH_MYSQL "the world's most popular open source database")
option(WITH_SQLITE "Build SQLite database plugin" ON)
add_feature_info(sqlite WITH_SQLITE "the world's most popular open source database")
option(WITH_X11 "Build X11/X.Org support" ON)
add_feature_info(x11 WITH_X11 "an open source something")
# katie features
option(KATIE_BOOTSTRAP "Build only core tools" OFF)
add_feature_info(bootstrap KATIE_BOOTSTRAP "internal build option")
option(WITH_OPENGLES1 "Build opengles1 support" OFF)
add_feature_info(opengles1 WITH_OPENGLES1 "an open source something")
option(WITH_OPENGLES2 "Build opengles2 support" OFF)
add_feature_info(opengles2 WITH_OPENGLES2 "an open source something")
option(WITH_ACCESSIBILITY "Build accessibility support" ON)
add_feature_info(accessibility WITH_ACCESSIBILITY "an open source something")
# windows
option(WITH_ICD "Build icd support (Windows)" ON)
add_feature_info(icd WITH_ICD "an closed source something")
option(WITH_DIRECTWRITE "Build DirectWrite support (Windows)" OFF)
add_feature_info(directwrite WITH_DIRECTWRITE "an closed source something")
# mac
option(WITH_COREWLAN "Build corewlan support (Mac)" ON)
add_feature_info(corewlan WITH_COREWLAN "an closed source something")
include(mkspecs/mkspecs.cmake)
katie_generate_string("${CMAKE_INSTALL_PATH}" "CMAKE_INSTALL_PATH_STR")
katie_generate_string("${LDCONF_INSTALL_PATH}" "LDCONF_INSTALL_PATH_STR")
katie_generate_string("${PROFILE_INSTALL_PATH}" "PROFILE_INSTALL_PATH_STR")
katie_generate_string("${MAN_INSTALL_PATH}" "MAN_INSTALL_PATH_STR")
katie_generate_string("${APPLICATIONS_INSTALL_PATH}" "APPLICATIONS_INSTALL_PATH_STR")
katie_generate_string("${PIXMAPS_INSTALL_PATH}" "PIXMAPS_INSTALL_PATH_STR")
katie_generate_string("qt_lcnsuser=${QT_LICENSE}" "QT_LICENSE_STR")
katie_generate_string("qt_lcnsprod=${QT_PRODUCT}" "QT_PRODUCT_STR" "")
katie_generate_string("qt_prfxpath=${QT_PREFIX_PATH}" "QT_PREFIX_PATH_STR")
katie_generate_string("qt_hdrspath=${QT_HEADERS_PATH}" "QT_HEADERS_PATH_STR")
katie_generate_string("qt_libspath=${QT_LIBRARIES_PATH}" "QT_LIBRARIES_PATH_STR")
katie_generate_string("qt_binspath=${QT_BINARIES_PATH}" "QT_BINARIES_PATH_STR")
katie_generate_string("qt_plugpath=${QT_PLUGINS_PATH}" "QT_PLUGINS_PATH_STR")
katie_generate_string("qt_impspath=${QT_IMPORTS_PATH}" "QT_IMPORTS_PATH_STR")
katie_generate_string("qt_datapath=${QT_DATA_PATH}" "QT_DATA_PATH_STR")
katie_generate_string("qt_trnspath=${QT_TRANSLATIONS_PATH}" "QT_TRANSLATIONS_PATH_STR")
katie_generate_string("qt_stngpath=${QT_SETTINGS_PATH}" "QT_SETTINGS_PATH_STR")
katie_generate_string("qt_docspath=${QT_DOCUMENTATION_PATH}" "QT_DOCUMENTATION_PATH_STR")
katie_generate_string("${QT_EXAMPLES_PATH}" "QT_EXAMPLES_PATH_STR")
katie_generate_string("${QT_DEMOS_PATH}" "QT_DEMOS_PATH_STR")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "C++ toolkit derived from the Qt 4.8 framework")
set(CPACK_PACKAGE_VENDOR "Katie")
set(CPACK_PACKAGE_CONTACT "${KATIE_BUGREPORT}")
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_SOURCE_DIR}/README")
# set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/Copyright.txt")
set(CPACK_PACKAGE_VERSION_MAJOR ${KATIE_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR ${KATIE_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${KATIE_MICRO})
set(CPACK_PACKAGE_INSTALL_DIRECTORY "Katie")
set(CPACK_SOURCE_IGNORE_FILES "/build/;/mingw/;/.git;${CPACK_SOURCE_IGNORE_FILES}")
set(CPACK_SET_DESTDIR TRUE)
set(CPACK_STRIP_FILES TRUE)
if(WIN32 AND CMAKE_CROSSCOMPILING)
# Windows build on non-Windows host, NSIS is not manditory on such
set(CPACK_GENERATOR "ZIP")
set(CPACK_SOURCE_GENERATOR "ZIP")
elseif(WIN32)
# native Windows build, let's make a NSIS package
set(CPACK_GENERATOR "ZIP;NSIS")
set(CPACK_SOURCE_GENERATOR "ZIP")
else()
set(CPACK_GENERATOR "TXZ")
set(CPACK_SOURCE_GENERATOR "TXZ")
endif()
include(CPack)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_INCLUDE_DIRECTORIES_BEFORE ON)
add_definitions(
-DKATIE_DATE="${KATIE_DATE}"
-DQT_USE_QSTRINGBUILDER
-DQT_ASCII_CAST_WARNINGS
# maybe one day, use with caution!
# -DQT_NO_CAST_FROM_ASCII
# -DQT_NO_CAST_TO_ASCII
# -DQT_STRICT_ITERATORS
)
# this is how Qt4 does it
if(NOT KATIE_PLATFORM STREQUAL "integrity" AND NOT MINGW)
set(QT_LARGEFILE_SUPPORT 64)
add_definitions(
-D_LARGEFILE64_SOURCE
-D_LARGEFILE_SOURCE
)
endif()
# for 3rd party source used in help and test components
check_include_file(sys/time.h HAVE_SYS_TIME_H)
if(HAVE_SYS_TIME_H)
add_definitions(-DTIME_WITH_SYS_TIME=1 -DHAVE_SYS_TIME_H)
else()
add_definitions(-DTIME_WITH_SYS_TIME=0)
endif()
# used in qconfig.h
check_type_size(size_t QT_POINTER_SIZE)
configure_file(
${CMAKE_SOURCE_DIR}/src/core/global/qconfig.h.cmake
${CMAKE_BINARY_DIR}/include/QtCore/qconfig.h
)
configure_file(
${CMAKE_SOURCE_DIR}/src/core/global/qconfig.cpp.cmake
${CMAKE_BINARY_DIR}/include/qconfig.cpp
)
configure_file(
${CMAKE_SOURCE_DIR}/src/core/global/qglobal.h.cmake
${CMAKE_BINARY_DIR}/include/QtCore/qglobal.h
)
find_package(PythonInterp)
set_package_properties(PythonInterp PROPERTIES
PURPOSE "UI class maps generator script"
DESCRIPTION "Programming language that lets you work quickly"
URL "https://www.python.org/"
TYPE RECOMMENDED
)
find_package(OpenSSL)
set_package_properties(OpenSSL PROPERTIES
PURPOSE "Required for HTTPS support"
DESCRIPTION "Support for secure network communications (SSL and TLS)"
URL "http://openssl.org"
TYPE RECOMMENDED
)
find_package(ZLIB)
set_package_properties(ZLIB PROPERTIES
PURPOSE "Required for compression support"
DESCRIPTION "A Massively Spiffy Yet Delicately Unobtrusive Compression Library"
URL "http://zlib.net"
TYPE RECOMMENDED
)
find_package(NIS)
set_package_properties(NIS PROPERTIES
PURPOSE "Required for Network Information Service support"
DESCRIPTION "Standard C library specific NIS implementation"
TYPE RECOMMENDED
)
find_package(PNG)
set_package_properties(PNG PROPERTIES
PURPOSE "PNG format handler"
DESCRIPTION "A collection of routines used to create PNG format graphics files"
URL "http://www.libpng.org/pub/png/libpng.html"
TYPE RECOMMENDED
)
find_package(JPEG)
set_package_properties(JPEG PROPERTIES
PURPOSE "JPEG format handler"
DESCRIPTION "JPEG image codec with accelerated baseline compression and decompression"
URL "http://libjpeg-turbo.virtualgl.org/"
TYPE RECOMMENDED
)
find_package(TIFF)
set_package_properties(TIFF PROPERTIES
PURPOSE "TIFF format handler"
DESCRIPTION "Library for manipulation of TIFF images"
URL "http://www.remotesensing.org/libtiff/"
TYPE RECOMMENDED
)
find_package(MNG)
set_package_properties(MNG PROPERTIES
PURPOSE "MNG format handler"
DESCRIPTION "THE reference library for reading, displaying, writing and examining Multiple-Image Network Graphics"
URL "http://sourceforge.net/projects/libmng/"
TYPE RECOMMENDED
)
find_package(NAS)
set_package_properties(NAS PROPERTIES
PURPOSE "Basic audio support over wire"
DESCRIPTION "Network transparent, client/server audio transport system"
URL "http://www.radscan.com/nas.html"
TYPE RECOMMENDED
)
find_package(Iconv)
set_package_properties(Iconv PROPERTIES
PURPOSE "Iconv support"
DESCRIPTION "iconv() implementation, for use on systems which don't have one or lack Unicode support"
URL "http://www.gnu.org/software/libiconv/"
TYPE RECOMMENDED
)
find_package(Cups)
set_package_properties(Cups PROPERTIES
PURPOSE "Required for printing support"
DESCRIPTION "CUPS is the standards-based, open source printing system"
URL "http://www.cups.org"
TYPE RECOMMENDED
)
find_package(ALSA)
set_package_properties(ALSA PROPERTIES
PURPOSE "Required for ALSA support"
DESCRIPTION "Advanced Linux Sound Architecture"
URL "http://www.alsa-project.org"
TYPE RECOMMENDED
)
# old versions of CMake ship bogus module, always use the custom one
cmake_policy(PUSH)
cmake_policy(SET CMP0017 OLD)
find_package(Freetype)
set_package_properties(Freetype PROPERTIES
PURPOSE "Required for fonts configuration support"
DESCRIPTION "Freely available software library to render fonts"
URL "http://www.freetype.org"
TYPE RECOMMENDED
)
cmake_policy(POP)
find_package(Fontconfig)
set_package_properties(Fontconfig PROPERTIES
PURPOSE "Required for fonts configuration support"
DESCRIPTION "Library for configuring and customizing font access"
URL "http://www.freedesktop.org/wiki/Software/fontconfig"
TYPE RECOMMENDED
)
find_package(ICU)
set_package_properties(ICU PROPERTIES
PURPOSE "ICU locales support"
DESCRIPTION "Mature, widely used libraries providing Unicode and Globalization support"
URL "http://site.icu-project.org/"
TYPE RECOMMENDED
)
# currently unused
find_package(HarfBuzz)
set_package_properties(HarfBuzz PROPERTIES
PURPOSE "Currently none"
DESCRIPTION "OpenType text shaping engine"
URL "http://www.freedesktop.org/wiki/Software/HarfBuzz/"
TYPE RECOMMENDED
)
find_package(GLib2)
set_package_properties(GLib2 PROPERTIES
PURPOSE "Required for glib mainloop support"
DESCRIPTION "Core application building blocks for libraries and applications written in C"
URL "https://developer.gnome.org/glib"
TYPE RECOMMENDED
)
find_package(DBus)
set_package_properties(DBus PROPERTIES
PURPOSE "Required for D-Bus support"
DESCRIPTION "Message bus system, a simple way for applications to talk to one another"
URL "http://www.freedesktop.org/wiki/Software/dbus"
TYPE RECOMMENDED
)
find_package(GTK2)
set_package_properties(GTK2 PROPERTIES
PURPOSE "Required for GTK style and application integration support"
DESCRIPTION "Multi-platform toolkit for creating graphical user interfaces"
URL "http://www.gtk.org"
TYPE RECOMMENDED
)
find_package(EGL)
set_package_properties(EGL PROPERTIES
PURPOSE "Required for EGL support"
DESCRIPTION "Platform dependent EGL implementation"
URL ""
TYPE RECOMMENDED
)
find_package(OpenGL)
set_package_properties(OpenGL PROPERTIES
PURPOSE "Required for GL/EGL support"
DESCRIPTION "Platform dependent OpenGL implementation"
URL ""
TYPE RECOMMENDED
)
find_package(Wayland)
set_package_properties(Wayland PROPERTIES
PURPOSE "Required for Wayland support"
DESCRIPTION "Wayland is intended as a simpler replacement for X"
URL "http://wayland.freedesktop.org/"
TYPE OPTIONAL
)
find_package(ODBC)
set_package_properties(ODBC PROPERTIES
PURPOSE "Required for ODBC database support"
DESCRIPTION "The definitive standard for ODBC on non MS Windows platforms"
URL "http://www.unixodbc.org"
TYPE RECOMMENDED
)
find_package(PostgreSQL)
set_package_properties(PostgreSQL PROPERTIES
PURPOSE "Required for PostgreSQL database support"
DESCRIPTION "The world's most advanced open source database"
URL "http://www.postgresql.org"
TYPE OPTIONAL
)
find_package(MySQL)
set_package_properties(MySQL PROPERTIES
PURPOSE "Required for MySQL database support"
DESCRIPTION "The world's most popular open source database"
URL "http://www.mysql.com"
TYPE OPTIONAL
)
find_package(Sqlite)
set_package_properties(Sqlite PROPERTIES
PURPOSE "Required for SQLite database support"
DESCRIPTION "Software library that implements SQL database engine"
URL "https://www.sqlite.org/"
TYPE RECOMMENDED
)
find_package(Threads)
set_package_properties(Threads PROPERTIES
PURPOSE "Required for threads support"
DESCRIPTION "Platform dependent threads implementation"
URL ""
TYPE RECOMMENDED
)
if(NOT KATIE_PLATFORM MATCHES "(win32|wince|mac)" AND NOT KATIE_BOOTSTRAP)
set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
find_package(X11 COMPONENTS ICE SM Xcursor Xext Xfixes XSync XShm XShape Xi Xkb Xinerama Xrandr Xrender X11 Xtst Xt)
set_package_properties(X11 PROPERTIES
PURPOSE "Required for X11/X.Org integration support"
DESCRIPTION "Open source implementation of the X Window System"
URL "http://www.x.org"
TYPE REQUIRED
)
set_package_properties(Fontconfig PROPERTIES
TYPE REQUIRED
)
set_package_properties(Freetype PROPERTIES
TYPE REQUIRED
)
endif()
if(PYTHONINTERP_FOUND)
execute_process(
COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/scripts/genmap.py
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
RESULT_VARIABLE genmap_result
ERROR_VARIABLE genmap_error
)
if(NOT genmap_result EQUAL 0)
message(SEND_ERROR "${genmap_error}")
endif()
else()
message(WARNING
"\nUsing pre-generated classes map"
)
endif()
# various sources use #include <shared/blah.h>
include_directories(${CMAKE_SOURCE_DIR}/src)
if(ENABLE_TESTING)
message(WARNING
"\nUnless it is intentionall you should not enable testing. You will have to unset "
"QT_PLUGIN_PATH if you have Qt4 installed on the system prior to running the tests."
)
enable_testing()
add_definitions(-DQT_BUILD_INTERNAL)
endif()
if(NOT WITH_THREADS OR NOT THREADS_FOUND)
katie_definition(-DQT_NO_THREAD)
endif()
if(NOT WTIH_EGL OR NOT EGL_FOUND)
katie_definition(-DQT_NO_EGL)
endif()
if(NOT WITH_OPENSSL OR NOT OPENSSL_FOUND)
katie_definition(-DQT_NO_OPENSSL)
endif()
if(NOT WITH_FREETYPE OR NOT FREETYPE_FOUND)
set(WITH_FONTCONFIG OFF)
katie_definition(-DQT_NO_FREETYPE)
endif()
if(NOT WITH_FONTCONFIG OR NOT FONTCONFIG_FOUND)
katie_definition(-DQT_NO_FONTCONFIG)
endif()
if(NOT WITH_DBUS OR NOT DBUS_FOUND)
katie_definition(-DQT_NO_DBUS)
else()
set(KATIE_COMPONENTS "${KATIE_COMPONENTS} DBus")
set(KATIE_TOOLS "${KATIE_TOOLS} qdbusxml2cpp qdbuscpp2xml qdbusviewer")
endif()
if(NOT WITH_GLIB2 OR NOT GLIB2_FOUND)
katie_definition(-DQT_NO_GLIB)
endif()
if(NOT WITH_CUPS OR NOT CUPS_FOUND)
katie_definition(-DQT_NO_CUPS -DQT_NO_LPR)
endif()
if(NOT WITH_NIS OR NOT NIS_FOUND)
katie_definition(-DQT_NO_NIS)
endif()
if(NOT WITH_DIRECTWRITE)
katie_definition(-DQT_NO_DIRECTWRITE)
endif()
if(NOT WITH_OPENGL OR NOT OPENGL_FOUND)
katie_definition(-DQT_NO_OPENGL)
else()
set(KATIE_COMPONENTS "${KATIE_COMPONENTS} OpenGL")
endif()
if(NOT WITH_NAS OR NOT NAS_FOUND)
katie_definition(-DQT_NO_NAS)
endif()
if(NOT WITH_PNG OR NOT PNG_FOUND)
katie_definition(-DQT_NO_IMAGEFORMAT_PNG)
endif()
if(NOT WITH_JPEG OR NOT JPEG_FOUND)
katie_definition(-DQT_NO_IMAGEFORMAT_JPEG)
endif()
if(NOT WITH_MNG OR NOT MNG_FOUND)
katie_definition(-DQT_NO_IMAGEFORMAT_MNG)
endif()
if(NOT WITH_TIFF OR NOT TIFF_FOUND)
katie_definition(-DQT_NO_IMAGEFORMAT_TIFF)
endif()
# semi-shared
include(src/shared/linguist/linguist.cmake)
include(src/shared/bootstrap.cmake)
if(NOT KATIE_BOOTSTRAP)
include(src/shared/deviceskin/deviceskin.cmake)
include(src/shared/help/help.cmake)
include(src/shared/qtgradienteditor/qtgradienteditor.cmake)
include(src/shared/qtpropertybrowser/qtpropertybrowser.cmake)
include(src/shared/findwidget/findwidget.cmake)
endif()
# major components
add_subdirectory(src/core)
add_subdirectory(src/xml)
if(NOT KATIE_BOOTSTRAP)
if(WITH_DBUS AND DBUS_FOUND)
add_subdirectory(src/dbus)
endif()
add_subdirectory(src/declarative)
add_subdirectory(src/designer)
add_subdirectory(src/gui)
add_subdirectory(src/help)
add_subdirectory(src/imports)
add_subdirectory(src/multimedia)
add_subdirectory(src/network)
if(WITH_OPENGL AND OPENGL_FOUND)
add_subdirectory(src/opengl)
endif()
add_subdirectory(src/plugins)
add_subdirectory(src/script)
add_subdirectory(src/scripttools)
add_subdirectory(src/sql)
add_subdirectory(src/svg)
add_subdirectory(src/test)
add_subdirectory(src/uitools)
if(KATIE_PLATFORM MATCHES "(win32|wince)")
add_subdirectory(src/winmain)
endif()
add_subdirectory(src/xmlpatterns)
if(ENABLE_TESTING)
add_subdirectory(tests)
endif()
endif()
add_subdirectory(src/tools)
# utilities needed for Katie maintainance
add_subdirectory(util/fixnonlatin1)
add_subdirectory(util/gencmap)
add_subdirectory(util/lexgen)
add_subdirectory(util/normalize)
add_subdirectory(util/plugintest)
add_subdirectory(util/qlalr)
add_subdirectory(util/qurl-generateTLDs)
add_subdirectory(util/unicode)
add_subdirectory(util/xkbdatagen)
add_subdirectory(util/generaterun)
# obsolete but still widely required headers, unlikely to go away
katie_generate_obsolete(qtglobal.h QtCore qglobal.h)
katie_generate_obsolete(qmultihash.h QtCore qhash.h)
katie_generate_obsolete(qscopedarraypointer.h QtCore qscopedpointer.h)
katie_generate_obsolete(qtime.h QtCore qdatetime.h)
katie_generate_obsolete(qdate.h QtCore qdatetime.h)
katie_generate_obsolete(qwizardpage.h QtGui qwizard.h)
katie_generate_obsolete(qtimeedit.h QtGui qdatetimeedit.h)
katie_generate_obsolete(qdateedit.h QtGui qdatetimeedit.h)
katie_generate_obsolete(qhboxlayout.h QtGui qboxlayout.h)
katie_generate_obsolete(qvboxlayout.h QtGui qboxlayout.h)
katie_generate_obsolete(qspaceritem.h QtGui qlayoutitem.h)
katie_generate_obsolete(qdoublespinbox.h QtGui qspinbox.h)
katie_generate_obsolete(qdomdocument.h QtXml qdom.h)
katie_generate_obsolete(qdomelement.h QtXml qdom.h)
katie_generate_obsolete(qdomnode.h QtXml qdom.h)
katie_generate_obsolete(qxmlstream.h QtXml ../QtCore/qxmlstream.h)
katie_generate_obsolete(qxmlstreamwriter.h QtXml ../QtCore/qxmlstream.h)
katie_generate_obsolete(qxmlstreamreader.h QtXml ../QtCore/qxmlstream.h)
katie_generate_obsolete(qnetworkconfigurationmanager.h QtNetwork qnetworkconfigmanager.h)
katie_generate_obsolete(qnetworkcachemetadata.h QtNetwork qabstractnetworkcache.h)
# obsolete, not so important
katie_generate_obsolete(qflags.h QtCore qglobal.h)
katie_generate_obsolete(qtplugin.h QtCore qplugin.h)
katie_generate_obsolete(qtdebug.h QtCore qdebug.h)
katie_generate_obsolete(qtalgorithms.h QtCore qalgorithms.h)
katie_generate_obsolete(qdbuspendingcallwatcher.h QtDBus qdbuspendingcall.h)
# mixed headers
katie_generate_obsolete(qvariantmap.h QtCore qvariant.h)
katie_generate_obsolete(qvariantlist.h QtCore qvariant.h)
katie_generate_obsolete(qsizef.h QtCore qsize.h)
katie_generate_obsolete(qrectf.h QtCore qrect.h)
katie_generate_obsolete(qtimerevent.h QtCore qcoreevent.h)
katie_generate_obsolete(qpointf.h QtCore qpoint.h)
katie_generate_obsolete(qabstractlistmodel.h QtCore qabstractitemmodel.h)
katie_generate_obsolete(qprocessenvironment.h QtCore qprocess.h)
katie_generate_obsolete(qmodelindex.h QtCore qabstractitemmodel.h)
katie_generate_obsolete(qdbusobjectpath.h QtDBus qdbusextratypes.h)
katie_generate_obsolete(qlistwidgetitem.h QtGui qlistwidget.h)
katie_generate_obsolete(qtreewidgetitem.h QtGui qtreewidget.h)
katie_generate_obsolete(qstandarditem.h QtGui qstandarditemmodel.h)
katie_generate_obsolete(qcloseevent.h QtGui qevent.h)
katie_generate_obsolete(qresizeevent.h QtGui qevent.h)
katie_generate_obsolete(qshowevent.h QtGui qevent.h)
katie_generate_obsolete(qitemselection.h QtGui qitemselectionmodel.h)
katie_generate_obsolete(qintvalidator.h QtGui qvalidator.h)
katie_generate_obsolete(qfontmetricsf.h QtGui qfontmetrics.h)
katie_generate_obsolete(qstyleoptionslider QtGui qstyleoption.h)
katie_generate_obsolete(qnetworkaddressentry.h QtNetwork qnetworkinterface.h)
# those are aliases
katie_generate_obsolete(qweakpointer.h QtCore qsharedpointer.h)
if(UNIX AND WITH_X11 AND X11_FOUND)
katie_generate_obsolete(qx11info.h QtGui qx11info_x11.h)
katie_generate_obsolete(qx11embedcontainer.h QtGui qx11embed_x11.h)
katie_generate_obsolete(qx11embedwidget.h QtGui qx11embed_x11.h)
endif()
katie_generate_obsolete(qttestgui.h QtTest qtest_gui.h)
# those have shuffled, e.g. from QtDesginer to QtUiTools
katie_generate_obsolete(customwidget.h QtDesginer ../QtUiTools/customwidget.h)
katie_generate_obsolete(qdesignercustomwidgetinterface.h QtDesigner ../QtUiTools/customwidget.h)
# translations
file(GLOB TRANSLATIONS "translations/*.ts")
katie_translations(${TRANSLATIONS})
katie_fixup_string("${KATIE_DEFINITIONS}" KATIE_DEFINITIONS)
configure_file(
${CMAKE_SOURCE_DIR}/cmake/KatieConfig.cmake
${CMAKE_BINARY_DIR}/KatieConfig.cmake
@ONLY
)
configure_file(
${CMAKE_SOURCE_DIR}/cmake/KatieConfigVersion.cmake
${CMAKE_BINARY_DIR}/KatieConfigVersion.cmake
@ONLY
)
install(
DIRECTORY mkspecs
DESTINATION ${CMAKE_INSTALL_PATH}
COMPONENT Devel
)
install(
FILES
${CMAKE_BINARY_DIR}/KatieConfig.cmake
${CMAKE_BINARY_DIR}/KatieConfigVersion.cmake
${CMAKE_SOURCE_DIR}/cmake/modules/KatieMacros.cmake
DESTINATION ${CMAKE_INSTALL_PATH}
COMPONENT Devel
)
install(
EXPORT KatieLibraryTargets
NAMESPACE Katie::
DESTINATION ${CMAKE_INSTALL_PATH}
FILE KatieLibraryTargets.cmake
)
install(
EXPORT KatieBinaryTargets
NAMESPACE Katie::
DESTINATION ${CMAKE_INSTALL_PATH}
FILE KatieBinaryTargets.cmake
)
if(NOT KATIE_PLATFORM MATCHES "(win32|wince|mac)")
configure_file(
${CMAKE_SOURCE_DIR}/cmake/ld.so.conf.cmake
${CMAKE_BINARY_DIR}/katie-${KATIE_ARCHITECTURE}.conf
@ONLY
)
install(
FILES ${CMAKE_BINARY_DIR}/katie-${KATIE_ARCHITECTURE}.conf
DESTINATION ${LDCONF_INSTALL_PATH}
)
configure_file(
${CMAKE_SOURCE_DIR}/cmake/profile.sh.cmake
${CMAKE_BINARY_DIR}/katie-${KATIE_ARCHITECTURE}.sh
@ONLY
)
install(
FILES ${CMAKE_BINARY_DIR}/katie-${KATIE_ARCHITECTURE}.sh
DESTINATION ${PROFILE_INSTALL_PATH}
)
endif()
feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)