aboutsummaryrefslogtreecommitdiff
path: root/c
diff options
context:
space:
mode:
authorSteveGremory <[email protected]>2022-06-01 09:45:53 +0530
committerJack O'Connor <[email protected]>2023-05-01 00:59:56 -0700
commit1569e345552187a6640b2eaff540a84b525854e2 (patch)
treed049acbec74c05bb3fad05b1e4dcd69e19b20064 /c
parent9ac0a9b896d71eb13ec697908307b8ad935eb145 (diff)
Added CMake support, CMakeLists.txt taken from issue 102
Diffstat (limited to 'c')
-rw-r--r--c/CMakeLists.txt56
-rw-r--r--c/libblake3.pc.in12
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