summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.in4
-rw-r--r--src/ob-buildenv.sh81
-rw-r--r--src/opkbuild.sh19
3 files changed, 101 insertions, 3 deletions
diff --git a/src/Makefile.in b/src/Makefile.in
index e30f29e..9567306 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -37,8 +37,8 @@ sed_script = s&@@PACKAGE_NAME@@&$(package_name)&;\
.SUFFIXES: .sh
SRCS = opkbuild.sh \
- ob-checkbuilddeps.sh #\
- ob-buildenv.sh \
+ ob-checkbuilddeps.sh \
+ ob-buildenv.sh #\
ob-unpacksource.sh \
ob-applypatches.sh \
ob-installplatconf.sh \
diff --git a/src/ob-buildenv.sh b/src/ob-buildenv.sh
new file mode 100644
index 0000000..3466e7b
--- /dev/null
+++ b/src/ob-buildenv.sh
@@ -0,0 +1,81 @@
+#!@@SH@@
+#
+# opkbuild
+# src/opkbuild
+# Build opkg packages.
+#
+# 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 3 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/>.
+
+. '@@LIBOPKBUILD@@/load.sm'
+
+ob_use locale
+ob_use output
+ob_use package
+
+main()
+{
+ ob_set_text_domain 'opkbuild'
+
+ ob_init_package '..'
+ ob_parse_package_metadata -c '.opkbuild.cache'
+
+ ob_info "$(ob_get_msg 'setup_build_env')"
+
+ setup_build_helper
+ setup_toolchain
+ setup_build_flags
+}
+
+setup_build_helper()
+{
+ # TODO: Do.
+ :
+}
+
+setup_toolchain()
+{
+ tool_prefix="${OB_HOST_ARCH}-"
+
+ # Set toolchain environment variables.
+ # NB: This is written for GNU Binutils and GCC and won't work for, e.g.,
+ # LLVM.
+ cat <<EOF
+AR='${tool_prefix}ar'
+AS='${tool_prefix}as'
+CC='${tool_prefix}gcc'
+CPP='${tool_prefix}cpp'
+CXX='${tool_prefix}g++'
+LD='${tool_prefix}ld'
+NM='${tool_prefix}nm'
+OBJCOPY='${tool_prefix}objcopy'
+OBJDUMP='${tool_prefix}objdump'
+RANLIB='${tool_prefix}ranlib'
+READELF='${tool_prefix}readelf'
+SIZE='${tool_prefix}size'
+STRINGS='${tool_prefix}strings'
+STRIP='${tool_prefix}strip'
+EOF
+}
+
+setup_build_flags()
+{
+ # TODO: Don't hardcode path.
+ if [ -r "/usr/local/share/opkhelper/buildflags/${OB_HOST_ARCH_CPU}" ]; then
+ . /usr/local/share/opkhelper/buildflags/${OB_HOST_ARCH_CPU}
+ fi
+}
+
+main "${@}"
diff --git a/src/opkbuild.sh b/src/opkbuild.sh
index 1c5a497..cbe0e8a 100644
--- a/src/opkbuild.sh
+++ b/src/opkbuild.sh
@@ -26,6 +26,23 @@ ob_use output
ob_use package
ob_use metadata
+export OB_SOURCE=
+export OB_SOURCE_VERSION=
+export OB_SOURCE_VERSION_UPSTREAM=
+export OB_BINARY_VERSION=
+export OB_BUILD_ARCH=
+export OB_BUILD_ARCH_CPU=
+export OB_BUILD_ARCH_KERNEL=
+export OB_BUILD_ARCH_LIBS=
+export OB_BUILD_PLATFORM=
+export OB_BUILD_ARCH_GNU=
+export OB_HOST_ARCH=
+export OB_HOST_ARCH_CPU=
+export OB_HOST_ARCH_KERNEL=
+export OB_HOST_ARCH_LIBS=
+export OB_HOST_PLATFORM=
+export OB_HOST_ARCH_GNU=
+
opt_build=
opt_target=
opt_host_arch=
@@ -65,7 +82,7 @@ main()
pkgs="$(ob_get_binary_packages -a "${OB_HOST_ARCH}")"
- eval "$(ob-buildenv)"
+ eval "$(ob-buildenv | sed 's/^/export /')"
ob-unpacksource
ob-applypatches