Skip to content

Commit

Permalink
Add SPLITPACKAGES option to control building of split packages
Browse files Browse the repository at this point in the history
  • Loading branch information
sithlord48 committed Aug 3, 2022
1 parent e04d64a commit 9a22442
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 40 deletions.
8 changes: 4 additions & 4 deletions docs/build.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ To build ff7tk you will a minimum of:

A Default Build of ff7tk will build:
- A Required Core Library (libff7tk.so, libff7tk.dylib, or ff7tk.dll)
- Additional Libraries ff7tkWidgets, ff7tkUtils and ff7tkFormats.
- All Additional Libraries ff7tkQtWidgets, ff7tkWidgets, ff7tkUtils and ff7tkFormats.
- Headers for the libraries so you can link to them
- Required CMake parts to find it post install.
- Translation files "ff7tk_<lang>.qm" for supported languages
Expand All @@ -28,7 +28,7 @@ FRAMEWORKS | Build as Frameworks (EXPERMANTAL) | OFF
TESTS | Build and run unit tests | ON | |
UTILS | Build ff7tkUtils. | ON | [zlib] |
WIDGETS | Build ff7tkWidgets. | ON | |

SPLITPACKAGES | Create Split Packages | OFF | |

Enabling Demos will allow you to set this additional options all are enabled by default
Demo | Description |
Expand Down Expand Up @@ -77,9 +77,9 @@ For QMake you can use the pkgconfig provided by the system
## ff7tk version info
ff7tk Versions are based on its git info. Failing this the project version is updated on every release.
include the file ff7tkAbout.h and use the function(s)
- ff7tk_version() To get version info in to form of Major.minor.patch.tweak (Qt<QtMajorVersion>)
- ff7tk_version() To get version info in to form of Major.minor.patch.tweak
-- If patch or rev are empty they are excluded from the version number
-- tweak is Number of commits since the last tag
-- tweak is Number of commits since the last tag release
### ff7tk version compatibility
ff7tk verisons with the same major and minor version are compatible. Building your project with an incompatible version can lead to API issues for this reason its HIGHLY recommend any CI jobs use a Release or specific COMMIT HASH when pulling ff7tk.

Expand Down
91 changes: 55 additions & 36 deletions packaging/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ include (CPackIFW)

##Cpack Deployment Info
#Generate list of built Targets
option(SPLITPACKAGES "build split packages" OFF)
set(RUNTIME_DEPENDS_PATH ${CMAKE_BINARY_DIR}/runtime_depends)

