文件
PazeSSH/CMakeLists.txt

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()