OSDN Git Service

copyright update
[kde/Katie.git] / cmake / KatieConfig.cmake
1 # - Config file for the Katie package
2 #
3 # It defines relevant to other projects variables:
4 #
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
17 #
18 # As well as some that are unilkely to be needed outside the project:
19 #
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
23
24 # avoiding use of return()
25 if(NOT KATIE_FOUND)
26     set(KATIE_FOUND TRUE)
27
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@")
41
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")
46
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}")
50     set(KATIE_LIBRARIES)
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@)
56
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})
63
64         set(KATIE_${uppercomp}_LIBRARIES Katie::${component})
65         set(KATIE_${uppercomp}_FOUND TRUE)
66
67         target_compile_definitions(Katie::${component} INTERFACE ${KATIE_${uppercomp}_DEFINITIONS})
68         target_include_directories(Katie::${component} INTERFACE ${KATIE_${uppercomp}_INCLUDES})
69     endforeach()
70
71     foreach(tool ${KATIE_TOOLS})
72         string(TOUPPER ${tool} uppertool)
73         set(KATIE_${uppertool} Katie::${tool})
74     endforeach()
75
76     # Platform specific stuff and some tests
77     include("${KATIE_MKSPECS_DIR}/mkspecs.cmake")
78
79     if(NOT "${KATIE_FIND_QUIETLY}")
80         message(STATUS "Found Katie version: ${KATIE_VERSION}")
81     endif()
82
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")
88
89         set(Qt4_FOUND TRUE)
90         set(QT_FOUND TRUE)
91         set(QT4_FOUND TRUE)
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})
108
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}")
112
113         if(KATIE_TYPE STREQUAL SHARED)
114             set(_libsuffix "${CMAKE_SHARED_LIBRARY_SUFFIX}")
115         else()
116             set(_libsuffix "${CMAKE_STATIC_LIBRARY_SUFFIX}")
117         endif()
118         foreach(tool ${KATIE_TOOLS})
119             add_executable(Qt4::${tool} IMPORTED)
120             set_property(
121                 TARGET Qt4::${tool}
122                 PROPERTY
123                 IMPORTED_LOCATION "${KATIE_BINARIES_PATH}/${tool}${KATIE_TOOLS_SUFFIX}${CMAKE_EXECUTABLE_SUFFIX}"
124             )
125             string(TOUPPER ${tool} uppertool)
126             set(QT_${uppertool}_EXECUTABLE "${KATIE_BINARIES_PATH}/${tool}${KATIE_TOOLS_SUFFIX}${CMAKE_EXECUTABLE_SUFFIX}")
127         endforeach()
128
129         foreach(component ${KATIE_COMPONENTS})
130             add_library(Qt4::Qt${component} ${KATIE_TYPE} IMPORTED)
131             set_property(
132                 TARGET Qt4::Qt${component}
133                 PROPERTY
134                 IMPORTED_LOCATION "${KATIE_LIBRARIES_PATH}/libKt${component}${_libsuffix}"
135             )
136         endforeach()
137
138         # bad assumption, Qt4 module does it
139         if(UNIX)
140             set(Q_WS_X11 TRUE)
141             find_package(X11 REQUIRED)
142         endif()
143
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})
148
149         foreach(component ${KATIE_COMPONENTS})
150             string(TOUPPER ${component} uppercomp)
151
152             set(KATIE_${uppercomp}_DEFINITIONS ${KATIE_${uppercomp}_DEFINITIONS} ${compat_definitions})
153             target_compile_definitions(Katie::${component} INTERFACE ${KATIE_${uppercomp}_DEFINITIONS})
154
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})
165         endforeach()
166
167         # not much to be done about those since they are complex and many projects rely on them
168         include(Qt4Macros)
169         include(MacroAddFileDependencies)
170     endif()
171 endif()