#include <QtCore/qglobal.h>
+#include <dtkcore_config.h>
+
#define DTK_NAMESPACE Dtk
#if !defined(DTK_NAMESPACE)
#define D_DECL_DEPRECATED Q_DECL_DEPRECATED
#define D_DECL_DEPRECATED_X Q_DECL_DEPRECATED_X
#endif
+
+#define DTK_VERSION_CHECK(major, minor, patch, build) ((major<<24)|(minor<<16)|(patch<<8)|build)
+#define DTK_VERSION DTK_VERSION_CHECK(DTK_VERSION_MAJOR, DTK_VERSION_MINOR, DTK_VERSION_PATCH, DTK_VERSION_BUILD)
TEMPLATE = lib
-VERSION = 2.0
+
+isEmpty(VERSION) {
+ VERSION = $$system(git describe --tags --abbrev=0)
+ isEmpty(VERSION):error(VERSION is empty)
+ VERSION = $$replace(VERSION, [^0-9.],)
+ message(Version \"$$VERSION\" from git)
+}
+
+isEmpty(VER_MAJ) {
+ ver_list = $$split(VERSION, .)
+ VER_MAJ = $$first(ver_list)
+}
+
+isEmpty(VER_MIN) {
+ ver_list = $$split(VERSION, .)
+ VER_MIN = $$member(ver_list, 1, 1)
+ isEmpty(VER_MIN):VER_MIN = 0
+}
+
+isEmpty(VER_PAT) {
+ ver_list = $$split(VERSION, .)
+ VER_PAT = $$member(ver_list, 2, 2)
+ isEmpty(VER_PAT):VER_PAT = 0
+}
+
+isEmpty(VER_BUI) {
+ ver_list = $$split(VERSION, .)
+ VER_BUI = $$member(ver_list, 3, 3)
+ isEmpty(VER_BUI):VER_BUI = 0
+}
CONFIG += c++11 create_pc create_prl no_install_prl
CONFIG += no_keywords
INCLUDEPATH += $$PWD $$PWD/base
HEADERS += \
- $$PWD/dtkcore_global.h \
+ $$PWD/dtkcore_global.h
include($$PWD/base/base.pri)
include($$PWD/util/util.pri)
# ----------------------------------------------
# install config
-includes.files += $$PWD/*.h
+includes.files += $$PWD/*.h $$PWD/dtkcore_config.h $$PWD/DtkCore
includes.path = $${DTK_INCLUDEPATH}/DCore
# CMake configure
QMAKE_PKGCONFIG_DESCRIPTION = Deepin Tool Kit Core Header Files
QMAKE_PKGCONFIG_INCDIR = $$includes.path
+# create DtkCore file
+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)
+}
+
+defineTest(updateDtkCoreFile) {
+ include_files = $$HEADERS
+ file_content = $$quote($${LITERAL_HASH}ifndef DTK_CORE_MODULE_H)
+ file_content += $$quote($${LITERAL_HASH}define DTK_CORE_MODULE_H)
+
+ for(header, include_files) {
+ containIncludeFiles($$header) {
+ file_content += $$quote($${LITERAL_HASH}include \"$$basename(header)\")
+ }
+ }
+
+ file_content += $$quote($${LITERAL_HASH}endif)
+ !write_file($$PWD/DtkCore, file_content):return(false)
+
+ return(true)
+}
+
+!updateDtkCoreFile():warning(Cannot create "DtkCore" header file)
+
+# create dtkwidget_config.h file
+defineTest(updateDtkCoreConfigFile) {
+ 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, DtkCore):contains(file, D[A-Za-z0-9_]+) {
+ config_content += $$quote($${LITERAL_HASH}define DTKCORE_CLASS_$$file)
+ }
+ }
+
+ !write_file($$PWD/dtkcore_config.h, config_content):return(false)
+
+ return(true)
+}
+
+!updateDtkCoreConfigFile():warning(Cannot create "dtkcore_config.h" header file)