Skip to content

KyberOT.h not found #163

@elimbaum

Description

@elimbaum

Hi, I am building libOTe and running into a header-inclusion issue. The frontend unit tests run fine so I'm wondering if it's something with my project's cmake configuration.

I install with:

# run from ~/repo/build folder
$ python3 build.py --par=4 --boost --sodium --all --install=../libOTe-install -DENABLE_SSE=ON

Within our CMakeLists, I include libOTe with

    find_package(libOTe REQUIRED HINTS
        libOTe-install/lib/cmake/libOTe/
        libOTe-install/lib64/cmake/libOTe/ )
    list(APPEND LINK_LIBRARIES "oc::libOTe")

Running cmake gives no issues, but trying to compile an example which uses Silent VOLE, I see

/users/elibaum/repo/libOTe-install/include/libOTe/Base/MasnyRindalKyber.h:19:10: fatal error: KyberOT/KyberOT.h: No such file or directory
   19 | #include <KyberOT/KyberOT.h>
      |          ^~~~~~~~~~~~~~~~~~~

Configuring cmake with -DCMAKE_VERBOSE_MAKEFILE=ON, I see

expand code block below
make test_libote
/usr/bin/cmake -S/users/elibaum/repo -B/users/elibaum/repo/build --check-build-system CMakeFiles/Makefile.cmake 0
make  -f CMakeFiles/Makefile2 test_libote
make[1]: Entering directory '/users/elibaum/repo/build'
/usr/bin/cmake -S/users/elibaum/repo -B/users/elibaum/repo/build --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /users/elibaum/repo/build/CMakeFiles 1
make  -f CMakeFiles/Makefile2 CMakeFiles/test_libote.dir/all
make[2]: Entering directory '/users/elibaum/repo/build'
make  -f CMakeFiles/test_libote.dir/build.make CMakeFiles/test_libote.dir/depend
make[3]: Entering directory '/users/elibaum/repo/build'
cd /users/elibaum/repo/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /users/elibaum/repo /users/elibaum/repo /users/elibaum/repo/build /users/elibaum/repo/build /users/elibaum/repo/build/CMakeFiles/test_libote.dir/DependInfo.cmake --color=
make[3]: Leaving directory '/users/elibaum/repo/build'
make  -f CMakeFiles/test_libote.dir/build.make CMakeFiles/test_libote.dir/build
make[3]: Entering directory '/users/elibaum/repo/build'
[  0%] Building CXX object CMakeFiles/test_libote.dir/tests/test_libote.cpp.o
/usr/bin/c++ -DBOOST_SYSTEM_NO_LIB -DBOOST_THREAD_NO_LIB -DDEFAULT_BITWIDTH=32 -isystem /usr/lib/x86_64-linux-gnu/openmpi/include -isystem /usr/lib/x86_64-linux-gnu/openmpi/include/openmpi -isystem /users/elibaum/repo/libOTe-install/include -O3 -g -pthread -D PROTOCOL_NUM=2 -mbmi -march=native -maes -msse2 -msse3 -mssse3 -msse4.1 -mpclmul -mavx2 -Wno-error=switch -std=gnu++20 -MD -MT CMakeFiles/test_libote.dir/tests/test_libote.cpp.o -MF CMakeFiles/test_libote.dir/tests/test_libote.cpp.o.d -o CMakeFiles/test_libote.dir/tests/test_libote.cpp.o -c /users/elibaum/repo/tests/test_libote.cpp
In file included from /users/elibaum/repo/libOTe-install/include/libOTe/Base/BaseOT.h:13,
                 from /users/elibaum/repo/libOTe-install/include/libOTe/Vole/Silent/SilentVoleReceiver.h:23,
                 from /users/elibaum/repo/tests/test_libote.cpp:18:
/users/elibaum/repo/libOTe-install/include/libOTe/Base/MasnyRindalKyber.h:19:10: fatal error: KyberOT/KyberOT.h: No such file or directory
   19 | #include 
      |          ^~~~~~~~~~~~~~~~~~~
compilation terminated.
make[3]: *** [CMakeFiles/test_libote.dir/build.make:79: CMakeFiles/test_libote.dir/tests/test_libote.cpp.o] Error 1
make[3]: Leaving directory '/users/elibaum/repo/build'
make[2]: *** [CMakeFiles/Makefile2:2037: CMakeFiles/test_libote.dir/all] Error 2
make[2]: Leaving directory '/users/elibaum/repo/build'
make[1]: *** [CMakeFiles/Makefile2:2044: CMakeFiles/test_libote.dir/rule] Error 2
make[1]: Leaving directory '/users/elibaum/repo/build'
make: *** [Makefile:1024: test_libote] Error 2

Based on the compiler command, I think we're searching for headers in ~/repo/libOTe-install. However,

# from within ~/repo
$ find . -iname "*kyber*.h"
./libOTe/libOTe/Base/MasnyRindalKyber.h
./libOTe/thirdparty/KyberOT/KyberOT.h
./libOTe-install/include/libOTe/Base/MasnyRindalKyber.h

So it looks like the KyberOT header files weren't installed (they're still in libOTe/, which is where I cloned the repo).

Should these headers be getting installed somewhere else, or do I need cmake to look for them elsewhere?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions