# Set up build environment # # Copyright (C) 2012 Patrick McDermott # # This file is part of opkbuild. # # opkbuild 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. # # opkbuild 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 opkbuild. If not, see . set -eu setup_build_helper() { local dep= local dep_pkg= IFS=', ' for dep in $(ob_get_source_parameter 'Build-Depends'); do unset IFS ob_parse_dep -P dep_pkg -- "${dep}" >/dev/null if [ -r "${HELPERDIR}/${dep_pkg}" ]; then . "${HELPERDIR}/${dep_pkg}" PATH="${helper_path}:${PATH}" fi done unset IFS printf "PATH='%s'\n" "${PATH}" return 0 } setup_toolchain() { local tool_prefix= # This check is done to allow at least native building on unsupported # OSes. It may be removed in the future. if [ x"${OPK_BUILD_ARCH}" != x"${OPK_HOST_ARCH}" ]; then tool_prefix="${OPK_HOST_ARCH}-" else tool_prefix='' fi # 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' OPK_TOOL_PREFIX='${tool_prefix}' EOF return 0 } setup_build_flags() { local build_flags= build_flags="$(ob_get_system_path 'buildflags' "${OPK_HOST_ARCH}")" if [ -r "${build_flags}" ]; then . "${build_flags}" fi printf "CFLAGS='%s %s'\\n" "${CFLAGS:-}" \ "-ffile-prefix-map=${PWD}=." printf "CXXFLAGS='%s %s'\\n" "${CXXFLAGS:-}" \ "-ffile-prefix-map=${PWD}=." printf "TZ='UTC0'\\n" printf "LC_ALL='C'\\n" return 0 } main() { if ! ob_set_text_domain 'opkbuild'; then printf '%s: Error: Failed to load locale messages\n' \ "${0##*/}" >&2 return 1 fi ob_init_package '..' || return 1 ob_info "$(ob_get_msg 'setup_build_env')" setup_build_helper setup_toolchain setup_build_flags return 0 }