Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Perl for Android Architecture #17246

Open
kingvhit opened this issue Nov 3, 2019 · 22 comments
Open

Perl for Android Architecture #17246

kingvhit opened this issue Nov 3, 2019 · 22 comments

Comments

@kingvhit
Copy link

kingvhit commented Nov 3, 2019

Description
Hi All, I want to make a perl binary and run on Android OS 5.0+.
As I checked on README.android, this is very outdated I guest, so I do it by self.

I have to download the source code of Perl as of version perl-5.30.0.tar.gz then unzip into storage.
All right, this is my steps just I do.

  1. Unzip perl source.
  2. Config the EVN and cd to that folder.
# For Perl Build
export TARGETDIR=/data/local/tmp/perl
export TARGET_ARCH=i686-linux-android
export HOST_TAG=darwin-x86_64
export TOOLCHAIN=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/$HOST_TAG
export SYSROOT=/Users/mbp0015/Library/Android/sdk/ndk-bundle/platforms/android-21/arch-x86
export AR=$TOOLCHAIN/bin/$TARGET_ARCH-ar
export AS=$TOOLCHAIN/bin/$TARGET_ARCH-as
export CC=$TOOLCHAIN/bin/${TARGET_ARCH}21-clang
export CXX=$TOOLCHAIN/bin/${TARGET_ARCH}21-clang++
export LD=$TOOLCHAIN/bin/$TARGET_ARCH-ld
export RANLIB=$TOOLCHAIN/bin/$TARGET_ARCH-ranlib
export STRIP=$TOOLCHAIN/bin/$TARGET_ARCH-strip
export PATH=$PATH:$TOOLCHAIN/bin
# move to that folder
cd perl-5.30.0
# Create AVD with x86 architect, also create folder of TARGETDIR on that device based `adb` shell
# Run Configuration
./Configure -des -Dusecrosscompile -Dtargetarch=$TARGET_ARCH -Dtargetrun=adb -Dcc=$CC -Dranlib=$RANLIB -Dsysroot=$SYSROOT -Dtargetdir=$TARGETDIR -Dtargethost=emulator-5554

The configuration is built successfully as expected results, the config.sh also make file is generated.
So, I ran the make command and got some problems that I didn't know why

/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android21-clang -c   -fno-strict-aliasing -pipe -fstack-protector-strong -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2 -Wall -Werror=declaration-after-statement -Werror=pointer-arith -Wextra -Wc++-compat -Wwrite-strings -O2   -DVERSION=\"1.76\" -DXS_VERSION=\"1.76\" -fPIC --sysroot=/Users/mbp0015/Library/Android/sdk/ndk-bundle/platforms/android-21/arch-x86 "-I../.."   B.c
Putting child 0x7ffe1fd12dd0 (B.o) PID 14533 on the chain.
Live child 0x7ffe1fd12dd0 (B.o) PID 14533 
In file included from B.xs:13:
../../perl.h:697:10: fatal error: 'sys/types.h' file not found
#include <sys/types.h>
         ^~~~~~~~~~~~~
1 error generated.
Reaping losing child 0x7ffe1fd12dd0 PID 14533 
make[1]: *** [B.o] Error 1
Removing child 0x7ffe1fd12dd0 PID 14533 from chain.
Unsuccessful make(ext/B): code=512 at make_ext.pl line 570.
Reaping losing child 0x7ff49642a990 PID 14349 
make: *** [lib/auto/B/B.so] Error 25
Removing child 0x7ff49642a990 PID 14349 from chain.

Full log

