Skip to content

Commit

Permalink
Fix a bug in the CMake script. (open-quantum-safe#221)
Browse files Browse the repository at this point in the history
PR [open-quantum-safe#207] introduced a check for setting the right suffix to the library,
depending on the target OS:

https://github.com/open-quantum-safe/oqs-provider/blob/823f3178dd50eeb5febf29eb82680400c4d9e887/oqsprov/CMakeLists.txt#L61-L7://github.com/open-quantum-safe/oqs-provider/blob/823f3178dd50eeb5febf29eb82680400c4d9e887/oqsprov/CMakeLists.txt#L61-L79

However, mixed with PR [open-quantum-safe#201] and the `OQS_PROVIDER_BUILD_STATIC` option, the
library may be suffixed with the wrong extension: we may end up with a static
library named `oqsprovider.dylib`, even if it's an archive:

```shell
$ cmake -GNinja \
    -DOQS_PROVIDER_BUILD_STATIC=ON \
    -B build
$ cmake --build build
$ file build/lib/oqsprovider.dylib
build/lib/oqsprovider.dylib: current ar archive random library
$ # ^ should be named `oqsprovider.a`!
```

The check mentioned above is only relevant when oqsprovider is built as a module.

This commit fixes this bug and introduces a check in the CircleCI jobs to verify
that `oqsprovider.a` is actually produced.

[open-quantum-safe#201](open-quantum-safe#201)
[open-quantum-safe#207](open-quantum-safe#207)

Signed-off-by: Felipe Ventura <[email protected]>
  • Loading branch information
thb-sb authored and feventura committed Mar 13, 2024
1 parent 888c100 commit ba90c54
Showing 1 changed file with 19 additions and 17 deletions.
36 changes: 19 additions & 17 deletions oqsprov/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -58,24 +58,26 @@ set_target_properties(oqsprovider
# For Windows DLLs
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin")

if (APPLE)
# OpenSSL looks for `.dylib` files on XNU-based platforms.
# Because `MODULE` writes to a `.so` file by default, we must explicitely
# set the suffix here.
set_target_properties(oqsprovider
PROPERTIES
SUFFIX ".dylib"
)
endif()
if (NOT OQS_PROVIDER_BUILD_STATIC)
if (APPLE)
# OpenSSL looks for `.dylib` files on XNU-based platforms.
# Because `MODULE` writes to a `.so` file by default, we must explicitely
# set the suffix here.
set_target_properties(oqsprovider
PROPERTIES
SUFFIX ".dylib"
)
endif()

if (CYGWIN OR MSVC)
# OpenSSL looks for `.dll` files on Windows platforms.
# Because `MODULE` writes to a `.so` file by default, we must explicitely
# set the suffix here.
set_target_properties(oqsprovider
PROPERTIES
SUFFIX ".dll"
)
if (CYGWIN OR MSVC)
# OpenSSL looks for `.dll` files on Windows platforms.
# Because `MODULE` writes to a `.so` file by default, we must explicitely
# set the suffix here.
set_target_properties(oqsprovider
PROPERTIES
SUFFIX ".dll"
)
endif()
endif()

target_link_libraries(oqsprovider PUBLIC OQS::oqs ${OPENSSL_CRYPTO_LIBRARY} ${OQS_ADDL_SOCKET_LIBS})
Expand Down

0 comments on commit ba90c54

Please sign in to comment.