get_property( TARGETS GLOBAL PROPERTY ff7tk_targets)
Expand Down Expand Up @@ -122,48 +123,66 @@ cpack_ifw_configure_component(ff7tk_libraries FORCED_INSTALLATION SORTING_PRIOR
cpack_ifw_configure_component_group(ff7tk_demos DEFAULT TRUE SORTING_PRIORITY 1)

# DEBIAN
# FIXME can not be tested as libraries first have to be part of a package in order
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS FALSE)
# to determine their dependencies and we can not be certain if there will be any
set(CPACK_DEB_COMPONENT_INSTALL TRUE)
set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
set(CPACK_DEBIAN_PACKAGE_CONTROL_STRICT_PERMISSION TRUE)
set(CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS YES)
set(CPACK_DEBIAN_FF7TK_LIBRARIES_PACKAGE_NAME libff7tk)
set(CPACK_DEBIAN_FF7TK_LIBRARIES_PACKAGE_PROVIDES libff7tk)
set(CPACK_DEBIAN_FF7TK_LIBRARIES_PACKAGE_DEPENDS "libqt6widgets6 (>= ${REQUIRED_QT_VERSION}),libqt6qml6 (>= ${REQUIRED_QT_VERSION}), libqt6xml6 (>= ${REQUIRED_QT_VERSION}),libqt6gui6 (>= ${REQUIRED_QT_VERSION}),libqt6core5compat6 (>= ${REQUIRED_QT_VERSION}),libqt6core6 (>= ${REQUIRED_QT_VERSION}),libqt6network6 (>= ${REQUIRED_QT_VERSION}), libz")
set(CPACK_DEBIAN_FF7TK_LIBRARIES_AUTO_PACKAGE_SHLIBDEPS ON)
set(CPACK_DEBIAN_FF7TK_HEADERS_PACKAGE_NAME libff7tk-dev)
set(CPACK_DEBIAN_FF7TK_HEADERS_PACKAGE_PROVIDES libff7tk-dev)
set(CPACK_DEBIAN_FF7TK_HEADERS_PACKAGE_ENHANCES libff7tk)
set(CPACK_DEBIAN_FF7TK_HEADERS_AUTO_PACKAGE_SHLIBDEPS ON)
set(CPACK_DEBIAN_FF7TK_DEBUG_PACKAGE_NAME libff7tk-dbg)
set(CPACK_DEBIAN_FF7TK_DEBUG_PACKAGE_PROVIDES libff7tk-dbg)
set(CPACK_DEBIAN_FF7TK_DEBUG_PACKAGE_ENHANCES libff7tk)
set(CPACK_DEBIAN_FF7TK_DEBUG_AUTO_PACKAGE_SHLIBDEPS ON)
set(CPACK_DEBIAN_FF7TK_DEMOS_PACKAGE_NAME libff7tk-demos)
set(CPACK_DEBIAN_FF7TK_DEMOS_PACKAGE_PROVIDES libff7tk-demos)
set(CPACK_DEBIAN_FF7TK_DEMOS_PACKAGE_DEPENDS "libff7tk (= ${CPACK_PACKAGE_VERSION})")
set(CPACK_DEBIAN_FF7TK_DEMO_AUTO_PACKAGE_SHLIBDEPS ON)
set(CPACK_DEBIAN_FF7TK_DOCS_PACKAGE_NAME libff7tk-doc)
set(CPACK_DEBIAN_FF7TK_DOCS_PACKAGE_PROVIDES libff7tk-doc)
set(CPACK_DEBIAN_FF7TK_DOCS_PACKAGE_ENHANCES libff7tk)
set(CPACK_DEBIAN_FF7TK_DOCS_PACKAGE_ARCHITECTURE all)
set(DEBIAN_DEPENDS_STRING "libqt6widgets6 (>= ${REQUIRED_QT_VERSION}),libqt6qml6 (>= ${REQUIRED_QT_VERSION}), libqt6xml6 (>= ${REQUIRED_QT_VERSION}),libqt6gui6 (>= ${REQUIRED_QT_VERSION}),libqt6core5compat6 (>= ${REQUIRED_QT_VERSION}),libqt6core6 (>= ${REQUIRED_QT_VERSION}),libqt6network6 (>= ${REQUIRED_QT_VERSION}), zlib1g")
if(SPLITPACKAGES)
set(CPACK_DEB_COMPONENT_INSTALL TRUE)
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS FALSE)
set(CPACK_DEBIAN_ENABLE_COMPONENT_DEPENDS YES)
set(CPACK_DEBIAN_FF7TK_LIBRARIES_PACKAGE_NAME libff7tk)
set(CPACK_DEBIAN_FF7TK_LIBRARIES_PACKAGE_PROVIDES libff7tk)
set(CPACK_DEBIAN_FF7TK_LIBRARIES_PACKAGE_DEPENDS ${DEBIAN_DEPENDS_STRING})
set(CPACK_DEBIAN_FF7TK_LIBRARIES_AUTO_PACKAGE_SHLIBDEPS ON)
set(CPACK_DEBIAN_FF7TK_HEADERS_PACKAGE_NAME libff7tk-dev)
set(CPACK_DEBIAN_FF7TK_HEADERS_PACKAGE_PROVIDES libff7tk-dev)
set(CPACK_DEBIAN_FF7TK_HEADERS_PACKAGE_ENHANCES libff7tk)
set(CPACK_DEBIAN_FF7TK_HEADERS_PACKAGE_CONFLICTS libff7tk-all)
set(CPACK_DEBIAN_FF7TK_HEADERS_PACKAGE_REPLACES libff7tk-all)
set(CPACK_DEBIAN_FF7TK_HEADERS_AUTO_PACKAGE_SHLIBDEPS ON)
set(CPACK_DEBIAN_FF7TK_DEBUG_PACKAGE_NAME libff7tk-dbg)
set(CPACK_DEBIAN_FF7TK_DEBUG_PACKAGE_PROVIDES libff7tk-dbg)
set(CPACK_DEBIAN_FF7TK_DEBUG_PACKAGE_ENHANCES libff7tk)
set(CPACK_DEBIAN_FF7TK_DEBUG_PACKAGE_CONFLICTS libff7tk-all)
set(CPACK_DEBIAN_FF7TK_DEBUG_PACKAGE_REPLACES libff7tk-all)
set(CPACK_DEBIAN_FF7TK_DEBUG_AUTO_PACKAGE_SHLIBDEPS ON)
set(CPACK_DEBIAN_FF7TK_DEMOS_PACKAGE_NAME libff7tk-demos)
set(CPACK_DEBIAN_FF7TK_DEMOS_PACKAGE_PROVIDES libff7tk-demos)
set(CPACK_DEBIAN_FF7TK_DEMOS_PACKAGE_DEPENDS "libff7tk (= ${CPACK_PACKAGE_VERSION})")
set(CPACK_DEBIAN_FF7TK_DEMOS_PACKAGE_CONFLICTS libff7tk-all)
set(CPACK_DEBIAN_FF7TK_DEMOS_PACKAGE_REPLACES libff7tk-all)
set(CPACK_DEBIAN_FF7TK_DEMOS_AUTO_PACKAGE_SHLIBDEPS ON)
set(CPACK_DEBIAN_FF7TK_DOCS_PACKAGE_NAME libff7tk-doc)
set(CPACK_DEBIAN_FF7TK_DOCS_PACKAGE_PROVIDES libff7tk-doc)
set(CPACK_DEBIAN_FF7TK_DOCS_PACKAGE_ENHANCES libff7tk)
set(CPACK_DEBIAN_FF7TK_DOCS_PACKAGE_ARCHITECTURE all)
set(CPACK_DEBIAN_FF7TK_DOCS_PACKAGE_CONFLICTS libff7tk-all)
set(CPACK_DEBIAN_FF7TK_DOCS_PACKAGE_REPLACES libff7tk-all)
else ()
set(CPACK_DEBIAN_PACKAGE_DEPENDS ${DEBIAN_DEPENDS_STRING})
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
set(CPACK_DEBIAN_PACKAGE_NAME libff7tk-all)
set(CPACK_DEBIAN_PACKAGE_PROVIDES libff7tk-all)
set(CPACK_DEBIAN_PACKAGE_CONFLICTS "libff7tk, libff7tk-dev, libff7tk-demos, libff7tk-docs, libff7tk-dbg")
set(CPACK_DEBIAN_PACKAGE_REPLACES "libff7tk, libff7tk-dev, libff7tk-demos, libff7tk-docs, libff7tk-dbg")
endif()