λ mbp0015 [~/Desktop/perl-5.30.0] → make         
/bin/ln -s /Users/mbp0015/Desktop/perl-5.30.0/host/generate_uudmap generate_uudmap
./miniperl -Ilib make_ext.pl cpan/Archive-Tar/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
./miniperl -Ilib make_ext.pl dist/Attribute-Handlers/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for dist/Attribute-Handlers directly
./miniperl -Ilib make_ext.pl cpan/AutoLoader/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/AutoLoader directly
./miniperl -Ilib make_ext.pl cpan/CPAN/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
./miniperl -Ilib make_ext.pl cpan/CPAN-Meta/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
./miniperl -Ilib make_ext.pl cpan/CPAN-Meta-Requirements/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/CPAN-Meta-Requirements directly
./miniperl -Ilib make_ext.pl cpan/CPAN-Meta-YAML/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/CPAN-Meta-YAML directly
./miniperl -Ilib make_ext.pl dist/Carp/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for dist/Carp directly
./miniperl -Ilib make_ext.pl cpan/Config-Perl-V/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/Config-Perl-V directly
./miniperl -Ilib make_ext.pl dist/Devel-SelfStubber/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for dist/Devel-SelfStubber directly
./miniperl -Ilib make_ext.pl cpan/Digest/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/Digest directly
./miniperl -Ilib make_ext.pl dist/Dumpvalue/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for dist/Dumpvalue directly
./miniperl -Ilib make_ext.pl dist/Env/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for dist/Env directly
./miniperl -Ilib make_ext.pl ext/Errno/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
./miniperl -Ilib make_ext.pl dist/Exporter/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for dist/Exporter directly
./miniperl -Ilib make_ext.pl dist/ExtUtils-CBuilder/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for dist/ExtUtils-CBuilder directly
./miniperl -Ilib make_ext.pl cpan/ExtUtils-Constant/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/ExtUtils-Constant directly
./miniperl -Ilib make_ext.pl cpan/ExtUtils-Install/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/ExtUtils-Install directly
./miniperl -Ilib make_ext.pl cpan/ExtUtils-MakeMaker/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
./miniperl -Ilib make_ext.pl cpan/ExtUtils-Manifest/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
./miniperl -Ilib make_ext.pl ext/ExtUtils-Miniperl/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for ext/ExtUtils-Miniperl directly
./miniperl -Ilib make_ext.pl dist/ExtUtils-ParseXS/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
./miniperl -Ilib make_ext.pl cpan/File-Fetch/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/File-Fetch directly
./miniperl -Ilib make_ext.pl ext/File-Find/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for ext/File-Find directly
./miniperl -Ilib make_ext.pl cpan/File-Path/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/File-Path directly
./miniperl -Ilib make_ext.pl cpan/File-Temp/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/File-Temp directly
./miniperl -Ilib make_ext.pl ext/FileCache/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for ext/FileCache directly
./miniperl -Ilib make_ext.pl dist/Filter-Simple/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for dist/Filter-Simple directly
./miniperl -Ilib make_ext.pl cpan/Getopt-Long/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/Getopt-Long directly
./miniperl -Ilib make_ext.pl cpan/HTTP-Tiny/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
./miniperl -Ilib make_ext.pl dist/I18N-Collate/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for dist/I18N-Collate directly
./miniperl -Ilib make_ext.pl dist/I18N-LangTags/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for dist/I18N-LangTags directly
./miniperl -Ilib make_ext.pl dist/lib/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
./miniperl -Ilib make_ext.pl cpan/IO-Compress/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
./miniperl -Ilib make_ext.pl cpan/IO-Socket-IP/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/IO-Socket-IP directly
./miniperl -Ilib make_ext.pl cpan/IO-Zlib/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/IO-Zlib directly
./miniperl -Ilib make_ext.pl cpan/IPC-Cmd/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/IPC-Cmd directly
./miniperl -Ilib make_ext.pl ext/IPC-Open3/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for ext/IPC-Open3 directly
./miniperl -Ilib make_ext.pl cpan/JSON-PP/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
./miniperl -Ilib make_ext.pl dist/Locale-Maketext/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for dist/Locale-Maketext directly
./miniperl -Ilib make_ext.pl cpan/Locale-Maketext-Simple/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/Locale-Maketext-Simple directly
./miniperl -Ilib make_ext.pl cpan/Math-BigInt/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/Math-BigInt directly
./miniperl -Ilib make_ext.pl cpan/Math-BigRat/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/Math-BigRat directly
./miniperl -Ilib make_ext.pl cpan/Math-Complex/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/Math-Complex directly
./miniperl -Ilib make_ext.pl cpan/Memoize/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/Memoize directly
./miniperl -Ilib make_ext.pl dist/Module-CoreList/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
./miniperl -Ilib make_ext.pl cpan/Module-Load/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/Module-Load directly
./miniperl -Ilib make_ext.pl cpan/Module-Load-Conditional/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/Module-Load-Conditional directly
./miniperl -Ilib make_ext.pl cpan/Module-Loaded/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/Module-Loaded directly
./miniperl -Ilib make_ext.pl cpan/Module-Metadata/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
./miniperl -Ilib make_ext.pl cpan/NEXT/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/NEXT directly
./miniperl -Ilib make_ext.pl dist/Net-Ping/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for dist/Net-Ping directly
./miniperl -Ilib make_ext.pl cpan/Params-Check/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/Params-Check directly
./miniperl -Ilib make_ext.pl cpan/Perl-OSType/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/Perl-OSType directly
./miniperl -Ilib make_ext.pl cpan/PerlIO-via-QuotedPrint/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/PerlIO-via-QuotedPrint directly
./miniperl -Ilib make_ext.pl cpan/Pod-Checker/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
./miniperl -Ilib make_ext.pl cpan/Pod-Escapes/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/Pod-Escapes directly
./miniperl -Ilib make_ext.pl cpan/Pod-Simple/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/Pod-Simple directly
./miniperl -Ilib make_ext.pl ext/Pod-Functions/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
./miniperl -Ilib make_ext.pl ext/Pod-Html/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
./miniperl -Ilib make_ext.pl cpan/Pod-Parser/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
./miniperl -Ilib make_ext.pl cpan/Pod-Perldoc/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
./miniperl -Ilib make_ext.pl cpan/Pod-Usage/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
./miniperl -Ilib make_ext.pl dist/Safe/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for dist/Safe directly
./miniperl -Ilib make_ext.pl dist/Search-Dict/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for dist/Search-Dict directly
./miniperl -Ilib make_ext.pl dist/SelfLoader/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for dist/SelfLoader directly
./miniperl -Ilib make_ext.pl cpan/Term-ANSIColor/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/Term-ANSIColor directly
./miniperl -Ilib make_ext.pl cpan/Term-Cap/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
./miniperl -Ilib make_ext.pl dist/Term-Complete/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for dist/Term-Complete directly
./miniperl -Ilib make_ext.pl dist/Term-ReadLine/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for dist/Term-ReadLine directly
./miniperl -Ilib make_ext.pl dist/Test/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for dist/Test directly
./miniperl -Ilib make_ext.pl cpan/Test-Harness/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
./miniperl -Ilib make_ext.pl cpan/Test-Simple/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/Test-Simple directly
./miniperl -Ilib make_ext.pl dist/Text-Abbrev/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for dist/Text-Abbrev directly
./miniperl -Ilib make_ext.pl cpan/Text-Balanced/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/Text-Balanced directly
./miniperl -Ilib make_ext.pl cpan/Text-ParseWords/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/Text-ParseWords directly
./miniperl -Ilib make_ext.pl cpan/Text-Tabs/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/Text-Tabs directly
./miniperl -Ilib make_ext.pl dist/Thread-Queue/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for dist/Thread-Queue directly
./miniperl -Ilib make_ext.pl dist/Thread-Semaphore/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for dist/Thread-Semaphore directly
./miniperl -Ilib make_ext.pl dist/Tie-File/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for dist/Tie-File directly
./miniperl -Ilib make_ext.pl ext/Tie-Memoize/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for ext/Tie-Memoize directly
./miniperl -Ilib make_ext.pl cpan/Tie-RefHash/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/Tie-RefHash directly
./miniperl -Ilib make_ext.pl cpan/Time-Local/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/Time-Local directly
./miniperl -Ilib make_ext.pl dist/XSLoader/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
./miniperl -Ilib make_ext.pl cpan/autodie/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/autodie directly
./miniperl -Ilib make_ext.pl dist/autouse/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for dist/autouse directly
./miniperl -Ilib make_ext.pl dist/base/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
./miniperl -Ilib make_ext.pl cpan/bignum/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/bignum directly
./miniperl -Ilib make_ext.pl dist/constant/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for dist/constant directly
./miniperl -Ilib make_ext.pl dist/encoding-warnings/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for dist/encoding-warnings directly
./miniperl -Ilib make_ext.pl cpan/experimental/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/experimental directly
./miniperl -Ilib make_ext.pl dist/if/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
./miniperl -Ilib make_ext.pl cpan/libnet/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
./miniperl -Ilib make_ext.pl cpan/parent/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/parent directly
./miniperl -Ilib make_ext.pl cpan/perlfaq/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/perlfaq directly
./miniperl -Ilib make_ext.pl cpan/podlators/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Manifying 2 pod documents
./miniperl -Ilib make_ext.pl cpan/version/pm_to_blib  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a
Running pm_to_blib for cpan/version directly
./miniperl -Ilib lib/unicore/mktables -C lib/unicore -P pod -maketest -makelist -p
lib/unicore/mktables: Files seem to be ok, not bothering to rebuild.  Add '-w' option to force build
./miniperl -Ilib make_ext.pl DynaLoader.o  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a LINKTYPE=static CCCDLFLAGS=
./miniperl -Ilib mkppport
running "/Users/mbp0015/Desktop/perl-5.30.0/host/miniperl" -I../../lib PPPort_pm.PL
mysterious name [ENTER_with_name(name)] in parts/apidoc.fnc, line 161
mysterious name [LEAVE_with_name(name)] in parts/apidoc.fnc, line 164
including ppphdoc
including ppphbin
including version
including threads
including limits
including misc
including warn
including uv
including memory
including magic_defs
including mess
including variables
including mPUSH
including call
including newRV
including newCONSTSUB
including MY_CXT
including format
including SvREFCNT
including newSV_type
including newSVpv
including SvPV
including Sv_set
including sv_xpvf
including shared_pv
including HvNAME
including gv
including pvs
including magic
including cop
including grok
including snprintf
including sprintf
including exception
including strlfuncs
including pv_tools
parts/inc/misc provides av_tindex, which is still marked todo for 5.17.9
parts/inc/misc provides av_top_index, which is still marked todo for 5.17.9
parts/inc/misc provides isALPHANUMERIC, which is still marked todo for 5.17.8
parts/inc/misc provides isIDCONT, which is still marked todo for 5.17.8
parts/inc/misc provides isOCTAL, which is still marked todo for 5.13.5
parts/inc/misc provides isWORDCHAR, which is still marked todo for 5.13.6
parts/inc/uv provides utf8_to_uvchr_buf, which is still marked todo for 5.15.9
parts/inc/mess provides vmess, which is still marked todo for 5.6.0
running "/Users/mbp0015/Desktop/perl-5.30.0/host/miniperl" -I../../lib ppport_h.PL
ppport.h in cpan/DB_File is up-to-date
ppport.h in cpan/IPC-SysV is up-to-date
ppport.h in cpan/Win32API-File is up-to-date
ppport.h in dist/IO is up-to-date
ppport.h in dist/Storable is up-to-date
removing temporary file PPPort.pm
removing temporary file ppport.h
./miniperl -Ilib make_ext.pl lib/auto/B/B.so  MAKE="/Applications/Xcode.app/Contents/Developer/usr/bin/make" LIBPERL_A=libperl.a LINKTYPE=dynamic
/Users/mbp0015/Desktop/perl-5.30.0/ext/B/../../host/miniperl "-I/Users/mbp0015/Desktop/perl-5.30.0/ext/B/../../lib" -MExtUtils::Command::MM -e 'cp_nonempty' -- B.bs /Users/mbp0015/Desktop/perl-5.30.0/ext/B/../../lib/auto/B/B.bs 644
/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android21-clang -c   -fno-strict-aliasing -pipe -fstack-protector-strong -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2 -Wall -Werror=declaration-after-statement -Werror=pointer-arith -Wextra -Wc++-compat -Wwrite-strings -O2   -DVERSION=\"1.76\" -DXS_VERSION=\"1.76\" -fPIC --sysroot=/Users/mbp0015/Library/Android/sdk/ndk-bundle/platforms/android-21/arch-x86 "-I../.."   B.c
In file included from B.xs:13:
../../perl.h:697:10: fatal error: 'sys/types.h' file not found
#include <sys/types.h>
         ^~~~~~~~~~~~~
1 error generated.
make[1]: *** [B.o] Error 1
/Users/mbp0015/Desktop/perl-5.30.0/ext/B/../../host/miniperl "-I/Users/mbp0015/Desktop/perl-5.30.0/ext/B/../../lib" -MExtUtils::Command::MM -e 'cp_nonempty' -- B.bs /Users/mbp0015/Desktop/perl-5.30.0/ext/B/../../lib/auto/B/B.bs 644
/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android21-clang -c   -fno-strict-aliasing -pipe -fstack-protector-strong -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2 -Wall -Werror=declaration-after-statement -Werror=pointer-arith -Wextra -Wc++-compat -Wwrite-strings -O2   -DVERSION=\"1.76\" -DXS_VERSION=\"1.76\" -fPIC --sysroot=/Users/mbp0015/Library/Android/sdk/ndk-bundle/platforms/android-21/arch-x86 "-I../.."   B.c
In file included from B.xs:13:
../../perl.h:697:10: fatal error: 'sys/types.h' file not found
#include <sys/types.h>
         ^~~~~~~~~~~~~
1 error generated.
make[1]: *** [B.o] Error 1
Unsuccessful make(ext/B): code=512 at make_ext.pl line 570.
make: *** [lib/auto/B/B.so] Error 2

Expected behavior
make file successfully and got the perl binary-based android architect.

Perl configuration
NDK version: latest version on Google r20
https://developer.android.com/ndk/downloads

ToolChain:
From r19, Google officially make a Tool Chain are standalone toolchains

Warning: If using r19 or newer, follow the Other Build Systems document for instructions on using the NDK toolchains with arbitrary build systems. As of r19, the NDK's default toolchains are standalone toolchains, which renders this process unnecessary.

So I didn't run a standalone toolchain script. See the EVN of TOOLCHAIN SYSROOT

Attached config.sh and MakeFile as bellow

config.sh.txt
Makefile.txt

OS: Mac OS Catalina
version 10.15.1

@kingvhit
Copy link
Author

kingvhit commented Nov 3, 2019

I think it should be related with this issue #16821 , but I already try to remove Sysroot and re-build again but it not yet resolve

@richardleach
Copy link
Contributor

#16821 was for a native build under Termux, rather than a cross-compile, so you probably do need to set SYSROOT.

I haven't done a cross-compile build before, but am installing an android emulator under Linux now and will try this week.

@kingvhit
Copy link
Author

kingvhit commented Nov 4, 2019

Thank you for your quick response.
Could you please use a latest version of Android NDK (r20) as on. Because the document of Android is very outdated that I would like to upgrade with the latest version to catch some new issues.

@richardleach
Copy link
Contributor

I've had a go this evening using NDK r20, targeting API 29, on a 64-bit Debian-derived Linux system, following the OP's steps from the initial post. However, this combination didn't even get as far as the reported problem.

Problems:

  1. Configure picks up $libswanted entries in the host's libraries folder and adds them to $libs, despite not using the host folder subsequently. This causes Configure to exit when it performs its initial CC test. I worked around this for now by manually setting $libs in Configure.
  2. make fails comparatively early on due to error: incomplete definition of type 'struct spwd' in pp_sys,c

