Skip to content

Commit

Permalink
Refactor code and documentation to reflect changes in CMakeLists.txt
Browse files Browse the repository at this point in the history
Documentation and affected configurations refactored. Some files have been reformatted as well
  • Loading branch information
dr8co committed Sep 26, 2023
1 parent 4c389d7 commit 579b57e
Show file tree
Hide file tree
Showing 5 changed files with 133 additions and 128 deletions.
7 changes: 4 additions & 3 deletions .github/workflows/cmake-multi-platform.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,8 @@ jobs:
sudo add-apt-repository -y "deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-17 main"
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/ppa
sudo apt update
sudo apt install -y cmake ninja-build gcc-13 g++-13 clang-17 lldb-17 lld-17 libc++-17-dev libc++abi-17-dev libomp-17-dev libgcrypt20 openssl libreadline8 libsodium23 libsodium-dev
sudo apt install -y cmake ninja-build gcc-13 g++-13 clang-17 lldb-17 lld-17 libc++-17-dev libc++abi-17-dev \
libomp-17-dev libgcrypt20 openssl libreadline8 libsodium23 libsodium-dev
# Install BLAKE3
- name: Build BLAKE3
Expand Down Expand Up @@ -95,8 +96,8 @@ jobs:
- name: Package
working-directory: ${{ steps.strings.outputs.build-output-dir }}
run: |
chmod +x src/privacyShield
tar -czvf privacyShield.tar.gz src/privacyShield
chmod +x privacyShield
tar -czvf privacyShield.tar.gz privacyShield
# Upload the built artifacts
- name: Upload Artifacts
Expand Down
20 changes: 11 additions & 9 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,14 @@ project(privacyShield
LANGUAGES CXX)

# If we are not on unix, we cannot build
if(NOT UNIX)
if (NOT UNIX)
message(FATAL_ERROR "This project can only be built on unix-like systems")
endif()
endif ()

# If the user does not specify a build type, default to Release
if(NOT CMAKE_BUILD_TYPE)
if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
endif ()

# Set the path to additional CMake modules
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/CMakeModules")
Expand All @@ -48,15 +48,17 @@ find_package(Readline REQUIRED)
find_package(Gcrypt REQUIRED)
find_package(BLAKE3 REQUIRED) # See https://github.com/BLAKE3-team/BLAKE3

# Add the executable target
add_executable(privacyShield)
add_subdirectory(src)

# Link dependencies
target_link_libraries(privacyShield
OpenSSL::Crypto
Readline::Readline
Sodium::sodium
Gcrypt::Gcrypt
BLAKE3::blake3)
PRIVATE OpenSSL::Crypto
PRIVATE Readline::Readline
PRIVATE Sodium::sodium
PRIVATE Gcrypt::Gcrypt
PRIVATE BLAKE3::blake3)

# Install the binary (optional)
install(TARGETS privacyShield
Expand Down
130 changes: 65 additions & 65 deletions CMakeModules/FindSodium.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -29,20 +29,20 @@
if (CMAKE_C_COMPILER_ID STREQUAL "GNU"
OR CMAKE_C_COMPILER_ID STREQUAL "Clang")
set(_GCC_COMPATIBLE 1)
endif()
endif ()

# static library option
if (NOT DEFINED sodium_USE_STATIC_LIBS)
option(sodium_USE_STATIC_LIBS "enable to statically link against sodium" OFF)
endif()
if(NOT (sodium_USE_STATIC_LIBS EQUAL sodium_USE_STATIC_LIBS_LAST))
endif ()
if (NOT (sodium_USE_STATIC_LIBS EQUAL sodium_USE_STATIC_LIBS_LAST))
unset(sodium_LIBRARY CACHE)
unset(sodium_LIBRARY_DEBUG CACHE)
unset(sodium_LIBRARY_RELEASE CACHE)
unset(sodium_DLL_DEBUG CACHE)
unset(sodium_DLL_RELEASE CACHE)
set(sodium_USE_STATIC_LIBS_LAST ${sodium_USE_STATIC_LIBS} CACHE INTERNAL "internal change tracking variable")
endif()
endif ()


########################################################################
Expand All @@ -52,40 +52,40 @@ if (UNIX)
find_package(PkgConfig QUIET)
if (PKG_CONFIG_FOUND)
pkg_check_modules(sodium_PKG QUIET libsodium)
endif()
endif ()

if(sodium_USE_STATIC_LIBS)
foreach(_libname ${sodium_PKG_STATIC_LIBRARIES})
if (sodium_USE_STATIC_LIBS)
foreach (_libname ${sodium_PKG_STATIC_LIBRARIES})
if (NOT _libname MATCHES "^lib.*\\.a$") # ignore strings already ending with .a
list(INSERT sodium_PKG_STATIC_LIBRARIES 0 "lib${_libname}.a")
endif()
endforeach()
endif ()
endforeach ()
list(REMOVE_DUPLICATES sodium_PKG_STATIC_LIBRARIES)

# if pkgconfig for libsodium doesn't provide
# static lib info, then override PKG_STATIC here..
if (NOT sodium_PKG_STATIC_FOUND)
set(sodium_PKG_STATIC_LIBRARIES libsodium.a)
endif()
endif ()

set(XPREFIX sodium_PKG_STATIC)
else()
else ()
if (NOT sodium_PKG_FOUND)
set(sodium_PKG_LIBRARIES sodium)
endif()
endif ()

set(XPREFIX sodium_PKG)
endif()
endif ()

find_path(sodium_INCLUDE_DIR sodium.h
HINTS ${${XPREFIX}_INCLUDE_DIRS}
)
)
find_library(sodium_LIBRARY_DEBUG NAMES ${${XPREFIX}_LIBRARIES}
HINTS ${${XPREFIX}_LIBRARY_DIRS}
)
)
find_library(sodium_LIBRARY_RELEASE NAMES ${${XPREFIX}_LIBRARIES}
HINTS ${${XPREFIX}_LIBRARY_DIRS}
)
)


