143 行
3.3 KiB
CMake
143 行
3.3 KiB
CMake
cmake_minimum_required(VERSION 3.16)
|
|
project(paze C)
|
|
set(CMAKE_C_STANDARD 17)
|
|
set(CMAKE_C_STANDARD_REQUIRED ON)
|
|
set(CMAKE_C_EXTENSIONS OFF)
|
|
|
|
if(NOT CMAKE_BUILD_TYPE)
|
|
set(CMAKE_BUILD_TYPE Release CACHE STRING "" FORCE)
|
|
endif()
|
|
|
|
if(MSVC)
|
|
add_compile_options(/W3 /permissive- /utf-8)
|
|
else()
|
|
add_compile_options(-Wall -Wextra -Wpedantic -std=c17)
|
|
endif()
|
|
|
|
# 检测平台
|
|
if(WIN32)
|
|
set(PAZE_OS_WIN 1)
|
|
else()
|
|
set(PAZE_OS_UNIX 1)
|
|
endif()
|
|
|
|
add_library(paze_crypto STATIC
|
|
src/util/mem.c
|
|
src/util/error.c
|
|
src/util/log.c
|
|
src/util/version.c
|
|
src/crypto/random.c
|
|
src/crypto/md5.c
|
|
src/crypto/sha1.c
|
|
src/crypto/sha256.c
|
|
src/crypto/sha512.c
|
|
src/crypto/fe25519.c
|
|
src/crypto/hash.c
|
|
src/crypto/hmac.c
|
|
src/crypto/hkdf.c
|
|
src/crypto/pbkdf2.c
|
|
src/crypto/base64.c
|
|
src/crypto/hex.c
|
|
src/crypto/pem.c
|
|
src/crypto/asn1.c
|
|
src/crypto/aes.c
|
|
src/crypto/aes_modes.c
|
|
src/crypto/gcm.c
|
|
src/crypto/chacha20.c
|
|
src/crypto/poly1305.c
|
|
src/crypto/chacha20_poly1305.c
|
|
src/crypto/curve25519.c
|
|
src/crypto/ed25519.c
|
|
src/crypto/p256.c
|
|
src/crypto/p384.c
|
|
src/crypto/p521.c
|
|
src/crypto/ecdsa.c
|
|
src/crypto/bignum.c
|
|
src/crypto/rsa.c
|
|
src/crypto/x509.c
|
|
)
|
|
target_include_directories(paze_crypto PUBLIC include PRIVATE src)
|
|
if(WIN32)
|
|
target_link_libraries(paze_crypto PUBLIC advapi32)
|
|
else()
|
|
target_link_libraries(paze_crypto PUBLIC m)
|
|
endif()
|
|
|
|
add_library(paze_ssl STATIC
|
|
src/ssl/tls_bio.c
|
|
src/ssl/tls_record.c
|
|
src/ssl/tls_transcript.c
|
|
src/ssl/tls_keys.c
|
|
src/ssl/tls_extensions.c
|
|
src/ssl/tls_handshake13.c
|
|
src/ssl/tls_handshake12.c
|
|
src/ssl/tls_client.c
|
|
src/ssl/tls_server.c
|
|
src/ssl/tls_conn.c
|
|
)
|
|
target_link_libraries(paze_ssl PUBLIC paze_crypto)
|
|
|
|
add_library(paze_ssh STATIC
|
|
src/ssh/ssh_packet.c
|
|
src/ssh/ssh_transport.c
|
|
src/ssh/ssh_kex.c
|
|
src/ssh/ssh_keys.c
|
|
src/ssh/ssh_auth.c
|
|
src/ssh/ssh_channel.c
|
|
src/ssh/ssh_client.c
|
|
src/ssh/ssh_hostkey.c
|
|
src/ssh/ssh_pubkey.c
|
|
src/ssh/ssh_agent.c
|
|
src/ssh/ssh_scp.c
|
|
src/ssh/ssh_config.c
|
|
src/ssh/ssh_tcpip.c
|
|
src/ssh/ssh_server.c
|
|
src/ssh/ssh_userdb.c
|
|
src/ssh/sftp_common.c
|
|
src/ssh/sftp_server.c
|
|
src/ssh/ssh_sftp.c
|
|
)
|
|
target_include_directories(paze_ssh PUBLIC include PRIVATE src)
|
|
target_link_libraries(paze_ssh PUBLIC paze_crypto)
|
|
if(WIN32)
|
|
target_link_libraries(paze_ssh PUBLIC ws2_32)
|
|
else()
|
|
target_link_libraries(paze_ssh PUBLIC m)
|
|
endif()
|
|
|
|
# CLI 应用
|
|
add_executable(pazessl apps/pazessl/main.c)
|
|
target_link_libraries(pazessl PRIVATE paze_ssl paze_crypto)
|
|
if(WIN32)
|
|
target_link_libraries(pazessl PRIVATE ws2_32)
|
|
endif()
|
|
|
|
# SSH 工具集:全部集成到单个 pssh 可执行文件 (子命令分发)
|
|
add_executable(pssh
|
|
apps/pssh/main.c
|
|
apps/ssh/main.c
|
|
apps/sshd/main.c
|
|
apps/keygen/main.c
|
|
apps/keyscan/main.c
|
|
apps/copy_id/main.c
|
|
apps/agent/main.c
|
|
apps/add/main.c
|
|
apps/scp/main.c
|
|
apps/useradd/main.c
|
|
)
|
|
target_link_libraries(pssh PRIVATE paze_ssh paze_crypto)
|
|
if(WIN32)
|
|
target_link_libraries(pssh PRIVATE ws2_32 advapi32)
|
|
else()
|
|
target_link_libraries(pssh PRIVATE m)
|
|
endif()
|
|
|
|
# 独立 SFTP 客户端
|
|
add_executable(psftp apps/psftp/main.c)
|
|
target_link_libraries(psftp PRIVATE paze_ssh paze_crypto)
|
|
if(WIN32)
|
|
target_link_libraries(psftp PRIVATE ws2_32)
|
|
else()
|
|
target_link_libraries(psftp PRIVATE m)
|
|
endif()
|