summaryrefslogtreecommitdiffstats
path: root/qmake/CMakeLists.txt
blob: 1ad10b950e8b864d22af80d2a23d8248be5b2c9c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# Generated from qmake.pro.

#####################################################################
## qmake Tool:
#####################################################################

# The common object library, that should be available regardless of the presence of qmake.
qt_add_library(QtLibraryInfo OBJECT
    library/proitems.cpp library/proitems.h
    library/qmake_global.h
    property.cpp property.h
    propertyprinter.cpp propertyprinter.h
    qmakelibraryinfo.cpp qmakelibraryinfo.h
)
set_target_properties(QtLibraryInfo PROPERTIES
    COMPILE_OPTIONS $<TARGET_PROPERTY:Qt::Core,INTERFACE_COMPILE_OPTIONS>
    COMPILE_DEFINITIONS $<TARGET_PROPERTY:Qt::Core,INTERFACE_COMPILE_DEFINITIONS>
    INCLUDE_DIRECTORIES $<TARGET_PROPERTY:Qt::Core,INTERFACE_INCLUDE_DIRECTORIES>
    INCLUDE_DIRECTORIES $<TARGET_PROPERTY:Qt::CorePrivate,INTERFACE_INCLUDE_DIRECTORIES>
)
target_include_directories(QtLibraryInfo PUBLIC
    "${CMAKE_CURRENT_SOURCE_DIR}"
    "${CMAKE_CURRENT_SOURCE_DIR}/library"
)

# Chop off the "/mkspecs" part of INSTALL_MKSPECSDIR
get_filename_component(hostdatadir "${INSTALL_MKSPECSDIR}" DIRECTORY)
if("${hostdatadir}" STREQUAL "")
    set(hostdatadir ".")
endif()

target_compile_definitions(QtLibraryInfo PUBLIC
    PROEVALUATOR_FULL
    QT_BUILD_QMAKE
    QT_USE_QSTRINGBUILDER
    QT_NO_FOREACH
    QT_VERSION_STR="${PROJECT_VERSION}" # special case
    QT_VERSION_MAJOR=${PROJECT_VERSION_MAJOR} # special case
    QT_VERSION_MINOR=${PROJECT_VERSION_MINOR} # special case
    QT_VERSION_PATCH=${PROJECT_VERSION_PATCH} # special case
    QT_HOST_MKSPEC="${QT_QMAKE_HOST_MKSPEC}"
    QT_TARGET_MKSPEC="${QT_QMAKE_TARGET_MKSPEC}"
    QT_HOST_DATADIR="${hostdatadir}"
)

# qmake is out of any module, so we manually evaluate the required features.
include("${CMAKE_CURRENT_SOURCE_DIR}/configure.cmake")
qt_feature_evaluate_features("${CMAKE_CURRENT_SOURCE_DIR}/configure.cmake")

if(NOT QT_FEATURE_qmake)
    return()
endif()

qt_get_tool_target_name(target_name qmake)
qt_internal_add_tool(${target_name}
    TOOLS_TARGET Core # special case
    USER_FACING
    INSTALL_VERSIONED_LINK
    SOURCES
        cachekeys.h
        generators/mac/pbuilder_pbx.cpp generators/mac/pbuilder_pbx.h
        generators/makefile.cpp generators/makefile.h
        generators/makefiledeps.cpp generators/makefiledeps.h
        generators/metamakefile.cpp generators/metamakefile.h
        generators/projectgenerator.cpp generators/projectgenerator.h
        generators/unix/unixmake.cpp generators/unix/unixmake.h
        generators/unix/unixmake2.cpp
        generators/win32/mingw_make.cpp generators/win32/mingw_make.h
        generators/win32/msbuild_objectmodel.cpp generators/win32/msbuild_objectmodel.h
        generators/win32/msvc_nmake.cpp generators/win32/msvc_nmake.h
        generators/win32/msvc_objectmodel.cpp generators/win32/msvc_objectmodel.h
        generators/win32/msvc_vcproj.cpp generators/win32/msvc_vcproj.h
        generators/win32/msvc_vcxproj.cpp generators/win32/msvc_vcxproj.h
        generators/win32/winmakefile.cpp generators/win32/winmakefile.h
        generators/xmloutput.cpp generators/xmloutput.h
        library/ioutils.cpp library/ioutils.h
        library/qmakebuiltins.cpp
        library/qmakeevaluator.cpp library/qmakeevaluator.h library/qmakeevaluator_p.h
        library/qmakeglobals.cpp library/qmakeglobals.h
        library/qmakeparser.cpp library/qmakeparser.h
        library/qmakevfs.cpp library/qmakevfs.h
        main.cpp
        meta.cpp meta.h
        option.cpp option.h
        project.cpp project.h
    DEFINES
        HAVE_CONFIG_H
    INCLUDE_DIRECTORIES
        generators
        generators/mac
        generators/unix
        generators/win32
        library
    PRECOMPILED_HEADER
        "qmake_pch.h"
    LIBRARIES
        Qt::CorePrivate
        QtLibraryInfo
)

# Add QMAKE_VERSION_STR only if qmake is part of the build.
target_compile_definitions(QtLibraryInfo PUBLIC
        QMAKE_VERSION_STR="3.1"
)

#### Keys ignored in scope 1:.:.:qmake.pro:<TRUE>:
# _OPTION = "host_build"

## Scopes:
#####################################################################

qt_internal_extend_target(${target_name} CONDITION MACOS
    COMPILE_OPTIONS
        "-fconstant-cfstrings"
)

# special case big
qt_internal_extend_target(${target_name} CONDITION WIN32
    SOURCES
        library/registry.cpp
    DEFINES
        _SCL_SECURE_NO_WARNINGS
)

qt_internal_extend_target(${target_name} CONDITION CLANG AND WIN32
    COMPILE_OPTIONS
        "-fms-compatibility-version=19.00.23506"
        "-Wno-microsoft-enum-value"
)

# special case:
set_target_properties(${target_name} PROPERTIES
    AUTOMOC OFF
    AUTORCC OFF
    AUTOUIC OFF
)

qt_internal_apply_gc_binaries(${target_name} PRIVATE) # special case
qt_skip_warnings_are_errors(${target_name}) # special case

# special case begin
qt_internal_add_docs(${target_name}
    doc/qmake.qdocconf
)
# special case end