#CMAKE_MINIMUM_REQUIRED(VERSION 2.8.11) CMAKE_POLICY(SET CMP0003 NEW) cmake_policy(SET CMP0048 NEW) project(picotls VERSION 0.0.1) FIND_PACKAGE(PkgConfig REQUIRED) SET(CMAKE_C_FLAGS "-std=c99 -Wall -O2 -g ${CC_WARNING_FLAGS} ${CMAKE_C_FLAGS}") INCLUDE_DIRECTORIES( deps/cifra/src/ext deps/cifra/src deps/micro-ecc deps/picotest include ${CMAKE_CURRENT_BINARY_DIR}) SET(MINICRYPTO_LIBRARY_FILES deps/micro-ecc/uECC.c deps/cifra/src/aes.c deps/cifra/src/blockwise.c deps/cifra/src/chacha20.c deps/cifra/src/chash.c deps/cifra/src/curve25519.c deps/cifra/src/drbg.c deps/cifra/src/hmac.c deps/cifra/src/gcm.c deps/cifra/src/gf128.c deps/cifra/src/modes.c deps/cifra/src/poly1305.c deps/cifra/src/sha256.c deps/cifra/src/sha512.c) SET(CORE_FILES lib/picotls.c lib/pembase64.c) PKG_CHECK_MODULES(BROTLI_DEC libbrotlidec) PKG_CHECK_MODULES(BROTLI_ENC libbrotlienc) IF (BROTLI_DEC_FOUND AND BROTLI_ENC_FOUND) INCLUDE_DIRECTORIES(${BROTLI_DEC_INCLUDE_DIRS} ${BROTLI_ENC_INCLUDE_DIRS}) LINK_DIRECTORIES(${BROTLI_DEC_LIBRARY_DIRS} ${BROTLI_ENC_LIBRARY_DIRS}) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DPICOTLS_USE_BROTLI=1") LIST(APPEND CORE_FILES lib/certificate_compression.c) LIST(APPEND CORE_EXTRA_LIBS ${BROTLI_DEC_LIBRARIES} ${BROTLI_ENC_LIBRARIES}) ENDIF () ADD_LIBRARY(picotls-core ${CORE_FILES}) TARGET_LINK_LIBRARIES(picotls-core ${CORE_EXTRA_LIBS}) ADD_LIBRARY(picotls-minicrypto EXCLUDE_FROM_ALL ${MINICRYPTO_LIBRARY_FILES} lib/cifra.c lib/cifra/x25519.c lib/cifra/chacha20.c lib/cifra/aes128.c lib/cifra/aes256.c lib/cifra/random.c lib/minicrypto-pem.c lib/uecc.c lib/asn1.c lib/ffx.c) TARGET_LINK_LIBRARIES(picotls-minicrypto picotls-core) FIND_PACKAGE(OpenSSL) IF (OPENSSL_FOUND AND NOT (OPENSSL_VERSION VERSION_LESS "1.0.1")) MESSAGE(STATUS " Enabling OpenSSL support") INCLUDE_DIRECTORIES(${OPENSSL_INCLUDE_DIR}) ADD_LIBRARY(picotls-openssl lib/openssl.c) TARGET_LINK_LIBRARIES(picotls-openssl ${OPENSSL_LIBRARIES} picotls-core ${CMAKE_DL_LIBS}) ADD_EXECUTABLE(picotls-esni EXCLUDE_FROM_ALL src/esni.c) TARGET_LINK_LIBRARIES(picotls-esni picotls-openssl picotls-core ${OPENSSL_LIBRARIES} ${CMAKE_DL_LIBS}) ELSE () MESSAGE(WARNING "Disabling OpenSSL support (requires 1.0.1 or newer)") ENDIF () IF ((CMAKE_SIZEOF_VOID_P EQUAL 8) AND (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64") OR (CMAKE_SYSTEM_PROCESSOR STREQUAL "amd64") OR (CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64")) MESSAGE(STATUS " Enabling fusion support") ADD_LIBRARY(picotls-fusion lib/fusion.c) SET_TARGET_PROPERTIES(picotls-fusion PROPERTIES COMPILE_FLAGS "-mavx2 -maes -mpclmul") TARGET_LINK_LIBRARIES(picotls-fusion picotls-core) ENDIF ()