diff --git a/CMakeLists.txt b/CMakeLists.txt index 7c2b6965..02612b4b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,13 +4,12 @@ cmake_minimum_required(VERSION 3.13) -file(READ "${CMAKE_CURRENT_SOURCE_DIR}/VERSION" DTK_FILE_VERSION) -string(STRIP "${DTK_FILE_VERSION}" DTK_FILE_VERSION) -set(DTK_VERSION "${DTK_FILE_VERSION}" CACHE STRING "Project version") +file(READ "${CMAKE_CURRENT_SOURCE_DIR}/VERSION" FILE_VERSION) +string(STRIP "${FILE_VERSION}" FILE_VERSION) project( qtintegration - VERSION ${DTK_VERSION} + VERSION ${FILE_VERSION} DESCRIPTION "Qt platform integration for DTK" HOMEPAGE_URL "https://github.com/linuxdeepin/qt5integration" LANGUAGES CXX C @@ -18,14 +17,26 @@ project( option(ENABLE_COV "Enable code coverage" OFF) -if(PROJECT_VERSION_MAJOR EQUAL 6) - set(VERSION_SUFFIX 6) +option(DTK5 "Build DTK5." ON) +if(DTK5) + set(DTK_VERSION_MAJOR "5") + set(DTK_NAME_SUFFIX "") +else() + set(DTK_VERSION_MAJOR "6") + set(DTK_NAME_SUFFIX "6") +endif() + +set(DTK_VERSION_MINOR ${PROJECT_VERSION_MINOR}) +set(DTK_VERSION_PATCH ${PROJECT_VERSION_PATCH}) +set(DTK_VERSION "${DTK_VERSION_MAJOR}.${DTK_VERSION_MINOR}.${DTK_VERSION_PATCH}") +set(QT_VERSION_MAJOR ${DTK_VERSION_MAJOR}) + +if(QT_VERSION_MAJOR EQUAL 6) find_package(QT NAMES Qt6 REQUIRED COMPONENTS Core) if(QT_VERSION VERSION_GREATER_EQUAL 6.10) find_package(Qt6 COMPONENTS CorePrivate GuiPrivate WidgetsPrivate REQUIRED) endif() else() - set(VERSION_SUFFIX) find_package(QT NAMES Qt5 REQUIRED COMPONENTS Core) endif() @@ -104,7 +115,7 @@ function(dtk_add_plugin) endif() endfunction() -find_package(Dtk${VERSION_SUFFIX} REQUIRED COMPONENTS Widget) +find_package(Dtk${DTK_NAME_SUFFIX} REQUIRED COMPONENTS Widget) option(ENABLE_QT_XDG_ICON_LOADER "Enable QtXdgIconLoader" ON) find_package(Qt${QT_VERSION_MAJOR}Xdg) @@ -134,5 +145,6 @@ if(CMAKE_BUILD_TYPE_LOWER STREQUAL debug) add_subdirectory(styles) endif() if(BUILD_TESTING) + enable_testing() add_subdirectory(tests) endif() diff --git a/archlinux/PKGBUILD b/archlinux/PKGBUILD index 6753a38f..35d3e6ea 100644 --- a/archlinux/PKGBUILD +++ b/archlinux/PKGBUILD @@ -23,7 +23,7 @@ build() { cmake . -GNinja \ -DCMAKE_INSTALL_LIBDIR=lib \ -DCMAKE_INSTALL_PREFIX=/usr \ - -DCMAKE_BUILD_TYPE=Release + -DDTK5=ON ninja } diff --git a/debian/control b/debian/control index cc3c47bf..c47576e7 100644 --- a/debian/control +++ b/debian/control @@ -1,27 +1,32 @@ Source: qt5integration Section: devel Priority: optional -Maintainer: Deepin Packages Builder +Maintainer: Shanshan Ye Build-Depends: - debhelper (>=9), + debhelper-compat (= 12), cmake, - qtbase5-dev, - qtbase5-private-dev, - libqt5xdg-dev, - libdtkgui-dev (>=5.6.13), - libdtkwidget-dev, pkg-config, - libqt5x11extras5-dev, libfontconfig1-dev, libfreetype-dev, libglib2.0-dev, - libqt5svg5-dev, - libqt5xdgiconloader-dev, libmtdev-dev, libegl1-mesa-dev, libxrender-dev, libgtest-dev, - libgmock-dev + libgmock-dev, + qtbase5-dev , + qtbase5-private-dev , + libqt5xdg-dev , + libdtkgui-dev (>=5.6.13) , + libdtkwidget-dev , + libqt5x11extras5-dev , + libqt5svg5-dev , + libqt5xdgiconloader-dev , + qt6-base-dev , + qt6-base-private-dev , + libdtk6gui-dev , + libdtk6widget-dev , + qt6-svg-dev Standards-Version: 3.9.8 Package: dde-qt5integration @@ -29,5 +34,13 @@ Architecture: any Provides: libqt5deepintheme-plugin Conflicts: libqt5deepintheme-plugin Depends: ${shlibs:Depends}, ${misc:Depends}, dde-qt5xcb-plugin -Description: Qt platform theme integration plugins for DDE +Build-Profiles: +Description: Qt platform theme integration plugins for DDE (DTK5 with Qt5) Multiple Qt plugins to provide better Qt5 integration for DDE is included. + +Package: dde-qt6integration +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Build-Profiles: +Description: Qt platform theme integration plugins for DDE (DTK6 with Qt6) + Multiple Qt plugins to provide better Qt6 integration for DDE is included. diff --git a/debian/dde-qt5integration.install b/debian/dde-qt5integration.install new file mode 100644 index 00000000..7e9190d2 --- /dev/null +++ b/debian/dde-qt5integration.install @@ -0,0 +1,4 @@ +usr/lib/*/qt5/plugins/platformthemes/ +usr/lib/*/qt5/plugins/styles/ +usr/lib/*/qt5/plugins/iconengines/ +usr/lib/*/qt5/plugins/imageformats/ diff --git a/debian/dde-qt6integration.install b/debian/dde-qt6integration.install new file mode 100644 index 00000000..8adae365 --- /dev/null +++ b/debian/dde-qt6integration.install @@ -0,0 +1,4 @@ +usr/lib/*/qt6/plugins/platformthemes/ +usr/lib/*/qt6/plugins/styles/ +usr/lib/*/qt6/plugins/iconengines/ +usr/lib/*/qt6/plugins/imageformats/ diff --git a/debian/rules b/debian/rules index 44fbbdeb..9862e193 100755 --- a/debian/rules +++ b/debian/rules @@ -1,4 +1,6 @@ #!/usr/bin/make -f +DPKG_EXPORT_BUILDFLAGS = 1 +include /usr/share/dpkg/default.mk # 安全编译参数 export DEB_BUILD_MAINT_OPTIONS = hardening=+all @@ -6,8 +8,61 @@ export DEB_CFLAGS_MAINT_APPEND = -Wall export DEB_CXXFLAGS_MAINT_APPEND = -Wall export DEB_LDFLAGS_MAINT_APPEND = -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack -Wl,-E +# 版本映射:x.y.z -> 5.y.z 和 6.y.z +DTK5_VERSION := $(shell echo $(DEB_VERSION_UPSTREAM) | sed -E 's/^[0-9]+(\.|[^0-9]|$$)/5\1/') +DTK6_VERSION := $(shell echo $(DEB_VERSION_UPSTREAM) | sed -E 's/^[0-9]+(\.|[^0-9]|$$)/6\1/') + +# Build-Profiles 控制 +BUILD_DTK5 := $(if $(filter nodtk5,$(DEB_BUILD_PROFILES)),OFF,ON) +BUILD_DTK6 := $(if $(filter nodtk6,$(DEB_BUILD_PROFILES)),OFF,ON) + %: dh $@ +override_dh_auto_configure: +ifeq ($(BUILD_DTK5),ON) + mkdir -p build5 + QT_SELECT=qt5 dh_auto_configure --builddirectory=build5 -- \ + $(DEB_CMAKE_EXTRA_FLAGS) \ + -DBUILD_TESTING=OFF \ + -DDTK5=ON +endif +ifeq ($(BUILD_DTK6),ON) + mkdir -p build6 + dh_auto_configure --builddirectory=build6 -- \ + $(DEB_CMAKE_EXTRA_FLAGS) \ + -DBUILD_TESTING=OFF \ + -DDTK5=OFF +endif + +override_dh_auto_build: +ifeq ($(BUILD_DTK5),ON) + QT_SELECT=qt5 dh_auto_build --builddirectory=build5 +endif +ifeq ($(BUILD_DTK6),ON) + dh_auto_build --builddirectory=build6 +endif + +override_dh_auto_install: +ifeq ($(BUILD_DTK5),ON) + QT_SELECT=qt5 dh_auto_install --builddirectory=build5 +endif +ifeq ($(BUILD_DTK6),ON) + dh_auto_install --builddirectory=build6 +endif + override_dh_shlibdeps: dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info + +override_dh_auto_test: +ifeq ($(BUILD_DTK5),ON) + QT_SELECT=qt5 dh_auto_test --builddirectory=build5 +endif +ifeq ($(BUILD_DTK6),ON) + dh_auto_test --builddirectory=build6 +endif + +override_dh_auto_clean: + dh_auto_clean --builddirectory=build5 + dh_auto_clean --builddirectory=build6 + rm -rf build5 build6 diff --git a/iconengineplugins/diconengine/CMakeLists.txt b/iconengineplugins/diconengine/CMakeLists.txt index c16d50b2..c3eeb84d 100644 --- a/iconengineplugins/diconengine/CMakeLists.txt +++ b/iconengineplugins/diconengine/CMakeLists.txt @@ -14,5 +14,5 @@ dtk_add_plugin( HEADERS DEPENDENCIES Qt${QT_VERSION_MAJOR}::GuiPrivate - Dtk${VERSION_SUFFIX}::Gui + Dtk${DTK_NAME_SUFFIX}::Gui ) diff --git a/iconengineplugins/svgiconengine/CMakeLists.txt b/iconengineplugins/svgiconengine/CMakeLists.txt index 31eb9ecf..9e03998b 100644 --- a/iconengineplugins/svgiconengine/CMakeLists.txt +++ b/iconengineplugins/svgiconengine/CMakeLists.txt @@ -17,6 +17,6 @@ dtk_add_plugin( qsvgiconengine.h DEPENDENCIES Qt${QT_VERSION_MAJOR}::GuiPrivate - Dtk${VERSION_SUFFIX}::Gui + Dtk${DTK_NAME_SUFFIX}::Gui Qt${QT_VERSION_MAJOR}::Concurrent ) diff --git a/imageformatplugins/dci/CMakeLists.txt b/imageformatplugins/dci/CMakeLists.txt index e86bab2c..b174c167 100644 --- a/imageformatplugins/dci/CMakeLists.txt +++ b/imageformatplugins/dci/CMakeLists.txt @@ -15,5 +15,5 @@ dtk_add_plugin( HEADERS qdciiohandler.h DEPENDENCIES - Dtk${VERSION_SUFFIX}::Gui + Dtk${DTK_NAME_SUFFIX}::Gui ) diff --git a/imageformatplugins/svg/CMakeLists.txt b/imageformatplugins/svg/CMakeLists.txt index 3a17c4df..94bd831f 100644 --- a/imageformatplugins/svg/CMakeLists.txt +++ b/imageformatplugins/svg/CMakeLists.txt @@ -15,5 +15,5 @@ dtk_add_plugin( HEADERS qsvgiohandler.h DEPENDENCIES - Dtk${VERSION_SUFFIX}::Gui + Dtk${DTK_NAME_SUFFIX}::Gui ) diff --git a/platformthemeplugin/CMakeLists.txt b/platformthemeplugin/CMakeLists.txt index 054739b1..cb8bc62f 100644 --- a/platformthemeplugin/CMakeLists.txt +++ b/platformthemeplugin/CMakeLists.txt @@ -63,7 +63,7 @@ dtk_add_plugin( icons/deepin-theme-plugin-icons.qrc deepin-theme-plugin.qrc DEPENDENCIES - Dtk${VERSION_SUFFIX}::Gui + Dtk${DTK_NAME_SUFFIX}::Gui ${QT_LIBS} PkgConfig::Deps DEFINITIONS diff --git a/styleplugins/chameleon/CMakeLists.txt b/styleplugins/chameleon/CMakeLists.txt index 738b7f0a..5212814f 100644 --- a/styleplugins/chameleon/CMakeLists.txt +++ b/styleplugins/chameleon/CMakeLists.txt @@ -16,7 +16,7 @@ dtk_add_plugin( common.h dstyleanimation.h DEPENDENCIES - Dtk${VERSION_SUFFIX}::Widget + Dtk${DTK_NAME_SUFFIX}::Widget Qt${QT_VERSION_MAJOR}::CorePrivate Qt${QT_VERSION_MAJOR}::GuiPrivate Qt${QT_VERSION_MAJOR}::WidgetsPrivate diff --git a/styles/CMakeLists.txt b/styles/CMakeLists.txt index 7e48a396..afa73445 100644 --- a/styles/CMakeLists.txt +++ b/styles/CMakeLists.txt @@ -10,5 +10,5 @@ add_executable(gallery styles.qrc ) -target_link_libraries(gallery PRIVATE Dtk${VERSION_SUFFIX}::Widget) +target_link_libraries(gallery PRIVATE Dtk${DTK_NAME_SUFFIX}::Widget) set_target_properties(gallery PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 6832bca9..18d7300c 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -27,16 +27,19 @@ target_compile_options(unit-tests PRIVATE -g -fno-access-control -Wall - -fsanitize=address -fsanitize-recover=address -O0 ) target_link_options(unit-tests PRIVATE - -fsanitize=address -fsanitize-recover=address ) +if (CMAKE_BUILD_TYPE STREQUAL "Debug") + target_compile_options(unit-tests PRIVATE -fsanitize=address) + target_link_options(unit-tests PRIVATE -fsanitize=address) +endif() + target_link_libraries(unit-tests PRIVATE GTest::GTest GTest::gmock @@ -46,7 +49,6 @@ target_link_options(unit-tests PRIVATE dsvg qdeepin chameleon - asan ) target_compile_definitions(unit-tests PRIVATE @@ -64,3 +66,5 @@ target_include_directories(unit-tests PRIVATE ${CMAKE_SOURCE_DIR}/styleplugins/chameleon ${CMAKE_SOURCE_DIR}/platformthemeplugin ) + +add_test(NAME unit-tests COMMAND unit-tests)