diff --git a/qmake/CMakeLists.txt b/qmake/CMakeLists.txt index c068a8db2de..0a49c9db793 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 d7f4e87c701..a6ad9fe2506 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 2487ecb5a9d..0ef9813eeeb 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