Subject: [alpine-aports] [PATCH] [abuild] newapkbuild: add CMake support.

From: Isaac Dunham <[email-masked]>
Date: Sat, 9 May 2015 14:21:46 -0700

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.

Despite the lack of testing, it's a lot closer to what we need than
most of the APKBUILDs in aports.
---
 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;;
-- 
2.3.7

---
Unsubscribe:  [email-masked]
Help:         [email-masked]
---