Add Gentoo ebuild, along with code necessary to generate one. Also,
clean up the CMakeLists.txt file, allowing it to be more cross platform.
This commit is contained in:
parent
ceda875213
commit
8a3d21ea31
|
@ -7,6 +7,9 @@ project(docpp VERSION 0.0.1
|
||||||
LANGUAGES CXX
|
LANGUAGES CXX
|
||||||
)
|
)
|
||||||
|
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
include(CMakePackageConfigHelpers)
|
||||||
|
|
||||||
if (NOT DEFINED CMAKE_BUILD_TYPE)
|
if (NOT DEFINED CMAKE_BUILD_TYPE)
|
||||||
set(CMAKE_BUILD_TYPE Debug)
|
set(CMAKE_BUILD_TYPE Debug)
|
||||||
endif()
|
endif()
|
||||||
|
@ -37,15 +40,12 @@ set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||||
install(TARGETS ${PROJECT_NAME}
|
install(TARGETS ${PROJECT_NAME}
|
||||||
EXPORT ${PROJECT_NAME}Targets
|
EXPORT ${PROJECT_NAME}Targets
|
||||||
FILE_SET HEADERS
|
FILE_SET HEADERS
|
||||||
LIBRARY DESTINATION lib
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
ARCHIVE DESTINATION lib
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||||
RUNTIME DESTINATION bin
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||||
PUBLIC_HEADER DESTINATION include/docpp
|
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/docpp
|
||||||
INCLUDES DESTINATION include)
|
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
|
||||||
|
|
||||||
set(INCLUDE_INSTALL_DIR include/)
|
|
||||||
|
|
||||||
include(CMakePackageConfigHelpers)
|
|
||||||
write_basic_package_version_file(
|
write_basic_package_version_file(
|
||||||
"${PROJECT_NAME}ConfigVersion.cmake"
|
"${PROJECT_NAME}ConfigVersion.cmake"
|
||||||
VERSION ${PROJECT_VERSION}
|
VERSION ${PROJECT_VERSION}
|
||||||
|
@ -54,11 +54,11 @@ write_basic_package_version_file(
|
||||||
install(EXPORT ${PROJECT_NAME}Targets
|
install(EXPORT ${PROJECT_NAME}Targets
|
||||||
FILE ${PROJECT_NAME}Targets.cmake
|
FILE ${PROJECT_NAME}Targets.cmake
|
||||||
NAMESPACE docpp::
|
NAMESPACE docpp::
|
||||||
DESTINATION lib/cmake/${PROJECT_NAME})
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
|
||||||
|
|
||||||
install(FILES "${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake"
|
install(FILES "${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}Config.cmake"
|
||||||
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
|
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
|
||||||
DESTINATION lib/cmake/${PROJECT_NAME})
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
|
||||||
|
|
||||||
if (NOT WIN32 AND NOT APPLE)
|
if (NOT WIN32 AND NOT APPLE)
|
||||||
configure_file(${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}.pc.in
|
configure_file(${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}.pc.in
|
||||||
|
@ -66,9 +66,7 @@ if (NOT WIN32 AND NOT APPLE)
|
||||||
)
|
)
|
||||||
|
|
||||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc
|
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc
|
||||||
DESTINATION lib/pkgconfig)
|
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
|
||||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc
|
|
||||||
DESTINATION lib64/pkgconfig)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
|
@ -103,19 +101,14 @@ if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (NOT WIN32)
|
if (NOT WIN32)
|
||||||
if (EXISTS "${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}.PKGBUILD.in")
|
if (EXISTS "${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}.PKGBUILD.in" AND
|
||||||
|
GENERATE_PKGBUILD)
|
||||||
configure_file(${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}.PKGBUILD.in
|
configure_file(${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}.PKGBUILD.in
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/PKGBUILD @ONLY
|
${CMAKE_CURRENT_BINARY_DIR}/PKGBUILD @ONLY
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (EXISTS "${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}.ebuild.in")
|
if (BUILD_TARBALL OR GENERATE_EBUILD)
|
||||||
configure_file(${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}.ebuild.in
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-${PROJECT_VERSION}.ebuild @ONLY
|
|
||||||
)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if (BUILD_TARBALL OR BUILD_ARCH)
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
TARGET ${PROJECT_NAME}
|
TARGET ${PROJECT_NAME}
|
||||||
COMMENT "Create tarball"
|
COMMENT "Create tarball"
|
||||||
|
@ -123,31 +116,24 @@ if (NOT WIN32)
|
||||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
||||||
COMMAND scripts/${PROJECT_NAME}_make dist && mv ${PROJECT_SOURCE_DIR}/${PROJECT_NAME}-${PROJECT_VERSION}.tar.gz* ${CMAKE_BINARY_DIR}
|
COMMAND scripts/${PROJECT_NAME}_make dist && mv ${PROJECT_SOURCE_DIR}/${PROJECT_NAME}-${PROJECT_VERSION}.tar.gz* ${CMAKE_BINARY_DIR}
|
||||||
)
|
)
|
||||||
elseif (BUILD_TARBALL_RELEASE OR BUILD_ARCH_RELEASE)
|
|
||||||
add_custom_command(
|
|
||||||
TARGET ${PROJECT_NAME}
|
|
||||||
COMMENT "Create tarball"
|
|
||||||
POST_BUILD
|
|
||||||
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
|
|
||||||
COMMAND scripts/${PROJECT_NAME}_make dist_release && mv ${PROJECT_SOURCE_DIR}/${PROJECT_NAME}-${PROJECT_VERSION}.tar.gz* ${CMAKE_BINARY_DIR}
|
|
||||||
)
|
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (BUILD_ARCH_RELEASE)
|
if (EXISTS "${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}.ebuild.in" AND
|
||||||
add_custom_command(
|
GENERATE_EBUILD )
|
||||||
TARGET ${PROJECT_NAME}
|
configure_file(${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}.ebuild.in
|
||||||
COMMENT "Build arch package"
|
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-${PROJECT_VERSION}.ebuild @ONLY
|
||||||
POST_BUILD
|
|
||||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
|
||||||
COMMAND makepkg -sfr --sign
|
|
||||||
)
|
)
|
||||||
elseif (BUILD_ARCH)
|
|
||||||
add_custom_command(
|
add_custom_command(
|
||||||
TARGET ${PROJECT_NAME}
|
TARGET ${PROJECT_NAME}
|
||||||
COMMENT "Build arch package"
|
COMMENT "Copy ebuild and generate manifest"
|
||||||
POST_BUILD
|
POST_BUILD
|
||||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||||
COMMAND makepkg -sfr
|
COMMAND cp
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-${PROJECT_VERSION}.ebuild
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-9999.ebuild &&
|
||||||
|
${PROJECT_SOURCE_DIR}/scripts/generate_manifest
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-${PROJECT_VERSION}.tar.gz
|
||||||
|
> ${CMAKE_CURRENT_BINARY_DIR}/Manifest
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
12
README.md
12
README.md
|
@ -30,9 +30,15 @@ cmake --install . --prefix /usr
|
||||||
```
|
```
|
||||||
|
|
||||||
This will install the library to /usr/lib and the headers to /usr/include/docpp.
|
This will install the library to /usr/lib and the headers to /usr/include/docpp.
|
||||||
If you use Arch Linux, you can install the library by specifying -DBUILD_ARCH=ON to the cmake build command. This requires makepkg. If you don't specify anything, a PKGBUILD will be generated in the build directory.
|
If you use Arch Linux, you can specify -DGENERATE_PKGBUILD=ON to generate a PKGBUILD file in the build directory. You can then use makepkg to build a package.
|
||||||
If you use Gentoo Linux, an ebuild will automatically be generated in the build directory.
|
|
||||||
If you use a package manager that uses DEB or RPM packages, you can enable the BUILD_DEB or BUILD_RPM options to generate a package, which will be placed in the build directory.
|
```sh
|
||||||
|
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr -DGENERATE_PKGBUILD=ON
|
||||||
|
cmake --build .
|
||||||
|
makepkg -si
|
||||||
|
```
|
||||||
|
|
||||||
|
If you use Gentoo Linux, you can specify -DGENERATE_EBUILD=ON to generate an ebuild file in the build directory, along with the manifest.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
|
|
45
cmake/docpp.ebuild.in
Normal file
45
cmake/docpp.ebuild.in
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
# Copyright 1999-2022 Gentoo Authors
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
|
EAPI=8
|
||||||
|
inherit toolchain-funcs cmake
|
||||||
|
|
||||||
|
DESCRIPTION="C++ library for generating XML, HTML and CSS."
|
||||||
|
HOMEPAGE=""
|
||||||
|
|
||||||
|
if [[ ${PV} == 9999 ]]; then
|
||||||
|
inherit git-r3
|
||||||
|
EGIT_REPO_URI="https://git.speedie.site/speedie/${PN}.git"
|
||||||
|
else
|
||||||
|
KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~ppc ~ppc64 ~riscv ~x86"
|
||||||
|
SRC_URI="https://ls.speedie.site/releases/${PN}/${PN}-${PV}/${P}.tar.gz -> ${P}.tar.gz"
|
||||||
|
S="${WORKDIR}/${P}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
LICENSE="LGPL-3"
|
||||||
|
SLOT="0"
|
||||||
|
IUSE=""
|
||||||
|
|
||||||
|
DEPEND="${RDEPEND}"
|
||||||
|
BDEPEND="virtual/pkgconfig dev-build/cmake"
|
||||||
|
|
||||||
|
src_prepare() {
|
||||||
|
default
|
||||||
|
}
|
||||||
|
|
||||||
|
src_configure() {
|
||||||
|
local cmakeargs=(
|
||||||
|
-DCMAKE_INSTALL_PREFIX="${EPREFIX}/usr"
|
||||||
|
-DCMAKE_BUILD_TYPE=Release
|
||||||
|
)
|
||||||
|
|
||||||
|
cmake_src_configure
|
||||||
|
}
|
||||||
|
|
||||||
|
src_compile() {
|
||||||
|
cmake_src_compile
|
||||||
|
}
|
||||||
|
|
||||||
|
src_install() {
|
||||||
|
cmake_src_install
|
||||||
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
prefix=@CMAKE_INSTALL_PREFIX@
|
prefix=@CMAKE_INSTALL_PREFIX@
|
||||||
exec_prefix=${prefix}
|
exec_prefix=${prefix}
|
||||||
libdir=${exec_prefix}/lib
|
libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
|
||||||
includedir=${prefix}/include
|
includedir=${prefix}/include
|
||||||
|
|
||||||
Name: @PROJECT_NAME@
|
Name: @PROJECT_NAME@
|
||||||
|
|
|
@ -36,6 +36,8 @@ gen_pkg() {
|
||||||
rm -rf ${proj}-${version}
|
rm -rf ${proj}-${version}
|
||||||
|
|
||||||
USER="$(whoami)"
|
USER="$(whoami)"
|
||||||
|
|
||||||
|
if [ "$1" = "release" ]; then
|
||||||
printf "Is your GPG key '$(whoami)'?\n"
|
printf "Is your GPG key '$(whoami)'?\n"
|
||||||
select yn in "Yes" "No"; do
|
select yn in "Yes" "No"; do
|
||||||
case $yn in
|
case $yn in
|
||||||
|
@ -43,6 +45,7 @@ gen_pkg() {
|
||||||
No) printf "\n> "; read -r USER; break ;;
|
No) printf "\n> "; read -r USER; break ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -x "$(command -v gpg)" ] && [ "$1" = "release" ]; then
|
if [ -x "$(command -v gpg)" ] && [ "$1" = "release" ]; then
|
||||||
gpg --detach-sign --yes --local-user "${USER}" ${proj}-${version}.tar.gz
|
gpg --detach-sign --yes --local-user "${USER}" ${proj}-${version}.tar.gz
|
||||||
|
|
21
scripts/generate_manifest
Executable file
21
scripts/generate_manifest
Executable file
|
@ -0,0 +1,21 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
[ "$1" = "" ] && {
|
||||||
|
printf "%s\n" "Usage: $0 <file>"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
[ ! -f "$1" ] && {
|
||||||
|
printf "%s\n" "Error: file '$1' not found"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
filename=$(basename "$1")
|
||||||
|
size=$(stat -c %s "$1")
|
||||||
|
#md5=$(md5sum "$1" | cut -d' ' -f1)
|
||||||
|
#sha1=$(sha1sum "$1" | cut -d' ' -f1)
|
||||||
|
#sha256=$(sha256sum "$1" | cut -d' ' -f1)
|
||||||
|
sha512=$(sha512sum "$1" | cut -d' ' -f1)
|
||||||
|
blake2b=$(b2sum "$1" | cut -d' ' -f1)
|
||||||
|
|
||||||
|
printf "%s\n" "DIST $filename $size BLAKE2B $blake2b SHA512 $sha512"
|
Loading…
Reference in a new issue