Skip to content
This repository was archived by the owner on Aug 31, 2021. It is now read-only.

Commit f13ef1a

Browse files
Lots of fixes to the prebuilt build scripts
1 parent a959ca3 commit f13ef1a

6 files changed

Lines changed: 96 additions & 60 deletions

File tree

prebuilt/build-libraries.sh

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ mkdir -p "${OUTPUT_DIR}"
1515
# Target platform and architecture
1616
export PLATFORM=$1
1717
export CUSTOM_ARCH=$2
18+
LIB=$3
1819

1920
# Capture the existing CC and CXX variables, if any
2021
export CUSTOM_CC="${CC}"
@@ -29,7 +30,21 @@ if [ "${PLATFORM}" == "all" ] ; then
2930
exit
3031
fi
3132

32-
# Build each of the libraries that we depend on (OpenSSL, CURL and ICU)
33-
$BASEDIR/scripts/build-curl.sh
34-
$BASEDIR/scripts/build-openssl.sh
35-
$BASEDIR/scripts/build-icu.sh
33+
# Build all of the libraries that we depend on (OpenSSL, CURL and ICU) if not specified
34+
if [ -z "${LIB}" ] ; then
35+
$BASEDIR/scripts/build-curl.sh
36+
$BASEDIR/scripts/build-openssl.sh
37+
$BASEDIR/scripts/build-icu.sh
38+
else
39+
case "${LIB}" in
40+
openssl)
41+
$BASEDIR/scripts/build-openssl.sh
42+
;;
43+
curl)
44+
$BASEDIR/scripts/build-curl.sh
45+
;;
46+
icu)
47+
$BASEDIR/scripts/build-icu.sh
48+
;;
49+
esac
50+
fi

prebuilt/package-libs.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,16 +95,16 @@ function doPackage {
9595
}
9696

9797
# Package up the various libraries and headers
98-
for PLATFORM in `find lib/ -type d -mindepth 1 -maxdepth 1` ; do
98+
for PLATFORM in `find lib/ -mindepth 1 -maxdepth 1 -type d` ; do
9999
PLATFORM=$(basename "${PLATFORM}")
100100
if [ "${PLATFORM}" == "mac" ] ; then
101101
doPackage "${PLATFORM}" "Universal"
102102
elif [ "${PLATFORM}" == "ios" ] ; then
103-
for SUBPLATFORM in `find "lib/${PLATFORM}/" -type d -mindepth 1 -maxdepth 1` ; do
103+
for SUBPLATFORM in `find "lib/${PLATFORM}/" -mindepth 1 -maxdepth 1 -type d` ; do
104104
doPackage "${PLATFORM}" "Universal" $(basename "${SUBPLATFORM}")
105105
done
106106
else
107-
for ARCH in `find "lib/${PLATFORM}/" -type d -mindepth 1 -maxdepth 1` ; do
107+
for ARCH in `find "lib/${PLATFORM}/" -mindepth 1 -maxdepth 1 -type d` ; do
108108
doPackage "${PLATFORM}" $(basename "${ARCH}")
109109
done
110110
fi