Out of time tonight, will try again another evening.

@richardleach
Copy link
Contributor

@kingvhit does make succeed if you change the SYSROOT variable to the following?

export SYSROOT=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/$HOST_TAG/sysroot

I set my Linux build environment up to broadly match your Darwin environment and that SYSROOT resulted in a successful make. ($HOST_TAG here is linux-x86_64.)

make test is running, but not sure how long it will take on this VM/emulated device.

@richardleach
Copy link
Contributor

richardleach commented Nov 8, 2019

Huh, make test shows masses of failures to investigate.

A functioning perl binary does end up on the emulated Android device, even though there is plenty of module/environment breakage.

@kingvhit
Copy link
Author

kingvhit commented Nov 8, 2019

Hi @richardleach
Following the sysroot as your comment, I got something problems that I don't understand why ?

./Configure -des -Dusecrosscompile -Dtargetarch=$TARGET_ARCH -Dtargetrun=adb -Dcc=$CC -Dcxx=$CXX -Dranlib=$RANLIB -Dsysroot=$SYSROOT -Dtargetdir=$TARGETDIR -Dtargethost=emulator-5554
First let's make sure your kit is complete.  Checking...
Locating common programs...
Checking compatibility between /bin/echo and builtin echo (if any)...
Symbolic links are supported.
Checking how to test for symbolic links...
You can test for symbolic links with 'test -h'.
Using targetarch i686-linux-android.
Using targethost emulator-5554.
Building host miniperl and generate_uudmap binaries


Using targethost emulator-5554.
Guessing targetuser root.
Guessing targetport 22.
Using '/Users/mbp0015/Desktop/perl-5.30.0/Cross/run-adb' for remote execution,
and '/Users/mbp0015/Desktop/perl-5.30.0/Cross/from-scp' and '/Users/mbp0015/Desktop/perl-5.30.0/Cross/to-scp'
for remote file transfer.
Good, your tr supports [:lower:] and [:upper:] to convert case.
Using [:upper:] and [:lower:] to convert case.
aix   			greenhills   		os400   
aix_3   		haiku   		posix-bc   
aix_4   		hpux   			qnx   
altos486   		i386   			riscos   
amigaos   		interix   		sco   
atheos   		irix_4   		sco_2_3_0   
aux_3   		irix_5   		sco_2_3_1   
bitrig   		irix_6   		sco_2_3_2   
bsdos   		irix_6_0   		sco_2_3_3   
catamount   		irix_6_1   		sco_2_3_4   
convexos   		isc   			solaris_2   
cxux   			isc_2   		stellar   
cygwin   		linux-android   	sunos_4_0   
darwin   		linux   		sunos_4_1   
dcosx   		lynxos   		super-ux   
dec_osf   		midnightbsd   		svr4   
dos_djgpp   		minix   		svr5   
dragonfly   		mips   			ti1500   
dynix   		mirbsd   		ultrix_4   
dynixptx   		mpc   			umips   
epix   			ncr_tower   		unicos   
esix4   		netbsd   		unicosmk   
fps   			newsos4   		unisysdynix   
freebsd   		nonstopux   		utekv   
freemint   		openbsd   		uwin   
gnu   			opus   			vos   
gnukfreebsd   		os2   
gnuknetbsd   		os390   
Which of these apply, if any? [linux-android]  
Operating system name? [linux-android]  
Operating system version? [8.1.0]  
Installation prefix to use? (~name ok) [/usr/local]  
AFS does not seem to be running...
What installation prefix should I use for installing files? (~name ok)
[/usr/local]  
Getting the current patchlevel...
Build a threading Perl? [n]  
Build Perl for multiplicity? [n]  
Use which C compiler?
[/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android21-clang]  
Checking for GNU cc in disguise and/or its version number...
Now, how can we feed standard input to your C preprocessor...
Using incpth '/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/../sysroot/usr/local/include /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/8.0.7/include /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/../sysroot/usr/include/i686-linux-android /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/../sysroot/usr/include'.
Using libpth '/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/8.0.7/lib /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/../sysroot/usr/include/i686-linux-android /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/../sysroot/usr/lib /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.0.0 /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib'.
Using usrinc /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include.
Directories to use for library searches?
[/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/8.0.7/lib /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/../sysroot/usr/include/i686-linux-android /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/../sysroot/usr/lib /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.0.0 /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib]  
What is the file extension used for shared libraries? [so]  
Make shared library basenames unique? [n]  
Hmm.  Based on the hints in hints/linux-android.sh, 
the recommended value for $d_libname_unique on this machine was "define"!
    Keep the recommended value? [y]  
Build Perl for SOCKS? [n]  
Try to use long doubles if available? [n]  
Checking for optional libraries...
What libraries to use? [none]  
What optimizer/debugger flag should be used? [-O2]  
Any additional cc flags?
[-fno-strict-aliasing -pipe -fstack-protector-strong]  
Let me guess what the preprocessor flags are...
Any additional ld flags (NOT including libraries)?
[ -fstack-protector-strong]  
Checking your choice of C compiler and flags for coherency...
Checking to see how big your integers are...
Checking to see if you have long long...
Checking to see how big your long longs are...
Computing filename position in cpp output for #include directives...
<inttypes.h> found.
Checking to see if you have int64_t...
Checking which 64-bit integer type we could use...
We could use 'long long' for 64-bit integers.
Try to use 64-bit integers, if available? [n]  
Try to use maximal 64-bit support, if available? [n]  
Checking for GNU C Library...
Shall I use /usr/bin/nm to extract C symbols from the libraries? [y]  
I can't seem to find your C library.  I've looked in the following places:

Where is your C library? 

C Compiler I am using now is clang with API 21 target. But with the old sysroot It can be done by ./Configure command.

@kingvhit
Copy link
Author

kingvhit commented Nov 8, 2019

export TOOLCHAIN=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/$HOST_TAG
export SYSROOT=$TOOLCHAIN/sysroot

@richardleach
Copy link
Contributor

Configure seems to be picking things - not necessarily correctly - up on my Linux host that it doesn't on your Darwin host.

Please could you attach the config.sh that Configure creates with the new SYSROOT?

@richardleach
Copy link
Contributor

I've had a few goes with the original SYSROOT and setting -Dusrinc and -Dincpth to point to e.g. $TOOLCHAIN/sysroot/usr/include, but so far without success.

