summaryrefslogtreecommitdiffstats
path: root/qmake/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'qmake/CMakeLists.txt')
-rw-r--r--qmake/CMakeLists.txt109
1 files changed, 59 insertions, 50 deletions
diff --git a/qmake/CMakeLists.txt b/qmake/CMakeLists.txt
index 9cf6a3a4b5..5a54570194 100644
--- a/qmake/CMakeLists.txt
+++ b/qmake/CMakeLists.txt
@@ -1,38 +1,64 @@
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
+
# Generated from qmake.pro.
#####################################################################
## qmake Tool:
#####################################################################
-# TODO: Probably it's time to introduce QT_FEATURE_qmake?
-if(NOT (QT_FEATURE_settings AND QT_FEATURE_alloca AND (QT_FEATURE_alloca_malloc_h OR NOT WIN32) AND
- QT_FEATURE_cborstreamwriter AND QT_FEATURE_datestring AND QT_FEATURE_regularexpression AND
- QT_FEATURE_temporaryfile))
- message(WARNING "Skip building qmake in specified configuration.\
-Required features:
- QT_FEATURE_settings ${QT_FEATURE_settings}
- QT_FEATURE_alloca ${QT_FEATURE_alloca}
- QT_FEATURE_cborstreamwriter ${QT_FEATURE_cborstreamwriter}
- QT_FEATURE_datestring ${QT_FEATURE_datestring}
- QT_FEATURE_getauxval ${QT_FEATURE_getauxval}
- QT_FEATURE_regularexpression ${QT_FEATURE_regularexpression}
- QT_FEATURE_temporaryfile ${QT_FEATURE_temporaryfile}
-")
- return()
+# 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
+)
+
+# Make sure we use same parameters when building QtLibraryInfo and other Qt libraries,
+# otherwise some compilers may have compilation errors, such as clang-cl.
+target_link_libraries(QtLibraryInfo PUBLIC PlatformCommonInternal)
+
+target_link_libraries(QtLibraryInfo PUBLIC Qt::CorePrivate)
+
+qt_internal_add_sync_header_dependencies(QtLibraryInfo Core)
+
+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()
-# The QT_CONFIGURE_HOSTBINDIR_TO_*PREFIX_PATH defines are exclusively used by qmake to determine
-# the prefix from the location of the qmake executable. In our build of qmake host_prefix is
-# always the same as ext_prefix, and we can just use CMAKE_INSTALL_PREFIX for the calculation of
-# the relative path between <ext_prefix>/bin and <ext_prefix>.
-file(RELATIVE_PATH QT_CONFIGURE_RELATIVE_PREFIX_PATH
- "${CMAKE_INSTALL_PREFIX}/${INSTALL_BINDIR}" "${CMAKE_INSTALL_PREFIX}"
+qt_internal_library_deprecation_level(deprecation_define)
+
+target_compile_definitions(QtLibraryInfo PUBLIC
+ PROEVALUATOR_FULL
+ QT_BUILD_QMAKE
+ QT_USE_QSTRINGBUILDER
+ QT_HOST_MKSPEC="${QT_QMAKE_HOST_MKSPEC}"
+ QT_TARGET_MKSPEC="${QT_QMAKE_TARGET_MKSPEC}"
+ QT_HOST_DATADIR="${hostdatadir}"
+ ${deprecation_define}
)
+qt_internal_set_exceptions_flags(QtLibraryInfo OFF)
+
+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
+ TRY_RUN
+ TOOLS_TARGET Core
USER_FACING
+ INSTALL_VERSIONED_LINK
SOURCES
cachekeys.h
generators/mac/pbuilder_pbx.cpp generators/mac/pbuilder_pbx.h
@@ -51,44 +77,37 @@ qt_internal_add_tool(${target_name}
generators/win32/winmakefile.cpp generators/win32/winmakefile.h
generators/xmloutput.cpp generators/xmloutput.h
library/ioutils.cpp library/ioutils.h
- library/proitems.cpp library/proitems.h
- library/qmake_global.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
- qmakelibraryinfo.cpp qmakelibraryinfo.h
main.cpp
meta.cpp meta.h
option.cpp option.h
project.cpp project.h
- property.cpp property.h
DEFINES
HAVE_CONFIG_H
- 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_CONFIGURE_RELATIVE_PREFIX_PATH="${QT_CONFIGURE_RELATIVE_PREFIX_PATH}"
INCLUDE_DIRECTORIES
generators
generators/mac
generators/unix
generators/win32
library
- "${CMAKE_CURRENT_BINARY_DIR}/library" # for qmakeconfig.cpp
PRECOMPILED_HEADER
"qmake_pch.h"
LIBRARIES
- Qt::CorePrivate
+ QtLibraryInfo
+ NO_UNITY_BUILD_SOURCES
+ generators/win32/msvc_objectmodel.cpp # xml symbols clash with generators/win32/msbuild_objectmodel.cpp
+ library/qmakeparser.cpp # struct statics clashes with qmakeevaluator_p.h
)
+qt_internal_return_unless_building_tools()
-qt_generate_qconfig_cpp(../src/corelib/global/qconfig.cpp.in library/qmakeconfig.cpp)
+# 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"
@@ -101,7 +120,6 @@ qt_internal_extend_target(${target_name} CONDITION MACOS
"-fconstant-cfstrings"
)
-# special case big
qt_internal_extend_target(${target_name} CONDITION WIN32
SOURCES
library/registry.cpp
@@ -109,24 +127,15 @@ qt_internal_extend_target(${target_name} CONDITION WIN32
_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
+qt_internal_apply_gc_binaries(${target_name} PRIVATE)
+qt_skip_warnings_are_errors(${target_name})
-# special case begin
qt_internal_add_docs(${target_name}
doc/qmake.qdocconf
)
-# special case end