prebuilt/scripts/android.inc

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Android options
2+
ANDROID_NDK=${ANDROID_NDK:-"$HOME/Workspace/livecode/sdks/android-ndk"}
3+
ANDROID_PLATFORM=${ANDROID_PLATFORM:-android-8}
4+
5+
# Has a full, custom toolchain been specified?
6+
# AR, CC, CXX, LINK, OBJCOPY, RANLIB, STRIP
7+
if [ ! -z "${OBJCOPY}" ] ; then
8+
ANDROID_CC="${CC}"
9+
ANDROID_CXX="${CXX}"
10+
ANDROID_LINK="${LINK}"
11+
else
12+
# Attempt to set up the toolchain automatically
13+
if [ -z "${ANDROID_TOOLCHAIN}" ] ; then
14+
case $(uname) in
15+
Darwin*)
16+
ANDROID_TOOLCHAIN="${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin/arm-linux-androideabi"
17+
ANDROID_CC_NAME=gcc
18+
ANDROID_CXX_NAME=g++
19+
;;
20+
Linux*)
21+
ANDROID_TOOLCHAIN="${HOME}/android-armv6-standalone/bin/arm-linux-androideabi"
22+
;;
23+
*)
24+
echo >&2 "Error: ANDROID_TOOLCHAIN must be set"
25+
exit 1
26+
;;
27+
esac
28+
fi
29+
30+
ANDROID_CC_NAME=${ANDROID_CC_NAME:-clang}
31+
ANDROID_CXX_NAME=${ANDROID_CXX_NAME:-clang}
32+
33+
ANDROID_CC="${ANDROID_TOOLCHAIN}-${ANDROID_CC_NAME}"
34+
ANDROID_CXX="${ANDROID_TOOLCHAIN}-${ANDROID_CXX_NAME}"
35+
ANDROID_LINK="${ANDROID_TOOLCHAIN}-${ANDROID_CXX_NAME}"
36+
export AR="${ANDROID_TOOLCHAIN}-ar"
37+
export OBJCOPY="${ANDROID_TOOLCHAIN}-objcopy"
38+
export RANLIB="${ANDROID_TOOLCHAIN}-ranlib"
39+
export STRIP="${ANDROID_TOOLCHAIN}-strip"
40+
fi
41+
42+
# Android architectures
43+
export ARCHS="armv6"

prebuilt/scripts/build-icu.sh

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,14 @@ ICU_SRC="icu-${ICU_VERSION}"
1616
cd "${BUILDDIR}"
1717

1818
# Needed for cross-compiles
19-
if [ "${PLATFORM}" == "linux" ] ; then
20-
HOST_ICU_DIR="${BUILDDIR}/icu-${ICU_VERSION}-linux-i386"
21-
else
22-
HOST_ICU_DIR="${BUILDDIR}/icu-${ICU_VERSION}-mac-i386"
23-
fi
19+
case $(uname) in
20+
Linux*)
21+
HOST_ICU_DIR="${BUILDDIR}/icu-${ICU_VERSION}-linux-x86_64"
22+
;;
23+
Darwin*)
24+
HOST_ICU_DIR="${BUILDDIR}/icu-${ICU_VERSION}-mac-i386"
25+
;;
26+
esac
2427