The SYSROOT=$TOOLCHAIN/sysroot route might work if you add -Dlibpth=$TOOLCHAIN/sysroot/usr/lib/$TARGET_ARCH/21 to hopefully point Configure to libc.so. (I'm not sure if $TARGET_ARCH is the correct subfolder to point at, you might have to try playing around with -Dlibpth.)

@kingvhit
Copy link
Author

@richardleach : Thank for you suggest, I have to change the SYSROOT path and using Dlibpth and now, I can build the perl binary successfully with many skipping warning.

Also when I try to run
make test
it can be passed and error some test case.

Failed 74 tests out of 2359, 96.86% okay.
### Since not all tests were successful, you may want to run some of
### them individually and examine any diagnostic messages they produce.
### See the INSTALL document's section on "make test".
### You have a good chance to get more information by running
###   ./perl harness
### in the 't' directory since most (>=80%) of the tests succeeded.
### You may have to set your dynamic library search path,
### LD_LIBRARY_PATH, to point to the build directory:
###   setenv LD_LIBRARY_PATH `pwd`; cd t; ./perl harness
###   LD_LIBRARY_PATH=`pwd`; export LD_LIBRARY_PATH; cd t; ./perl harness
###   export LD_LIBRARY_PATH=`pwd`; cd t; ./perl harness
### for csh-style shells, like tcsh; or for traditional/modern
### Bourne-style shells, like bash, ksh, and zsh, respectively.
make: *** [test] Error 1

This is our ENV after changed


# For Perl Build
export TARGETDIR=/data/local/tmp/perl
export TARGET_ARCH=i686-linux-android
export HOST_TAG=darwin-x86_64
export BUILD_VERSION=21
export TOOLCHAIN=$ANDROID_NDK_ROOT/toolchains/llvm/prebuilt/$HOST_TAG
export SYSROOT=$TOOLCHAIN/sysroot
#export SYSROOT=/Users/mbp0015/Library/Android/sdk/ndk-bundle/platforms/android-21/arch-x86
export LIB_ARCH=$TOOLCHAIN/sysroot/usr/lib/$TARGET_ARCH/$BUILD_VERSION


export AR=$TOOLCHAIN/bin/$TARGET_ARCH-ar
export AS=$TOOLCHAIN/bin/$TARGET_ARCH-as
export CC=$TOOLCHAIN/bin/${TARGET_ARCH}${BUILD_VERSION}-clang
export CXX=$TOOLCHAIN/bin/${TARGET_ARCH}${BUILD_VERSION}-clang++
export LD=$TOOLCHAIN/bin/$TARGET_ARCH-ld
export RANLIB=$TOOLCHAIN/bin/$TARGET_ARCH-ranlib
export STRIP=$TOOLCHAIN/bin/$TARGET_ARCH-strip

export PATH=$PATH:$TOOLCHAIN/bin

Bellow as the script that I ran
./Configure -des -Dusecrosscompile -Dtargetarch=$TARGET_ARCH -Dtargetrun=adb -Dcc=$CC -Dcxx=$CXX -Dranlib=$RANLIB -Dsysroot=$SYSROOT -Dlibpth=$LIB_ARCH -Dtargetdir=$TARGETDIR -Dtargethost=emulator-5554

Seem like that PERL folder is very huge, I think I missed something for it. try to run perl -v on adb shell and it works very well. To be continued checking.

@kingvhit
Copy link
Author

Config.sh

#!/bin/sh
#
# This file was produced by running the Configure script. It holds all the
# definitions figured out by Configure. Should you modify one of these values,
# do not forget to propagate your changes by running "Configure -der". You may
# instead choose to run each of the .SH files by yourself, or "Configure -S".
#

# Package name      : perl5
# Source directory  : /Users/mbp0015/Desktop/perl-5.30.0
# Configuration time: Mon Nov 11 10:43:40 +07 2019
# Configured by     : mbp0015
# Target system     : darwin mbp0015.local 19.0.0 darwin kernel version 19.0.0: thu oct 17 16:17:15 pdt 2019; root:xnu-6153.41.3~29release_x86_64 x86_64 

: Configure command line arguments.
config_arg0='./Configure'
config_args='-des -Dusecrosscompile -Dtargetarch=i686-linux-android -Dtargetrun=adb -Dcc=/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android21-clang -Dcxx=/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android21-clang++ -Dranlib=/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android-ranlib -Dsysroot=/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -Dlibpth=/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/21 -Dtargetdir=/data/local/tmp/perl -Dtargethost=emulator-5554'
config_argc=11
config_arg1='-des'
config_arg2='-Dusecrosscompile'
config_arg3='-Dtargetarch=i686-linux-android'
config_arg4='-Dtargetrun=adb'
config_arg5='-Dcc=/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android21-clang'
config_arg6='-Dcxx=/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android21-clang++'
config_arg7='-Dranlib=/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android-ranlib'
config_arg8='-Dsysroot=/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot'
config_arg9='-Dlibpth=/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/21'
config_arg10='-Dtargetdir=/data/local/tmp/perl'
config_arg11='-Dtargethost=emulator-5554'

Author=''
Date=''
Header=''
Id=''
Locker=''
Log=''
RCSfile=''
Revision=''
Source=''
State=''
_a='.a'
_exe=''
_o='.o'
afs='false'
afsroot='/afs'
alignbytes='4'
aphostname='/bin/hostname'
api_revision='5'
api_subversion='0'
api_version='30'
api_versionstring='5.30.0'
ar='ar'
archlib='.../../lib/perl5/5.30.0/linux-android'
archlibexp='.../../lib/perl5/5.30.0/linux-android'
archname64=''
archname='linux-android'
archobjs=''
asctime_r_proto='0'
awk='awk'
baserev='5.0'
bash=''
bin='.../'
bin_ELF='define'
binexp='.../'
bison='bison'
byacc='byacc'
byteorder='1234'
c='\c'
castflags='0'
cat='cat'
cc='/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android21-clang'
cccdlflags='-fPIC --sysroot=/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot'
ccdlflags='-Wl,-E'
ccflags='-fno-strict-aliasing -pipe -fstack-protector-strong -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2'
ccflags_uselargefiles='-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
ccname='gcc'
ccsymbols=''
ccversion=''
cf_by='mbp0015'
cf_email='mbp0015@mbp0015.local'
cf_time='Mon Nov 11 10:43:40 +07 2019'
charbits='8'
charsize='1'
chgrp=''
chmod='chmod'
chown=''
clocktype='clock_t'
comm='comm'
compress=''
contains='grep'
cp='cp'
cpio=''
cpp='cpp'
cpp_stuff='42'
cppccsymbols=''
cppflags='-fno-strict-aliasing -pipe -fstack-protector-strong'
cpplast='-'
cppminus='-'
cpprun='/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android21-clang  -E'
cppstdin='/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android21-clang  -E'
cppsymbols='_FILE_OFFSET_BITS=64 _FORTIFY_SOURCE=2 _ILP32=1 _LARGEFILE_SOURCE=1 __ANDROID__=1 __BYTE_ORDER__=1234 __ELF__=1 __GNUC_MINOR__=2 __GNUC__=4 __ILP32__=1 __LITTLE_ENDIAN__=1 __PIC__=2 __STDC__=1 __USE_FILE_OFFSET64=1 __clang__=1 __i386=1 __i386__=1 __i686=1 __i686__=1 __linux=1 __linux__=1 __pic__=2 __unix=1 __unix__=1 i386=1 linux=1 unix=1'
crypt_r_proto='0'
cryptlib=''
csh='csh'
ctermid_r_proto='0'
ctime_r_proto='0'
d_Gconvert='sprintf((b),"%.*g",(n),(x))'
d_PRIEUldbl='define'
d_PRIFUldbl='define'
d_PRIGUldbl='define'
d_PRIXU64='define'
d_PRId64='define'
d_PRIeldbl='define'
d_PRIfldbl='define'
d_PRIgldbl='define'
d_PRIi64='define'
d_PRIo64='define'
d_PRIu64='define'
d_PRIx64='define'
d_SCNfldbl='define'
d__fwalk='undef'
d_accept4='define'
d_access='define'
d_accessx='undef'
d_acosh='define'
d_aintl='undef'
d_alarm='define'
d_archlib='define'
d_asctime64='define'
d_asctime_r='undef'
d_asinh='define'
d_atanh='define'
d_atolf='undef'
d_atoll='define'
d_attribute_deprecated='define'
d_attribute_format='define'
d_attribute_malloc='define'
d_attribute_nonnull='define'
d_attribute_noreturn='define'
d_attribute_pure='define'
d_attribute_unused='define'
d_attribute_warn_unused_result='define'
d_backtrace='undef'
d_bsd='undef'
d_bsdgetpgrp='undef'
d_bsdsetpgrp='undef'
d_builtin_add_overflow='define'
d_builtin_choose_expr='define'
d_builtin_expect='define'
d_builtin_mul_overflow='define'
d_builtin_sub_overflow='define'
d_c99_variadic_macros='define'
d_casti32='undef'
d_castneg='define'
d_cbrt='define'
d_chown='define'
d_chroot='define'
d_chsize='undef'
d_class='undef'
d_clearenv='define'
d_closedir='define'
d_cmsghdr_s='define'
d_copysign='define'
d_copysignl='define'
d_cplusplus='undef'
d_crypt='undef'
d_crypt_r='undef'
d_csh='undef'
d_ctermid='undef'
d_ctermid_r='undef'
d_ctime64='define'
d_ctime_r='undef'
d_cuserid='undef'
d_dbminitproto='undef'
d_difftime64='undef'
d_difftime='define'
d_dir_dd_fd='undef'
d_dirfd='define'
d_dirnamlen='undef'
d_dladdr='define'
d_dlerror='define'
d_dlopen='define'
d_dlsymun='undef'
d_dosuid='undef'
d_double_has_inf='define'
d_double_has_nan='define'
d_double_has_negative_zero='define'
d_double_has_subnormals='define'
d_double_style_cray='undef'
d_double_style_ibm='undef'
d_double_style_ieee='define'
d_double_style_vax='undef'
d_drand48_r='undef'
d_drand48proto='define'
d_dup2='define'
d_dup3='define'
d_duplocale='define'
d_eaccess='undef'
d_endgrent='undef'
d_endgrent_r='undef'
d_endhent='undef'
d_endhostent_r='undef'
d_endnent='undef'
d_endnetent_r='undef'
d_endpent='undef'
d_endprotoent_r='undef'
d_endpwent='undef'
d_endpwent_r='undef'
d_endsent='define'
d_endservent_r='undef'
d_eofnblk='define'
d_erf='define'
d_erfc='define'
d_eunice='undef'
d_exp2='define'
d_expm1='define'
d_faststdio='undef'
d_fchdir='define'
d_fchmod='define'
d_fchmodat='define'
d_fchown='define'
d_fcntl='define'
d_fcntl_can_lock='undef'
d_fd_macros='define'
d_fd_set='define'
d_fdclose='undef'
d_fdim='define'
d_fds_bits='define'
d_fegetround='define'
d_fgetpos='define'
d_finite='define'
d_finitel='undef'
d_flexfnam='define'
d_flock='define'
d_flockproto='define'
d_fma='define'
d_fmax='define'
d_fmin='define'
d_fork='define'
d_fp_class='undef'
d_fp_classify='undef'
d_fp_classl='undef'
d_fpathconf='define'
d_fpclass='undef'
d_fpclassify='define'
d_fpclassl='undef'
d_fpgetround='undef'
d_fpos64_t='define'
d_freelocale='define'
d_frexpl='define'
d_fs_data_s='undef'
d_fseeko='define'
d_fsetpos='define'
d_fstatfs='define'
d_fstatvfs='define'
d_fsync='define'
d_ftello='define'
d_ftime='undef'
d_futimes='undef'
d_gai_strerror='define'
d_gdbm_ndbm_h_uses_prototypes='undef'
d_gdbmndbm_h_uses_prototypes='undef'
d_getaddrinfo='define'
d_getcwd='define'
d_getespwnam='undef'
d_getfsstat='undef'
d_getgrent='undef'
d_getgrent_r='undef'
d_getgrgid_r='undef'
d_getgrnam_r='undef'
d_getgrps='define'
d_gethbyaddr='define'
d_gethbyname='define'
d_gethent='define'
d_gethname='define'
d_gethostbyaddr_r='undef'
d_gethostbyname_r='undef'
d_gethostent_r='undef'
d_gethostprotos='define'
d_getitimer='define'
d_getlogin='define'
d_getlogin_r='undef'
d_getmnt='undef'
d_getmntent='define'
d_getnameinfo='define'
d_getnbyaddr='define'
d_getnbyname='define'
d_getnent='undef'
d_getnetbyaddr_r='undef'
d_getnetbyname_r='undef'
d_getnetent_r='undef'
d_getnetprotos='undef'
d_getpagsz='define'
d_getpbyname='define'
d_getpbynumber='define'
d_getpent='undef'
d_getpgid='define'
d_getpgrp2='undef'
d_getpgrp='define'
d_getppid='define'
d_getprior='define'
d_getprotobyname_r='undef'
d_getprotobynumber_r='undef'
d_getprotoent_r='undef'
d_getprotoprotos='undef'
d_getprpwnam='undef'
d_getpwent='undef'
d_getpwent_r='undef'
d_getpwnam_r='undef'
d_getpwuid_r='undef'
d_getsbyname='define'
d_getsbyport='define'
d_getsent='define'
d_getservbyname_r='undef'
d_getservbyport_r='undef'
d_getservent_r='undef'
d_getservprotos='define'
d_getspnam='undef'
d_getspnam_r='undef'
d_gettimeod='define'
d_gmtime64='define'
d_gmtime_r='undef'
d_gnulibc='undef'
d_grpasswd='define'
d_has_C_UTF8='false'
d_hasmntopt='undef'
d_htonl='define'
d_hypot='define'
d_ilogb='define'
d_ilogbl='define'
d_inc_version_list='undef'
d_inetaton='define'
d_inetntop='define'
d_inetpton='define'
d_int64_t='define'
d_ip_mreq='define'
d_ip_mreq_source='define'
d_ipv6_mreq='define'
d_ipv6_mreq_source='undef'
d_isascii='define'
d_isblank='define'
d_isfinite='define'
d_isfinitel='define'
d_isinf='define'
d_isinfl='define'
d_isless='undef'
d_isnan='define'
d_isnanl='define'
d_isnormal='define'
d_j0='define'
d_j0l='undef'
d_killpg='define'
d_lc_monetary_2008='undef'
d_lchown='define'
d_ldbl_dig='define'
d_ldexpl='define'
d_lgamma='define'
d_lgamma_r='define'
d_libm_lib_version='undef'
d_libname_unique='define'
d_link='define'
d_linkat='define'
d_llrint='define'
d_llrintl='define'
d_llround='define'
d_llroundl='define'
d_localeconv_l='undef'
d_localtime64='define'
d_localtime_r='undef'
d_localtime_r_needs_tzset='undef'
d_locconv='undef'
d_lockf='undef'
d_log1p='define'
d_log2='define'
d_logb='define'
d_long_double_style_ieee='undef'
d_long_double_style_ieee_doubledouble='undef'
d_long_double_style_ieee_extended='undef'
d_long_double_style_ieee_std='undef'
d_long_double_style_vax='undef'
d_longdbl='define'
d_longlong='define'
d_lrint='define'
d_lrintl='define'
d_lround='define'
d_lroundl='define'
d_lseekproto='define'
d_lstat='define'
d_madvise='define'
d_malloc_good_size='undef'
d_malloc_size='undef'
d_mblen='undef'
d_mbrlen='define'
d_mbrtowc='define'
d_mbstowcs='define'
d_mbtowc='define'
d_memmem='define'
d_memrchr='define'
d_mkdir='define'
d_mkdtemp='define'
d_mkfifo='define'
d_mkostemp='undef'
d_mkstemp='define'
d_mkstemps='define'
d_mktime64='define'
d_mktime='define'
d_mmap='define'
d_modfl='define'
d_modflproto='define'
d_mprotect='define'
d_msg='undef'
d_msg_ctrunc='define'
d_msg_dontroute='define'
d_msg_oob='define'
d_msg_peek='define'
d_msg_proxy='undef'
d_msgctl='undef'
d_msgget='undef'
d_msghdr_s='define'
d_msgrcv='undef'
d_msgsnd='undef'
d_msync='define'
d_munmap='define'
d_mymalloc='undef'
d_nan='define'
d_nanosleep='define'
d_ndbm='undef'
d_ndbm_h_uses_prototypes='undef'
d_nearbyint='define'
d_newlocale='define'
d_nextafter='define'
d_nexttoward='define'
d_nice='define'
d_nl_langinfo='undef'
d_nv_preserves_uv='define'
d_nv_zero_is_allbits_zero='define'
d_off64_t='define'
d_old_pthread_create_joinable='undef'
d_oldpthreads='undef'
d_oldsock='undef'
d_open3='define'
d_openat='define'
d_pathconf='define'
d_pause='define'
d_perl_otherlibdirs='undef'
d_phostname='undef'
d_pipe2='define'
d_pipe='define'
d_poll='define'
d_portable='define'
d_prctl='define'
d_prctl_set_name='define'
d_printf_format_null='define'
d_procselfexe='define'
d_pseudofork='undef'
d_pthread_atfork='define'
d_pthread_attr_setscope='define'
d_pthread_yield='undef'
d_ptrdiff_t='define'
d_pwage='undef'
d_pwchange='undef'
d_pwclass='undef'
d_pwcomment='undef'
d_pwexpire='undef'
d_pwgecos='undef'
d_pwpasswd='define'
d_pwquota='undef'
d_qgcvt='undef'
d_quad='define'
d_querylocale='undef'
d_random_r='undef'
d_re_comp='undef'
d_readdir64_r='undef'
d_readdir='define'
d_readdir_r='undef'
d_readlink='define'
d_readv='define'
d_recvmsg='define'
d_regcmp='undef'
d_regcomp='define'
d_remainder='define'
d_remquo='define'
d_rename='define'
d_renameat='define'
d_rewinddir='define'
d_rint='define'
d_rmdir='define'
d_round='define'
d_sbrkproto='define'
d_scalbn='define'
d_scalbnl='define'
d_sched_yield='define'
d_scm_rights='define'
d_seekdir='undef'
d_select='define'
d_sem='undef'
d_semctl='undef'
d_semctl_semid_ds='undef'
d_semctl_semun='undef'
d_semget='undef'
d_semop='undef'
d_sendmsg='define'
d_setegid='define'
d_seteuid='define'
d_setgrent='undef'
d_setgrent_r='undef'
d_setgrps='define'
d_sethent='undef'
d_sethostent_r='undef'
d_setitimer='define'
d_setlinebuf='define'
d_setlocale='undef'
d_setlocale_accepts_any_locale_name='undef'
d_setlocale_r='undef'
d_setnent='undef'
d_setnetent_r='undef'
d_setpent='undef'
d_setpgid='define'
d_setpgrp2='undef'
d_setpgrp='define'
d_setprior='define'
d_setproctitle='undef'
d_setprotoent_r='undef'
d_setpwent='undef'
d_setpwent_r='undef'
d_setregid='define'
d_setresgid='define'
d_setresuid='define'
d_setreuid='define'
d_setrgid='undef'
d_setruid='undef'
d_setsent='define'
d_setservent_r='undef'
d_setsid='define'
d_setvbuf='define'
d_shm='undef'
d_shmat='undef'
d_shmatprototype='undef'
d_shmctl='undef'
d_shmdt='undef'
d_shmget='undef'
d_sigaction='define'
d_siginfo_si_addr='define'
d_siginfo_si_band='define'
d_siginfo_si_errno='define'
d_siginfo_si_fd='define'
d_siginfo_si_pid='define'
d_siginfo_si_status='define'
d_siginfo_si_uid='define'
d_siginfo_si_value='define'
d_signbit='define'
d_sigprocmask='define'
d_sigsetjmp='define'
d_sin6_scope_id='define'
d_sitearch='define'
d_snprintf='define'
d_sockaddr_in6='define'
d_sockaddr_sa_len='undef'
d_sockatmark='undef'
d_sockatmarkproto='undef'
d_socket='define'
d_socklen_t='define'
d_sockpair='define'
d_socks5_init='undef'
d_sqrtl='define'
d_srand48_r='undef'
d_srandom_r='undef'
d_sresgproto='define'
d_sresuproto='define'
d_stat='define'
d_statblks='define'
d_statfs_f_flags='define'
d_statfs_s='define'
d_static_inline='define'
d_statvfs='define'
d_stdio_cnt_lval='undef'
d_stdio_ptr_lval='undef'
d_stdio_ptr_lval_nochange_cnt='undef'
d_stdio_ptr_lval_sets_cnt='undef'
d_stdio_stream_array='define'
d_stdiobase='undef'
d_stdstdio='undef'
d_strcoll='define'
d_strerror_l='undef'
d_strerror_r='undef'
d_strftime='define'
d_strlcat='define'
d_strlcpy='define'
d_strnlen='define'
d_strtod='define'
d_strtod_l='undef'
d_strtol='define'
d_strtold='define'
d_strtold_l='define'
d_strtoll='define'
d_strtoq='define'
d_strtoul='define'
d_strtoull='define'
d_strtouq='define'
d_strxfrm='define'
d_suidsafe='undef'
d_symlink='define'
d_syscall='define'
d_syscallproto='define'
d_sysconf='define'
d_sysernlst=''
d_syserrlst='undef'
d_system='define'
d_tcgetpgrp='define'
d_tcsetpgrp='define'
d_telldir='undef'
d_telldirproto='undef'
d_tgamma='define'
d_thread_safe_nl_langinfo_l='undef'
d_time='define'
d_timegm='define'
d_times='define'
d_tm_tm_gmtoff='define'
d_tm_tm_zone='define'
d_tmpnam_r='undef'
d_towlower='define'
d_towupper='define'
d_trunc='define'
d_truncate='define'
d_truncl='define'
d_ttyname_r='undef'
d_tzname='define'
d_u32align='undef'
d_ualarm='undef'
d_umask='define'
d_uname='define'
d_union_semun='define'
d_unlinkat='define'
d_unordered='undef'
d_unsetenv='define'
d_uselocale='define'
d_usleep='define'
d_usleepproto='define'
d_ustat='undef'
d_vendorarch='undef'
d_vendorbin='undef'
d_vendorlib='undef'
d_vendorscript='undef'
d_vfork='undef'
d_void_closedir='undef'
d_voidsig='define'
d_voidtty=''
d_vsnprintf='define'
d_wait4='define'
d_waitpid='define'
d_wcscmp='define'
d_wcstombs='define'
d_wcsxfrm='define'
d_wctomb='define'
d_writev='define'
d_xenix='undef'
date='date'
db_hashtype='u_int32_t'
db_prefixtype='size_t'
db_version_major=''
db_version_minor=''
db_version_patch=''
default_inc_excludes_dot='define'
direntrytype='struct dirent'
dlext='so'
dlsrc='dl_dlopen.xs'
doubleinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f'
doublekind='3'
doublemantbits='52'
doublenanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff'
doublesize='8'
drand01='Perl_drand48()'
drand48_r_proto='0'
dtrace=''
dtraceobject=''
dtracexnolibs=''
dynamic_ext='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call Hash/Util Hash/Util/FieldHash I18N/Langinfo IO List/Util MIME/Base64 Math/BigInt/FastCalc Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Tie/Hash/NamedCapture Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared'
eagain='EAGAIN'
ebcdic='undef'
echo='echo'
egrep='egrep'
emacs=''
endgrent_r_proto='0'
endhostent_r_proto='0'
endnetent_r_proto='0'
endprotoent_r_proto='0'
endpwent_r_proto='0'
endservent_r_proto='0'
eunicefix=':'
exe_ext=''
expr='expr'
extensions='B Compress/Raw/Bzip2 Compress/Raw/Zlib Cwd Data/Dumper Devel/PPPort Devel/Peek Digest/MD5 Digest/SHA Encode Fcntl File/DosGlob File/Glob Filter/Util/Call Hash/Util Hash/Util/FieldHash I18N/Langinfo IO List/Util MIME/Base64 Math/BigInt/FastCalc Opcode POSIX PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via SDBM_File Socket Storable Sys/Hostname Sys/Syslog Tie/Hash/NamedCapture Time/HiRes Time/Piece Unicode/Collate Unicode/Normalize XS/APItest XS/Typemap attributes mro re threads threads/shared Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Parser Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version'
extern_C='extern'
extras=''
fflushNULL='define'
fflushall='undef'
find=''
firstmakefile='GNUmakefile'
flex=''
fpossize='8'
fpostype='fpos_t'
freetype='void'
from='/Users/mbp0015/Desktop/perl-5.30.0/Cross/from-adb-pull'
full_ar='/usr/bin/ar'
full_csh='/bin/csh'
full_sed='/usr/bin/sed'
gccansipedantic=''
gccosandvers=''
gccversion='4.2.1 Compatible Android (5220042 based on r346389c) Clang 8.0.7 (https://android.googlesource.com/toolchain/clang b55f2d4ebfd35bf643d27dbca1bb228957008617) (https://android.googlesource.com/toolchain/llvm 3c393fe7a7e13b0fba4ac75a01aa683d7a5b11cd)'
getgrent_r_proto='0'
getgrgid_r_proto='0'
getgrnam_r_proto='0'
gethostbyaddr_r_proto='0'
gethostbyname_r_proto='0'
gethostent_r_proto='0'
getlogin_r_proto='0'
getnetbyaddr_r_proto='0'
getnetbyname_r_proto='0'
getnetent_r_proto='0'
getprotobyname_r_proto='0'
getprotobynumber_r_proto='0'
getprotoent_r_proto='0'
getpwent_r_proto='0'
getpwnam_r_proto='0'
getpwuid_r_proto='0'
getservbyname_r_proto='0'
getservbyport_r_proto='0'
getservent_r_proto='0'
getspnam_r_proto='0'
gidformat='"lu"'
gidsign='1'
gidsize='4'
gidtype='gid_t'
glibpth=' /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/shlib /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/lib /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/386 /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/lib/386 /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/ccs/lib /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/ucblib /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/local/lib'
gmake='gmake'
gmtime_r_proto='0'
gnulibc_version=''
grep='grep'
groupcat='cat /etc/group'
groupstype='gid_t'
gzip='gzip'
h_fcntl='false'
h_sysfile='true'
hint='previous'
hostcat='cat /etc/hosts'
hostgenerate='/Users/mbp0015/Desktop/perl-5.30.0/host/generate_uudmap'
hostosname='darwin'
hostperl='/Users/mbp0015/Desktop/perl-5.30.0/host/miniperl'
html1dir=' '
html1direxp=''
html3dir=' '
html3direxp=''
i16size='2'
i16type='short'
i32size='4'
i32type='long'
i64size='8'
i64type='long long'
i8size='1'
i8type='signed char'
i_arpainet='define'
i_bfd='undef'
i_bsdioctl=''
i_crypt='undef'
i_db='undef'
i_dbm='undef'
i_dirent='define'
i_dlfcn='define'
i_execinfo='undef'
i_fcntl='undef'
i_fenv='define'
i_fp='undef'
i_fp_class='undef'
i_gdbm='undef'
i_gdbm_ndbm='undef'
i_gdbmndbm='undef'
i_grp='define'
i_ieeefp='undef'
i_inttypes='define'
i_langinfo='define'
i_libutil='undef'
i_locale='undef'
i_machcthr='undef'
i_malloc='define'
i_mallocmalloc='undef'
i_mntent='define'
i_ndbm='undef'
i_netdb='define'
i_neterrno='undef'
i_netinettcp='define'
i_niin='define'
i_poll='define'
i_prot='undef'
i_pthread='define'
i_pwd='define'
i_quadmath='undef'
i_rpcsvcdbm='undef'
i_sgtty='undef'
i_shadow='undef'
i_socks='undef'
i_stdbool='define'
i_stdint='define'
i_stdlib='define'
i_sunmath='undef'
i_sysaccess='undef'
i_sysdir='undef'
i_sysfile='define'
i_sysfilio='undef'
i_sysin='undef'
i_sysioctl='define'
i_syslog='define'
i_sysmman='define'
i_sysmode='undef'
i_sysmount='define'
i_sysndir='undef'
i_sysparam='define'
i_syspoll='define'
i_sysresrc='define'
i_syssecrt='undef'
i_sysselct='define'
i_syssockio='undef'
i_sysstat='define'
i_sysstatfs='define'
i_sysstatvfs='define'
i_systime='define'
i_systimek='undef'
i_systimes='define'
i_systypes='define'
i_sysuio='define'
i_sysun='define'
i_sysutsname='define'
i_sysvfs='define'
i_syswait='define'
i_termio='undef'
i_termios='define'
i_time='define'
i_unistd='define'
i_ustat='undef'
i_utime='define'
i_vfork='undef'
i_wchar='define'
i_wctype='define'
i_xlocale='define'
ignore_versioned_solibs='y'
inc_version_list=' '
inc_version_list_init='0'
incpath=''
incpth='/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/../sysroot/usr/local/include /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/8.0.7/include /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/../sysroot/usr/include/i686-linux-android /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/../sysroot/usr/include /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/../sysroot/usr/local/include /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/8.0.7/include /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/../sysroot/usr/include/i686-linux-android /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/../sysroot/usr/include'
inews=''
initialinstalllocation='.../'
installarchlib='.../../lib/perl5/5.30.0/linux-android'
installbin='.../'
installhtml1dir=''
installhtml3dir=''
installman1dir='.../../man/man1'
installman3dir='.../../man/man3'
installprefix='/usr/local'
installprefixexp='.../..'
installprivlib='.../../lib/perl5/5.30.0'
installscript='.../'
installsitearch='.../../lib/perl5/site_perl/5.30.0/linux-android'
installsitebin='.../../bin'
installsitehtml1dir=''
installsitehtml3dir=''
installsitelib='.../../lib/perl5/site_perl/5.30.0'
installsiteman1dir='.../../man/man1'
installsiteman3dir='.../../man/man3'
installsitescript='.../../bin'
installstyle='lib/perl5'
installusrbinperl='undef'
installvendorarch=''
installvendorbin=''
installvendorhtml1dir=''
installvendorhtml3dir=''
installvendorlib=''
installvendorman1dir=''
installvendorman3dir=''
installvendorscript=''
intsize='4'
issymlink='test -h'
ivdformat='"ld"'
ivsize='4'
ivtype='long'
known_extensions='Amiga/ARexx Amiga/Exec Archive/Tar Attribute/Handlers AutoLoader B CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Compress/Raw/Bzip2 Compress/Raw/Zlib Config/Perl/V Cwd DB_File Data/Dumper Devel/PPPort Devel/Peek Devel/SelfStubber Digest Digest/MD5 Digest/SHA Dumpvalue Encode Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS Fcntl File/DosGlob File/Fetch File/Find File/Glob File/Path File/Temp FileCache Filter/Simple Filter/Util/Call GDBM_File Getopt/Long HTTP/Tiny Hash/Util Hash/Util/FieldHash I18N/Collate I18N/LangTags I18N/Langinfo IO IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 IPC/SysV JSON/PP List/Util Locale/Maketext Locale/Maketext/Simple MIME/Base64 Math/BigInt Math/BigInt/FastCalc Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NDBM_File NEXT Net/Ping ODBM_File Opcode POSIX Params/Check Perl/OSType PerlIO/encoding PerlIO/mmap PerlIO/scalar PerlIO/via PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Parser Pod/Perldoc Pod/Simple Pod/Usage SDBM_File Safe Search/Dict SelfLoader Socket Storable Sys/Hostname Sys/Syslog Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Hash/NamedCapture Tie/Memoize Tie/RefHash Time/HiRes Time/Local Time/Piece Unicode/Collate Unicode/Normalize VMS/DCLsym VMS/Filespec VMS/Stdio Win32 Win32API/File Win32CORE XS/APItest XS/Typemap XSLoader attributes autodie autouse base bignum constant encoding/warnings experimental if lib libnet mro parent perlfaq podlators re threads threads/shared version '
ksh=''
ld='/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android21-clang'
ld_can_script='define'
lddlflags='-shared -O2 --sysroot /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot -fstack-protector-strong --sysroot /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot'
ldflags=' -fstack-protector-strong'
ldflags_uselargefiles=''
ldlibpthname='LD_LIBRARY_PATH'
less='less'
lib_ext='.a'
libc='/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/21/libc.so'
libperl='libperl.a'
libpth='/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/21 /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/8.0.7/lib /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/../sysroot/usr/include/i686-linux-android /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/../sysroot/usr/lib /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.0.0 /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib /system/lib /vendor/lib /system/lib /vendor/lib /system/lib /vendor/lib /system/lib /vendor/lib'
libs='-ldl -lm -lc'
libsdirs=''
libsfiles=''
libsfound=''
libspath=' /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/i686-linux-android/21 /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/lib64/clang/8.0.7/lib /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/../sysroot/usr/include/i686-linux-android /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/../sysroot/usr/lib /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.0.0 /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib'
libswanted='cl pthread socket inet nsl gdbm dbm db malloc dl ld sun m crypt sec util c cposix posix ucb BSD m gdbm_compat'
libswanted_uselargefiles=''
line=''
lint=''
lkflags=''
ln='ln'
lns='/bin/ln -s'
localtime_r_proto='0'
locincpth=' '
loclibpth=' '
longdblinfbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x7f'
longdblkind='0'
longdblmantbits='52'
longdblnanbytes='0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff'
longdblsize='8'
longlongsize='8'
longsize='4'
lp=''
lpr=''
ls='ls'
lseeksize='8'
lseektype='off_t'
mail=''
mailx=''
make='make'
make_set_make='#'
mallocobj=''
mallocsrc=''
malloctype='void *'
man1dir='.../../man/man1'
man1direxp='.../../man/man1'
man1ext='1'
man3dir='.../../man/man3'
man3direxp='.../../man/man3'
man3ext='3'
mips_type=''
mistrustnm=''
mkdir='mkdir'
mmaptype='void *'
modetype='mode_t'
more='more'
multiarch='undef'
mv=''
myarchname='i386-android'
mydomain='.local'
myhostname='mbp0015'
myuname='darwin mbp0015.local 19.0.0 darwin kernel version 19.0.0: thu oct 17 16:17:15 pdt 2019; root:xnu-6153.41.3~29release_x86_64 x86_64 '
n=''
need_va_copy='undef'
netdb_hlen_type='int'
netdb_host_type='const void *'
netdb_name_type='const char *'
netdb_net_type='in_addr_t'
nm='nm'
nm_opt=''
nm_so_opt=''
nonxs_ext='Archive/Tar Attribute/Handlers AutoLoader CPAN CPAN/Meta CPAN/Meta/Requirements CPAN/Meta/YAML Carp Config/Perl/V Devel/SelfStubber Digest Dumpvalue Env Errno Exporter ExtUtils/CBuilder ExtUtils/Constant ExtUtils/Install ExtUtils/MakeMaker ExtUtils/Manifest ExtUtils/Miniperl ExtUtils/ParseXS File/Fetch File/Find File/Path File/Temp FileCache Filter/Simple Getopt/Long HTTP/Tiny I18N/Collate I18N/LangTags IO/Compress IO/Socket/IP IO/Zlib IPC/Cmd IPC/Open3 JSON/PP Locale/Maketext Locale/Maketext/Simple Math/BigInt Math/BigRat Math/Complex Memoize Module/CoreList Module/Load Module/Load/Conditional Module/Loaded Module/Metadata NEXT Net/Ping Params/Check Perl/OSType PerlIO/via/QuotedPrint Pod/Checker Pod/Escapes Pod/Functions Pod/Html Pod/Parser Pod/Perldoc Pod/Simple Pod/Usage Safe Search/Dict SelfLoader Term/ANSIColor Term/Cap Term/Complete Term/ReadLine Test Test/Harness Test/Simple Text/Abbrev Text/Balanced Text/ParseWords Text/Tabs Thread/Queue Thread/Semaphore Tie/File Tie/Memoize Tie/RefHash Time/Local XSLoader autodie autouse base bignum constant encoding/warnings experimental if lib libnet parent perlfaq podlators version'
nroff='nroff'
nvEUformat='"E"'
nvFUformat='"F"'
nvGUformat='"G"'
nv_overflows_integers_at='256.0*256.0*256.0*256.0*256.0*256.0*2.0*2.0*2.0*2.0*2.0'
nv_preserves_uv_bits='32'
nveformat='"e"'
nvfformat='"f"'
nvgformat='"g"'
nvmantbits='52'
nvsize='8'
nvtype='double'
o_nonblock='O_NONBLOCK'
obj_ext='.o'
old_pthread_create_joinable=''
optimize='-O2'
orderlib='false'
osname='android'
osvers='8.1.0'
otherlibdirs=' '
package='perl5'
pager='/usr/bin/less -R'
passcat='cat /etc/passwd'
patchlevel='30'
path_sep=':'
perl5='/usr/bin/perl'
perl='perl'
perl_patchlevel=''
perl_static_inline='static __inline__'
perladmin='mbp0015@mbp0015.local'
perllibs='-ldl -lm -lc'
perlpath='/usr/local/bin/perl'
pg='pg'
phostname='hostname'
pidtype='pid_t'
plibpth='/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/10.0.0'
pmake=''
pr=''
prefix='.../..'
prefixexp='.../..'
privlib='.../../lib/perl5/5.30.0'
privlibexp='.../../lib/perl5/5.30.0'
procselfexe='"/proc/self/exe"'
ptrsize='4'
quadkind='3'
quadtype='long long'
randbits='48'
randfunc='Perl_drand48'
random_r_proto='0'
randseedtype='U32'
ranlib='/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/i686-linux-android-ranlib'
rd_nodata='-1'
readdir64_r_proto='0'
readdir_r_proto='0'
revision='5'
rm='rm'
rm_try='/bin/rm -f try try a.out .out try.[cho] try..o core core.try* try.core*'
rmail=''
run='/Users/mbp0015/Desktop/perl-5.30.0/Cross/run-adb-shell'
runnm='true'
sGMTIME_max='2147483647'
sGMTIME_min='-2147483648'
sLOCALTIME_max='2147483647'
sLOCALTIME_min='-2147483648'
sPRIEUldbl='"E"'
sPRIFUldbl='"F"'
sPRIGUldbl='"G"'
sPRIXU64='"llX"'
sPRId64='"lld"'
sPRIeldbl='"e"'
sPRIfldbl='"f"'
sPRIgldbl='"g"'
sPRIi64='"lli"'
sPRIo64='"llo"'
sPRIu64='"llu"'
sPRIx64='"llx"'
sSCNfldbl='"f"'
sched_yield='sched_yield()'
scriptdir='.../'
scriptdirexp='.../'
sed='sed'
seedfunc='Perl_drand48_init'
selectminbits='32'
selecttype='fd_set *'
sendmail=''
setgrent_r_proto='0'
sethostent_r_proto='0'
setlocale_r_proto='0'
setnetent_r_proto='0'
setprotoent_r_proto='0'
setpwent_r_proto='0'
setservent_r_proto='0'
sh='/bin/sh'
shar=''
sharpbang='#!'
shmattype=''
shortsize='2'
shrpenv=''
shsharp='true'
sig_count='65'
sig_name='ZERO HUP INT QUIT ILL TRAP ABRT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS NUM32 NUM33 NUM34 NUM35 RTMIN NUM37 NUM38 NUM39 NUM40 NUM41 NUM42 NUM43 NUM44 NUM45 NUM46 NUM47 NUM48 NUM49 NUM50 NUM51 NUM52 NUM53 NUM54 NUM55 NUM56 NUM57 NUM58 NUM59 NUM60 NUM61 NUM62 NUM63 RTMAX IOT POLL UNUSED '
sig_name_init='"ZERO", "HUP", "INT", "QUIT", "ILL", "TRAP", "ABRT", "BUS", "FPE", "KILL", "USR1", "SEGV", "USR2", "PIPE", "ALRM", "TERM", "STKFLT", "CHLD", "CONT", "STOP", "TSTP", "TTIN", "TTOU", "URG", "XCPU", "XFSZ", "VTALRM", "PROF", "WINCH", "IO", "PWR", "SYS", "NUM32", "NUM33", "NUM34", "NUM35", "RTMIN", "NUM37", "NUM38", "NUM39", "NUM40", "NUM41", "NUM42", "NUM43", "NUM44", "NUM45", "NUM46", "NUM47", "NUM48", "NUM49", "NUM50", "NUM51", "NUM52", "NUM53", "NUM54", "NUM55", "NUM56", "NUM57", "NUM58", "NUM59", "NUM60", "NUM61", "NUM62", "NUM63", "RTMAX", "IOT", "POLL", "UNUSED", 0'
sig_num='0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 6 29 31 '
sig_num_init='0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 29, 31, 0'
sig_size='68'
signal_t='void'
sitearch='.../../lib/perl5/site_perl/5.30.0/linux-android'
sitearchexp='.../../lib/perl5/site_perl/5.30.0/linux-android'
sitebin='.../../bin'
sitebinexp='.../../bin'
sitehtml1dir=''
sitehtml1direxp=''
sitehtml3dir=''
sitehtml3direxp=''
sitelib='.../../lib/perl5/site_perl/5.30.0'
sitelib_stem='.../../lib/perl5/site_perl'
sitelibexp='.../../lib/perl5/site_perl/5.30.0'
siteman1dir='.../../man/man1'
siteman1direxp='.../../man/man1'
siteman3dir='.../../man/man3'
siteman3direxp='.../../man/man3'
siteprefix='.../..'
siteprefixexp='.../..'
sitescript='.../../bin'
sitescriptexp='.../../bin'
sizesize='4'
sizetype='size_t'
sleep=''
smail=''
so='so'
sockethdr=''
socketlib=''
socksizetype='socklen_t'
sort='sort'
spackage='Perl5'
spitshell='cat'
srand48_r_proto='0'
srandom_r_proto='0'
src='/Users/mbp0015/Desktop/perl-5.30.0'
ssizetype='ssize_t'
st_ino_sign='1'
st_ino_size='8'
startperl='#!/usr/local/bin/perl'
startsh='#!/bin/sh'
static_ext=' '
stdchar='char'
stdio_base='((fp)->_base)'
stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)'
stdio_cnt='((fp)->_cnt)'
stdio_filbuf=''
stdio_ptr='((fp)->_ptr)'
stdio_stream_array='__sF'
strerror_r_proto='0'
submit=''
subversion='0'
sysman='/usr/share/man/man1'
sysroot='/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot'
tail=''
tar=''
targetarch='i686-linux-android'
targetdir='/data/local/tmp/perl'
targetenv=''
targethost='emulator-5554'
targetmkdir='/Users/mbp0015/Desktop/perl-5.30.0/Cross/mkdir'
targetport='22'
targetsh='/system/bin/sh'
tbl=''
tee=''
test='test'
timeincl='/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/../sysroot/usr/include/sys/time.h '
timetype='time_t'
tmpnam_r_proto='0'
to='/Users/mbp0015/Desktop/perl-5.30.0/Cross/to-adb-push'
touch='touch'
tr='tr'
trnl='\n'
troff=''
ttyname_r_proto='0'
u16size='2'
u16type='unsigned short'
u32size='4'
u32type='unsigned long'
u64size='8'
u64type='unsigned long long'
u8size='1'
u8type='unsigned char'
uidformat='"lu"'
uidsign='1'
uidsize='4'
uidtype='uid_t'
uname='uname'
uniq='uniq'
uquadtype='unsigned long long'
use5005threads='undef'
use64bitall='undef'
use64bitint='undef'
usecbacktrace='undef'
usecrosscompile='define'
usedevel='undef'
usedl='define'
usedtrace='undef'
usefaststdio='undef'
useithreads='undef'
usekernprocpathname='undef'
uselanginfo='true'
uselargefiles='define'
uselongdouble='undef'
usemallocwrap='define'
usemorebits='undef'
usemultiplicity='undef'
usemymalloc='n'
usenm='true'
usensgetexecutablepath='undef'
useopcode='true'
useperlio='define'
useposix='true'
usequadmath='undef'
usereentrant='undef'
userelocatableinc='define'
useshrplib='false'
usesitecustomize='undef'
usesocks='undef'
usethreads='undef'
usevendorprefix='undef'
useversionedarchname='undef'
usevfork='false'
usrinc='/Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/include'
uuname=''
uvXUformat='"lX"'
uvoformat='"lo"'
uvsize='4'
uvtype='unsigned long'
uvuformat='"lu"'
uvxformat='"lx"'
vendorarch=''
vendorarchexp=''
vendorbin=''
vendorbinexp=''
vendorhtml1dir=' '
vendorhtml1direxp=''
vendorhtml3dir=' '
vendorhtml3direxp=''
vendorlib=''
vendorlib_stem=''
vendorlibexp=''
vendorman1dir=' '
vendorman1direxp=''
vendorman3dir=' '
vendorman3direxp=''
vendorprefix=''
vendorprefixexp=''
vendorscript=''
vendorscriptexp=''
version='5.30.0'
version_patchlevel_string='version 30 subversion 0'
versiononly='undef'
vi=''
xlibpth=' /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/usr/lib/386 /Users/mbp0015/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot/lib/386'
yacc='yacc'
yaccflags=''
zcat=''
zip='zip'
PERL_REVISION=5
PERL_VERSION=30
PERL_SUBVERSION=0
PERL_API_REVISION=5
PERL_API_VERSION=30
PERL_API_SUBVERSION=0
PERL_PATCHLEVEL=''
PERL_CONFIG_SH=true
: Variables propagated from previous config.sh file.
android_stub='FIX|Android'
android_warn=''
args=''
doexit=''
env=''
exe=''
result_status=''
targetfrom='adb-pull'
targetrun='adb'
targetto='adb-push'