########################################################################
Expand All @@ -97,7 +97,7 @@ elseif (WIN32)
find_path(sodium_INCLUDE_DIR sodium.h
HINTS ${sodium_DIR}
PATH_SUFFIXES include
)
)

if (MSVC)
# detect target architecture
Expand All @@ -111,101 +111,101 @@ elseif (WIN32)
]=])
try_compile(_UNUSED_VAR "${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/arch.cpp"
OUTPUT_VARIABLE _COMPILATION_LOG
)
)
string(REGEX REPLACE ".*ARCH_VALUE ([a-zA-Z0-9_]+).*" "\\1" _TARGET_ARCH "${_COMPILATION_LOG}")

# construct library path
if (_TARGET_ARCH STREQUAL "x86_32")
string(APPEND _PLATFORM_PATH "Win32")
elseif(_TARGET_ARCH STREQUAL "x86_64")
elseif (_TARGET_ARCH STREQUAL "x86_64")
string(APPEND _PLATFORM_PATH "x64")
else()
else ()
message(FATAL_ERROR "the ${_TARGET_ARCH} architecture is not supported by Findsodium.cmake.")
endif()
endif ()
string(APPEND _PLATFORM_PATH "/$$CONFIG$$")

if (MSVC_VERSION LESS 1900)
math(EXPR _VS_VERSION "${MSVC_VERSION} / 10 - 60")
else()
else ()
math(EXPR _VS_VERSION "${MSVC_VERSION} / 10 - 50")
endif()
endif ()
string(APPEND _PLATFORM_PATH "/v${_VS_VERSION}")

if (sodium_USE_STATIC_LIBS)
string(APPEND _PLATFORM_PATH "/static")
else()
else ()
string(APPEND _PLATFORM_PATH "/dynamic")
endif()
endif ()

string(REPLACE "$$CONFIG$$" "Debug" _DEBUG_PATH_SUFFIX "${_PLATFORM_PATH}")
string(REPLACE "$$CONFIG$$" "Release" _RELEASE_PATH_SUFFIX "${_PLATFORM_PATH}")

find_library(sodium_LIBRARY_DEBUG libsodium.lib
HINTS ${sodium_DIR}
PATH_SUFFIXES ${_DEBUG_PATH_SUFFIX}
)
)
find_library(sodium_LIBRARY_RELEASE libsodium.lib
HINTS ${sodium_DIR}
PATH_SUFFIXES ${_RELEASE_PATH_SUFFIX}
)
)
if (NOT sodium_USE_STATIC_LIBS)
set(CMAKE_FIND_LIBRARY_SUFFIXES_BCK ${CMAKE_FIND_LIBRARY_SUFFIXES})
set(CMAKE_FIND_LIBRARY_SUFFIXES ".dll")
find_library(sodium_DLL_DEBUG libsodium
HINTS ${sodium_DIR}
PATH_SUFFIXES ${_DEBUG_PATH_SUFFIX}
)
)
find_library(sodium_DLL_RELEASE libsodium
HINTS ${sodium_DIR}
PATH_SUFFIXES ${_RELEASE_PATH_SUFFIX}
)
)
set(CMAKE_FIND_LIBRARY_SUFFIXES ${CMAKE_FIND_LIBRARY_SUFFIXES_BCK})
endif()
endif ()

