Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 16 additions & 12 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
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(DtkWidget
VERSION ${DTK_VERSION}
VERSION ${FILE_VERSION}
DESCRIPTION "DTK Widget module"
HOMEPAGE_URL "https://github.com/linuxdeepin/dtkwidget"
LANGUAGES CXX C
Expand All @@ -19,13 +18,18 @@ endif()
include(GNUInstallDirs)
include(CMakePackageConfigHelpers)

if("${PROJECT_VERSION_MAJOR}" STREQUAL "5")
set(QT_VERSION_MAJOR 5)
include(dtkwidget.cmake)
elseif("${PROJECT_VERSION_MAJOR}" STREQUAL "6")
set(QT_VERSION_MAJOR "6")
set(DTK_VERSION_MAJOR "6")
include(dtkwidget.cmake)
option(DTK5 "Build DTK5." ON)
if(DTK5)
set(DTK_VERSION_MAJOR "5")
set(DTK_NAME_SUFFIX "")
else()
message(SEND_ERROR "not support Prject Version ${PROJECT_VERSION}.")
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})

include(dtkwidget.cmake)
2 changes: 1 addition & 1 deletion archlinux/PKGBUILD
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ build() {
-DQCH_INSTALL_DESTINATION=share/doc/qt \
-DCMAKE_INSTALL_LIBDIR=lib \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_BUILD_TYPE=Release
-DDTK5=ON
ninja
}

Expand Down
106 changes: 96 additions & 10 deletions debian/control
Original file line number Diff line number Diff line change
@@ -1,21 +1,104 @@
Source: dtkwidget
Section: libdevel
Priority: optional
Maintainer: Deepin Packages Builder <packages@deepin.com>
Build-Depends: debhelper-compat (= 12), pkg-config, libudev-dev,
libqt5x11extras5-dev, libxext-dev, qttools5-dev-tools, qttools5-dev,
x11proto-xext-dev, libxcb-util0-dev, libstartup-notification0-dev,
libmtdev-dev, qtbase5-private-dev, libegl1-mesa-dev, libudev-dev,
libfontconfig1-dev, libfreetype-dev, libglib2.0-dev, libxrender-dev,
libdtkcore-dev, libgsettings-qt-dev, libqt5svg5-dev, libxi-dev,
libdtkgui-dev, libcups2-dev, libgtest-dev, libdtkcore5-bin, cmake, doxygen
Maintainer: Shanshan Ye <yeshanshan@uniontech.com>
Build-Depends: debhelper-compat (= 12),
cmake,
pkg-config,
libgtest-dev,
libudev-dev,
libxext-dev,
x11proto-xext-dev,
libxcb-util0-dev,
libstartup-notification0-dev,
libmtdev-dev,
libegl1-mesa-dev,
libfontconfig1-dev,
libfreetype-dev,
libglib2.0-dev,
libxrender-dev,
libxi-dev,
libcups2-dev,
libdtkcore-dev <!nodtk5>,
libdtkgui-dev <!nodtk5>,
libdtkcore5-bin <!nodtk5>,
qtbase5-dev <!nodtk5>,
qtbase5-private-dev <!nodtk5>,
qttools5-dev-tools <!nodtk5>,
qttools5-dev <!nodtk5>,
libqt5x11extras5-dev <!nodtk5>,
libqt5svg5-dev <!nodtk5>,
libgsettings-qt-dev <!nodtk5>,
libdtk6core-dev <!nodtk6>,
libdtk6gui-dev <!nodtk6>,
libdtk6core-bin <!nodtk6>,
qt6-base-dev <!nodtk6>,
qt6-base-private-dev <!nodtk6>,
qt6-tools-dev-tools <!nodtk6>,
qt6-tools-dev <!nodtk6>,
qt6-svg-dev <!nodtk6>,
doxygen <!nodoc>
Standards-Version: 3.9.8

Package: libdtk6widget
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, libdtkdata
Multi-Arch: same
Build-Profiles: <!nodtk6>
Description: Deepin graphical user interface library (DTK6 with Qt6)
DtkWidget is Deepin graphical user interface for deepin desktop development.
.
This package contains the shared libraries.

Package: libdtk6widget-bin
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends},
libdtk6widget( =${binary:Version})
Build-Profiles: <!nodtk6>
Description: Deepin graphical user interface library utilities (DTK6 with Qt6)
DtkWidget is Deepin graphical user interface for deepin desktop development.
.
This package contains the utilities which are
needed for developing Deepin applications.

Package: libdtk6widget-dev
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends},
libdtk6widget( =${binary:Version}),
libdtk6core-dev, libdtk6gui-dev, libcups2-dev
Build-Profiles: <!nodtk6>
Description: Deepin graphical user interface library (DTK6 with Qt6)
DtkWidget is Deepin graphical user interface for deepin desktop development.
.
This package contains the header files and static libraries which are
needed for developing Deepin applications.

