diff --git a/CMakeLists.txt b/CMakeLists.txt index 9ed9d3dc..a338b3b0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,12 +4,11 @@ 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 "define project version") +file(READ "${CMAKE_CURRENT_SOURCE_DIR}/VERSION" FILE_VERSION) +string(STRIP "${FILE_VERSION}" FILE_VERSION) project(qt5platform-plugins - VERSION ${DTK_VERSION} + VERSION ${FILE_VERSION} DESCRIPTION "DTK platform plugin module" HOMEPAGE_URL "https://github.com/linuxdeepin/qt5platform-plugins" LANGUAGES CXX C @@ -22,15 +21,19 @@ endif () include(GNUInstallDirs) include(CMakePackageConfigHelpers) -if("${PROJECT_VERSION_MAJOR}" STREQUAL "5") - set(QT_VERSION_MAJOR "5") -elseif("${PROJECT_VERSION_MAJOR}" STREQUAL "6") - set(QT_VERSION_MAJOR "6") - set(DTK_VERSION_MAJOR "6") +option(DTK5 "Build DTK5." ON) +if(DTK5) + set(DTK_VERSION_MAJOR "5") else() - message(SEND_ERROR "not support Prject Version ${PROJECT_VERSION}.") + set(DTK_VERSION_MAJOR "6") endif() -message(${PROJECT_VERSION_MAJOR}) + +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}) + +message(STATUS "Building DTK${DTK_VERSION_MAJOR} (Qt${QT_VERSION_MAJOR}) version: ${DTK_VERSION}") set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) @@ -48,11 +51,10 @@ endif () set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/plugins/platforms) add_subdirectory(xcb) -if("${PROJECT_VERSION_MAJOR}" STREQUAL "5") +if(DTK5) add_subdirectory(wayland) endif() if(BUILD_TESTING) enable_testing() add_subdirectory(tests) endif() -message(${PROJECT_VERSION_MAJOR}) diff --git a/archlinux/PKGBUILD b/archlinux/PKGBUILD index be01a02c..aeb83a21 100644 --- a/archlinux/PKGBUILD +++ b/archlinux/PKGBUILD @@ -22,8 +22,8 @@ build() { cmake . -GNinja \ -DCMAKE_INSTALL_LIBDIR=lib \ -DCMAKE_INSTALL_PREFIX=/usr \ - -DCMAKE_BUILD_TYPE=Release \ - -DQT_XCB_PRIVATE_HEADERS=/usr/include/qtxcb-private + -DQT_XCB_PRIVATE_HEADERS=/usr/include/qtxcb-private \ + -DDTK5=ON ninja } diff --git a/debian/control b/debian/control index 836a840e..8a8b2645 100644 --- a/debian/control +++ b/debian/control @@ -1,17 +1,48 @@ Source: dde-qt5platform-plugins Section: devel Priority: optional -Maintainer: Deepin Packages Builder -Build-Depends: debhelper (>=9), qtbase5-dev, qtbase5-private-dev, - pkg-config, libqt5x11extras5-dev, libxcb-xkb-dev, libxcb-render-util0-dev, - libxcb-image0-dev, libxcb-icccm4-dev, libxcb-keysyms1-dev, libegl1-mesa-dev, - libmtdev-dev, libxkbcommon-x11-dev, libdbus-1-dev, libqt5opengl5-dev, - libudev-dev, libxrender-dev,libxi-dev, libsm-dev, libxcb-xinerama0-dev, - libfontconfig1-dev, libglib2.0-dev, libxcb-damage0-dev, - libxcb-composite0-dev, libcairo2-dev, libkf5wayland-dev, libdwayland-dev, - qtwayland5-private-dev | libqt5waylandclient5-dev, - libwayland-dev, libxcb-xinput-dev, libxcb-util-dev | libxcb-util0-dev, - libx11-xcb-dev, libxcb-sync-dev, libxcb-randr0-dev, cmake, libgtest-dev, libgmock-dev, libdtkcommon-dev(>=5.6.16) +Maintainer: Shanshan Ye +Build-Depends: debhelper-compat (= 12), + cmake, + pkg-config, + libgtest-dev, + libgmock-dev, + libdtkcommon-dev(>=5.6.16), + qtbase5-dev , + qtbase5-private-dev , + libqt5x11extras5-dev , + libqt5opengl5-dev , + qtwayland5-private-dev | libqt5waylandclient5-dev , + qt6-base-dev , + qt6-base-private-dev , + libxcb-cursor-dev , + libxcb-xkb-dev, + libxcb-render-util0-dev, + libxcb-image0-dev, + libxcb-icccm4-dev, + libxcb-keysyms1-dev, + libegl1-mesa-dev, + libmtdev-dev, + libxkbcommon-x11-dev, + libdbus-1-dev, + libudev-dev, + libxrender-dev, + libxi-dev, + libsm-dev, + libxcb-xinerama0-dev, + libfontconfig1-dev, + libglib2.0-dev, + libxcb-damage0-dev, + libxcb-composite0-dev, + libcairo2-dev, + libkf5wayland-dev , + libdwayland-dev , + libwayland-dev, + libxcb-xinput-dev, + libxcb-util-dev | libxcb-util0-dev, + libx11-xcb-dev, + libxcb-sync-dev, + libxcb-randr0-dev Standards-Version: 3.9.8 Package: dde-qt5xcb-plugin @@ -21,11 +52,20 @@ Conflicts: libqt5dxcb-plugin, qt5dxcb-plugin Breaks:dde-qt5integration (<< 0.2.8.1) Replaces: qt5dxcb-plugin Depends: ${shlibs:Depends}, ${misc:Depends} -Description: Qt platform plugins +Build-Profiles: +Description: Qt platform plugins (DTK5 with Qt5) Qt platform plugins for DDE. Package: dde-qt5wayland-plugin Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, qtwayland5 -Description: Qt platform plugins +Build-Profiles: +Description: Qt platform plugins (DTK5 with Qt5) Qt platform plugins for DDE. + +Package: dde-qt6xcb-plugin +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Build-Profiles: +Description: Qt platform plugins (DTK6 with Qt6) + Qt platform plugins for DDE (Qt6 version). diff --git a/debian/dde-qt6xcb-plugin.install b/debian/dde-qt6xcb-plugin.install new file mode 100644 index 00000000..0450f4e3 --- /dev/null +++ b/debian/dde-qt6xcb-plugin.install @@ -0,0 +1 @@ +usr/lib/*/qt6/plugins/platforms/libdxcb.so diff --git a/debian/rules b/debian/rules index 25327e10..3099bfe5 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,57 @@ 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 +# Build-Profiles 控制 +BUILD_DTK5 := $(if $(filter nodtk5,$(DEB_BUILD_PROFILES)),OFF,ON) +BUILD_DTK6 := $(if $(filter nodtk6,$(DEB_BUILD_PROFILES)),OFF,ON) + %: - dh $@ + 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_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_shlibdeps: dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info + +override_dh_auto_clean: + dh_auto_clean --builddirectory=build5 + dh_auto_clean --builddirectory=build6 + rm -rf build5 build6 diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 63071769..e6915f35 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -26,8 +26,11 @@ include(${CMAKE_SOURCE_DIR}/xcb/linux.cmake) add_definitions(-DPLUGIN_OUTPUT_PATH=\"${LIBRARY_OUTPUT_PATH}/..\") -target_compile_options(${PROJECT_NAME} PRIVATE -fno-access-control -fsanitize=address) -target_link_options(${PROJECT_NAME} PRIVATE -fsanitize=address) +target_compile_options(${PROJECT_NAME} PRIVATE -fno-access-control) +if (CMAKE_BUILD_TYPE STREQUAL "Debug") + target_compile_options(${PROJECT_NAME} PRIVATE -fsanitize=address) + target_link_options(${PROJECT_NAME} PRIVATE -fsanitize=address) +endif () if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") target_compile_options(${PROJECT_NAME} PRIVATE -fprofile-instr-generate -ftest-coverage) endif() @@ -68,3 +71,5 @@ if(${QT_VERSION_MAJOR} STREQUAL "5") else() target_link_libraries(${PROJECT_NAME} PRIVATE Qt6::OpenGL Qt6::OpenGLPrivate Qt6::XcbQpaPrivate) endif() + +add_test(NAME ${PROJECT_NAME} COMMAND ${PROJECT_NAME})