summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorP. J. McDermott <pjm@nac.net>2012-11-07 19:54:36 (EST)
committer P. J. McDermott <pjm@nac.net>2012-11-07 19:54:36 (EST)
commit02ff44fe4d963f290347568833846b7d8b5db854 (patch)
tree92c60a8e7d6b1b37b179222ba4c406790f4985da
parentccebed718e6a3d87ce34b7ae0e33c488ec268232 (diff)
Improve the archtab generation kludge.
-rw-r--r--.gitignore1
-rwxr-xr-xconfigure5
-rw-r--r--mkarchtab.in79
-rwxr-xr-xtestsetup.sh169
4 files changed, 85 insertions, 169 deletions
diff --git a/.gitignore b/.gitignore
index 8a6293e..347e204 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,6 +6,7 @@ Session.vim
# Generated files
Makefile
+mkarchtab
src/*[^.]??
lib/*.sm
lib/*/*.sm
diff --git a/configure b/configure
index 5fbff59..4427908 100755
--- a/configure
+++ b/configure
@@ -36,6 +36,7 @@ quiet='false'
missing_deps='false'
dep_cmds='
sh
+make
'
dep_libs='
libopkbuild.1
@@ -317,6 +318,10 @@ write_makefiles()
mkdir -p "${_dir}"
sed "${_sed_script}" "${srcdir}/${_dir}/Makefile.in" >"${_dir}/Makefile"
done
+
+ # New and improved kludge to generate an architecture table for testing.
+ # TODO: Remove when no longer used.
+ sed "${_sed_script}" "${srcdir}/mkarchtab.in" >'mkarchtab'
}
main "${@}"
diff --git a/mkarchtab.in b/mkarchtab.in
new file mode 100644
index 0000000..a31a8e3
--- /dev/null
+++ b/mkarchtab.in
@@ -0,0 +1,79 @@
+#!@make@ -f
+# opkhelper
+# mkarchtab.in
+# Input makefile to generate an architecture table for testing.
+#
+# Copyright (C) 2012 Patrick "P. J." McDermott
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+package_name = @package_name@
+package_version= @package_version@
+
+srcdir = @srcdir@
+prefix = @prefix@
+bindir = @bindir@
+libdir = @libdir@
+datadir = @datadir@
+mandir = @mandir@
+libopkhelper = @libopkhelper@
+libopkbuild_1 = @libopkbuild_1@
+
+DESTDIR = /
+
+archtab = @archtab@
+
+# New and improved kludge to generate an architecture table for testing.
+# Now 10% less horrible!
+default:
+ @printf 'Generating build system architecture data...\n'
+ @mkdir -p '${archtab}' || \
+ { printf 'Error: Cannot make architecture table directory\n'; exit 1;}
+ @# core-linux-eglibc
+ @mkdir -p '${archtab}/core-linux-eglibc' || \
+ { printf 'Error: Cannot make architecture table directory\n'; exit 1;}
+ @printf 'x86_64-unknown-linux-gnu\n' \
+ >'${archtab}/core-linux-eglibc/autoconf' || \
+ { printf 'Error: Cannot write architecture data\n'; exit 1;}
+ @printf 'x86\ni386\n' \
+ >'${archtab}/core-linux-eglibc/kbuild' || \
+ { printf 'Error: Cannot write architecture data\n'; exit 1;}
+ @# i686-linux-eglibc
+ @mkdir -p '${archtab}/i686-linux-eglibc' || \
+ { printf 'Error: Cannot make architecture table directory\n'; exit 1;}
+ @printf 'i686-unknown-linux-gnu\n' \
+ >'${archtab}/i686-linux-eglibc/autoconf' || \
+ { printf 'Error: Cannot write architecture data\n'; exit 1;}
+ @printf 'x86\ni386\n' \
+ >'${archtab}/i686-linux-eglibc/kbuild' || \
+ { printf 'Error: Cannot write architecture data\n'; exit 1;}
+ @# i686-kfreebsd-eglibc
+ @mkdir -p '${archtab}/i686-kfreebsd-eglibc' || \
+ { printf 'Error: Cannot make architecture table directory\n'; exit 1;}
+ @printf 'i686-unknown-freebsd9.0\n' \
+ >'${archtab}/i686-kfreebsd-eglibc/autoconf' || \
+ { printf 'Error: Cannot write architecture data\n'; exit 1;}
+ @printf 'x86\ni386\n' \
+ >'${archtab}/i686-kfreebsd-eglibc/kbuild' || \
+ { printf 'Error: Cannot write architecture data\n'; exit 1;}
+ @# cortexa8-linux-eglibc
+ @mkdir -p '${archtab}/cortexa8-linux-eglibc' || \
+ { printf 'Error: Cannot make architecture table directory\n'; exit 1;}
+ @printf 'arm-cortex_a8-linux-gnueabi\n' \
+ >'${archtab}/cortexa8-linux-eglibc/autoconf' || \
+ { printf 'Error: Cannot write architecture data\n'; exit 1;}
+ @printf 'arm\n' \
+ >'${archtab}/cortexa8-linux-eglibc/kbuild' || \
+ { printf 'Error: Cannot write architecture data\n'; exit 1;}
+ @printf 'Done!\n'
diff --git a/testsetup.sh b/testsetup.sh
deleted file mode 100755
index 4599fcb..0000000
--- a/testsetup.sh
+++ /dev/null
@@ -1,169 +0,0 @@
-#! /bin/sh
-#
-# opkhelper
-# testsetup
-# Generates configuration and data files to test opkhelper.
-#
-# Copyright (C) 2012 Patrick "P. J." McDermott
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-prefix=''
-datadir=''
-sysconfdir=''
-
-long_opts_with_args='
-prefix
-libdir
-'
-
-main()
-{
- parse_options "${@}"
- shift ${optind}
-
- [ -z "${prefix}" ] && prefix='/usr/local'
- [ -z "${libdir}" ] && libdir="${prefix}/share"
-
- if [ ${#} -ne 0 ]; then
- print_usage
- exit 1
- fi
-
- printf 'Generating build system architecture data...\n'
-
- archtab="${libdir}/archtab"
- mkdir -p "${archtab}" || \
- error 'Cannot make architecture table directory'
-
- # core-linux-eglibc
- mkdir "${archtab}/core-linux-eglibc" || \
- error 'Cannot make architecture table directory'
- printf 'x86_64-unknown-linux-gnu\n' \
- >"${archtab}/core-linux-eglibc/autoconf" || \
- error 'Cannot write architecture data'
- printf 'x86\ni386\n' \
- >"${archtab}/core-linux-eglibc/kbuild" || \
- error 'Cannot write architecture data'
-
- # i686-linux-eglibc
- mkdir "${archtab}/i686-linux-eglibc" || \
- error 'Cannot make architecture table directory'
- printf 'i686-unknown-linux-gnu\n' \
- >"${archtab}/i686-linux-eglibc/autoconf" || \
- error 'Cannot write architecture data'
- printf 'x86\ni386\n' \
- >"${archtab}/i686-linux-eglibc/kbuild" || \
- error 'Cannot write architecture data'
-
- # i686-kfreebsd-eglibc
- mkdir "${archtab}/i686-kfreebsd-eglibc" || \
- error 'Cannot make architecture table directory'
- printf 'i686-unknown-freebsd9.0\n' \
- >"${archtab}/i686-kfreebsd-eglibc/autoconf" || \
- error 'Cannot write architecture data'
- printf 'x86\ni386\n' \
- >"${archtab}/i686-kfreebsd-eglibc/kbuild" || \
- error 'Cannot write architecture data'
-
- # cortexa8-linux-eglibc
- mkdir "${archtab}/cortexa8-linux-eglibc" || \
- error 'Cannot make architecture table directory'
- printf 'arm-cortex_a8-linux-gnueabi\n' \
- >"${archtab}/cortexa8-linux-eglibc/autoconf" || \
- error 'Cannot write architecture data'
- printf 'arm\n' \
- >"${archtab}/cortexa8-linux-eglibc/kbuild" || \
- error 'Cannot write architecture data'
-
- printf 'Done!\n'
-}
-
-print_usage()
-{
- printf 'Usage: %s [OPTION]... build-arch build-plat\n' "${0}"
-}
-
-parse_options()
-{
- optind=0
-
- for _opt; do
-
- # Handle arguments of "--opt arg" options.
- if [ -n "${_prev}" ]; then
- eval "${_prev}"=\"\$\{_opt\}\"
- _prev=''
- continue
- fi
-
- # Detect "--opt=arg" and "--opt arg" options.
- case "${_opt}" in
- *=*)
- _optarg="${_opt#*=}"
- _opt="${_opt%=*}"
- _optarg_set='true'
- ;;
- *)
- _optarg_set='false'
- ;;
- esac
-
- # Handle short and long options.
- case "${_opt}" in
- --)
- break
- ;;
- esac
-
- # Anything beyond this point should be a long option.
- case "${_opt}" in
- --*)
- _opt="${_opt#--}"
- _opts="${long_opts_with_args}"
- _type='option'
- ;;
- *)
- break
- ;;
- esac
-
- grep "^${_opt}\$" >/dev/null 2>&1 <<EOF
-"${_opts}"
-EOF
- if [ ${?} -ne 0 ]; then
- printf 'invalid %s name: %s\n' "${_type}" "${_opt}" >&2
- exit 1
- fi
- if ${_optarg_set}; then
- _opt="$(printf '%s' "${_opt}" | tr -c '[a-z0-9]' '_')"
- eval "${_opt}"=\"\$\{_optarg\}\"
- else
- _prev="${_opt}"
- fi
-
- optind=$(($optind + 1))
-
- done
-}
-
-error()
-{
- printf '%s: Error: ' "${0##*/}"
- printf "${@}"
- printf '\n'
- exit 1
-}
-
-main "${@}"