Dear Mentors,

I am trying to package a small library that will be a dependency for a larger 
application. The thing is the library will only be a dependency if the 
application is built on arm64. The CMake file has the lines:
if ("arm64" IN_LIST ARCHITECTURE)
add_subdirectory(oaknut EXCLUDE_FROM_ALL)endif()

Oaknut is the library I'm trying to build. The problem stems from the fact that 
the tarball depends on the catch2, a package that contains Catch2WithMain.a. 
Oaknut won't build at all when I try to compile natively. When I try to cross 
compile to arm64 on my amd64 machine it gives me errors about relocations in 
ELF (62) related to /usr/lib/Catch2WithMain.a. I'm guessing that it's trying to 
link to the amd64 Catch2WithMain.a that is installed on my machine.

Ideally, I would like to use the arm64 version of catch2, however I don't know 
how to specify this in the control file. If I run sbuild with --host=arm64, it 
fails in the same way as above because it's trying to cross-compile but with 
the amd64 version of catch2. If I put catch2:arm64 in the control file sbuild 
tells me "catch2:arm64 [is] not installable."

I am clearly going about this the wrong way. I don't know how I can build an 
arm64 only package and ensure it only uses arm64 build dependencies. Do I need 
to use a VM? If I can't get this library packaged, I would have to exclude 
arm64 from the software I am packaging, which I really don't want to do unless 
absolutely necessary. Any advice would be warmly appreciated.

Regards,

David James

Reply via email to