Package: dtk6widget-examples
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends},
libdtk6widget( =${binary:Version}), libdtkdata
Build-Profiles: <!nodtk6>
Description: dtk6widget-examples is generated by dtk6widget.
DtkWidget is Deepin graphical user interface for deepin desktop development.
.
This package contains example application which are
needed for developing Deepin applications.

Package: libdtk6widget-doc
Architecture: any
Build-Profiles: <!nodtk6 !nodoc>
Description: Deepin graphical user interface library (DTK6 with Qt6 Document)
DtkWidget is Deepin graphical user interface for deepin desktop development.
.
This package contains example application which are
needed for developing Deepin applications.

Package: libdtkwidget5
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}, libdtkdata,
libqt5widgets5(>= 5.11.3.33) | libqt5widgets5(<= 5.11.3.28)
Multi-Arch: same
Build-Profiles: <!nodtk5>
Description: Deepin graphical user interface library
DtkWidget is Deepin graphical user interface for deepin desktop development.
.
Expand All @@ -24,8 +107,8 @@ Description: Deepin graphical user interface library
Package: libdtkwidget5-bin
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends},
libdtkwidget5( =${binary:Version}),
libqt5x11extras5-dev, libdtkcore-dev, libqt5svg5-dev
libdtkwidget5( =${binary:Version})
Build-Profiles: <!nodtk5>
Description: Deepin graphical user interface library utilities
DtkWidget is Deepin graphical user interface for deepin desktop development.
.
Expand All @@ -38,6 +121,7 @@ Depends: ${shlibs:Depends}, ${misc:Depends},
libdtkwidget5( =${binary:Version}),
libqt5x11extras5-dev, libdtkcore-dev, libqt5svg5-dev,
libdtkgui-dev, libcups2-dev
Build-Profiles: <!nodtk5>
Description: Deepin graphical user interface library
DtkWidget is Deepin graphical user interface for deepin desktop development.
.
Expand All @@ -48,6 +132,7 @@ Package: dtkwidget5-examples
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends},
libdtkwidget5( =${binary:Version}), libdtkdata
Build-Profiles: <!nodtk5>
Description: dtkwidget-examples is generated by dtkwidget.
DtkWidget is Deepin graphical user interface for deepin desktop development.
.
Expand All @@ -56,6 +141,7 @@ Description: dtkwidget-examples is generated by dtkwidget.

Package: dtkwidget-doc
Architecture: any
Build-Profiles: <!nodtk5 !nodoc>
Description: Deepin graphical user interface library (Document)
DtkWidget is Deepin graphical user interface for deepin desktop development.
.
Expand Down
1 change: 1 addition & 0 deletions debian/dtk6widget-examples.install
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
usr/lib/*/dtk6/DWidget/examples/*
2 changes: 1 addition & 1 deletion debian/dtkwidget5-examples.install
Original file line number Diff line number Diff line change
@@ -1 +1 @@
usr/lib/*/*/*/examples/*
usr/lib/*/dtk5/DWidget/examples/*
1 change: 1 addition & 0 deletions debian/libdtk6widget-bin.install
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
usr/libexec/dtk6/DWidget/bin/*
5 changes: 5 additions & 0 deletions debian/libdtk6widget-dev.install
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
usr/lib/*/libdtk6widget.so
usr/include/dtk6/
usr/lib/*/pkgconfig/dtk6widget.pc
usr/lib/*/cmake/Dtk6Widget/
usr/lib/*/qt6/mkspecs/modules/*
1 change: 1 addition & 0 deletions debian/libdtk6widget-doc.install
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
usr/share/qt6/doc/*.qch
2 changes: 2 additions & 0 deletions debian/libdtk6widget.install
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
usr/lib/*/libdtk6widget.so.6*
usr/share/dtk6/DWidget/translations/*
8 changes: 4 additions & 4 deletions debian/libdtkwidget-dev.install
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
usr/lib/*/*.so
usr/include
usr/lib/*/pkgconfig/*.pc
usr/lib/*/cmake/*/*.cmake
usr/lib/*/libdtkwidget.so
usr/include/dtk5/
usr/lib/*/pkgconfig/dtkwidget.pc
usr/lib/*/cmake/DtkWidget/
usr/lib/*/qt5/mkspecs/modules/*
2 changes: 1 addition & 1 deletion debian/libdtkwidget5-bin.install
Original file line number Diff line number Diff line change
@@ -1 +1 @@
usr/lib/*/*/*/bin/*
usr/libexec/dtk5/DWidget/bin/*
4 changes: 2 additions & 2 deletions debian/libdtkwidget5.install
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
usr/lib/*/lib*.so.*
usr/share/*/*/translations/*
usr/lib/*/libdtkwidget.so.5*
usr/share/dtk5/DWidget/translations/*
4 changes: 2 additions & 2 deletions debian/libdtkwidget5.install.amd64
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
usr/lib/*/lib*.so.*
usr/lib/*/libdtkwidget.so.5*
#usr/lib/*/libmsc.so
usr/share/*/*/translations/*
usr/share/dtk5/DWidget/translations/*
4 changes: 2 additions & 2 deletions debian/libdtkwidget5.install.i386
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
usr/lib/*/lib*.so.*
usr/lib/*/libdtkwidget.so.5*
#usr/lib/*/libmsc.so
usr/share/*/*/translations/*
usr/share/dtk5/DWidget/translations/*
85 changes: 64 additions & 21 deletions debian/rules
Original file line number Diff line number Diff line change
@@ -1,44 +1,87 @@
#!/usr/bin/make -f
DPKG_EXPORT_BUILDFLAGS = 1
include /usr/share/dpkg/default.mk
export QT_SELECT = qt5

# 安全编译参数
export DEB_BUILD_MAINT_OPTIONS = hardening=+all
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

# reproducible编译参数
# reproducible 编译参数
DEB_CMAKE_EXTRA_FLAGS += -DCMAKE_SKIP_BUILD_RPATH=ON

DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)

DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH)

VERSION = $(DEB_VERSION_UPSTREAM)
_PACK_VER = $(shell echo $(VERSION) | awk -F'[+_~-]' '{print $$1}')
_BUILD_VER = $(shell echo $(VERSION) | awk -F'[+_~-]' '{print $$2}' | sed 's/[^0-9]//g' | awk '{print int($$1)}')
ifeq ($(_BUILD_VER),)
CONFIG_VERSION = $(_PACK_VER)
else
CONFIG_VERSION = $(_PACK_VER).$(_BUILD_VER)
endif
# 版本映射: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/')
DTK5_MAJOR_MINOR := $(shell echo $(DTK5_VERSION) | cut -d '.' -f 1,2)

# Build-Profiles 控制
BUILD_DOCS := $(if $(filter nodoc,$(DEB_BUILD_PROFILES)),OFF,ON)
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:
dh_auto_configure -- $(DEB_CMAKE_EXTRA_FLAGS) -DBUILD_PLUGINS=OFF -DBUILD_DOCS=ON -DDTK_VERSION=$(_PACK_VER) -DDTK_STATIC_TRANSLATION=YES
#override_dh_auto_configure:
# dh_auto_configure -- LIB_INSTALL_DIR=/usr/lib/$(DEB_HOST_MULTIARCH)
#override_dh_makeshlibs:
# dh_makeshlibs -V
ifeq ($(BUILD_DTK5),ON)
mkdir -p build5
QT_SELECT=qt5 dh_auto_configure --builddirectory=build5 -- \
$(DEB_CMAKE_EXTRA_FLAGS) \
-DBUILD_TESTING=OFF \
-DBUILD_PLUGINS=OFF \
-DBUILD_DOCS=$(BUILD_DOCS) \
-DDTK_STATIC_TRANSLATION=YES \
-DDTK5=ON
endif
ifeq ($(BUILD_DTK6),ON)
mkdir -p build6
dh_auto_configure --builddirectory=build6 -- \
$(DEB_CMAKE_EXTRA_FLAGS) \
-DBUILD_TESTING=OFF \
-DBUILD_PLUGINS=OFF \
-DBUILD_DOCS=$(BUILD_DOCS) \
-DDTK_STATIC_TRANSLATION=YES \
-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

#ifeq ($(DEB_BUILD_ARCH), sw_64)
#override_dh_makeshlibs:
# dh_makeshlibs -V -- -c0
#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_makeshlibs:
dh_makeshlibs -V "libdtkwidget5 (>= $(shell echo $(VERSION) | cut -d '.' -f 1,2))"
ifeq ($(BUILD_DTK5),ON)
dh_makeshlibs -V "libdtkwidget5 (>= $(DTK5_MAJOR_MINOR))" -plibdtkwidget5
endif
ifeq ($(BUILD_DTK6),ON)
dh_makeshlibs -V "libdtk6widget (>= $(DTK6_VERSION))" -plibdtk6widget
endif

override_dh_auto_clean:
dh_auto_clean --builddirectory=build5
dh_auto_clean --builddirectory=build6
rm -rf build5 build6
2 changes: 1 addition & 1 deletion docs/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ set (DOXYGEN_GENERATE_HTML "YES" CACHE STRING "Doxygen HTML output")
set (DOXYGEN_GENERATE_XML "YES" CACHE STRING "Doxygen XML output")
set (DOXYGEN_GENERATE_QHP "YES" CACHE STRING "Doxygen QHP output")
set (DOXYGEN_FILE_PATTERNS *.cpp *.h *.zh_CN.md *.zh_CN.dox CACHE STRING "Doxygen File Patterns")
set (DOXYGEN_PROJECT_NUMBER ${CMAKE_PROJECT_VERSION} CACHE STRING "") # Should be the same as this project is using.
set (DOXYGEN_PROJECT_NUMBER ${DTK_VERSION} CACHE STRING "") # Should be the same as this project is using.
set (DOXYGEN_EXTRACT_STATIC YES)
set (DOXYGEN_OUTPUT_LANGUAGE "Chinese" CACHE STRING "Doxygen Output Language")
set (DOXYGEN_IMAGE_PATH ${CMAKE_CURRENT_LIST_DIR}/images/)
Expand Down
Loading
Loading