# RPM
set(CPACK_RPM_COMPONENT_INSTALL TRUE)
set(CPACK_RPM_PACKAGE_NAME libff7tk)
set(CPACK_RPM_FILE_NAME RPM-DEFAULT)
set(CPACK_RPM_FF7TK_LIBRARIES_PACKAGE_NAME libff7tk)
set(CPACK_RPM_FF7TK_HEADERS_PACKAGE_NAME libff7tk-dev)
set(CPACK_RPM_FF7TK_HEADERS_PACKAGE_PROVIDES libff7tk-dev)
set(CPACK_RPM_FF7TK_DEBUG_PACKAGE_NAME libff7tk-dbg)
set(CPACK_RPM_FF7TK_DEBUG_PACKAGE_PROVIDES libff7tk-dbg)
set(CPACK_RPM_FF7TK_DEMOS_PACKAGE_NAME libff7tk-demos)
set(CPACK_RPM_FF7TK_DEMOS_PACKAGE_PROVIDES libff7tk-demos)
set(CPACK_RPM_FF7TK_DOCS_PACKAGE_NAME libff7tk-doc)
set(CPACK_RPM_FF7TK_DOCS_PACKAGE_PROVIDES libff7tk-doc)
set(CPACK_RPM_FF7TK_DOCS_PACKAGE_ARCHITECTURE noarch)
if(SPLITPACKAGES)
set(CPACK_RPM_COMPONENT_INSTALL TRUE)
set(CPACK_RPM_FF7TK_LIBRARIES_PACKAGE_NAME libff7tk)
set(CPACK_RPM_FF7TK_HEADERS_PACKAGE_NAME libff7tk-dev)
set(CPACK_RPM_FF7TK_HEADERS_PACKAGE_PROVIDES libff7tk-dev)
set(CPACK_RPM_FF7TK_DEBUG_PACKAGE_NAME libff7tk-dbg)
set(CPACK_RPM_FF7TK_DEBUG_PACKAGE_PROVIDES libff7tk-dbg)
set(CPACK_RPM_FF7TK_DEMOS_PACKAGE_NAME libff7tk-demos)
set(CPACK_RPM_FF7TK_DEMOS_PACKAGE_PROVIDES libff7tk-demos)
set(CPACK_RPM_FF7TK_DOCS_PACKAGE_NAME libff7tk-doc)
set(CPACK_RPM_FF7TK_DOCS_PACKAGE_PROVIDES libff7tk-doc)
set(CPACK_RPM_FF7TK_DOCS_PACKAGE_ARCHITECTURE noarch)
endif()

#WIX
set(CPACK_WIX_UPGRADE_GUID "56266AAA-FE44-4473-90FD-122755D1682A")
Expand Down

0 comments on commit 9a22442

Please sign in to comment.