From a33e3aeac74c8fc8d1fff7a244083d96f9bba70f Mon Sep 17 00:00:00 2001 From: Liang Qi Date: Tue, 15 May 2018 14:35:48 +0200 Subject: Move qtimageformats over to the new config system Task-number: QTBUG-44318 Task-number: QTBUG-62259 Change-Id: Ide5c28015c46b12ee3f21d06badd69db8bed1281 Reviewed-by: Kai Koehne --- config.tests/jasper/jasper.cpp | 40 ------ config.tests/jasper/jasper.pro | 6 - config.tests/libmng/libmng.cpp | 44 ------- config.tests/libmng/libmng.pro | 6 - config.tests/libtiff/libtiff.cpp | 52 -------- config.tests/libtiff/libtiff.pro | 6 - config.tests/libwebp/libwebp.cpp | 52 -------- config.tests/libwebp/libwebp.pro | 6 - config_help.txt | 6 + configure.json | 5 + qtimageformats.pro | 6 - src/imageformats/configure.json | 212 ++++++++++++++++++++++++++++++ src/plugins/imageformats/imageformats.pro | 14 +- src/plugins/imageformats/jp2/jp2.pro | 6 +- src/plugins/imageformats/webp/webp.pro | 8 +- src/src.pro | 4 +- 16 files changed, 244 insertions(+), 229 deletions(-) delete mode 100644 config.tests/jasper/jasper.cpp delete mode 100644 config.tests/jasper/jasper.pro delete mode 100644 config.tests/libmng/libmng.cpp delete mode 100644 config.tests/libmng/libmng.pro delete mode 100644 config.tests/libtiff/libtiff.cpp delete mode 100644 config.tests/libtiff/libtiff.pro delete mode 100644 config.tests/libwebp/libwebp.cpp delete mode 100644 config.tests/libwebp/libwebp.pro create mode 100644 config_help.txt create mode 100644 configure.json create mode 100644 src/imageformats/configure.json diff --git a/config.tests/jasper/jasper.cpp b/config.tests/jasper/jasper.cpp deleted file mode 100644 index f038139..0000000 --- a/config.tests/jasper/jasper.cpp +++ /dev/null @@ -1,40 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Copyright (C) 2016 Petroules Corporation. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the config.tests in the Qt ImageFormats module. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include - -int main(int, char **) -{ - // This version of Jasper is broken, according to the old Qt Solutions docs - if (strcmp(JAS_VERSION, "1.900.0") == 0) - return 1; - - return 0; -} diff --git a/config.tests/jasper/jasper.pro b/config.tests/jasper/jasper.pro deleted file mode 100644 index 77d3689..0000000 --- a/config.tests/jasper/jasper.pro +++ /dev/null @@ -1,6 +0,0 @@ -SOURCES = jasper.cpp -CONFIG -= qt dylib -mac:CONFIG -= app_bundle -win32:CONFIG += console -msvc: LIBS += libjasper.lib -else: LIBS += -ljasper diff --git a/config.tests/libmng/libmng.cpp b/config.tests/libmng/libmng.cpp deleted file mode 100644 index 65dd7a1..0000000 --- a/config.tests/libmng/libmng.cpp +++ /dev/null @@ -1,44 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the config.tests in the Qt ImageFormats module. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include - -int main(int, char **) -{ - mng_handle hMNG; - mng_cleanup(&hMNG); - -#if defined(MNG_VERSION_MAJOR) -#if MNG_VERSION_MAJOR < 1 || (MNG_VERSION_MAJOR == 1 && MNG_VERSION_MINOR == 0 && MNG_VERSION_RELEASE < 9) -#error System libmng version is less than 1.0.9. -#endif -#endif - - return 0; -} diff --git a/config.tests/libmng/libmng.pro b/config.tests/libmng/libmng.pro deleted file mode 100644 index adc096e..0000000 --- a/config.tests/libmng/libmng.pro +++ /dev/null @@ -1,6 +0,0 @@ -SOURCES = libmng.cpp -CONFIG -= qt dylib -mac:CONFIG -= app_bundle -win32:CONFIG += console -unix|mingw: LIBS += -lmng -else:win32: LIBS += libmng.lib diff --git a/config.tests/libtiff/libtiff.cpp b/config.tests/libtiff/libtiff.cpp deleted file mode 100644 index beace21..0000000 --- a/config.tests/libtiff/libtiff.cpp +++ /dev/null @@ -1,52 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the config.tests of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include - -#if !defined(TIFF_VERSION) && defined(TIFF_VERSION_CLASSIC) -// libtiff 4.0 splits it into TIFF_VERSION_CLASSIC and TIFF_VERSION_BIG -# define TIFF_VERSION TIFF_VERSION_CLASSIC -#endif - -#if !defined(TIFF_VERSION) -# error "Required libtiff not found" -#elif TIFF_VERSION < 42 -# error "unsupported tiff version" -#endif - -int main(int, char **) -{ - tdata_t buffer = _TIFFmalloc(128); - _TIFFfree(buffer); - - // some libtiff implementations where TIFF_VERSION >= 42 do not - // have TIFFReadRGBAImageOriented(), so let's check for it - TIFFReadRGBAImageOriented(0, 0, 0, 0, 0, 0); - - return 0; -} diff --git a/config.tests/libtiff/libtiff.pro b/config.tests/libtiff/libtiff.pro deleted file mode 100644 index f7ac4c1..0000000 --- a/config.tests/libtiff/libtiff.pro +++ /dev/null @@ -1,6 +0,0 @@ -SOURCES = libtiff.cpp -CONFIG -= qt dylib -mac:CONFIG -= app_bundle -win32:CONFIG += console -unix|mingw: LIBS += -ltiff -else:win32: LIBS += libtiff.lib diff --git a/config.tests/libwebp/libwebp.cpp b/config.tests/libwebp/libwebp.cpp deleted file mode 100644 index 720b72b..0000000 --- a/config.tests/libwebp/libwebp.cpp +++ /dev/null @@ -1,52 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the config.tests in the Qt ImageFormats module. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include -#include - -#if WEBP_ABI_IS_INCOMPATIBLE(WEBP_DECODER_ABI_VERSION, 0x0203) || WEBP_ABI_IS_INCOMPATIBLE(WEBP_ENCODER_ABI_VERSION, 0x0202) -#error "Incompatible libwebp version" -#endif - -int main(int, char **) -{ - WebPDecoderConfig config; - WebPDecBuffer *output_buffer = &config.output; - WebPBitstreamFeatures *bitstream = &config.input; - WebPPicture picture; - picture.use_argb = 0; - WebPConfig config2; - config2.lossless = 0; - WebPData data = {}; - WebPDemuxer *demuxer = WebPDemux(&data); - WebPIterator iter; - iter.frame_num = 0; - - return 0; -} diff --git a/config.tests/libwebp/libwebp.pro b/config.tests/libwebp/libwebp.pro deleted file mode 100644 index bcbedf8..0000000 --- a/config.tests/libwebp/libwebp.pro +++ /dev/null @@ -1,6 +0,0 @@ -SOURCES = libwebp.cpp -CONFIG -= qt dylib -mac:CONFIG -= app_bundle -win32:CONFIG += console -unix|mingw: LIBS += -lwebp -lwebpdemux -else:win32: LIBS += libwebp.lib libwebpdemux.lib diff --git a/config_help.txt b/config_help.txt new file mode 100644 index 0000000..e08fa57 --- /dev/null +++ b/config_help.txt @@ -0,0 +1,6 @@ +Further image format options: + + -jasper .............. Enable JPEG-2000 support using the JasPer library [no] + -mng ................. Enable MNG support [no] + -tiff ................ Enable TIFF support [system/qt/no] + -webp ................ Enable WEBP support [system/qt/no] diff --git a/configure.json b/configure.json new file mode 100644 index 0000000..550aebd --- /dev/null +++ b/configure.json @@ -0,0 +1,5 @@ +{ + "subconfigs": [ + "src/imageformats" + ] +} diff --git a/qtimageformats.pro b/qtimageformats.pro index 8382e5c..fe127be 100644 --- a/qtimageformats.pro +++ b/qtimageformats.pro @@ -1,9 +1,3 @@ requires(qtHaveModule(gui)) -load(configure) -qtCompileTest(jasper) -qtCompileTest(libmng) -qtCompileTest(libtiff) -qtCompileTest(libwebp) - load(qt_parts) diff --git a/src/imageformats/configure.json b/src/imageformats/configure.json new file mode 100644 index 0000000..7c60f86 --- /dev/null +++ b/src/imageformats/configure.json @@ -0,0 +1,212 @@ +{ + "module": "imageformats", + "depends": [ + "gui" + ], + + "commandline": { + "options": { + "jasper": { "type": "boolean" }, + "mng": { "type": "boolean" }, + "tiff": { "type": "enum", "values": [ "no", "qt", "system" ] }, + "webp": { "type": "enum", "values": [ "no", "qt", "system" ] } + } + }, + + "libraries": { + "jasper": { + "label": "jasper", + "test": { + "label": "Jasper(header in /usr/include)", + "type": "compile", + "test": { + "include": [ + "string.h", + "jasper/jasper.h" + ], + "qmake": [ + "msvc: LIBS += libjasper.lib", + "else: LIBS += -ljasper" + ], + "main": [ + "// This version of Jasper is broken, according to the old Qt Solutions docs", + "if (strcmp(JAS_VERSION, \"1.900.0\") == 0)", + " return 1;", + "return 0;" + ] + } + }, + "sources": [ + "-ljasper" + ] + }, + "mng": { + "label": "mng", + "test": { + "label": "MNG(header in /usr/include)", + "type": "compile", + "test": { + "include": [ + "stdio.h", + "libmng.h" + ], + "qmake": [ + "LIBS += -lmng" + ], + "main": [ + "mng_handle hMNG;", + "mng_cleanup(&hMNG);", + "#if defined(MNG_VERSION_MAJOR)", + "#if MNG_VERSION_MAJOR < 1 || (MNG_VERSION_MAJOR == 1 && MNG_VERSION_MINOR == 0 && MNG_VERSION_RELEASE < 9)", + "#error System libmng version is less than 1.0.9", + "#endif", + "#endif", + "return 0;" + ] + } + }, + "sources": [ + "-lmng" + ] + }, + "tiff": { + "label": "tiff", + "test": { + "label": "TIFF(header in /usr/include)", + "type": "compile", + "test": { + "include": "tiffio.h", + "qmake": [ + "unix|mingw: LIBS += -ltiff", + "else:win32: LIBS += libtiff.lib" + ], + "main": [ + "#if !defined(TIFF_VERSION) && defined(TIFF_VERSION_CLASSIC)", + "// libtiff 4.0 splits it into TIFF_VERSION_CLASSIC and TIFF_VERSION_BIG", + "# define TIFF_VERSION TIFF_VERSION_CLASSIC", + "#endif", + + "#if !defined(TIFF_VERSION)", + "# error \"Required libtiff not found\"", + "#elif TIFF_VERSION < 42", + "# error \"unsupported tiff version\"", + "#endif", + + "tdata_t buffer = _TIFFmalloc(128);", + "_TIFFfree(buffer);", + + "// some libtiff implementations where TIFF_VERSION >= 42 do not", + "// have TIFFReadRGBAImageOriented(), so let's check for it", + "TIFFReadRGBAImageOriented(0, 0, 0, 0, 0, 0);", + + "return 0;" + ] + } + }, + "sources": [ + "-ltiff" + ] + }, + "webp": { + "label": "webp", + "test": { + "label": "WebP(header in /usr/include)", + "type": "compile", + "test": { + "include": [ + "webp/decode.h", + "webp/encode.h", + "webp/demux.h" + ], + "qmake": [ + "LIBS += -lwebp -lwebpdemux" + ], + "main": [ + "#if WEBP_ABI_IS_INCOMPATIBLE(WEBP_DECODER_ABI_VERSION, 0x0203) || WEBP_ABI_IS_INCOMPATIBLE(WEBP_ENCODER_ABI_VERSION, 0x0202)", + "#error \"Incompatible libwebp version\"", + "#endif", + + "WebPDecoderConfig config;", + "WebPDecBuffer *output_buffer = &config.output;", + "WebPBitstreamFeatures *bitstream = &config.input;", + "WebPPicture picture;", + "picture.use_argb = 0;", + "WebPConfig config2;", + "config2.lossless = 0;", + "WebPData data = {};", + "WebPDemuxer *demuxer = WebPDemux(&data);", + "WebPIterator iter;", + "iter.frame_num = 0;", + + "return 0;" + ] + } + }, + "sources": [ + "-lwebp -lwebpdemux" + ] + } + }, + + "features": { + "jasper": { + "label": "JasPer", + "disable": "input.jasper == 'no'", + "condition": "features.imageformatplugin && libs.jasper", + "output": [ + "privateFeature", + { "type": "define", "negative": true, "name": "QT_NO_IMAGEFORMAT_JASPER" } + ] + }, + "mng": { + "label": "MNG", + "disable": "input.mng == 'no'", + "condition": "libs.mng", + "output": [ "privateFeature" ] + }, + "tiff": { + "label": "TIFF", + "disable": "input.tiff == 'no'", + "condition": "features.imageformatplugin", + "output": [ + "privateFeature", + { "type": "define", "negative": true, "name": "QT_NO_IMAGEFORMAT_TIFF" } + ] + }, + "system-tiff": { + "label": " Using system libtiff", + "disable": "input.tiff == 'qt'", + "enable": "input.tiff == 'system'", + "condition": "features.tiff && libs.tiff", + "output": [ "privateFeature" ] + }, + "webp": { + "label": "WEBP", + "disable": "input.webp == 'no'", + "condition": "features.imageformatplugin", + "output": [ + "privateFeature", + { "type": "define", "negative": true, "name": "QT_NO_IMAGEFORMAT_WEBP" } + ] + }, + "system-webp": { + "label": " Using system libwebp", + "disable": "input.webp == 'qt'", + "enable": "input.webp == 'system'", + "condition": "features.webp && libs.webp", + "output": [ "privateFeature" ] + } + }, + + "summary": [ + { + "section": "Further Image Formats", + "entries": [ + "jasper", + "mng", + "tiff", "system-tiff", + "webp", "system-webp" + ] + } + ] +} diff --git a/src/plugins/imageformats/imageformats.pro b/src/plugins/imageformats/imageformats.pro index d6c59ee..be1e20a 100644 --- a/src/plugins/imageformats/imageformats.pro +++ b/src/plugins/imageformats/imageformats.pro @@ -2,17 +2,21 @@ TEMPLATE = subdirs SUBDIRS = \ # dds \ tga \ - tiff \ - wbmp \ - webp + wbmp + +include($$OUT_PWD/../../imageformats/qtimageformats-config.pri) +QT_FOR_CONFIG += imageformats-private + +qtConfig(tiff): SUBDIRS += tiff +qtConfig(webp): SUBDIRS += webp darwin: SUBDIRS += macheif qtConfig(regularexpression): \ SUBDIRS += icns -config_libmng: SUBDIRS += mng -config_jasper { +qtConfig(mng): SUBDIRS += mng +qtConfig(jasper) { SUBDIRS += jp2 } else:darwin: { SUBDIRS += macjp2 diff --git a/src/plugins/imageformats/jp2/jp2.pro b/src/plugins/imageformats/jp2/jp2.pro index 4caeff3..d9fb4fa 100644 --- a/src/plugins/imageformats/jp2/jp2.pro +++ b/src/plugins/imageformats/jp2/jp2.pro @@ -5,8 +5,10 @@ SOURCES += main.cpp \ qjp2handler.cpp OTHER_FILES += jp2.json -msvc: LIBS += libjasper.lib -else: LIBS += -ljasper +include($$OUT_PWD/../../../imageformats/qtimageformats-config.pri) +QT_FOR_CONFIG += imageformats-private + +QMAKE_USE_PRIVATE += jasper PLUGIN_TYPE = imageformats PLUGIN_CLASS_NAME = QJp2Plugin diff --git a/src/plugins/imageformats/webp/webp.pro b/src/plugins/imageformats/webp/webp.pro index 405c3b7..cea7c78 100644 --- a/src/plugins/imageformats/webp/webp.pro +++ b/src/plugins/imageformats/webp/webp.pro @@ -4,9 +4,11 @@ HEADERS += qwebphandler_p.h SOURCES += main.cpp qwebphandler.cpp OTHER_FILES += webp.json -config_libwebp { - unix|win32-g++*: LIBS += -lwebp -lwebpdemux - else:win32: LIBS += libwebp.lib libwebpdemux.lib +include($$OUT_PWD/../../../imageformats/qtimageformats-config.pri) +QT_FOR_CONFIG += imageformats-private + +qtConfig(system-webp) { + QMAKE_USE += webp } else { include($$PWD/../../../3rdparty/libwebp.pri) } diff --git a/src/src.pro b/src/src.pro index fcc0785..4f9cee1 100644 --- a/src/src.pro +++ b/src/src.pro @@ -1,2 +1,4 @@ TEMPLATE = subdirs -SUBDIRS = plugins imageformats +SUBDIRS = imageformats plugins + +plugins.depends = imageformats -- cgit v1.2.3