diff --git a/thirdparty/blake2/CMakeLists.txt b/thirdparty/blake2/CMakeLists.txt new file mode 100644 index 000000000..558857ca6 --- /dev/null +++ b/thirdparty/blake2/CMakeLists.txt @@ -0,0 +1,74 @@ +# OpenClonk, http://www.openclonk.org +# +# Copyright (c) 2018, The OpenClonk Team and contributors +# +# Distributed under the terms of the ISC license; see accompanying file +# "COPYING" for details. +# +# "Clonk" is a registered trademark of Matthes Bender, used with permission. +# See accompanying file "TRADEMARK" for details. +# +# To redistribute this file separately, substitute the full license texts +# for the above references. + +include(CheckCSourceCompiles) + +CHECK_C_SOURCE_COMPILES(" +#if __x86_64 || __x86_64__ || __amd64 || __AMD64 || _M_X64 +// x86-64 target system +#else +#error Not building for x86-64 +#endif +int main() {} +" HAVE_X86_64) + +option(BLAKE2B_USE_SSE2 "Use SSE2 instructions for BLAKE2b" ${HAVE_X86_64}) + +if (BLAKE2B_USE_SSE2) + add_library(blake2 STATIC + sse/blake2.h + ) + + target_sources(blake2 + PRIVATE + sse/blake2b.c + sse/blake2bp.c + sse/blake2s.c + sse/blake2sp.c + sse/blake2xb.c + sse/blake2xs.c + sse/blake2b-load-sse2.h + sse/blake2b-load-sse41.h + sse/blake2b-round.h + sse/blake2s-load-sse2.h + sse/blake2s-load-sse41.h + sse/blake2s-load-xop.h + sse/blake2s-round.h + sse/blake2-config.h + sse/blake2-impl.h + ) + + include(CheckCCompilerFlag) + CHECK_C_COMPILER_FLAG("-msse2" HAVE_CFLAG_MSSE2) + target_compile_definitions(blake2 PRIVATE -DHAVE_SSE2) + if(HAVE_CFLAG_MSSE2) + target_compile_options(blake2 PUBLIC -msse2) + endif() + target_include_directories(blake2 PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/sse) +else() + add_library(blake2 STATIC + ref/blake2.h + ) + + target_sources(blake2 + PRIVATE + ref/blake2bp-ref.c + ref/blake2b-ref.c + ref/blake2sp-ref.c + ref/blake2s-ref.c + ref/blake2xb-ref.c + ref/blake2xs-ref.c + ref/blake2-impl.h + ) + target_include_directories(blake2 PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/ref) +endif()