15daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris#!/bin/bash
25daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris
35daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferrisif [[ "$OUT" == "" ]]; then
45daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  echo "In order for this script to function, please choose an x86_64 target"
55daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  echo "using source build/envsetup.sh and lunch XXX\n"
65daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  exit 1
75daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferrisfi
85daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris
95daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferrisx86_64_cc="${ANDROID_TOOLCHAIN}/x86_64-linux-android-gcc"
105daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferrisx86_64_cpp="${ANDROID_TOOLCHAIN}/x86_64-linux-android-g++"
115daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris
125daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferrisincludes=(
135daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-isystem ${ANDROID_BUILD_TOP}/bionic/libc/arch-x86_64/include"
145daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-isystem ${ANDROID_BUILD_TOP}/bionic/libc/include"
155daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-isystem ${ANDROID_BUILD_TOP}/bionic/libstdc++/include"
165daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-isystem ${ANDROID_BUILD_TOP}/bionic/libc/kernel/uapi"
175daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-isystem ${ANDROID_BUILD_TOP}/bionic/libc/kernel/uapi/asm-x86"
18fb1f094f163a3bf15d8958ba845e83559c0e6dfeChristopher Ferris  "-isystem ${ANDROID_BUILD_TOP}/bionic/libc/kernel/android/uapi"
195daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-isystem ${ANDROID_BUILD_TOP}/bionic/libm/include"
205daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-isystem ${ANDROID_BUILD_TOP}/bionic/libm/include/amd64"
215daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris)
225daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris
235daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris# Copy libm.so to libpthread.so to allow -lpthread to work.
245daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferriscp ${OUT}/obj/lib/libm.so ${OUT}/obj/lib/libpthread.so
255daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris
265daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferrisldflags=(
275daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-nostdlib"
285daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-Bdynamic"
295daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-fPIE"
305daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-pie"
315daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-Wl,-dynamic-linker,/system/bin/linker64"
325daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-Wl,--gc-sections"
335daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-Wl,-z,nocopyreloc"
345daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-L${OUT}/obj/lib"
355daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-Wl,-rpath-link=${OUT}/obj/lib"
365daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "${OUT}/obj/lib/crtbegin_dynamic.o"
375daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-Wl,--whole-archive"
385daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-Wl,--no-whole-archive"
395daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-lc"
405daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-lstdc++"
415daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-lgcc"
425daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-lm"
435daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-Wl,-z,noexecstack"
445daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-Wl,-z,relro"
455daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-Wl,-z,now"
465daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-Wl,--warn-shared-textrel"
475daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-Wl,--fatal-warnings"
485daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-Wl,--icf=safe"
495daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-Wl,--no-undefined"
505daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris  "-ldl"
515daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris)
525daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris
535daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferriseval ./configure CC=\"${x86_64_cc} ${includes[@]}\" \
545daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris                 CPP=\"${x86_64_cc} ${includes[@]} -E\" \
555daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris                 CXX=\"${x86_64_cpp} ${includes[@]}\" \
565daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris                 CXXCPP=\"${x86_64_cpp} ${includes[@]} -E\" \
575daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris                 LDFLAGS=\"${ldflags[@]}\" \
585daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris                 --host=x86_64-android-linux \
595daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris                 --disable-valgrind \
605daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris                 --with-jemalloc_prefix=je_ \
615daf4e4a8d52ac2d5b40b0d12ce5721c6b9676e7Christopher Ferris
62