| #!/bin/bash -ex |
| # |
| # Copyright 2019 Google Inc. All rights reserved. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # |
| # Regenerate host configuration files for the current host |
| |
| cd `dirname ${BASH_SOURCE[0]}` |
| |
| ANDROID_BUILD_TOP=$(cd ../..; pwd) |
| |
| UNAME=$(uname | tr 'A-Z' 'a-z') |
| NAME=linux_glibc |
| TARGET=glibc |
| config_opts=() |
| if [ $UNAME == "darwin" ]; then |
| NAME=darwin |
| TARGET=darwin |
| # vfork is deprecated on Mac, so always fallback to fork |
| config_opts+=("ac_cv_func_vfork=no") |
| # we'd need to link to libiconv |
| config_opts+=("am_cv_func_iconv=no") |
| else |
| export CC="$ANDROID_BUILD_TOP/prebuilts/clang/host/linux-x86/$(cd $ANDROID_BUILD_TOP; build/soong/scripts/get_clang_version.py)/bin/clang" |
| fi |
| |
| if [ "$1" = "--musl" ]; then |
| NAME=linux_musl |
| TARGET=musl |
| sysroot="${ANDROID_BUILD_TOP}/prebuilts/build-tools/sysroots/x86_64-linux-musl" |
| export CFLAGS="--sysroot=${sysroot} -target x86_64-linux-musl -fuse-ld=lld" |
| export LDFLAGS="--rtlib=compiler-rt" |
| fi |
| |
| if [ $NAME == "linux_glibc" ]; then |
| export CFLAGS="--sysroot=$ANDROID_BUILD_TOP/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.17-4.8/sysroot" |
| export LDFLAGS="--sysroot=$ANDROID_BUILD_TOP/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.17-4.8/sysroot -B$ANDROID_BUILD_TOP/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.17-4.8/lib/gcc/x86_64-linux/4.8.3 -L$ANDROID_BUILD_TOP/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.17-4.8/lib/gcc/x86_64-linux/4.8.3 -L$ANDROID_BUILD_TOP/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.17-4.8/x86_64-linux/lib64" |
| fi |
| |
| DIR=$NAME-lib |
| mkdir -p $DIR |
| cd $DIR |
| |
| |
| rm -rf tmp |
| mkdir tmp |
| cd tmp |
| ../../configure \ |
| --disable-nls \ |
| --enable-relocatable \ |
| --prefix=/nonexistent \ |
| --exec-prefix=/nonexistent/$NAME-x86 \ |
| --datarootdir=/nonexistent/common \ |
| "${config_opts[@]}" |
| |
| # Don't try to use aclocal/automake/etc |
| touch ../../aclocal.m4 |
| touch ../../configure |
| touch ../../Makefile.in |
| |
| # Don't attempt to update source timestamps |
| touch ../../doc/stamp-vti |
| |
| make -fMakefile Makefile |
| echo 'gensrcs: $(BUILT_SOURCES)' >>Makefile |
| make -fMakefile gensrcs |
| make -fMakefile src/bison |
| |
| mkdir -p ../malloc |
| rm -rf ../*.h ../malloc/*.h |
| mv lib/*.h ../ |
| mv lib/malloc/*.h ../malloc/ |
| |
| GENBP=../Android.bp |
| rm -f $GENBP |
| cat >$GENBP <<END |
| // Autogenerated by android_regen.sh |
| |
| cc_defaults { |
| name: "libbison_${NAME}_defaults", |
| target: { |
| $TARGET: { |
| srcs: [ |
| $(find lib -name '*.o' | sed "s/libbison_a-//" | sed -E "s/(.*)\.o/\"\1\.c\",/" | LC_ALL=C sort) |
| ], |
| }, |
| }, |
| } |
| |
| cc_defaults { |
| name: "bison_${NAME}_defaults", |
| target: { |
| $TARGET: { |
| srcs: [ |
| $(find src -name '*.o' | sed "s/bison-//" | sed -E "s/(.*)\.o/\"\1\.c\",/" | LC_ALL=C sort) |
| ], |
| }, |
| }, |
| } |
| END |
| ${ANDROID_BUILD_TOP}/prebuilts/build-tools/$UNAME-x86/bin/bpfmt -w $GENBP |
| |
| cd ../ |
| rm -rf tmp |