Cross compile Lua library luv
-
I'm trying to cross compile luv with the help of the cross compile tutorial. I set the environment up on a virtual machine and git cloned the luv repo to ~/openwrt/custom/luv directory on this VM.
Then I added a openwrt.cmake file with this content (as building this repo depends on cmake)
# this one is important SET(CMAKE_SYSTEM_NAME AR7xxx) #this one not so much SET(CMAKE_SYSTEM_VERSION 1) # specify the cross compiler SET(CMAKE_C_COMPILER /home/vagrant/openwrt/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin/mips-openwrt-linux-gcc) SET(CMAKE_CXX_COMPILER /home/vagrant/openwrt/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/bin/mips-openwrt-linux-g++) # where is the target environment SET(CMAKE_FIND_ROOT_PATH /home/vagrant/openwrt/target/linux/ar71xx) # search for programs in the build host directories SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) # for libraries and headers in the target directories SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)and in order to source the previous settings to cmake I added this line to the luv repos Makefile
-DCMAKE_TOOLCHAIN_FILE=~/openwrt/openwrt.cmake \I run make as follows (I intend to install lua and libuv separately (these can be simply installed with opkg) so the make flags are intended to link to the deps)
$ WITH_LUA_ENGINE=Lua LUA_BUILD_TYPE=System WITH_SHARED_LIBUV=ON BUILD_MODULE=OFF BUILD_SHARED_LIBS=ON STAGING_DIR=./staging_dir makethis however results in :
cmake --build build --config Debug make[1]: Entering directory '/home/vagrant/openwrt/custom/luv/build' make[2]: Entering directory '/home/vagrant/openwrt/custom/luv/build' make[3]: Entering directory '/home/vagrant/openwrt/custom/luv/build' make[3]: Leaving directory '/home/vagrant/openwrt/custom/luv/build' [ 92%] Built target uv make[3]: Entering directory '/home/vagrant/openwrt/custom/luv/build' make[3]: Leaving directory '/home/vagrant/openwrt/custom/luv/build' make[3]: Entering directory '/home/vagrant/openwrt/custom/luv/build' [ 96%] Building C object CMakeFiles/luv.dir/src/luv.c.obj In file included from /home/vagrant/openwrt/custom/luv/src/luv.c:18:0: /home/vagrant/openwrt/custom/luv/src/luv.h:19:17: fatal error: lua.h: No such file or directory #include <lua.h> ^ compilation terminated. CMakeFiles/luv.dir/build.make:62: recipe for target 'CMakeFiles/luv.dir/src/luv.c.obj' failed make[3]: *** [CMakeFiles/luv.dir/src/luv.c.obj] Error 1 make[3]: Leaving directory '/home/vagrant/openwrt/custom/luv/build' CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/luv.dir/all' failed make[2]: *** [CMakeFiles/luv.dir/all] Error 2 make[2]: Leaving directory '/home/vagrant/openwrt/custom/luv/build' Makefile:127: recipe for target 'all' failed make[1]: *** [all] Error 2 make[1]: Leaving directory '/home/vagrant/openwrt/custom/luv/build' Makefile:40: recipe for target 'luv' failed make: *** [luv] Error 2How can I make sure lua is available in the cross compile environment? I am quite new to openwrt, lua and cross compiling in general so I might be missing something obvious.