aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/argon2/CMakeLists.txt
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/argon2/CMakeLists.txt
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/argon2/CMakeLists.txt')
-rw-r--r--vcpkg/ports/argon2/CMakeLists.txt75
1 files changed, 75 insertions, 0 deletions
diff --git a/vcpkg/ports/argon2/CMakeLists.txt b/vcpkg/ports/argon2/CMakeLists.txt
new file mode 100644
index 0000000..c42eec5
--- /dev/null
+++ b/vcpkg/ports/argon2/CMakeLists.txt
@@ -0,0 +1,75 @@
+cmake_minimum_required(VERSION 3.25)
+
+project(argon2 LANGUAGES C)
+
+option(WITH_OPTIMIZATIONS "Enable SSE2/AVX2/AVX512 optimizations")
+option(BUILD_TOOL "Build the tool" OFF)
+
+if(BUILD_SHARED_LIBS)
+ if(CMAKE_C_COMPILER_ID MATCHES "Clang" OR CMAKE_C_COMPILER_ID STREQUAL "GNU")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden")
+ endif()
+endif()
+
+find_package(Threads REQUIRED)
+
+set(ARGON2_HEADERS
+ include/argon2.h
+)
+
+set (ARGON2_SRC
+ src/argon2.c
+ src/core.c
+ src/blake2/blake2b.c
+ src/thread.c
+ src/encoding.c
+)
+if (WITH_OPTIMIZATIONS)
+ list(APPEND ARGON2_SRC src/opt.c)
+else()
+ list(APPEND ARGON2_SRC src/ref.c)
+endif()
+
+add_library(libargon2 ${ARGON2_SRC})
+set_target_properties(libargon2 PROPERTIES OUTPUT_NAME argon2)
+target_include_directories(libargon2 PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<INSTALL_INTERFACE:include> PRIVATE src)
+target_link_libraries(libargon2 PRIVATE Threads::Threads)
+if(BUILD_SHARED_LIBS)
+ if(WIN32)
+ target_compile_definitions(libargon2 PRIVATE "BUILDING_ARGON2_DLL" INTERFACE "USING_ARGON2_DLL")
+ else()
+ target_compile_definitions(libargon2 PRIVATE "A2_VISCTL")
+ endif()
+endif()
+
+install(TARGETS libargon2
+ EXPORT unofficial-argon2-targets
+ RUNTIME DESTINATION bin
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib
+)
+
+if(BUILD_TOOL)
+ add_executable(argon2 src/run.c)
+ target_link_libraries(argon2 PRIVATE libargon2)
+ set_target_properties(argon2 PROPERTIES PDB_NAME "argon2${CMAKE_EXECUTABLE_SUFFIX}.pdb")
+
+ install(TARGETS argon2 RUNTIME DESTINATION bin)
+endif()
+
+install(FILES ${ARGON2_HEADERS} DESTINATION include)
+
+install(EXPORT unofficial-argon2-targets
+ NAMESPACE unofficial::argon2::
+ DESTINATION "share/unofficial-argon2"
+)
+
+function(make_pc_file)
+ set(PREFIX "${CMAKE_INSTALL_PREFIX}")
+ set(INCLUDE "include")
+ set(HOST_MULTIARCH "lib")
+ set(EXTRA_LIBS "")
+ configure_file ("${CMAKE_SOURCE_DIR}/libargon2.pc.in" "${PROJECT_BINARY_DIR}/libargon2.pc" @ONLY)
+endfunction()
+make_pc_file()
+install (FILES "${CMAKE_CURRENT_BINARY_DIR}/libargon2.pc" DESTINATION "lib/pkgconfig")