diff options
| author | SteveGremory <[email protected]> | 2022-06-01 09:45:53 +0530 |
|---|---|---|
| committer | Jack O'Connor <[email protected]> | 2023-05-01 00:59:56 -0700 |
| commit | 1569e345552187a6640b2eaff540a84b525854e2 (patch) | |
| tree | d049acbec74c05bb3fad05b1e4dcd69e19b20064 /c | |
| parent | 9ac0a9b896d71eb13ec697908307b8ad935eb145 (diff) | |
Added CMake support, CMakeLists.txt taken from issue 102
Diffstat (limited to 'c')
| -rw-r--r-- | c/CMakeLists.txt | 56 | ||||
| -rw-r--r-- | c/libblake3.pc.in | 12 |
2 files changed, 68 insertions, 0 deletions
diff --git a/c/CMakeLists.txt b/c/CMakeLists.txt new file mode 100644 index 0000000..2e5ffca --- /dev/null +++ b/c/CMakeLists.txt @@ -0,0 +1,56 @@ +cmake_minimum_required(VERSION 3.9) + +project(libblake3 VERSION 0.1.0 DESCRIPTION "BLAKE3 C implementation") +enable_language(C ASM) + +include(GNUInstallDirs) + +set(blake3_SOURCES) +list(APPEND blake3_SOURCES + blake3.c + blake3_dispatch.c + blake3_portable.c) + +if(CMAKE_SYSTEM_PROCESSOR STREQUAL x86_64) + list(APPEND blake3_SOURCES + blake3_avx2_x86-64_unix.S + blake3_avx512_x86-64_unix.S + blake3_sse41_x86-64_unix.S) +elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL i686) + list(APPEND blake3_SOURCES + blake3_avx2.c + blake3_avx512.c + blake3_sse41.c) + set_source_files_properties(blake3_avx2.c PROPERTIES COMPILE_FLAGS -mavx2) + set_source_files_properties(blake3_avx512.c PROPERTIES COMPILE_FLAGS "-mavx512f -mavx512vl") + set_source_files_properties(blake3_sse41.c PROPERTIES COMPILE_FLAGS -msse4.1) +elseif((ANDROID_ABI STREQUAL armeabi-v7a) OR + (CMAKE_SYSTEM_PROCESSOR STREQUAL aarch64)) + list(APPEND blake3_SOURCES blake3_neon.c) + set_source_files_properties(blake3_neon.c PROPERTIES COMPILE_FLAGS -mfpu=neon) + set_source_files_properties(blake3_dispatch.c PROPERTIES COMPILE_FLAGS -DBLAKE3_USE_NEON=1) +endif() + +configure_file(libblake3.pc.in libblake3.pc @ONLY) +install(FILES ${CMAKE_BINARY_DIR}/libblake3.pc + DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) + +add_library(blake3-shared SHARED ${blake3_SOURCES}) +set_target_properties(blake3-shared PROPERTIES VERSION ${PROJECT_VERSION}) +set_target_properties(blake3-shared PROPERTIES SOVERSION 0) +set_target_properties(blake3-shared PROPERTIES PUBLIC_HEADER blake3.h) +target_include_directories(blake3-shared PRIVATE .) +install(TARGETS blake3-shared + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + +add_library(blake3-static STATIC ${blake3_SOURCES}) +set_target_properties(blake3-static PROPERTIES OUTPUT_NAME blake3) +set_target_properties(blake3-static PROPERTIES VERSION ${PROJECT_VERSION}) +set_target_properties(blake3-static PROPERTIES SOVERSION 0) +set_target_properties(blake3-static PROPERTIES PUBLIC_HEADER blake3.h) +set_target_properties(blake3-static PROPERTIES COMPILE_FLAGS -fPIC) +target_include_directories(blake3-static PRIVATE .) +install(TARGETS blake3-static + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
\ No newline at end of file diff --git a/c/libblake3.pc.in b/c/libblake3.pc.in new file mode 100644 index 0000000..6891e5c --- /dev/null +++ b/c/libblake3.pc.in @@ -0,0 +1,12 @@ +prefix=@CMAKE_INSTALL_PREFIX@ +exec_prefix=@CMAKE_INSTALL_PREFIX@ +libdir=@CMAKE_INSTALL_LIBDIR@ +includedir=@CMAKE_INSTALL_INCLUDEDIR@ + +Name: @PROJECT_NAME@ +Description: @PROJECT_DESCRIPTION@ +Version: @PROJECT_VERSION@ + +Requires: +Libs: -L${libdir} -lblake3 +Cflags: -I${includedir}
\ No newline at end of file |
