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 make
this 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 2
How 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.