elseif(_GCC_COMPATIBLE)
elseif (_GCC_COMPATIBLE)
if (sodium_USE_STATIC_LIBS)
find_library(sodium_LIBRARY_DEBUG libsodium.a
HINTS ${sodium_DIR}
PATH_SUFFIXES lib
)
)
find_library(sodium_LIBRARY_RELEASE libsodium.a
HINTS ${sodium_DIR}
PATH_SUFFIXES lib
)
else()
)
else ()
find_library(sodium_LIBRARY_DEBUG libsodium.dll.a
HINTS ${sodium_DIR}
PATH_SUFFIXES lib
)
)
find_library(sodium_LIBRARY_RELEASE libsodium.dll.a
HINTS ${sodium_DIR}
PATH_SUFFIXES lib
)
)

file(GLOB _DLL
LIST_DIRECTORIES false
RELATIVE "${sodium_DIR}/bin"
"${sodium_DIR}/bin/libsodium*.dll"
)
)
find_library(sodium_DLL_DEBUG ${_DLL} libsodium
HINTS ${sodium_DIR}
PATH_SUFFIXES bin
)
)
find_library(sodium_DLL_RELEASE ${_DLL} libsodium
HINTS ${sodium_DIR}
PATH_SUFFIXES bin
)
endif()
else()
)
endif ()
else ()
message(FATAL_ERROR "this platform is not supported by FindSodium.cmake")
endif()
endif ()


########################################################################
# unsupported
else()
else ()
message(FATAL_ERROR "this platform is not supported by FindSodium.cmake")
endif()
endif ()


########################################################################
Expand All @@ -219,8 +219,8 @@ if (sodium_INCLUDE_DIR)
string(REGEX REPLACE ".*#[ \t]*define[ \t]*SODIUM_VERSION_STRING[ \t]*\"([^\n]*)\".*" "\\1"
sodium_VERSION "${_VERSION_HEADER_CONTENT}")
set(sodium_VERSION "${sodium_VERSION}" PARENT_SCOPE)
endif()
endif()
endif ()
endif ()

# communicate results
include(FindPackageHandleStandardArgs)
Expand All @@ -234,10 +234,10 @@ find_package_handle_standard_args(
sodium_VERSION
)

if(Sodium_FOUND)
if (Sodium_FOUND)
set(sodium_LIBRARIES
optimized ${sodium_LIBRARY_RELEASE} debug ${sodium_LIBRARY_DEBUG})
endif()
endif ()

# mark file paths as advanced
mark_as_advanced(sodium_INCLUDE_DIR)
Expand All @@ -246,52 +246,52 @@ mark_as_advanced(sodium_LIBRARY_RELEASE)
if (WIN32)
mark_as_advanced(sodium_DLL_DEBUG)
mark_as_advanced(sodium_DLL_RELEASE)
endif()
endif ()

# create imported target
if(sodium_USE_STATIC_LIBS)
if (sodium_USE_STATIC_LIBS)
set(_LIB_TYPE STATIC)
else()
else ()
set(_LIB_TYPE SHARED)
endif()
endif ()

if(NOT TARGET Sodium::sodium)
if (NOT TARGET Sodium::sodium)
add_library(Sodium::sodium ${_LIB_TYPE} IMPORTED)
endif()
endif ()

set_target_properties(Sodium::sodium PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${sodium_INCLUDE_DIR}"
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
)
)

if (sodium_USE_STATIC_LIBS)
set_target_properties(Sodium::sodium PROPERTIES
INTERFACE_COMPILE_DEFINITIONS "SODIUM_STATIC"
IMPORTED_LOCATION "${sodium_LIBRARY_RELEASE}"
IMPORTED_LOCATION_DEBUG "${sodium_LIBRARY_DEBUG}"
)
else()
)
else ()
if (UNIX)
set_target_properties(Sodium::sodium PROPERTIES
IMPORTED_LOCATION "${sodium_LIBRARY_RELEASE}"
IMPORTED_LOCATION_DEBUG "${sodium_LIBRARY_DEBUG}"
)
)
elseif (WIN32)
set_target_properties(Sodium::sodium PROPERTIES
IMPORTED_IMPLIB "${sodium_LIBRARY_RELEASE}"
IMPORTED_IMPLIB_DEBUG "${sodium_LIBRARY_DEBUG}"
)
)
if (NOT (sodium_DLL_DEBUG MATCHES ".*-NOTFOUND"))
set_target_properties(Sodium::sodium PROPERTIES
IMPORTED_LOCATION_DEBUG "${sodium_DLL_DEBUG}"
)
endif()
)
endif ()
if (NOT (sodium_DLL_RELEASE MATCHES ".*-NOTFOUND"))
set_target_properties(Sodium::sodium PROPERTIES
IMPORTED_LOCATION_RELWITHDEBINFO "${sodium_DLL_RELEASE}"
IMPORTED_LOCATION_MINSIZEREL "${sodium_DLL_RELEASE}"
IMPORTED_LOCATION_RELEASE "${sodium_DLL_RELEASE}"
)
endif()
endif()
endif()
)
endif ()
endif ()
endif ()
Loading

0 comments on commit 579b57e

Please sign in to comment.