summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTor Arne Vestbø <tor.arne.vestbo@qt.io>2020-07-01 13:40:11 +0200
committerTor Arne Vestbø <tor.arne.vestbo@qt.io>2020-07-02 10:27:58 +0200
commit1048d83fc29d77e7a8def35ba41454fe35f4747b (patch)
tree0a2af902cc2d4fe7a5b9024d6b844c5cbf0e0754
parent6ff79478a44fce12ca18832a56db4a370a9ff417 (diff)
Limit OpenGL deprecation silencing on Apple platform to Qt itself
Apple deprecated the entire OpenGL API in favor of Metal, which we are aware of, so we don't need to see the warnings when building Qt. Instead of applying the silencing globally for all Qt consumers, both internal and external, we now limit the silencing to Qt itself. That means user code that explicitly uses any of the deprecated APIs will see the warnings. Note that this does not apply to merely using any of the Qt OpenGL APIs. The user has to explicitly use the platform APIs that have been deprecated. The warnings need to be disabled on a build system level, so that that they are passed as -D flags on the command line. If the defines were done in Qt headers (qguiglobal.h e.g.), they would require the user to always include this header before any of the Apple headers. Change-Id: I3f2a2a5211332a059ad4416394251772c677fdcb Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
-rw-r--r--cmake/QtBuild.cmake5
-rw-r--r--cmake/QtInternalTargets.cmake10
-rw-r--r--mkspecs/common/macx.conf2
-rw-r--r--mkspecs/common/uikit.conf2
-rw-r--r--mkspecs/features/qt_common.prf7
5 files changed, 17 insertions, 9 deletions
diff --git a/cmake/QtBuild.cmake b/cmake/QtBuild.cmake
index bde23072ea..cc5020fd9b 100644
--- a/cmake/QtBuild.cmake
+++ b/cmake/QtBuild.cmake
@@ -294,11 +294,6 @@ elseif(ANDROID)
endif()
elseif(APPLE)
set(QT_DEFAULT_MKSPEC macx-clang)
- if(MACOS)
- list(APPEND QT_DEFAULT_PLATFORM_DEFINITIONS GL_SILENCE_DEPRECATION)
- elseif(UIKIT)
- list(APPEND QT_DEFAULT_PLATFORM_DEFINITIONS GLES_SILENCE_DEPRECATION)
- endif()
elseif(EMSCRIPTEN)
set(QT_DEFAULT_MKSPEC wasm-emscripten)
endif()
diff --git a/cmake/QtInternalTargets.cmake b/cmake/QtInternalTargets.cmake
index 6eb4bd96f9..00a4ad6f75 100644
--- a/cmake/QtInternalTargets.cmake
+++ b/cmake/QtInternalTargets.cmake
@@ -123,6 +123,16 @@ function(qt_internal_apply_bitcode_flags target)
target_compile_options("${target}" INTERFACE ${bitcode_flags})
endfunction()
+# Apple deprecated the entire OpenGL API in favor of Metal, which
+# we are aware of, so silence the deprecation warnings in code.
+# This does not apply to user-code, which will need to silence
+# their own warnings if they use the deprecated APIs explicitly.
+if(MACOS)
+ target_compile_definitions(PlatformCommonInternal INTERFACE GL_SILENCE_DEPRECATION)
+elseif(UIKIT)
+ target_compile_definitions(PlatformCommonInternal INTERFACE GLES_SILENCE_DEPRECATION)
+endif()
+
if(UIKIT)
# Do what mkspecs/features/uikit/default_pre.prf does, aka enable sse2 for
# simulator_and_device_builds.
diff --git a/mkspecs/common/macx.conf b/mkspecs/common/macx.conf
index 0f983f059a..6a1b076d7d 100644
--- a/mkspecs/common/macx.conf
+++ b/mkspecs/common/macx.conf
@@ -22,6 +22,4 @@ device.deployment_identifier = $${device.sdk}
QMAKE_LIBS_VULKAN =
-DEFINES += GL_SILENCE_DEPRECATION
-
include(mac.conf)
diff --git a/mkspecs/common/uikit.conf b/mkspecs/common/uikit.conf
index 424381e285..0388b8e616 100644
--- a/mkspecs/common/uikit.conf
+++ b/mkspecs/common/uikit.conf
@@ -7,6 +7,4 @@ CONFIG += bitcode reduce_exports shallow_bundle no_qt_rpath
INCLUDEPATH += $$PWD/uikit
-DEFINES += GLES_SILENCE_DEPRECATION
-
include(mac.conf)
diff --git a/mkspecs/features/qt_common.prf b/mkspecs/features/qt_common.prf
index 8df94aa4ee..421adcdaa0 100644
--- a/mkspecs/features/qt_common.prf
+++ b/mkspecs/features/qt_common.prf
@@ -62,6 +62,13 @@ contains(TEMPLATE, .*lib)|darwin {
if(!host_build|!cross_compile):qtConfig(reduce_exports): CONFIG += hide_symbols
}
+# Apple deprecated the entire OpenGL API in favor of Metal, which
+# we are aware of, so silence the deprecation warnings in code.
+# This does not apply to user-code, which will need to silence
+# their own warnings if they use the deprecated APIs explicitly.
+macos: DEFINES += GL_SILENCE_DEPRECATION
+uikit: DEFINES += GLES_SILENCE_DEPRECATION
+
# The remainder of this file must not apply to host tools/libraries,
# as the host compiler's version and capabilities are not checked.
host_build:cross_compile: return()