src/DtkCore
src/dtkcore_config.h
+cmake/DtkCore/DtkCoreConfig.cmake
+++ /dev/null
-
-set(INCLUDE_INSTALLED_DIR "/usr/include/libdtk-2.0.6/DCore")
-set(DtkCore_LIBRARIES dtkcore)
-include_directories("${INCLUDE_INSTALLED_DIR}")
--- /dev/null
+
+set(DTKCORE_INCLUDE_DIR "/usr/include/libdtk-2.0.6/DCore")
+set(DtkCore_LIBRARIES dtkcore)
+include_directories("${INCLUDE_INSTALLED_DIR}")
usr/include
usr/lib/*/pkgconfig/*.pc
usr/lib/*/cmake/*/*.cmake
+usr/lib/*/qt5/*
usr/lib/*/libdtk/modules/*
--- /dev/null
+defineTest(checkDtkVersion) {
+ isEmpty(VERSION) {
+ !isEqual(TARGET, dtkcore) {
+ PKG_CONFIG = $$pkgConfigExecutable()
+ !isEmpty(PKG_CONFIG): VERSION = $$system($$PKG_CONFIG --modversion dtkcore)
+ }
+
+ #TODO: faild in window
+ isEmpty(VERSION): VERSION = $$system(git describe --tags --abbrev=0)
+ isEmpty(VERSION): VERSION = $$DTK_VERSION
+ isEmpty(VERSION): return(false)
+ VERSION = $$replace(VERSION, [^0-9.],)
+ }
+
+ export(VERSION)
+ return(true)
+}
+
+!checkDtkVersion():error("check dtk version failed")
+
+message("build dtk with version $$VERSION")
+ver_list = $$split(VERSION, .)
+
+isEmpty(VER_MAJ) {
+ VER_MAJ = $$first(ver_list)
+}
+isEmpty(VER_MIN) {
+ VER_MIN = $$member(ver_list, 1, 1)
+ isEmpty(VER_MIN):VER_MIN = 0
+}
+isEmpty(VER_PAT) {
+ VER_PAT = $$member(ver_list, 2, 2)
+ isEmpty(VER_PAT):VER_PAT = 0
+}
+isEmpty(VER_BUI) {
+ VER_BUI = $$member(ver_list, 3, 3)
+ isEmpty(VER_BUI):VER_BUI = 0
+}
+
+TEMPLATE = lib
+
+CONFIG += c++11 create_pc create_prl no_install_prl
+CONFIG += no_keywords
+
+DEFINES += QT_MESSAGELOGCONTEXT
+
+isEmpty(PREFIX){
+ PREFIX = /usr
+}
+
+isEmpty(LIB_INSTALL_DIR) {
+ LIB_INSTALL_DIR=$$PREFIX/lib
+ target.path = $$PREFIX/lib
+} else {
+ target.path = $$LIB_INSTALL_DIR
+}
+
+isEmpty(INCLUDE_INSTALL_DIR) {
+ INCLUDE_INSTALL_DIR = $$PREFIX/include/libdtk-$${VER_MAJ}.$${VER_MIN}.$${VER_PAT}
+ DTK_INCLUDEPATH = $$PREFIX/include/libdtk-$${VER_MAJ}.$${VER_MIN}.$${VER_PAT}
+} else {
+ DTK_INCLUDEPATH = $$INCLUDE_INSTALL_DIR/libdtk-$${VER_MAJ}.$${VER_MIN}.$${VER_PAT}
+}
+
--- /dev/null
+# CMake configure
+
+#TODO: check cmake exist
+
+!win*: {
+isEmpty(CMAKE_MODULE): error("CMAKE_MODULE must not empty")
+WORK_DIR=$$_PRO_FILE_PWD_
+
+message("config cmake module: $$CMAKE_MODULE")
+message("write cmake file to: $$WORK_DIR")
+
+CMAKE_MODULE_INCLUDE_DIR=$$upper($${CMAKE_MODULE})_INCLUDE_DIR
+
+INC_DIR = $$replace(includes.path, "/", "\/")
+CMD = sed -E \'s/$${CMAKE_MODULE_INCLUDE_DIR} \".*\"\\)$/$${CMAKE_MODULE_INCLUDE_DIR} \"$${INC_DIR}\"\\)/\' $$WORK_DIR/../cmake/$${CMAKE_MODULE}/$${CMAKE_MODULE}Config.cmake.in > $$WORK_DIR/../cmake/$${CMAKE_MODULE}/$${CMAKE_MODULE}Config.cmake
+
+system($$CMD) | error("config cmake failed")
+
+cmake_config.files = $$PWD/../cmake
+cmake_config.path = $$LIB_INSTALL_DIR
+
+INSTALLS += cmake_config
+}
--- /dev/null
+isEmpty(QT_MODULE): error("QT_MODULE must not empty")
+
+MODULE_ID=$$QT_MODULE
+mod_inst_pfx=$$_PRO_FILE_PWD_
+MODULE_PRI = $$mod_inst_pfx/qt_lib_$${MODULE_ID}.pri
+module_libs = $$target.path
+MODULE_INCLUDES = $$includes.path
+
+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("$$TARGET 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 = $$TARGET$$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 = $$section(VERSION, ., 0, 0)" \
+ "QT.$${MODULE_ID}.MINOR_VERSION = $$section(VERSION, ., 1, 1)" \
+ "QT.$${MODULE_ID}.PATCH_VERSION = $$section(VERSION, ., 2, 2)" \
+ "" \
+ "QT.$${MODULE_ID}.name = $${TARGET}" \
+ "QT.$${MODULE_ID}.module = $$module_module" \
+ "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_HOST_DATA=$$system(qmake -query QT_HOST_DATA)
+qt_module.files = $$MODULE_PRI
+qt_module.path = $${QT_HOST_DATA}/mkspecs/modules
+
+INSTALLS += qt_module
+++ /dev/null
-TEMPLATE = lib
-
-include($$PWD/version.pri)
-
-CONFIG += c++11 create_pc create_prl no_install_prl
-CONFIG += no_keywords
-
-DEFINES += QT_MESSAGELOGCONTEXT
-
-isEmpty(PREFIX){
- PREFIX = /usr
-}
-
-isEmpty(LIB_INSTALL_DIR) {
- target.path = $$PREFIX/lib
-} else {
- target.path = $$LIB_INSTALL_DIR
-}
-
-isEmpty(INCLUDE_INSTALL_DIR) {
- DTK_INCLUDEPATH = $$PREFIX/include/libdtk-$${VER_MAJ}.$${VER_MIN}.$${VER_PAT}
-} else {
- DTK_INCLUDEPATH = $$INCLUDE_INSTALL_DIR/libdtk-$${VER_MAJ}.$${VER_MIN}.$${VER_PAT}
-}
-
-win32* {
- DEFINES += STATIC_LIB
- CONFIG += staticlib
-}
-
-pri_dev.files += $$PWD/version.pri
-
-isEmpty(LIB_INSTALL_DIR) {
- pri_dev.path = $$PREFIX/lib/libdtk/modules
-} else {
- pri_dev.path = $$LIB_INSTALL_DIR/libdtk/modules
-}
-
-INSTALLS += pri_dev
HEADERS += \
$$PWD/dtkcore_global.h
-include($$PWD/lib.pri)
+
+include(dtk_build.prf)
+
include($$PWD/base/base.pri)
include($$PWD/util/util.pri)
include($$PWD/log/log.pri)
include($$PWD/filesystem/filesystem.pri)
include($$PWD/settings/settings.pri)
-# ----------------------------------------------
-# install config
-
-includes.files += $$PWD/*.h $$PWD/dtkcore_config.h $$PWD/DtkCore
-includes.path = $${DTK_INCLUDEPATH}/DCore
-
-# CMake configure
-INC_DIR = $$replace(includes.path, "/", "\/")
-CMD = sed -i -E \'s/INCLUDE_INSTALLED_DIR \".*\"\\)$/INCLUDE_INSTALLED_DIR \"$${INC_DIR}\"\\)/\' ../cmake/DtkCore/DtkCoreConfig.cmake
-system($$CMD)
-
-cmake_config.path = $$LIB_INSTALL_DIR
-cmake_config.files = $$PWD/../cmake
-
-INSTALLS += includes target cmake_config
-
-QMAKE_PKGCONFIG_LIBDIR = $$target.path
-QMAKE_PKGCONFIG_VERSION = $$VERSION
-QMAKE_PKGCONFIG_DESTDIR = pkgconfig
-
-QMAKE_PKGCONFIG_NAME = DTK_CORE
-QMAKE_PKGCONFIG_DESCRIPTION = Deepin Tool Kit Core Header Files
-QMAKE_PKGCONFIG_INCDIR = $$includes.path
-
# create DtkCore file
defineTest(containIncludeFiles) {
header = $$absolute_path($$ARGS)
}
!updateDtkCoreConfigFile():warning(Cannot create "dtkcore_config.h" header file)
+
+
+# ----------------------------------------------
+# install config
+includes.files += $$PWD/*.h $$PWD/dtkcore_config.h $$PWD/DtkCore
+includes.path = $${DTK_INCLUDEPATH}/DCore
+
+INSTALLS += includes target
+
+#pkg-config
+QMAKE_PKGCONFIG_LIBDIR = $$target.path
+QMAKE_PKGCONFIG_VERSION = $$VERSION
+QMAKE_PKGCONFIG_DESTDIR = pkgconfig
+
+QMAKE_PKGCONFIG_NAME = DTK_CORE
+QMAKE_PKGCONFIG_DESCRIPTION = Deepin Tool Kit Core Header Files
+QMAKE_PKGCONFIG_INCDIR = $$includes.path
+
+#cmake
+CMAKE_MODULE=DtkCore
+include(dtk_cmake.prf)
+
+#qt module
+QT_MODULE=dcore
+include(dtk_module.prf)
+
+prf.files+= $$PWD/*.prf
+prf.path = $${QT_HOST_DATA}/mkspecs/features
+
+INSTALLS += prf
+
+# -----------------------------------------------
+# TODO: remove this, replace with dtk_build
+
+pri_dev.files += $$PWD/version.pri
+
+isEmpty(LIB_INSTALL_DIR) {
+ pri_dev.path = $$PREFIX/lib/libdtk/modules
+} else {
+ pri_dev.path = $$LIB_INSTALL_DIR/libdtk/modules
+}
+
+INSTALLS += pri_dev