1
0
mirror of https://github.com/BLAKE3-team/BLAKE3 synced 2024-09-18 13:21:38 +02:00

Minor changes to CMake, added SSE support. Added options to only make either static or shared libs.

This commit is contained in:
SteveGremory 2022-06-05 23:53:24 +05:30 committed by Jack O'Connor
parent 3d8a673f59
commit b0a3863c06
2 changed files with 36 additions and 17 deletions

1
c/.gitignore vendored
View File

@ -1,3 +1,4 @@
blake3
example
build/
*.o

View File

@ -5,6 +5,8 @@ enable_language(C ASM)
include(GNUInstallDirs)
option(BLAKE3_STATIC ON)
set(blake3_SOURCES)
list(APPEND blake3_SOURCES
blake3.c
@ -15,17 +17,24 @@ if(CMAKE_SYSTEM_PROCESSOR STREQUAL x86_64)
list(APPEND blake3_SOURCES
blake3_avx2_x86-64_unix.S
blake3_avx512_x86-64_unix.S
blake3_sse2_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_sse2.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_sse2.c PROPERTIES COMPILE_FLAGS -msse2)
set_source_files_properties(blake3_sse41.c PROPERTIES COMPILE_FLAGS -msse4.1)
elseif((ANDROID_ABI STREQUAL armeabi-v7a) OR
(CMAKE_SYSTEM_PROCESSOR STREQUAL aarch64) OR (CMAKE_SYSTEM_PROCESSOR STREQUAL arm64))
(CMAKE_SYSTEM_PROCESSOR STREQUAL aarch64) OR
(CMAKE_SYSTEM_PROCESSOR STREQUAL arm64) # For M1 macs
)
list(APPEND blake3_SOURCES blake3_neon.c)
set_source_files_properties(blake3_dispatch.c PROPERTIES COMPILE_FLAGS -DBLAKE3_USE_NEON=1)
set_source_files_properties(blake3_neon.c PROPERTIES COMPILE_FLAGS -mfpu=neon)
@ -35,22 +44,31 @@ 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 PUBLIC .)
install(TARGETS blake3-shared
if(BLAKE3_STATIC)
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 PUBLIC .)
install(TARGETS blake3-static
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 PUBLIC .)
install(TARGETS blake3-static
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
else()
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 PUBLIC .)
install(TARGETS blake3-shared
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
endif(BLAKE3_STATIC)
unset(BLAKE3_STATIC)