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.
This commit is contained in:
Isaac Dunham 2015-03-31 19:30:04 -07:00 committed by Natanael Copa
parent 5aa41e9fb2
commit 582b477817
1 changed files with 32 additions and 0 deletions

View File

@ -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;;