1 # - Config file for the Katie package
3 # It defines relevant to other projects variables:
5 # KATIE_FOUND - wheather the project is found
6 # KATIE_DEFINITIONS - all preprocessor definitions
7 # KATIE_INCLUDES - all headers directories
8 # KATIE_LIBRARIES - all component libraries
9 # KATIE_<COMPONENT>_FOUND - wheather component is found
10 # KATIE_<COMPONENT>_INCLUDES - component headers directories for e.g. QtCore
11 # KATIE_<COMPONENT>_DEFINITIONS - component preprocessor definitions e.g. -DQT_CORE_LIB
12 # KATIE_<COMPONENT>_LIBRARIES - component libraries to link against e.g. QtCore
13 # KATIE_<TOOL> - path to tool e.g. moc
14 # KATIE_<DATA>_PATH - path to different data type files e.g. translations
15 # KATIE_MKSPECS_DIR - directory to mkspecs
16 # KATIE_TYPE - build type, either SHARED or STATIC
18 # As well as some that are unilkely to be needed outside the project:
20 # KATIE_TOOLS_SUFFIX - tools suffix set when the project was build
21 # KATIE_COMPONENTS - components that were build
22 # KATIE_TOOLS - tools that were build
24 # avoiding use of return()
28 # Stored configuration paths that vendors usually change
29 set(KATIE_HEADERS_PATH "@KATIE_HEADERS_PATH@")
30 set(KATIE_LIBRARIES_PATH "@KATIE_LIBRARIES_PATH@")
31 set(KATIE_BINARIES_PATH "@KATIE_BINARIES_PATH@")
32 set(KATIE_PLUGINS_PATH "@KATIE_PLUGINS_PATH@")
33 set(KATIE_IMPORTS_PATH "@KATIE_IMPORTS_PATH@")
34 set(KATIE_TRANSLATIONS_PATH "@KATIE_TRANSLATIONS_PATH@")
35 set(KATIE_LDCONF_PATH "@KATIE_LDCONF_PATH@")
36 set(KATIE_PROFILE_PATH "@KATIE_PROFILE_PATH@")
37 set(KATIE_MAN_PATH "@KATIE_MAN_PATH@")
38 set(KATIE_CMAKE_PATH "@KATIE_CMAKE_PATH@")
39 set(KATIE_APPLICATIONS_PATH "@KATIE_APPLICATIONS_PATH@")
40 set(KATIE_PIXMAPS_PATH "@KATIE_PIXMAPS_PATH@")
42 # Include definitions for IMPORTED targets
43 include("${CMAKE_CURRENT_LIST_DIR}/KatieTargets.cmake")
44 # Include version info, required for the Qt4 compatibility setup
45 include("${CMAKE_CURRENT_LIST_DIR}/KatieConfigVersion.cmake")
47 # These are pre-set and dynamically set variables, some use IMPORTED targets
48 set(KATIE_DEFINITIONS @KATIE_DEFINITIONS@)
49 set(KATIE_INCLUDES "${KATIE_HEADERS_PATH}")
51 set(KATIE_COMPONENTS @KATIE_COMPONENTS@)
52 set(KATIE_TOOLS @KATIE_TOOLS@)
53 set(KATIE_TOOLS_SUFFIX "@KATIE_TOOLS_SUFFIX@")
54 set(KATIE_MKSPECS_DIR "${CMAKE_CURRENT_LIST_DIR}/mkspecs")
55 set(KATIE_TYPE @KATIE_TYPE@)
57 foreach(component ${KATIE_COMPONENTS})
58 string(TOUPPER ${component} uppercomp)
59 set(KATIE_INCLUDES ${KATIE_INCLUDES} "${KATIE_HEADERS_PATH}/Qt${component}")
60 set(KATIE_${uppercomp}_DEFINITIONS ${KATIE_DEFINITIONS} -DQT_${uppercomp}_LIB)
61 set(KATIE_${uppercomp}_INCLUDES "${KATIE_HEADERS_PATH}" "${KATIE_HEADERS_PATH}/Qt${component}")
62 set(KATIE_LIBRARIES ${KATIE_LIBRARIES} Katie::${component})
64 set(KATIE_${uppercomp}_LIBRARIES Katie::${component})
65 set(KATIE_${uppercomp}_FOUND TRUE)
67 target_compile_definitions(Katie::${component} INTERFACE ${KATIE_${uppercomp}_DEFINITIONS})
68 target_include_directories(Katie::${component} INTERFACE ${KATIE_${uppercomp}_INCLUDES})
71 foreach(tool ${KATIE_TOOLS})
72 string(TOUPPER ${tool} uppertool)
73 set(KATIE_${uppertool} Katie::${tool})
76 # Platform specific stuff and some tests
77 include("${KATIE_MKSPECS_DIR}/mkspecs.cmake")
79 if(NOT "${KATIE_FIND_QUIETLY}")
80 message(STATUS "Found Katie version: ${KATIE_VERSION}")
83 # Qt4 compatibility by default, covers most cases
84 if(NOT KATIE_COMPAT EQUAL FALSE AND NOT KATIE_COMPAT EQUAL OFF AND NOT KATIE_COMPAT_IS_SET)
85 # precaution against an attempt to redefine imported targets which will fail
86 set(KATIE_COMPAT_IS_SET CACHE BOOL TRUE "")
87 message(STATUS "Setting up Qt4 compatibility via Katie")
92 set(QTVERSION ${KATIE_VERSION})
93 set(QT_VERSION ${KATIE_VERSION})
94 set(QT_VERSION_MAJOR ${KATIE_VERSION_MAJOR})
95 set(QT_VERSION_MINOR ${KATIE_VERSION_MINOR})
96 set(QT_VERSION_PATCH ${KATIE_VERSION_PATCH})
97 set(QT_INCLUDES ${KATIE_INCLUDES})
98 set(QT_INCLUDE_DIR ${KATIE_INCLUDES})
99 set(QT4_INCLUDE_DIR ${KATIE_INCLUDES})
100 set(QT_LIBRARIES ${KATIE_LIBRARIES})
101 set(QT_USE_FILE "${CMAKE_CURRENT_LIST_DIR}/Qt4UseFile.cmake")
102 set(QT_MKSPECS_DIR "${KATIE_MKSPECS_DIR}")
103 set(QT_LIBRARY_DIR ${KATIE_LIBRARIES_PATH})
104 set(QT_BINARY_DIR ${KATIE_BINARIES_PATH})
105 set(QT_PLUGINS_DIR ${KATIE_PLUGINS_PATH})
106 set(QT_IMPORTS_DIR ${KATIE_IMPORTS_PATH})
107 set(QT_TRANSLATIONS_DIR ${KATIE_TRANSLATIONS_PATH})
109 # those are exceptions because they have "q" prefix which the macros from Qt4Macros do not expect
110 set(QT_DBUSXML2CPP_EXECUTABLE "${KATIE_BINARIES_PATH}/qdbusxml2cpp${KATIE_TOOLS_SUFFIX}${CMAKE_EXECUTABLE_SUFFIX}")
111 set(QT_DBUSCPP2XML_EXECUTABLE "${KATIE_BINARIES_PATH}/qdbuscpp2xml${KATIE_TOOLS_SUFFIX}${CMAKE_EXECUTABLE_SUFFIX}")
113 if(KATIE_TYPE STREQUAL SHARED)
114 set(_libsuffix "${CMAKE_SHARED_LIBRARY_SUFFIX}")
116 set(_libsuffix "${CMAKE_STATIC_LIBRARY_SUFFIX}")
118 foreach(tool ${KATIE_TOOLS})
119 add_executable(Qt4::${tool} IMPORTED)
123 IMPORTED_LOCATION "${KATIE_BINARIES_PATH}/${tool}${KATIE_TOOLS_SUFFIX}${CMAKE_EXECUTABLE_SUFFIX}"
125 string(TOUPPER ${tool} uppertool)
126 set(QT_${uppertool}_EXECUTABLE "${KATIE_BINARIES_PATH}/${tool}${KATIE_TOOLS_SUFFIX}${CMAKE_EXECUTABLE_SUFFIX}")
129 foreach(component ${KATIE_COMPONENTS})
130 add_library(Qt4::Qt${component} ${KATIE_TYPE} IMPORTED)
132 TARGET Qt4::Qt${component}
134 IMPORTED_LOCATION "${KATIE_LIBRARIES_PATH}/libKt${component}${_libsuffix}"
138 # bad assumption, Qt4 module does it
141 find_package(X11 REQUIRED)
144 set(compat_definitions -DQT_NAMESPACE_COMPAT -DQT_FOREACH_COMPAT)
145 set(KATIE_DEFINITIONS ${KATIE_DEFINITIONS} ${compat_definitions})
146 set(QT_DEFINITIONS ${KATIE_DEFINITIONS})
147 set(QT4_DEFINITIONS ${KATIE_DEFINITIONS})
149 foreach(component ${KATIE_COMPONENTS})
150 string(TOUPPER ${component} uppercomp)
152 set(KATIE_${uppercomp}_DEFINITIONS ${KATIE_${uppercomp}_DEFINITIONS} ${compat_definitions})
153 target_compile_definitions(Katie::${component} INTERFACE ${KATIE_${uppercomp}_DEFINITIONS})
155 set(QT_QT${uppercomp}_FOUND ${KATIE_${uppercomp}_FOUND})
156 set(QT4_QT${uppercomp}_FOUND ${KATIE_${uppercomp}_FOUND})
157 set(QT_QT${uppercomp}_LIBRARY "${KATIE_${uppercomp}_LIBRARIES}")
158 set(QT4_QT${uppercomp}_LIBRARY "${KATIE_${uppercomp}_LIBRARIES}")
159 set(QT_QT${uppercomp}_LIBRARIES "${KATIE_${uppercomp}_LIBRARIES}")
160 set(QT4_QT${uppercomp}_LIBRARIES "${KATIE_${uppercomp}_LIBRARIES}")
161 set(QT_QT${uppercomp}_DEFINITIONS ${KATIE_${uppercomp}_DEFINITIONS})
162 set(QT4_QT${uppercomp}_DEFINITIONS ${KATIE_${uppercomp}_DEFINITIONS})
163 set(QT_QT${uppercomp}_INCLUDE_DIR ${KATIE_${uppercomp}_INCLUDES})
164 set(QT4_QT${uppercomp}_INCLUDE_DIR ${KATIE_${uppercomp}_INCLUDES})
167 # not much to be done about those since they are complex and many projects rely on them
169 include(MacroAddFileDependencies)