[ 
https://issues.apache.org/jira/browse/THRIFT-2127?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14085315#comment-14085315
 ] 

Robert J. Gebis commented on THRIFT-2127:
-----------------------------------------

I am using todays git clone. Trying to build it on Mac using 

./configure CPPFLAGS='-static' CFLAGS='-static' LDFLAGS='-static' 
--host=arm-linux-musleabihf --disable-shared --enable-zlib=yes 
--enable-openssl=yes --enable-libevent=yes --enable-boost=yes 
-with-zlib=/opt/cross/zlib --with-openssl=/opt/cross/openssl 
--with-libevent=/opt/cross/libevent --with-boost=/opt/cross/boost --with-cpp 
--with-python --with-java --without-qt4 --without-csharp --without-erlang 
--without-perl --without-php --without-php_extension --without-ruby 
--without-haskell --without-go --without-d --prefix=/opt/cross/thrift-0.9.2

After applying above ax_lib_zlib.m4 and ax_lib_event.m4 I was able to run 
./bootstrap and above ./configure

checking for BN_init in -lcrypto... no
configure: error: "Error: libcrypto required."

config.log shows that there is no -L path passed to ld to find it

To fixed it for now I added -I/opt/cross/openssl/include and 
-L/opt/cross/openssl/lib to CPPFLAGS, CFLAGS and LDFLAGS

This moved me little further and got another error when checking for checking 
for SSL_ctrl in -lssl
Looking in config.log it looks like linker is complaining about missing -lz 
since I am building with zlib

I added missing -lz to configure.ac 

AC_CHECK_LIB(crypto,
    BN_init,
    [AC_CHECK_LIB(ssl,
        SSL_ctrl,
        [LIBS="-lssl -lcrypto $LIBS"],
        [AC_MSG_ERROR(["Error: libssl required"])],
        -lcrypto -lz $LIBS
    )],
    [AC_MSG_ERROR(["Error: libcrypto required."])]
)
fi

Looks like $LIBS should include -lz when zlib enabled

Now with all above changes I was able to finally run configure. Here is full 
parameter list

./configure CPPFLAGS='-static -I/opt/cross/openssl/include 
-I/opt/cross/zlib/include -I/opt/cross/libevent/include' CFLAGS='-static 
-I/opt/cross/openssl/include -I/opt/cross/zlib/include 
-I/opt/cross/libevent/include' LDFLAGS='-static -L/opt/cross/openssl/lib 
-L/opt/cross/zlib/lib -L/opt/cross/libevent/lib' --host=arm-linux-musleabihf 
--disable-shared --enable-zlib=yes --enable-openssl=yes --enable-libevent=yes 
--enable-boost=yes -with-zlib=/opt/cross/zlib --with-openssl=/opt/cross/openssl 
--with-libevent=/opt/cross/libevent --with-boost=/opt/cross/boost --with-cpp 
--with-python --with-java --without-qt4 --without-csharp --without-erlang 
--without-perl --without-php --without-php_extension --without-ruby 
--without-haskell --without-go --without-d --prefix=/opt/cross/thrift-0.9.2

Now when running make

I get following errors. Looking into it now

make
/Library/Developer/CommandLineTools/usr/bin/make  all-recursive
Making all in compiler/cpp
\
         \
        /bin/sh ../../ylwrap `test -f 'src/thrifty.yy' || echo 
'./'`src/thrifty.yy y.tab.c thrifty.cc y.tab.h `echo thrifty.cc | sed -e 
s/cc$/hh/ -e s/cpp$/hpp/ -e s/cxx$/hxx/ -e s/c++$/h++/ -e s/c$/h/` y.output 
thrifty.output -- bison -y -d
updating thrifty.hh
/Library/Developer/CommandLineTools/usr/bin/make  all-am
/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-g++ -DHAVE_CONFIG_H 
-I. -I../.. -I../../lib/cpp/src/thrift  -I./src -static 
-I/opt/cross/openssl/include -I/opt/cross/zlib/include 
-I/opt/cross/libevent/include -Wall -Wno-sign-compare -Wno-unused -std=c++11 
-MT libparse_a-thrifty.o -MD -MP -MF .deps/libparse_a-thrifty.Tpo -c -o 
libparse_a-thrifty.o `test -f 'thrifty.cc' || echo './'`thrifty.cc
mv -f .deps/libparse_a-thrifty.Tpo .deps/libparse_a-thrifty.Po
\
         \
        /bin/sh ../../ylwrap `test -f 'src/thriftl.ll' || echo 
'./'`src/thriftl.ll lex.yy.c thriftl.cc -- flex
/opt/cross/arm-linux-musleabihf/bin/arm-linux-musleabihf-g++ -DHAVE_CONFIG_H 
-I. -I../.. -I../../lib/cpp/src/thrift  -I./src -static 
-I/opt/cross/openssl/include -I/opt/cross/zlib/include 
-I/opt/cross/libevent/include -Wall -Wno-sign-compare -Wno-unused -std=c++11 
-MT libparse_a-thriftl.o -MD -MP -MF .deps/libparse_a-thriftl.Tpo -c -o 
libparse_a-thriftl.o `test -f 'thriftl.cc' || echo './'`thriftl.cc
thriftl.cc: In function 'void* yyalloc(yy_size_t)':
thriftl.cc:3800:31: error: 'rpl_malloc' was not declared in this scope
  return (void *) malloc( size );
                               ^
thriftl.cc: In function 'void* yyrealloc(void*, yy_size_t)':
thriftl.cc:3812:46: error: 'rpl_realloc' was not declared in this scope
  return (void *) realloc( (char *) ptr, size );
                                              ^
thriftl.cc: In function 'void* yyalloc(yy_size_t)':
thriftl.cc:3801:1: warning: control reaches end of non-void function 
[-Wreturn-type]
 }
 ^
thriftl.cc: In function 'void* yyrealloc(void*, yy_size_t)':
thriftl.cc:3813:1: warning: control reaches end of non-void function 
[-Wreturn-type]
 }
 ^
make[3]: *** [libparse_a-thriftl.o] Error 1
make[2]: *** [all] Error 2
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2


> Autoconf scripting does not properly account for cross-compile
> --------------------------------------------------------------
>
>                 Key: THRIFT-2127
>                 URL: https://issues.apache.org/jira/browse/THRIFT-2127
>             Project: Thrift
>          Issue Type: Bug
>          Components: Build Process
>    Affects Versions: 0.9
>         Environment: Ubuntu 12.04 running OpenEmbedded Dylan
>            Reporter: Frank Earl
>            Assignee: Jake Farrell
>         Attachments: fix_autoconf_crosscompile_leaks.patch
>
>
> Trying to get Thrift to Cross-compile within OpenEmbedded to get an ARM based 
> build combined with a full-on SDK for our embedded target.  So far, I'm 
> getting this:
> configure:16347: checking for boostlib >= 1.40.0
> configure:16401: arm-poky-linux-gnueabi-g++  -march=armv7-a -mthumb-interwork 
> -mfloat-abi=softfp -mfpu=neon 
> --sysroot=/home/fearl/git/dc_image_build/poky/build/tmp/sysroots/beaglebone 
> -c -O2 -pipe -g -feliminate-unused-debug-types -fpermissive 
> -fvisibility-inlines-hidden  -I/usr/include conftest.cpp >&5
> cc1plus: warning: include location "/usr/include" is unsafe for 
> cross-compilation [-Wpoison-system-directories]
> configure:16401: $? = 0
> This means it's grabbing from outside the sysroot- which can present bad 
> results on the cross-compile pass.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to