add CPack packaging definition
See also: - https://cmake.org/cmake/help/v3.4/module/CPack.html - https://cmake.org/cmake/help/v3.4/module/CPackRPM.html - https://cmake.org/cmake/help/v3.4/module/CPackDeb.html
This commit is contained in:
parent
d648e92188
commit
064e38eae9
|
@ -43,13 +43,38 @@ target_link_libraries(${PROJECT_NAME}
|
||||||
mksh vroot pthread
|
mksh vroot pthread
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# default install prefix is /usr/local
|
||||||
|
# change it with e.g. -DCMAKE_INSTALL_PREFIX=/usr
|
||||||
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin)
|
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin)
|
||||||
install(FILES man/man1/make.1 DESTINATION share/man/man1)
|
install(FILES man/man1/make.1 DESTINATION share/man/man1)
|
||||||
install(FILES bin/make.rules.file DESTINATION share/${PROJECT_NAME}
|
install(FILES bin/make.rules.file DESTINATION share/${PROJECT_NAME}
|
||||||
RENAME make.rules)
|
RENAME make.rules)
|
||||||
install(FILES bin/svr4.make.rules.file DESTINATION share/${PROJECT_NAME}
|
install(FILES bin/svr4.make.rules.file DESTINATION share/${PROJECT_NAME}
|
||||||
RENAME svr4.make.rules)
|
RENAME svr4.make.rules)
|
||||||
install(FILES README.md DESTINATION share/doc/${PROJECT_NAME}
|
install(FILES COPYING
|
||||||
|
README.md
|
||||||
|
DESTINATION share/doc/${PROJECT_NAME}
|
||||||
)
|
)
|
||||||
install(DIRECTORY example DESTINATION share/doc/${PROJECT_NAME}
|
install(DIRECTORY example DESTINATION share/doc/${PROJECT_NAME}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# select the package generator with e.g. -DCPACK_GENERATOR='RPM;DEB'
|
||||||
|
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "illumos dmake, Sun make compatible")
|
||||||
|
set(CPACK_PACKAGE_CONTACT "mail@georg.so")
|
||||||
|
set(CPACK_PACKAGE_VENDOR "misc")
|
||||||
|
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README_pkg.txt")
|
||||||
|
set(CPACK_RPM_PACKAGE_LICENSE "CDDL")
|
||||||
|
# used by some generators like NSI, is only displayed in the installer
|
||||||
|
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/COPYING")
|
||||||
|
# only used by some generators
|
||||||
|
set(CPACK_PACKAGE_INSTALL_DIRECTORY
|
||||||
|
"${PROJECT_NAME}-${CMake_VERSION_MAJOR}.${CMake_VERSION_MINOR}")
|
||||||
|
set(CPACK_PACKAGE_VERSION_MAJOR "0")
|
||||||
|
set(CPACK_PACKAGE_VERSION_MINOR "6")
|
||||||
|
set(CPACK_PACKAGE_VERSION_PATCH "0")
|
||||||
|
set(CPACK_RPM_PACKAGE_GROUP "Development/Tools")
|
||||||
|
set(CPACK_RPM_PACKAGE_URL "https://github.com/gsauthof/somake")
|
||||||
|
# CPackDeb default to CPACK_PACKAGE_DESCRIPTION_SUMMARY, although
|
||||||
|
# the long description makes more sense ...
|
||||||
|
file(READ ${CPACK_PACKAGE_DESCRIPTION_FILE} CPACK_DEBIAN_PACKAGE_DESCRIPTION)
|
||||||
|
include(CPack)
|
||||||
|
|
26
README.md
26
README.md
|
@ -342,6 +342,32 @@ the following order:
|
||||||
5. `/usr/share/lib/make/make.rules`
|
5. `/usr/share/lib/make/make.rules`
|
||||||
6. `/etc/default/make.rules`
|
6. `/etc/default/make.rules`
|
||||||
|
|
||||||
|
## Packaging
|
||||||
|
|
||||||
|
The CMake build file `CMakeLists.txt` also defines some variables
|
||||||
|
for CPack, the CMake companion tool for creating binary packages.
|
||||||
|
|
||||||
|
For example, to create `.rpm` and `.deb` packages:
|
||||||
|
|
||||||
|
$ cmake ../somake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr \
|
||||||
|
-DCPACK_GENERATOR='RPM;DEB' -GNinja
|
||||||
|
$ ninja-build package
|
||||||
|
$ ls somake-*
|
||||||
|
somake-0.6.0-Linux.deb somake-0.6.0-Linux.rpm
|
||||||
|
|
||||||
|
As always, the `-GNinja` generator option can be dropped -
|
||||||
|
`ninja-build` has to be replaced with `make` then.
|
||||||
|
|
||||||
|
The content of the archives can be verified like this:
|
||||||
|
|
||||||
|
$ dpkg --contents somake-0.6.0-Linux.deb
|
||||||
|
$ dpkg --info somake-0.6.0-Linux.deb
|
||||||
|
|
||||||
|
Or:
|
||||||
|
|
||||||
|
$ rpm2cpio somake-0.6.0-Linux.rpm | cpio --list -v
|
||||||
|
$ rpm -qip somake-0.6.0-Linux.rpm
|
||||||
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|
15
README_pkg.txt
Normal file
15
README_pkg.txt
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
`somake` is a portable version of illumos make. illumos make is
|
||||||
|
derived from Sun's dmake (distributed make) which in turn is
|
||||||
|
compatible with the bonus features of Sun make. Notable Sun make
|
||||||
|
features are:
|
||||||
|
|
||||||
|
- command dependencies (target is considered outdated if used
|
||||||
|
variable has changed)
|
||||||
|
- hidden dependencies (automatic dependency generation for
|
||||||
|
included headers)
|
||||||
|
- target groups
|
||||||
|
- conditional macro assignment (different syntax than with GNU
|
||||||
|
make)
|
||||||
|
- include file generation (similar to GNU make)
|
||||||
|
|
||||||
|
See also: https://github.com/gsauthof/somake
|
Loading…
Reference in a new issue