From fd3c417af9ea9336057f6d15127d1c51258beaa9 Mon Sep 17 00:00:00 2001 From: Alexey Edelev Date: Tue, 9 Mar 2021 16:15:26 +0100 Subject: Move the common qmake sources into a object library Some qmake sources could be reused by other tools. It makes sense to move such sources to the object library, to avoid additional compilation steps and to simplify the reuse of sources. Change-Id: I9d7bb7624019149d34d29e4b269b4f26b8aec7a4 Reviewed-by: Alexandru Croitor --- qmake/CMakeLists.txt | 50 ++++++++++++++++++++++++++++++++++++-------------- qmake/option.h | 2 -- qmake/property.cpp | 2 ++ 3 files changed, 38 insertions(+), 16 deletions(-) (limited to 'qmake') diff --git a/qmake/CMakeLists.txt b/qmake/CMakeLists.txt index c068a8db2d..0a49c9db79 100644 --- a/qmake/CMakeLists.txt +++ b/qmake/CMakeLists.txt @@ -4,6 +4,36 @@ ## qmake Tool: ##################################################################### +# The common object library, that should be available regardless of the presence of qmake. +add_library(QtLibraryInfo OBJECT + library/proitems.cpp library/proitems.h + library/qmake_global.h + property.cpp property.h + qmakelibraryinfo.cpp qmakelibraryinfo.h +) +set_target_properties(QtLibraryInfo PROPERTIES + COMPILE_OPTIONS $ + COMPILE_DEFINITIONS $ + INCLUDE_DIRECTORIES $ + INCLUDE_DIRECTORIES $ +) +target_include_directories(QtLibraryInfo PUBLIC + "${CMAKE_CURRENT_SOURCE_DIR}" + "${CMAKE_CURRENT_SOURCE_DIR}/library" +) +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}" +) + # 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") @@ -34,31 +64,17 @@ 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_HOST_MKSPEC="${QT_QMAKE_HOST_MKSPEC}" - QT_TARGET_MKSPEC="${QT_QMAKE_TARGET_MKSPEC}" INCLUDE_DIRECTORIES generators generators/mac @@ -69,6 +85,12 @@ qt_internal_add_tool(${target_name} "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:: diff --git a/qmake/option.h b/qmake/option.h index d7f4e87c70..a6ad9fe250 100644 --- a/qmake/option.h +++ b/qmake/option.h @@ -40,8 +40,6 @@ QT_BEGIN_NAMESPACE -#define QMAKE_VERSION_STR "3.1" - QString qmake_getpwd(); bool qmake_setpwd(const QString &p); diff --git a/qmake/property.cpp b/qmake/property.cpp index 2487ecb5a9..0ef9813eee 100644 --- a/qmake/property.cpp +++ b/qmake/property.cpp @@ -93,7 +93,9 @@ void QMakeProperty::reload() } m_values[ProKey(name)] = val; } +#ifdef QMAKE_VERSION_STR m_values["QMAKE_VERSION"] = ProString(QMAKE_VERSION_STR); +#endif #ifdef QT_VERSION_STR m_values["QT_VERSION"] = ProString(QT_VERSION_STR); #endif -- cgit v1.2.3