Hello Kenton,
Thanks for the quick reply. I should have caught this one.
A bit of background may help.
We are cross compiling capnproto-c++-0.4.1 for an OpenEmbedded project using bitbake
I have encountered a couple more issues.
1. The "make -j6 check" is failing as I believe it is attempting to run an arm version on an x86 platform.
export CAPNP=/usr/local/bin/capnp
./configure --with-external-capnp --build=x86 --host=armv7 --target='arm-*-eabi' --prefix=${WORKDIR}/git/expanded-prereqs
make -j6 check
make install
With these build commands, I get a couple of test failures and I have confirmed that these are ARM executables
FAIL: capnp-evolution-test
FAIL: capnp-test
I do not see a way around this except of skipping the bild step
2. This issue is much more perplexing to me. I can skip the check and just run make
export CAPNP=/usr/local/bin/capnp
./configure --with-external-capnp --build=x86 --host=armv7 --target='arm-*-eabi' --prefix=${WORKDIR}/git/expanded-
I do not see any warnings or errors on the builds and I end up with valid static libraries with valid object files. I have validated them by moving them to an ARM system and inspecting them with 'nm'
The problem occurs when attempting to link using libkj.a and libcapnp.a.
Here is the command attempting to link these libraries to our application.
arm-poky-linux-gnueabi-g++ -march=armv7-a -mthumb-interwork -mfloat-abi=softfp -mfpu=neon --sysroot=/home/walt/workspace/wwrelay-rootfs/yocto/build/tmp/sysroots/wigwagrelay -g3 -O0 -D_USING_GLIBC_ -\
std=c++11 -DIZ_LINUX -D_TW_DEBUG -DZDB_JSONPARSER_DEBUG -DZDB_DEBUG_JSON -DZDB_DEBUG_DATATREE -I. -Iexpanded-prereqs/include -D__DEBUG -I/usr/lib/glib-2.0/include -I/usr/include/c++/4.7 -Itests -o ./test\
-ddb-rpc ddb-index.o ddb-thread-pool.o ddb-controller.o ddb-byte-buffer.o bucketipc.o dbstore-mdb.o ddb-rpc.o tests/test-ddb-rpc.o -lkj -lkj-async -lcapnp -lcapnp-rpc -luv -llmdb -luuid -lrt -lgtest -lja\
nsson -licuuc -licudata -licutu -licui18n -lpthread -lTW -Lexpanded-prereqs/lib
And one of the errors that are generated is..
/home/walt/workspace/wwrelay-rootfs/yocto/build/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/devicedb-ng/1.0+gitAUTOINC+80ccda0174-r1/git/expanded-prereqs/include/capnp/layout.h:232: undefined reference\
to `capnp::_::StructSize_<devicedb::DBData>::value'
| /home/walt/workspace/wwrelay-rootfs/yocto/build/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/devicedb-ng/1.-prereqs/include/capnp/layout.h:232: undefined reference to `capnp::_::StructSize_<devicedb::DB\
Leaf>::value'
I have built this for an x86 platform an compared the command line options as well as the contents/symbols of the produced object files and libraries.
And one more error listed here to be complete.
| expanded-prereqs/lib/libcapnp.a(arena.o): In function `~MutexGuarded':
| /home/walt/workspace/wwrelay-rootfs/yocto/build/tmp/work/armv7a-vfp-neon-poky-linux-gnueabi/devicedb-ng/1.0+gitAUTOINC+80ccda0174-r1/git/prereqs/common/capnproto-
| c++-0.4.1/c++/./src/kj/mutex.h:210: undefined reference to `kj::_::Mutex::~Mutex()'
any help, ideas or pointers would be greatly appreciated.
Thanks,
--Walt