@richardleach
Copy link
Contributor

Noting for comparison that the most obvious output from the test failures I got for the last build were failures to find just 3 symbols, specifically:

  • cuserid
    `Can't load '../../lib/auto/POSIX/PL_POSIX.so' for module POSIX: dlopen failed: cannot locate symbol 'cuserid' referenced by "/data/local/tmp/perl/lib/auto/POSIX/PL_POSIX.so"... at ./../.lib/XSLoader.pm line 98
  • Perl_my_strlcpy
    Can't load 'lib/auto/Cwd/PL_Cwd.so' for module Cwd: dlopen failed: cannot locate symbol "Perl_my_strlcpy" referenced by "/data/local/tmp/perl/lib/auto/Cwd/PL_Cwd.so"... at lib/DynaLoader.pm line 218
    Can't load '../lib/auto/File/Glob/PL_File__Glob.so' for module File::Glob: dlopen failed: cannot locate symbol "Perl_my_strlcpy" referenced by "/data/local/tmp/perl/lib/auto/File/Glob/PL_File__Glob.so"... at lib/DynaLoader.pm line 218
  • sockatmark
    Can't load '../../lib/auto/IO/PL_IO.so' for module IO: dlopen failed: cannot locate symbol "sockatmark" referenced by "/data/local/tmp/perl/lib/auto/IO/PL_IO.so"... at ../../lib/DynaLoader.pm 218

The latter function is explicitly marked as either obsolete or explicitly disallowed by SELinux (see https://android.googlesource.com/platform/bionic/+/master/docs/status.md). The full list of POSIX functions listed on that page is:

Missing functions are either obsolete or explicitly disallowed by SELinux:

  • a64l/l64a
  • confstr
  • crypt/encrypt/setkey
  • gethostid
  • shm_open/shm_unlink
  • sockatmark

Missing functionality:

  • <aio.h>
  • <wordexp.h>
  • Thread cancellation (pthread_cancel).

That page is also has a useful list of the libc symbols introduced with each Android API level.

@khwilliamson
Copy link
Contributor

Perl furnishes a my_strlcpy if the system doesn't already have strlcpy(). Configure should have set this in config.h under HAS_STRLCPY.

@khwilliamson
Copy link
Contributor

Looking a little deeper, I see that config.sh indicates that strlcpy is present. In that case, perl doesn't define my_strlcpy. I looked at Cwd. It is wanting my_strlcpy always. And it gets it from Devel::PPPort. I looked at that code, and it looks right to me. So I don't know what is happening. I think a .i file might help

@kingvhit
Copy link
Author

I don't have many experts for some of the above links, but I will learn it from now on.
Ok, back to this topic, I have built binary for some of the arch and put it into the storage of android emulator device (/data/local/tmp/perl), as bellow is a set of 2 arches with building successful

https://drive.google.com/file/d/1SeUU6sxzNItMsIohh-Dk_6oPUk4y3Atr/view?usp=sharing

try to use by remote into a shell of android device based adb with commands.

adb shell
cd /daa/local/tmp/perl
perl -v 

This is finally working, but still not test with the Runtime.exe() method on Android Programing.

@richardleach
Copy link
Contributor

@khw Happy to provide a .i file, but need a dummies guide - which .c file(s) do you want it for?

It looks like Configure is setting the values pertaining to these 3 symbols correctly in config.sh:

  • strlcpy is definitely present in Android's libc and d_strlcpy='define'
  • Android's stdio.h doesn't seem to contain cuserid, but it's deprecated anyway, so that's not surprising: d_cuserid='undef'.
  • As mentioned earlier, Android deliberately omits sockatmark: d_sockatmark='undef' and d_sockatmarkproto='undef'

@richardleach
Copy link
Contributor

@khw - still happy to provide a .i file, but need a dummies guide - which .c file(s) do you want it for?

@kingvhit - how are you getting on? Are you getting particular errors when trying runtime.getruntime().exec() ?

I built a basic Android app in Android Studio and was getting Permission Denied errors when trying to run Perl from /data/local/tmp/perl. I think this is because I was targeting the latest API version and Android 10, when the stricter SELinux policy puts more limitations on the locations from which an app can run native executables. I'll try targetting an older Android combo when less busy.

Discussions I found useful included:

If this seems to be your main problem now, sounds like more of a general Android development issue than something directly relating to Perl.

@kingvhit
Copy link
Author

kingvhit commented Dec 2, 2019

@richardleach: I can run Runtime.exec() right now but with the target SDK 28 and older.

When switching to 29 the Permission denied is thrown out, take a look at your link and I think this is a behaviour change from Google. You're right.

@khwilliamson
Copy link
Contributor

khwilliamson commented Dec 2, 2019 via email

@richardleach
Copy link
Contributor

Thanks @khw. Attached.
Cwd.i.txt

@richardleach
Copy link
Contributor

  • khw noted on IRC that Perl_my_strlcpy doesn't feature in that Cwd.i
  • just using strings, it doesn't seem to appear in the Cwd.o or Cwd.bs files on the Linux build host
  • but it is present in PL_Cwd.so on the Android Virtual Device target

So introduced from somewhere at link time?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants