feat: 适配多版本合并(移除冲突添加依赖)

1. 移除prf文件,全部移动到libdtkcommon包中
2. 移除cmake文件夹中的文件,移动到libdtkcommon包中
3. 移除src/com.deepin.dtk.gschema.xml文件,移动到libdtkcommon包中
4. 修改control文件,添加依赖libdtkcommon包

Log: dtkcore多版本前的适配版本(移除冲突)
Change-Id: Iac4310cef55ab2bf31478e905d751aa121fb4078
This commit is contained in:
sunkang 2021-02-27 13:57:39 +08:00 committed by ck
parent 7fc25a8f8f
commit b9205142b7
22 changed files with 144 additions and 646 deletions

View File

@ -1,3 +0,0 @@
foreach(module ${Dtk_FIND_COMPONENTS})
find_package(Dtk${module})
endforeach()

View File

@ -1,76 +0,0 @@
function(addDefinitions macro)
string(TOUPPER ${macro} macro)
add_definitions(-D${macro})
endfunction()
add_definitions(-DQ_HOST_NAME=\"${CMAKE_HOST_SYSTEM_PROCESSOR}\")
addDefinitions(Q_HOST_${CMAKE_HOST_SYSTEM_PROCESSOR})
find_package(DtkCore REQUIRED)
set(DEEPIN_OS_RELEASE_TOOL_PATH ${DTKCORE_TOOL_DIR})
set(DEEPIN_OS_RELEASE_TOOL ${DEEPIN_OS_RELEASE_TOOL_PATH}/deepin-os-release)
if(NOT EXISTS "${DEEPIN_OS_RELEASE_TOOL}")
message(FATAL_ERROR "\"${DEEPIN_OS_RELEASE_TOOL}\" is not exists. Install \"dtkcore-bin\" first")
endif()
function(formatString string)
string(REGEX REPLACE "\\s+" "_" string ${string})
endfunction()
macro(execDeepinOsRelease args output)
exec_program(${DEEPIN_OS_RELEASE_TOOL} ARGS ${args} OUTPUT_VARIABLE ${output} RETURN_VALUE exitCode)
if(NOT ${exitCode} EQUAL 0)
message(FATAL_ERROR "exec deepin-os-release failed, with args: ${args}, error message: ${output}")
endif()
endmacro()
execDeepinOsRelease(--deepin-type DEEPIN_OS_TYPE)
execDeepinOsRelease(--deepin-version DEEPIN_OS_VERSION)
execDeepinOsRelease(--product-type CMAKE_PLATFORM_ID)
execDeepinOsRelease(--product-version CMAKE_PLATFORM_VERSION)
if("${CMAKE_PLATFORM_ID}" STREQUAL "")
message(WARNING "No value of the \"--product-type\" in the process \"${DEEPIN_OS_RELEASE_TOOL}\"")
else()
formatString(CMAKE_PLATFORM_ID)
message("OS: ${CMAKE_PLATFORM_ID}, Version: ${CMAKE_PLATFORM_VERSION}")
if(NOT "${CMAKE_PLATFORM_ID}" STREQUAL "")
addDefinitions(Q_OS_${CMAKE_PLATFORM_ID})
string(TOUPPER ${CMAKE_PLATFORM_ID} CMAKE_PLATFORM_ID)
set(OS_${CMAKE_PLATFORM_ID} TRUE)
endif()
formatString(CMAKE_PLATFORM_VERSION)
add_definitions(-DQ_OS_VERSION=\"${CMAKE_PLATFORM_VERSION}\")
#uos base with deepin
if("${CMAKE_PLATFORM_ID}" STREQUAL "UOS")
addDefinitions(Q_OS_DEEPIN)
set(OS_DEEPIN TRUE)
endif()
endif()
if("${DEEPIN_OS_TYPE}" STREQUAL "")
message(WARNING "No value of the \"--deepin-type\" in the process \"${DEEPIN_OS_RELEASE_TOOL}\"")
else()
formatString(DEEPIN_OS_TYPE)
message("Deepin OS Type: ${DEEPIN_OS_TYPE}")
message("Deepin OS Version: ${DEEPIN_OS_VERSION}")
if(NOT "${DEEPIN_OS_TYPE}" STREQUAL "")
addDefinitions(Q_OS_DEEPIN_${DEEPIN_OS_TYPE})
addDefinitions(DEEPIN_DDE)
string(TOUPPER ${DEEPIN_OS_TYPE} DEEPIN_OS_TYPE)
set(OS_DEEPIN_${DEEPIN_OS_TYPE} TRUE)
set(DEEPIN_DDE TRUE)
endif()
formatString(DEEPIN_OS_VERSION)
add_definitions(-DQ_OS_DEEPIN_VERSION=\"${DEEPIN_OS_VERSION}\")
endif()

View File

@ -1,53 +0,0 @@
#=============================================================================
# Copyright 2019 Deepin Technology Co., Ltd.
# Copyright 2019 Gary Wang
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# * Neither the name of authors nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#=============================================================================
function(DTK_CREATE_I18N_FROM_JSON _generated_file_list _input_json_file _output_cpp_file_name)
set (generated_file_list) # 0(failed) or 1(successed) files in the list.
get_filename_component(_input_json_abs_path ${_input_json_file} ABSOLUTE)
get_filename_component(_input_json_abs_dir ${_input_json_abs_path} DIRECTORY)
set (_output_cpp_abs_path ${_input_json_abs_dir}/${_output_cpp_file_name})
if (DTK_SETTINGS_TOOLS_FOUND)
add_custom_command(OUTPUT ${_output_cpp_abs_path}
COMMAND ${DTK_SETTINGS_TOOLS_EXECUTABLE}
ARGS ${_input_json_abs_path} -o ${_output_cpp_abs_path}
DEPENDS ${_input_json_abs_path} VERBATIM)
list(APPEND generated_file_list ${_output_cpp_abs_path})
else ()
message (WARNING "The dtk-settings tools could not be found at ${DTK_SETTINGS_TOOLS_EXECUTABLE}")
message (WARNING "Package distributor may create a seprated package for tools like `libdtkcore-bin`.")
endif ()
set(${_generated_file_list} ${generated_file_list} PARENT_SCOPE)
endfunction()

View File

@ -1,9 +0,0 @@
find_package(DtkCore REQUIRED)
set (DTK_SETTINGS_TOOLS_EXECUTABLE ${DTKCORE_TOOL_DIR}/dtk-settings)
if (EXISTS ${DTK_SETTINGS_TOOLS_EXECUTABLE})
set(DTK_SETTINGS_TOOLS_FOUND TRUE)
endif ()
include("${CMAKE_CURRENT_LIST_DIR}/DtkSettingsToolsMacros.cmake")

2
debian/control vendored
View File

@ -4,7 +4,7 @@ Priority: optional
Maintainer: Deepin Packages Builder <packages@deepin.com>
Build-Depends: debhelper (>= 9), pkg-config,
qttools5-dev-tools, qtbase5-private-dev,
libgsettings-qt-dev, libgtest-dev
libgsettings-qt-dev, libgtest-dev, libdtkcommon
Standards-Version: 3.9.8
Package: libdtkcore5

View File

@ -1,2 +1 @@
usr/lib/*/lib*.so.*
usr/share/glib-2.0/schemas

View File

@ -1 +1 @@
include($$PWD/src/dtk_lib.prf)
load(dtk_lib)

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<schemalist>
<enum id="com.deepin.dtk.ColorType">
<value nick="UnknownType" value="0" />
<value nick="LightType" value="1" />
<value nick="DarkType" value="2" />
</enum>
<schema id="com.deepin.dtk">
<key enum="com.deepin.dtk.ColorType" name="palette-type">
<default>'UnknownType'</default>
<summary>application palette type</summary>
<description>Palette type of the application. SystemTheme=0 LightTheme=1 DarkTheme=2</description>
</key>
</schema>
</schemalist>

View File

@ -1,98 +0,0 @@
exists(../dtk_build_config.prf) {
include(../dtk_build_config.prf)
} else {
load(dtk_build_config)
}
#标记已经加载了dtk_build.prf
DTK_BUILD=1
TEMPLATE = lib
CONFIG += c++11 create_pc create_prl no_install_prl
CONFIG += no_keywords
DEFINES += QT_MESSAGELOGCONTEXT
DEFINES += LIB$$upper($$DTK_MODULE_NAME)_LIBRARY
DEFINES += DTK_LIB_DIR_NAME=\\\"$$LIB_VERSION_NAME\\\"
isEmpty(target.path): target.path = $$LIB_INSTALL_DIR
isEmpty(includes.path): includes.path = $$quote($$INCLUDE_INSTALL_DIR)
!isEmpty(DTK_STATIC_LIB) {
DEFINES += DTK_STATIC_LIB
CONFIG += staticlib
}
!isEmpty(DTK_STATIC_TRANSLATION) {
DEFINES += DTK_STATIC_TRANSLATION
}
defineTest(containIncludeFiles) {
header = $$absolute_path($$ARGS)
header_dir = $$quote($$dirname(header))
for (file, includes.files) {
file_ap = $$absolute_path($$file)
file_dir = $$quote($$dirname(file_ap))
isEqual(file_dir, $$header_dir):return(true)
}
return(false)
}
ALL_HEADER_FILE_NAME=Dtk$${MODULE_NAME}s
#添加一个include模块提供的所有头文件的总的头文件
defineTest(updateDtkHeaderFile) {
include_files = $$HEADERS
file_content = $$quote($${LITERAL_HASH}ifndef DTK_$$upper($$MODULE_NAME)_MODULE_H)
file_content += $$quote($${LITERAL_HASH}define DTK_$$upper($$MODULE_NAME)_MODULE_H)
for(header, include_files) {
#排除私有头文件,以 _p.h 结尾的认为是私有头文件
suffix = $$str_member($$header, -4, -1)
!isEqual(suffix, "_p.h"): containIncludeFiles($$header) {
file_content += $$quote($${LITERAL_HASH}include \"$$basename(header)\")
}
}
file_content += $$quote($${LITERAL_HASH}endif)
!write_file($$_PRO_FILE_PWD_/$$ALL_HEADER_FILE_NAME, file_content):return(false)
return(true)
}
!updateDtkHeaderFile():warning(Cannot create "$${ALL_HEADER_FILE_NAME}" header file)
# create dtkxxx_config.h file
defineTest(updateDtkConfigFile) {
isEqual(DTK_MODULE_NAME, dtkcore) {
config_content += $$quote($${LITERAL_HASH}define DTK_VERSION_MAJOR $$VER_MAJ)
config_content += $$quote($${LITERAL_HASH}define DTK_VERSION_MINOR $$VER_MIN)
config_content += $$quote($${LITERAL_HASH}define DTK_VERSION_PATCH $$VER_PAT)
config_content += $$quote($${LITERAL_HASH}define DTK_VERSION_BUILD $$VER_BUI)
config_content += $$quote($${LITERAL_HASH}define DTK_VERSION_STR \"$$VERSION\")
config_content += $$quote(//)
}
for(file, includes.files) {
file = $$quote($$basename(file))
!isEqual(file, $$ALL_HEADER_FILE_NAME):contains(file, D[A-Za-z0-9_]+) {
config_content += $$quote($${LITERAL_HASH}define $$upper($$DTK_MODULE_NAME)_CLASS_$$file)
}
}
!write_file($$_PRO_FILE_PWD_/$${DTK_MODULE_NAME}_config.h, config_content):return(false)
return(true)
}
!updateDtkConfigFile():warning(Cannot create "$${DTK_MODULE_NAME}_config.h" header file)
exists($$PWD/dtk_translation.prf) {
include($$PWD/dtk_translation.prf)
} else {
load(dtk_translation)
}

View File

@ -1,43 +0,0 @@
# CMake configure
#TODO: check cmake exist
!win*: {
MODULE_DEPENDS=$$find(QT, dtk*)
CMAKE_MODULE_DEPENDS=$$replace(MODULE_DEPENDS,"dtk","")
CMAKE_MODULE=Dtk$$MODULE_NAME
WORK_DIR=$$_PRO_FILE_PWD_
message("config cmake module: $$CMAKE_MODULE")
LINK_LIBRARIES = ""
for(MODULE_DEPEND, CMAKE_MODULE_DEPENDS) {
MODULE_DEPEND=$$capitalizingString($$MODULE_DEPEND)
CMAKE_CONTENT += "find_package(Dtk REQUIRED $$MODULE_DEPEND)"
LINK_LIBRARIES += " ${Dtk$${MODULE_DEPEND}_LIBRARIES}"
}
CMAKE_MODULE_INCLUDE_DIR=$$upper($${CMAKE_MODULE})_INCLUDE_DIR
INC_DIR = $$replace(INCLUDE_INSTALL_DIR, "/", "/")
CMAKE_MODULE_TOO_DIR=$$upper($${CMAKE_MODULE})_TOOL_DIR
TOOL_DIR = $$TOOL_INSTALL_DIR
CMAKE_CONTENT += "set($${CMAKE_MODULE_INCLUDE_DIR} $${INC_DIR})"
CMAKE_CONTENT += "set($${CMAKE_MODULE_TOO_DIR} $${TOOL_DIR})"
CMAKE_CONTENT += "set($${CMAKE_MODULE}_LIBRARIES $$TARGET$$LINK_LIBRARIES)"
CMAKE_CONTENT += "include_directories(\"${"$${CMAKE_MODULE_INCLUDE_DIR}"}\")"
CMAKE_DIR=$$WORK_DIR/../cmake/$${CMAKE_MODULE}
CMAKE_PATH=$$CMAKE_DIR/$${CMAKE_MODULE}Config.cmake
mkpath($$CMAKE_DIR)
message("write cmake file to $$CMAKE_PATH")
write_file($$CMAKE_PATH, CMAKE_CONTENT) | error("Aborting.")
cmake_config.files = $$WORK_DIR/../cmake
cmake_config.path = $$LIB_INSTALL_DIR
INSTALLS += cmake_config
}

View File

@ -1,7 +0,0 @@
TEMPLATE = subdirs
CONFIG += ordered
exists($$_PRO_FILE_PWD_/src) SUBDIRS += src
exists($$_PRO_FILE_PWD_/tools) SUBDIRS += tools
exists($$_PRO_FILE_PWD_/tests) SUBDIRS += tests
exists($$_PRO_FILE_PWD_/examples) SUBDIRS += examples

View File

@ -1,127 +0,0 @@
isEmpty(DTK_BUILD): error("Please load(dtk_build) first!")
# -----------------------
# Config Qt module
MODULE_ID=$$DTK_MODULE_NAME
mod_inst_pfx=$$_PRO_FILE_PWD_
MODULE_PRI = $$mod_inst_pfx/qt_lib_$${MODULE_ID}.pri
module_libs = $$LIB_INSTALL_DIR
module_tools = $$TOOL_INSTALL_DIR
MODULE_INCLUDES = $$INCLUDE_INSTALL_DIR
MODULE_DEPENDS=$$find(QT, dtk*)
message("config qt module: $$MODULE_ID")
message("write $$MODULE_PRI to: $$mod_inst_pfx")
internal_module: \
MODULE_DEPENDS = $$replace(QT, -private$, _private)
else: \
MODULE_DEPENDS = $$replace(QT, -private$, )
MODULE_DEPENDS = $$unique(MODULE_DEPENDS)
contains(MODULE_DEPENDS, $$MODULE): \
error("$$MODULE_ID depends on itself.")
# Create a module .pri file
module_libs=$$LIB_INSTALL_DIR
isEmpty(module_libs) {
host_build: \
module_libs = "\$\$QT_MODULE_HOST_LIB_BASE"
else: \
module_libs = "\$\$QT_MODULE_LIB_BASE"
}
# In addition to the library's private deps, the private module's deps
# are logically runtime deps of the public module.
runtime_deps = $$QT_PRIVATE $$QT_FOR_PRIVATE
!isEmpty(runtime_deps): \
module_rundep = "QT.$${MODULE_ID}.run_depends = $$replace(runtime_deps, -private$, _private)"
else: \
module_rundep =
module_build_type = v2
static: \
module_build_type += staticlib
lib_bundle {
module_build_type += lib_bundle
MODULE_FRAMEWORKS = " \$\$QT_MODULE_LIB_BASE"
}
internal_module: \
module_build_type += internal_module
ltcg: \
module_build_type += ltcg
module_module =
!equals(TEMPLATE, aux) {
module_module = $$MODULE_ID$$QT_LIBINFIX
!lib_bundle: module_module ~= s,^Qt,Qt$$QT_MAJOR_VERSION,
}
!isEmpty(MODULE_CONFIG): \
module_config = "QT.$${MODULE_ID}.CONFIG = $$MODULE_CONFIG"
else: \
module_config =
!isEmpty(MODULE_PLUGIN_TYPES): \
module_plugtypes = "QT.$${MODULE_ID}.plugin_types = $$replace(MODULE_PLUGIN_TYPES, /.*$, )"
else: \
module_plugtypes =
!isEmpty(MODULE_MASTER_HEADER): \
module_master = "QT.$${MODULE_ID}.master_header = $$MODULE_MASTER_HEADER"
else: \
module_master =
MODULE_PRI_CONT += \
"QT.$${MODULE_ID}.VERSION = $${VERSION}" \
"QT.$${MODULE_ID}.MAJOR_VERSION = $${VER_MAJ}" \
"QT.$${MODULE_ID}.MINOR_VERSION = $${VER_MIN}" \
"QT.$${MODULE_ID}.PATCH_VERSION = $${VER_PAT}" \
"" \
"QT.$${MODULE_ID}.name = $${MODULE_ID}" \
"QT.$${MODULE_ID}.module = $$module_module" \
"QT.$${MODULE_ID}.tools = $$module_tools" \
"QT.$${MODULE_ID}.libs = $$module_libs" \
$$module_master \
"QT.$${MODULE_ID}.includes = $$MODULE_INCLUDES" \
"QT.$${MODULE_ID}.frameworks =$$MODULE_FRAMEWORKS"
MODULE_PRI_CONT += \
"QT.$${MODULE_ID}.depends =$$join(MODULE_DEPENDS, " ", " ")" \
$$module_rundep \
"QT.$${MODULE_ID}.module_config =$$join(module_build_type, " ", " ")" \
$$module_config \
"QT.$${MODULE_ID}.DEFINES = $$val_escape(MODULE_DEFINES)" \
"" \
"QT_MODULES += $$MODULE"
write_file($$MODULE_PRI, MODULE_PRI_CONT)|error("Aborting.")
qt_module.files = $$MODULE_PRI
isEmpty(MKSPECS_INSTALL_DIR) {
MKSPECS_INSTALL_DIR=$$[QT_INSTALL_ARCHDATA]/mkspecs
}
qt_module.path = $${MKSPECS_INSTALL_DIR}/modules
INSTALLS += qt_module
PKG_MODULE_DEPENDS=$$find(QT, dtk*)
#不能添加Qt包的依赖无法单纯的从Qt模块名称获取其pkgconfig的pc文件名
#for (qt_module, QT) {
# #DBus模块需要特殊处理
# isEqual(qt_module, "dbus") {
# PKG_MODULE_DEPENDS+=Qt5DBus
# } else {
# suffix = $$str_member($$qt_module, -7, -1)
# #排除以private结尾的模块
# !isEqual(suffix, "private"): PKG_MODULE_DEPENDS+=Qt5$$capitalizingString($$qt_module)
# }
#}
PKG_MODULE_DEPENDS = $$unique(PKG_MODULE_DEPENDS)
# -----------------------
# Config pkg-config
QMAKE_PKGCONFIG_VERSION = $$VERSION
QMAKE_PKGCONFIG_DESTDIR = pkgconfig
QMAKE_PKGCONFIG_NAME = $$upper($$MODULE_ID)
QMAKE_PKGCONFIG_DESCRIPTION = Deepin Tool Kit $$MODULE_ID header files
QMAKE_PKGCONFIG_REQUIRES += $$join(PKG_MODULE_DEPENDS, ", ")
QMAKE_PKGCONFIG_INCDIR = $$includes.path
QMAKE_PKGCONFIG_LIBDIR = $$target.path

View File

@ -1,121 +0,0 @@
CONFIG += host_$$QMAKE_HOST.arch
DEFINES += Q_HOST_NAME=\\\"$$QMAKE_HOST.arch\\\" Q_HOST_$$upper($$QMAKE_HOST.arch)
defineTest(buildQMAKEProject) {
pro_dir = $$1
pro_out_dir = $$shadowed($$pro_dir)
isEmpty(QMAKE_CD): QMAKE_CD=cd
pro_cmd_base = "$$QMAKE_CD $$system_quote($$system_path($$pro_out_dir)) &&"
mkpath($$pro_out_dir)
command = $$pro_cmd_base $$system_quote($$system_path($$QMAKE_QMAKE))
CONFIG(debug, debug|release) {
command += QMAKE_CFLAGS_DEBUG*=\"$$QMAKE_CFLAGS_DEBUG\" \
QMAKE_CXXFLAGS_DEBUG*=\"$$QMAKE_CXXFLAGS_DEBUG\" \
QMAKE_LFLAGS_DEBUG*=\"$$QMAKE_LFLAGS_DEBUG\" \
CONFIG+=debug
} else {
command += QMAKE_CFLAGS_RELEASE*=\"$$QMAKE_CFLAGS_RELEASE\" \
QMAKE_CXXFLAGS_RELEASE*=\"$$QMAKE_CXXFLAGS_RELEASE\" \
QMAKE_LFLAGS_RELEASE*=\"$$QMAKE_LFLAGS_RELEASE\"
}
command += -spec $$QMAKESPEC $$shell_quote($$pro_dir)
message($${command}:)
# Qt >= 5.8
greaterThan(QT_MINOR_VERSION, 7) {
!equals(3, false): 1 = "( $$1 ) 2>&1"
output = $$system("$$command", lines, result)
!isEmpty(output): message($$output)
!equals(result, 0): return(false)
} else {
system("$$command")|return(false)
}
load(configure)
command = $$pro_cmd_base $$QMAKE_MAKE
message($${command}:)
# Qt >= 5.8
greaterThan(QT_MINOR_VERSION, 7) {
!equals(3, false): 1 = "( $$1 ) 2>&1"
output = $$system("$$command", lines, result)
!isEmpty(output): message($$output)
!equals(result, 0): return(false)
} else {
system("$$command")|return(false)
}
return(true)
}
isEqual(TARGET, dtkcore) {
DEEPIN_OS_RELEASE_TOOL=$$_PRO_FILE_PWD_/../bin/deepin-os-release
!exists($$DEEPIN_OS_RELEASE_TOOL) {
tools_dir = $$_PRO_FILE_PWD_/../tools/deepin-os-release
!buildQMAKEProject($$tools_dir): error(Failed on build deepin-os-release)
}
} else {
isEmpty(QT.dtkcore.tools): error(QT += dtkcore first)
DEEPIN_OS_RELEASE_TOOL=$${QT.dtkcore.tools}/deepin-os-release
}
!exists($$DEEPIN_OS_RELEASE_TOOL): error(\"$$DEEPIN_OS_RELEASE_TOOL\" is not exists. Install \"dtkcore-bin\" first)
defineReplace(formatString) {
string = $$1
string = $$replace(string, \\s+, _)
string_count = $$size(string)
greaterThan(string_count, 1) {
for (item, string) {
isEmpty(new_string): new_string = $$item
else: new_string = $${new_string}_$${item}
}
return($$new_string)
}
return($$string)
}
DEEPIN_OS_TYPE = $$system($$DEEPIN_OS_RELEASE_TOOL --deepin-type)
DEEPIN_OS_VERSION = $$system($$DEEPIN_OS_RELEASE_TOOL --deepin-version)
DISTRIB_ID = $$system($$DEEPIN_OS_RELEASE_TOOL --product-type)
DISTRIB_RELEASE = $$system($$DEEPIN_OS_RELEASE_TOOL --product-version)
isEmpty(DISTRIB_ID): warning(No value of the "--product-type" in the process "$$DEEPIN_OS_RELEASE_TOOL")
else {
DISTRIB_ID = $$formatString($$DISTRIB_ID)
message("OS: $$DISTRIB_ID, Version: $$DISTRIB_RELEASE")
QMAKE_PLATFORM += $$lower($$DISTRIB_ID)
DISTRIB_ID = $$upper($$DISTRIB_ID)
!isEmpty(DISTRIB_ID): DEFINES += Q_OS_$$DISTRIB_ID
CONFIG *= $$QMAKE_PLATFORM
DISTRIB_RELEASE = $$formatString($$DISTRIB_RELEASE)
DEFINES += Q_OS_VERSION=\\\"$$DISTRIB_RELEASE\\\"
#uos base with deepin
isEqual(DISTRIB_ID, UOS) {
QMAKE_PLATFORM += deepin
DEFINES += Q_OS_DEEPIN
}
}
isEmpty(DEEPIN_OS_TYPE): warning(No value of the "--deepin-type" in the process "$$DEEPIN_OS_RELEASE_TOOL")
else {
DEEPIN_OS_TYPE = $$formatString($$DEEPIN_OS_TYPE)
message(Deepin OS Type: $$DEEPIN_OS_TYPE)
message(Deepin OS Version: $$DEEPIN_OS_VERSION)
!isEmpty(DEEPIN_OS_TYPE) {
QMAKE_PLATFORM += deepin_$$lower($$DEEPIN_OS_TYPE) deepin_dde
DEFINES += Q_OS_DEEPIN_$$upper($$DEEPIN_OS_TYPE) DEEPIN_DDE
}
DEEPIN_OS_VERSION = $$formatString($$DEEPIN_OS_VERSION)
DEFINES += Q_OS_DEEPIN_VERSION=\\\"$$DEEPIN_OS_VERSION\\\"
CONFIG *= $$QMAKE_PLATFORM
}

View File

@ -1,63 +0,0 @@
message ("Process dtk translation")
message ("Add DTK_NO_TRANSLATION=YES to qmake arguments to skip this")
message ("Add DTK_STATIC_TRANSLATION=YES to add support for static translations")
# TODO: check lrelease/lupdate exist
ROOT_DIR = $$_PRO_FILE_PWD_
BASENAME = $$basename(_PRO_FILE_)
BASENAME = $$split(BASENAME, .)
BASENAME = $$first(BASENAME)
isEmpty(DTK_NO_TRANSLATION) {
# system(lupdate $$_PRO_FILE_) | error("Failed to lupdate")
TRANSLATIONS = $$files($$ROOT_DIR/translations/*.ts)
for(tsfile, TRANSLATIONS) {
qmfile = $$replace(tsfile, .ts$, .qm)
system(lrelease $$tsfile -qm $$qmfile) | error("Failed to lrelease")
}
# create static translations qrc file
!isEmpty(DTK_STATIC_TRANSLATION) {
# qrc template
#<RCC>
# <qresource prefix="/dtk/translations">
# <file>dtkwidget_am_ET.qm</file>
# <file>dtkwidget_ar.qm</file>
# <file>dtkwidget_ast.qm</file>
# </qresource>
#</RCC>
QRC_PATH = $$ROOT_DIR/translations/$${BASENAME}_translations.qrc
message ("Create static translations file $${QRC_PATH}")
QRC_CONTENT = "<RCC>"
QRC_CONTENT += " <qresource prefix=\"/dtk/translations\">"
QM_FILE_LIST = $$files($$ROOT_DIR/translations/*.qm)
for(qmfile, QM_FILE_LIST) {
QRC_CONTENT += " <file>$$basename(qmfile)</file>"
}
QRC_CONTENT += " </qresource>"
QRC_CONTENT += "</RCC>"
write_file($$QRC_PATH, QRC_CONTENT) | error("Aborting.")
}
}
!isEmpty(DTK_STATIC_TRANSLATION) {
QRC_PATH = $$ROOT_DIR/translations/$${TARGET}_translations.qrc
RESOURCES += $$QRC_PATH
}
TRANSLATIONS += $$ROOT_DIR/translations/*
TRANSLATIONS_DIR = $$LIB_VERSION_NAME/$$DMODULE_NAME/translations
TRANSLATIONS_PATH = $$PREFIX/share/$$TRANSLATIONS_DIR
DEFINES += $$upper($$DMODULE_NAME)_TRANSLATIONS_PATH=\\\"$$TRANSLATIONS_PATH\\\"
DEFINES += $$upper($$DMODULE_NAME)_TRANSLATIONS_DIR=\\\"$$TRANSLATIONS_DIR\\\"
dtk_translations.path = $$TRANSLATIONS_PATH
dtk_translations.files = $$ROOT_DIR/translations/*.qm
INSTALLS += dtk_translations

View File

@ -25,7 +25,7 @@ include($$PWD/filesystem/filesystem.pri)
include($$PWD/settings/settings.pri)
DTK_MODULE_NAME = $$TARGET
include(dtk_build.prf)
load(dtk_build)
# ----------------------------------------------
# install config
@ -46,23 +46,7 @@ isEmpty(DTK_STATIC_LIB){
}
#cmake
include(dtk_cmake.prf)
load(dtk_cmake)
#qt module
include(dtk_module.prf)
prf.files+= $$PWD/*.prf ../dtk_build_config.prf ../tests/dtk_testcase.prf
isEmpty(MKSPECS_INSTALL_DIR) {
MKSPECS_INSTALL_DIR=$$[QT_INSTALL_ARCHDATA]/mkspecs
}
prf.path = $${MKSPECS_INSTALL_DIR}/features
!linux {
prf.files-=$$PWD/dtk_qmake.prf
}
gsettings.files += $$PWD/com.deepin.dtk.gschema.xml
gsettings.path = $${PREFIX}/share/glib-2.0/schemas
INSTALLS += prf gsettings
load(dtk_module)

View File

@ -0,0 +1,27 @@
QT += testlib
QT -= gui
TARGET = tst_ddesktopentrytest
TEMPLATE = app
CONFIG += c++11
CONFIG -= app_bundle
!isEmpty(DTK_STATIC_LIB){
DEFINES += DTK_STATIC_LIB
}
load(dtk_testcase)
win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../../src/release/ -ldtkcore -lgtest
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../../src/debug/ -ldtkcore -lgtest
else:unix: LIBS += -L$$OUT_PWD/../../src/ -ldtkcore -lgtest
INCLUDEPATH += $$PWD/../../src
DEPENDPATH += $$PWD/../../src
unix:QMAKE_RPATHDIR += $$OUT_PWD/../../src
QMAKE_LFLAGS += -Wl,--export-dynamic
SOURCES += \
$$PWD/../../src/ddesktopentry.cpp \
ut_ddesktopentrytest.cpp

View File

@ -0,0 +1,25 @@
QT += testlib concurrent
QT -= gui
TEMPLATE = app
CONFIG += c++11
!isEmpty(DTK_STATIC_LIB){
DEFINES += DTK_STATIC_LIB
}
load(dtk_testcase)
win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../../src/release/ -ldtkcore
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../../src/debug/ -ldtkcore
else:unix: LIBS += -L$$OUT_PWD/../../src/ -ldtkcore
INCLUDEPATH += $$PWD/../../src
DEPENDPATH += $$PWD/../../src
QMAKE_RPATHDIR += $$OUT_PWD/../../src
QMAKE_LFLAGS += -Wl,--export-dynamic
SOURCES += \
$$PWD/../../src/util/dthreadutils.cpp \
ut_dthreadutils.cpp

View File

@ -1,6 +0,0 @@
# 执行 make check 会运行 tests
CONFIG += testcase no_testcase_installs
# 生成统计信息
QMAKE_CXXFLAGS += -g -Wall -fprofile-arcs -ftest-coverage -O0
QMAKE_LFLAGS += -g -Wall -fprofile-arcs -ftest-coverage -O0

54
tests/dutils/dutils.pro Normal file
View File

@ -0,0 +1,54 @@
QT += testlib dbus
QT -= gui
TEMPLATE = app
CONFIG += c++11
!isEmpty(DTK_STATIC_LIB){
DEFINES += DTK_STATIC_LIB
}
# 使用 tmp 目录下的 os-version
DEFINES += OS_VERSION_TEST_FILE=\\\"/tmp/etc/os-version\\\"
load(dtk_testcase)
SOURCES += \
$$PWD/../../src/util/dtimeunitformatter.cpp \
$$PWD/../../src/util/ddisksizeformatter.cpp \
$$PWD/../../src/log/LogManager.cpp \
$$PWD/../../src/filesystem/dpathbuf.cpp \
$$PWD/../../src/util/ddbussender.cpp \
$$PWD/../../src/settings/dsettings.cpp \
$$PWD/../../src/settings/dsettingsgroup.cpp \
$$PWD/../../src/settings/dsettingsoption.cpp \
$$PWD/../../src/dsysinfo.cpp \
main.cpp \
ut_dutil.cpp \
ut_singleton.cpp
HEADERS += \
$$PWD/../../src/util/dtimeunitformatter.h \
$$PWD/../../src/util/ddisksizeformatter.h \
$$PWD/../../src/log/LogManager.h \
$$PWD/../../src/filesystem/dpathbuf.h \
$$PWD/../../src/util/ddbussender.h \
$$PWD/../../src/settings/dsettings.h \
$$PWD/../../src/settings/dsettingsgroup.h \
$$PWD/../../src/settings/dsettingsoption.h \
$$PWD/../../src/dsysinfo.h \
$$PWD/../../src/base/dsingleton.h \
ut_dutil.h \
ut_singleton.h
win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../../src/release/ -ldtkcore -lgtest
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../../src/debug/ -ldtkcore -lgtest
else:unix: LIBS += -L$$OUT_PWD/../../src/ -ldtkcore -lgtest
INCLUDEPATH += \
$$PWD/../../src \
$$PWD/../../src/log
DEPENDPATH += $$PWD/../../src
QMAKE_RPATHDIR += $$PWD/../../src
RESOURCES += \
data.qrc

View File

@ -0,0 +1,31 @@
QT += testlib
QT -= gui
TEMPLATE = app
CONFIG += c++11
# TODO: vtabhook release test failed
QMAKE_CXXFLAGS_RELEASE -= -O2
!isEmpty(DTK_STATIC_LIB){
DEFINES += DTK_STATIC_LIB
}
load(dtk_testcase)
win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../../src/release/ -ldtkcore -lgtest
else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../../src/debug/ -ldtkcore -lgtest
else:unix: LIBS += -L$$OUT_PWD/../../src/ -ldtkcore -lgtest -ldl
INCLUDEPATH += $$PWD/../../src
DEPENDPATH += $$PWD/../../src
QMAKE_RPATHDIR += $$OUT_PWD/../../src
QMAKE_LFLAGS += -Wl,--export-dynamic
HEADERS += \
$$PWD/../../src/util/dvtablehook.h
SOURCES += \
$$PWD/../../src/util/dvtablehook.cpp \
ut_dvtablehook.cpp

View File

@ -14,7 +14,7 @@ INCLUDEPATH += ../../src
DESTDIR = $$_PRO_FILE_PWD_/../../bin
DTK_MODULE_NAME=dtkcore
include(../../dtk_build_config.prf)
load(dtk_build_config)
target.path = $$TOOL_INSTALL_DIR
INSTALLS += target

View File

@ -25,7 +25,7 @@ DEPENDPATH += $$PWD/../../src
DESTDIR = $$_PRO_FILE_PWD_/../../bin
DTK_MODULE_NAME=dtkcore
include(../../dtk_build_config.prf)
load(dtk_build_config)
target.path = $$TOOL_INSTALL_DIR
scripts.files += ../script/*.py