mirror of
https://github.com/shadps4-emu/ext-cryptopp.git
synced 2024-11-23 09:59:42 +00:00
185 lines
5.8 KiB
Bash
Executable File
185 lines
5.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
#############################################################################
|
|
#
|
|
# This script sets the cross-compile environment for ARM embedded.
|
|
#
|
|
# Based upon OpenSSL's setenv-android.sh by TH, JW, and SM.
|
|
# Heavily modified by JWW for Crypto++.
|
|
#
|
|
# Crypto++ Library is copyrighted as a compilation and (as of version 5.6.2)
|
|
# licensed under the Boost Software License 1.0, while the individual files
|
|
# in the compilation are all public domain.
|
|
#
|
|
# See http://www.cryptopp.com/wiki/ARM_Embedded_(Command_Line) for details.
|
|
#############################################################################
|
|
|
|
# cryptest-embedded.sh may run this script without sourcing.
|
|
if [ "$0" = "${BASH_SOURCE[0]}" ]; then
|
|
echo "setenv-embedded.sh is usually sourced, but not this time."
|
|
fi
|
|
|
|
DEF_CPPFLAGS="-DNDEBUG"
|
|
DEF_CFLAGS="-Wall -g2 -O3 -fPIC"
|
|
DEF_CXXFLAGS="-Wall -g2 -O3 -fPIC"
|
|
DEF_LDFLAGS=""
|
|
|
|
#########################################
|
|
##### Clear old options #####
|
|
#########################################
|
|
|
|
unset IS_IOS
|
|
unset IS_MACOS
|
|
unset IS_ANDROID
|
|
unset IS_ARM_EMBEDDED
|
|
|
|
unset ARM_EMBEDDED_CPPFLAGS
|
|
unset ARM_EMBEDDED_CFLAGS
|
|
unset ARM_EMBEDDED_HEADERS
|
|
unset ARM_EMBEDDED_CXX_HEADERS
|
|
unset ARM_EMBEDDED_CXXFLAGS
|
|
unset ARM_EMBEDDED_LDFLAGS
|
|
unset ARM_EMBEDDED_SYSROOT
|
|
|
|
########################################
|
|
##### Environment #####
|
|
########################################
|
|
|
|
if [ -z "${ARM_EMBEDDED_TOOLCHAIN-}" ]; then
|
|
ARM_EMBEDDED_TOOLCHAIN="/usr/bin"
|
|
fi
|
|
|
|
if [ ! -d "${ARM_EMBEDDED_TOOLCHAIN}" ]; then
|
|
echo "ARM_EMBEDDED_TOOLCHAIN is not valid"
|
|
[ "$0" = "${BASH_SOURCE[0]}" ] && exit 1 || return 1
|
|
fi
|
|
|
|
# Fedora
|
|
# TOOL_PREFIX="arm-linux-gnu"
|
|
|
|
# Ubuntu
|
|
TOOL_PREFIX="arm-linux-gnueabi"
|
|
|
|
CPP="${ARM_EMBEDDED_TOOLCHAIN}/${TOOL_PREFIX}-cpp"
|
|
CC="${ARM_EMBEDDED_TOOLCHAIN}/${TOOL_PREFIX}-gcc"
|
|
CXX="${ARM_EMBEDDED_TOOLCHAIN}/${TOOL_PREFIX}-g++"
|
|
LD="${ARM_EMBEDDED_TOOLCHAIN}/${TOOL_PREFIX}-ld"
|
|
AR="${ARM_EMBEDDED_TOOLCHAIN}/${TOOL_PREFIX}-ar"
|
|
AS="${ARM_EMBEDDED_TOOLCHAIN}/${TOOL_PREFIX}-as"
|
|
RANLIB="${ARM_EMBEDDED_TOOLCHAIN}/${TOOL_PREFIX}-ranlib"
|
|
OBJDUMP="${ARM_EMBEDDED_TOOLCHAIN}/${TOOL_PREFIX}-objdump"
|
|
|
|
# Test a few of the tools
|
|
if [ ! -e "$CPP" ]; then
|
|
echo "ERROR: CPP is not valid"
|
|
[ "$0" = "${BASH_SOURCE[0]}" ] && exit 1 || return 1
|
|
fi
|
|
|
|
if [ ! -e "$CC" ]; then
|
|
echo "ERROR: CC is not valid"
|
|
[ "$0" = "${BASH_SOURCE[0]}" ] && exit 1 || return 1
|
|
fi
|
|
|
|
if [ ! -e "$CXX" ]; then
|
|
echo "ERROR: CXX is not valid"
|
|
[ "$0" = "${BASH_SOURCE[0]}" ] && exit 1 || return 1
|
|
fi
|
|
|
|
if [ ! -e "$AR" ]; then
|
|
echo "ERROR: AR is not valid"
|
|
[ "$0" = "${BASH_SOURCE[0]}" ] && exit 1 || return 1
|
|
fi
|
|
|
|
if [ ! -e "$AS" ]; then
|
|
echo "ERROR: AS is not valid"
|
|
[ "$0" = "${BASH_SOURCE[0]}" ] && exit 1 || return 1
|
|
fi
|
|
|
|
if [ ! -e "$RANLIB" ]; then
|
|
echo "ERROR: RANLIB is not valid"
|
|
[ "$0" = "${BASH_SOURCE[0]}" ] && exit 1 || return 1
|
|
fi
|
|
|
|
if [ ! -e "$LD" ]; then
|
|
echo "ERROR: LD is not valid"
|
|
[ "$0" = "${BASH_SOURCE[0]}" ] && exit 1 || return 1
|
|
fi
|
|
|
|
if [ -z "${ARM_EMBEDDED_SYSROOT}" ]; then
|
|
ARM_EMBEDDED_SYSROOT="/usr/arm-linux-gnueabi"
|
|
fi
|
|
|
|
if [ ! -d "${ARM_EMBEDDED_SYSROOT}" ]; then
|
|
echo "ERROR: ARM_EMBEDDED_SYSROOT is not valid"
|
|
[ "$0" = "${BASH_SOURCE[0]}" ] && exit 1 || return 1
|
|
fi
|
|
|
|
# Fix C++ header paths for Ubuntu
|
|
# ARM_EMBEDDED_TOOLCHAIN_VERSION="4.7.3"
|
|
ARM_EMBEDDED_TOOLCHAIN_VERSION="5.4.0"
|
|
ARM_EMBEDDED_CXX_HEADERS="${ARM_EMBEDDED_SYSROOT}/include/c++/${ARM_EMBEDDED_TOOLCHAIN_VERSION}"
|
|
|
|
if [ ! -d "${ARM_EMBEDDED_CXX_HEADERS}" ]; then
|
|
echo "ERROR: ARM_EMBEDDED_CXX_HEADERS is not valid"
|
|
[ "$0" = "${BASH_SOURCE[0]}" ] && exit 1 || return 1
|
|
fi
|
|
|
|
if [ ! -d "${ARM_EMBEDDED_CXX_HEADERS}/arm-linux-gnueabi" ]; then
|
|
echo "ERROR: ARM_EMBEDDED_CXX_HEADERS is not valid"
|
|
[ "$0" = "${BASH_SOURCE[0]}" ] && exit 1 || return 1
|
|
fi
|
|
|
|
# Add additional flags below, like -mcpu=cortex-m3.
|
|
if [ -z "${ARM_EMBEDDED_HEADERS}" ]; then
|
|
ARM_EMBEDDED_HEADERS="-I\"${ARM_EMBEDDED_CXX_HEADERS}\" -I\"${ARM_EMBEDDED_CXX_HEADERS}/arm-linux-gnueabi\""
|
|
fi
|
|
|
|
#####################################################################
|
|
|
|
VERBOSE=${VERBOSE:-1}
|
|
if [ "$VERBOSE" -gt 0 ]; then
|
|
echo "ARM_EMBEDDED_TOOLCHAIN: ${ARM_EMBEDDED_TOOLCHAIN}"
|
|
if [[ -n "${ARM_EMBEDDED_CPPFLAGS}" ]]; then
|
|
echo "ARM_EMBEDDED_CPPFLAGS: ${ARM_EMBEDDED_CPPFLAGS}"
|
|
fi
|
|
echo "ARM_EMBEDDED_CFLAGS: ${ARM_EMBEDDED_CFLAGS}"
|
|
echo "ARM_EMBEDDED_CXXFLAGS: ${ARM_EMBEDDED_CXXFLAGS}"
|
|
if [[ -n "${ARM_EMBEDDED_LDFLAGS}" ]]; then
|
|
echo "ARM_EMBEDDED_LDFLAGS: ${ARM_EMBEDDED_LDFLAGS}"
|
|
fi
|
|
echo "ARM_EMBEDDED_SYSROOT: ${ARM_EMBEDDED_SYSROOT}"
|
|
fi
|
|
|
|
#####################################################################
|
|
|
|
# GNUmakefile-cross and Autotools expect these to be set.
|
|
# Note: prior to Crypto++ 8.6, CPPFLAGS, CXXFLAGS and LDFLAGS were not
|
|
# exported. At Crypto++ 8.6 CPPFLAGS, CXXFLAGS and LDFLAGS were exported.
|
|
|
|
export IS_ARM_EMBEDDED=1
|
|
export CPP CC CXX LD AS AR RANLIB STRIP OBJDUMP
|
|
|
|
CPPFLAGS="${DEF_CPPFLAGS} ${ARM_EMBEDDED_CPPFLAGS} ${ARM_EMBEDDED_HEADERS} -isysroot ${ARM_EMBEDDED_SYSROOT}"
|
|
CFLAGS="${DEF_CFLAGS} ${ARM_EMBEDDED_CFLAGS}"
|
|
CXXFLAGS="${DEF_CXXFLAGS} ${ARM_EMBEDDED_CXXFLAGS}"
|
|
LDFLAGS="${DEF_LDFLAGS} ${ARM_EMBEDDED_LDFLAGS} --sysroot ${ARM_EMBEDDED_SYSROOT}"
|
|
|
|
# Trim whitespace as needed
|
|
CPPFLAGS=$(echo "${CPPFLAGS}" | awk '{$1=$1;print}')
|
|
CFLAGS=$(echo "${CFLAGS}" | awk '{$1=$1;print}')
|
|
CXXFLAGS=$(echo "${CXXFLAGS}" | awk '{$1=$1;print}')
|
|
LDFLAGS=$(echo "${LDFLAGS}" | awk '{$1=$1;print}')
|
|
|
|
export CPPFLAGS CFLAGS CXXFLAGS LDFLAGS
|
|
|
|
#####################################################################
|
|
|
|
echo
|
|
echo "*******************************************************************************"
|
|
echo "It looks the the environment is set correctly. Your next step is build"
|
|
echo "the library with 'make -f GNUmakefile-cross'."
|
|
echo "*******************************************************************************"
|
|
echo
|
|
|
|
[ "$0" = "${BASH_SOURCE[0]}" ] && exit 0 || return 0
|