2528
if [ ! -d "$ICU_SRC" ] ; then
2629
if [ ! -e "$ICU_TGZ" ] ; then
@@ -67,15 +70,9 @@ function buildICU {
6770
fi
6871
;;
6972
android)
70-
STDCXX="${ANDROID_NDK}/sources/cxx-stl/gnu-libstdc++"
71-
if [ "${ARCH}" == "armv6" ] ; then
72-
ARCH_STDCXX="${STDCXX}/libs/armeabi"
73-
else
74-
ARCH_STDCXX="${STDCXX}/libs/armeabi-v7a"
75-
fi
7673
CONFIG_TYPE="Linux --host=arm-linux-androideabi --with-cross-build=${HOST_ICU_DIR} --disable-tools"
77-
export ANDROID_CFLAGS="-D__STDC_INT64__ -DU_HAVE_NL_LANGINFO_CODESET=0 -isystem${STDCXX}/include -isystem${ARCH_STDCXX}/include"
78-
export ANDROID_LDFLAGS="-L${ARCH_STDCXX}"
74+
export ANDROID_CFLAGS="-D__STDC_INT64__ -DU_HAVE_NL_LANGINFO_CODESET=0"
75+
export ANDROID_CXXFLAGS="${ANDROID_CFLAGS}"
7976
;;
8077
ios)
8178
CONFIG_TYPE=
@@ -144,12 +141,12 @@ function buildICU {
144141

145142
# Generate the minimal data library
146143
ORIGINAL_DIR=`pwd`
147-
if [ ! -e "${ICU_SRC}/custom-data/icudt${ICU_VERSION_MAJOR}l.dat" ] ; then
148-
mkdir -p "${ICU_SRC}/custom-data"
149-
cd "${ICU_SRC}/custom-data"
144+
if [ ! -e "${ICU_ARCH_SRC}/custom-data/icudt${ICU_VERSION_MAJOR}l.dat" ] ; then
145+
mkdir -p "${ICU_ARCH_SRC}/custom-data"
146+
cd "${ICU_ARCH_SRC}/custom-data"
150147
curl http://downloads.livecode.com/prebuilts/icudata/minimal/icudt${ICU_VERSION_MAJOR}l.dat -o "icudt${ICU_VERSION_MAJOR}l.dat"
151148
else
152-
cd "${ICU_SRC}/custom-data"
149+
cd "${ICU_ARCH_SRC}/custom-data"
153150
fi
154151
if [ ! -d "extracted" ] ; then
155152
mkdir -p "extracted"

prebuilt/scripts/build-openssl.sh

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -101,11 +101,6 @@ function buildOpenSSL {
101101
setCCForArch "${ARCH}" "${SUBPLATFORM_INDEX}"
102102
./Configure ${OPENSSL_ARCH_CONFIG} > "${OPENSSL_ARCH_LOG}" 2>&1
103103

104-
# Only some platforms have a "makedepends" script installed
105-
if [ ! "${PLATFORM}" == "linux" ] ; then
106-
sed -i "" "s|MAKEDEPPROG=makedepend|MAKEDEPPROG=${CC} -M|g" Makefile Makefile.org
107-
fi
108-
109104
# iOS requires some tweaks to the source when building for devices
110105
if [ "${PLATFORM}" == "ios" -a "${ARCH}" != "i386 " ] ; then
111106
sed -i "" -e "s!static volatile sig_atomic_t intr_signal;!static volatile intr_signal;!" "crypto/ui/ui_openssl.c"
@@ -115,7 +110,7 @@ function buildOpenSSL {
115110
echo "#define OPENSSL_EXPORT_VAR_AS_FUNCTION 1" >> crypto/opensslconf.h
116111

117112
echo "Building OpenSSL for ${NAME}"
118-
make clean >> "${OPENSSL_ARCH_LOG}" 2>&1 && make ${MAKEFLAGS} depend >> "${OPENSSL_ARCH_LOG}" 2>&1 && make ${MAKEFLAGS} >> "${OPENSSL_ARCH_LOG}" 2>&1 && make install_sw >> "${OPENSSL_ARCH_LOG}" 2>&1
113+
make clean >> "${OPENSSL_ARCH_LOG}" 2>&1 && make ${MAKEFLAGS} >> "${OPENSSL_ARCH_LOG}" 2>&1 && make install_sw >> "${OPENSSL_ARCH_LOG}" 2>&1
119114
RESULT=$?
120115
cd ..
121116

prebuilt/scripts/platform.inc

Lines changed: 16 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,6 @@ SDK="MacOSX10.5.sdk"
44
OSXGCCVERSION=4.2
55
OSXMIN="10.5"
66

7-
# Linux options
8-
LINUXGCCPATH=/usr/local/gcc_4-2-4/bin
9-
LINUXGCCVERSION=4.2.4
10-
11-
# Android options
12-
ANDROID_NDK="$HOME/Workspace/livecode/sdks/android-ndk"
13-
ANDROID_TOOLCHAIN="${ANDROID_NDK}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86/bin/arm-linux-androideabi"
14-
ANDROID_PLATFORM="${ANDROID_NDK}/platforms/android-8"
15-
167
# Generic options
178
export MAKEFLAGS="-j1"
189

@@ -36,19 +27,10 @@ case "${PLATFORM}" in
3627
export CXX_BASE="${DEVELOPER}/usr/bin/g++-${OSXGCCVERSION} --sysroot=${DEVELOPER}/SDKs/${SDK} -isysroot ${DEVELOPER}/SDKs/${SDK} -mmacosx-version-min=${OSXMIN}"
3728
;;
3829
linux)
39-
export ARCHS="i386"
40-
export CC_BASE="${LINUXGCCPATH}/gcc-${LINUXGCCVERSION}"
41-
export CXX_BASE="${LINUXGCCPATH}/g++-${LINUXGCCVERSION}"
30+
export ARCHS="i386 x86_64"
31+
export CC_BASE="clang"
32+
export CXX_BASE="clang"
4233
;;
43-
android)
44-
export ARCHS="armv6 armv7-a"
45-
export CC_BASE="${ANDROID_TOOLCHAIN}-gcc --sysroot ${ANDROID_PLATFORM}/arch-arm -fpic -ffunction-sections -funwind-tables -fno-strict-aliasing -finline-limit=64"
46-
export CXX_BASE="${ANDROID_TOOLCHAIN}-g++ --sysroot ${ANDROID_PLATFORM}/arch-arm -fpic -ffunction-sections -funwind-tables -fno-strict-aliasing -finline-limit=64 -frtti -fexceptions"
47-
export LD="${ANDROID_TOOLCHAIN}-ld"
48-
export AR="${ANDROID_TOOLCHAIN}-ar"
49-
export RANLIB="${ANDROID_TOOLCHAIN}-ranlib"
50-
export STRIP="${ANDROID_TOOLCHAIN}-strip"
51-
export ANDROID_DEV="${ANDROID_PLATFORM}/arch-arm/usr"
5234
esac
5335

5436
# Allow the arch to be set manually
@@ -60,6 +42,10 @@ if [ "${PLATFORM}" == "ios" ] ; then
6042
source "${BASEDIR}/scripts/ios.inc"
6143
fi
6244

45+
if [ "${PLATFORM}" == "android" ] ; then
46+
source "${BASEDIR}/scripts/android.inc"
47+
fi
48+
6349
function setArchs {
6450
local SUBPLATFORM_INDEX=$1
6551

@@ -71,7 +57,7 @@ function setCCForArch {
7157
local SUBPLATFORM_INDEX=$2
7258

7359
# Use the custom CC and CXX, if set
74-
if [ ! -z "${CUSTOM_CC}" ] ; then
60+
if [ ! -z "${CUSTOM_CC}" -a "${PLATFORM}" != "android" ] ; then
7561
export CC="${CUSTOM_CC}"
7662
export CXX="${CUSTOM_CXX}"
7763
return
@@ -92,16 +78,16 @@ function setCCForArch {
9278
fi
9379
;;
9480
android)
95-
if [ "$1" == "armv6 " ] ; then
96-
export CC="${CC_BASE} -mthumb ${ANDROID_CFLAGS}"
97-
export CXX="${CXX_BASE} -mthumb ${ANDROID_CFLAGS}"
98-
export LDFLAGS="${ANDROID_LDFLAGS}"
81+
if [ "$1" == "armv6" ] ; then
82+
export CC="${ANDROID_CC} ${ANDROID_CFLAGS}"
83+
export CXX="${ANDROID_CXX} ${ANDROID_CXXFLAGS}"
9984
else
100-
export CC="${CC_BASE} -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 ${ANDROID_CFLAGS}"
101-
export CXX="${CXX_BASE} -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 ${ANDROID_CFLAGS}"
102-
export LDFLAGS="-march=armv7-a -Wl,--fix-cortex-a8 ${ANDROID_LDFLAGS}"
85+
export CC="${ANDROID_CC} -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 ${ANDROID_CFLAGS}"
86+
export CXX="${ANDROID_CXX} -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 ${ANDROID_CXXFLAGS}"
87+
EXTRA_LDFLAGS="-march=armv7-a -Wl,--fix-cortex-a8"
10388
fi
104-
export LINK="${CXX}"
89+
export LINK="${ANDROID_LINK} ${EXTRA_LDFLAGS} ${ANDROID_LDFLAGS}"
90+
export LD="${LINK}"
10591
;;
10692
ios)
10793
XCODE=${IOS_XCODE[$SUBPLATFORM_INDEX]}

0 commit comments

Comments
 (0)