From 582b47781794e8057c0b01c40719c31fa8aa5c1b Mon Sep 17 00:00:00 2001 From: Isaac Dunham Date: Tue, 31 Mar 2015 19:30:04 -0700 Subject: newapkbuild: add CMake support. This is a first try that *might* work for cross-compiling packages with an absolute bare minimum of requirements, if you're lucky. I can't debug that part further, but the references should help with it. --- newapkbuild.in | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/newapkbuild.in b/newapkbuild.in index 952980f..d2951e4 100644 --- a/newapkbuild.in +++ b/newapkbuild.in @@ -52,6 +52,34 @@ build_autotools() { __EOF__ } +build_cmake() { +# References: +# http://www.cmake.org/Wiki/CMake_Useful_Variables +# http://www.vtk.org/Wiki/CMake_Cross_Compiling +# This is incomplete: CMAKE_{HOST_,}SYSTEM_PROCESSOR needs to be set, +# and likewise CMAKE_FIND_ROOT_PATH and a few other details. + + sed -i -e 's/^\(makedepends="\)/\1cmake /' APKBUILD + cat >>APKBUILD<<__EOF__ + if [ "$CBUILD" != "$CHOST" ] + then + CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux" + fi + cmake \\ + -DCMAKE_INSTALL_PREFIX=/usr \\ + -DCMAKE_INSTALL_LIBDIR=lib \\ + -DBUILD_SHARED_LIBS=True \\ + -DCMAKE_BUILD_TYPE=Release \\ + -DCMAKE_CXX_COMPILER="\${CXX:-g++}" \\ + -DCMAKE_C_COMPILER="\${CC:-gcc}" \\ + -DCMAKE_CXX_FLAGS="\$CXXFLAGS" \\ + -DCMAKE_CXX_FLAGS="\$CFLAGS" \\ + ${CMAKE_CROSSOPTS} \\ + || return 1 + make || return 1 +__EOF__ +} + build_perl() { cat >>APKBUILD<<__EOF__ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor || return 1 @@ -224,6 +252,8 @@ __EOF__ case "$buildtype" in make) build_make;; + cmake) + build_cmake;; autotools) build_autotools;; perl) @@ -281,6 +311,7 @@ Options: -l Set package license to LICENSE -u Set package URL -a Create autotools (use ./configure ...) + -C Create CMake pakckage (Assume cmake/ is there) -p Create perl package (Assume Makefile.PL is there) -y Create python package (Assume setup.py is there) -s Use sourceforge source URL @@ -295,6 +326,7 @@ while getopts "acd:fhl:n:pyu:s" opt; do case $opt in 'a') buildtype="autotools";; 'c') cpinitd=1;; + 'C') buildtype="cmake";; 'd') pkgdesc="$OPTARG";; 'f') force=1;; 'h') usage; exit;; -- cgit v1.2.3