include(${CMAKE_SOURCE_DIR_IPCSDK}/build/global_config.cmake) set(EXECUTABLE_OUTPUT_PATH ${EXEC_OUTPUT_PATH}) set(LIBRARY_OUTPUT_PATH ${LIBS_OUTPUT_PATH}) include_directories( ./src ./include ${UTILS_SOURCE_PATH}/StatusCode/include ${UTILS_SOURCE_PATH}/Log/include ${EXTERNAL_SOURCE_PATH}/curl/curl-8.1.2/include ) #do not rely on any other library # link_directories( # ${EXTERNAL_SOURCE_PATH}/curl/curl-8.1.2/build/lib # ) aux_source_directory(./src SRC_FILES) set(TARGET_NAME Servers) add_library(${TARGET_NAME} STATIC ${SRC_FILES}) target_link_libraries(${TARGET_NAME} Log) if(${CURL_OPENSSL_LIB_SHARED_ENABLE} MATCHES "false") target_link_libraries(${TARGET_NAME} ${LIBS_OUTPUT_PATH}/libcurl.a) target_link_libraries(${TARGET_NAME} ${LIBS_OUTPUT_PATH}/libssl.a) target_link_libraries(${TARGET_NAME} ${LIBS_OUTPUT_PATH}/libcrypto.a dl pthread) else() target_link_libraries(${TARGET_NAME} ${LIBS_OUTPUT_PATH}/libcurl.so) target_link_libraries(${TARGET_NAME} ${LIBS_OUTPUT_PATH}/libssl.so) target_link_libraries(${TARGET_NAME} ${LIBS_OUTPUT_PATH}/libcrypto.so dl pthread) endif() # ------------------ openssl ------------------ start execute_process(COMMAND sh build_openssl.sh WORKING_DIRECTORY ${EXTERNAL_SOURCE_PATH}/openssl/) if(${CURL_OPENSSL_LIB_SHARED_ENABLE} MATCHES "false") # set(OPENSSL_TAILOR no-asm no-async no-md2 no-mdc2 no-poly1305 no-blake2 # no-siphash no-sm3 no-rc2 no-rc4 no-rc5 no-idea no-aria no-bf no-cast # no-camellia no-chacha no-ec no-sm2 no-dso # no-err no-comp no-cms no-ts no-cmac no-ct # no-hw-padlock no-nextprotoneg no-psk no-rfc3779 no-srtp # no-dgram no-dynamic-engine no-ec2m no-filenames no-gost # no-afalgeng no-async no-autoalginit no-autoerrinit no-capieng # no-tests # no-ssl-trace no-static-engine no-stdio no-threads no-deprecated no-makedepend # no-multiblock) else() # set(OPENSSL_TAILOR no-asm no-tests) endif() if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX}) set(OPENSSL_OS_PLATFORM "linux-x86_64") else() set(OPENSSL_OS_PLATFORM "linux-armv4") # set(LINK_FLAGS "${LINK_FLAGS} -Wl,-rpath,${CURL_SHARED_LIBS_PATH}") # set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LINK_FLAGS}") # set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LINK_FLAGS}") endif() add_custom_target( openssl COMMAND echo "Build openssl." COMMAND rm -rf ${EXTERNAL_SOURCE_PATH}/openssl/build COMMAND ./Configure ${OPENSSL_TAILOR} ${OPENSSL_OS_PLATFORM} --prefix=${EXTERNAL_SOURCE_PATH}/openssl/build --openssldir=${EXTERNAL_SOURCE_PATH}/openssl/build --cross-compile-prefix=${CROSS_COMPILE_PREFIX} CC=gcc AR=ar COMMAND make COMMAND make install WORKING_DIRECTORY ${EXTERNAL_SOURCE_PATH}/openssl/openssl-1.1.1s/ ) # ------------------ openssl ------------------ end # ------------------ curl ------------------ start execute_process(COMMAND sh build_curl.sh WORKING_DIRECTORY ${EXTERNAL_SOURCE_PATH}/curl/) set(CURL_TAILOR --disable-dict --disable-file --disable-gopher --disable-imap --disable-ldap --disable-pop3 --disable-rtmp --disable-rtsp --disable-scp --disable-sftp --disable-smb --disable-telnet --disable-tftp --disable-ipv6) if(${TARGET_PLATFORM} MATCHES ${DEFINE_LINUX}) set(CURL_HOST "") else() set(CURL_HOST "--host=arm-linux") endif() add_custom_target( curl DEPENDS openssl COMMAND echo "Build curl. openssl path = ${EXTERNAL_SOURCE_PATH}" COMMAND ./configure --without-zlib --prefix=${EXTERNAL_SOURCE_PATH}/curl --with-ssl=${EXTERNAL_SOURCE_PATH}/openssl/build ${CURL_HOST} CC=${CMAKE_C_COMPILER} COMMAND make COMMAND cp ${EXTERNAL_SOURCE_PATH}/curl/curl-8.1.2/lib/.libs/lib*.a ${LIBS_OUTPUT_PATH} COMMAND cp ${EXTERNAL_SOURCE_PATH}/openssl/build/lib/lib*.a ${LIBS_OUTPUT_PATH} # COMMAND cp ${EXTERNAL_SOURCE_PATH}/curl/curl-8.1.2/lib/.libs/lib*.so* ${LIBS_OUTPUT_PATH} # COMMAND cp ${EXTERNAL_SOURCE_PATH}/openssl/build/lib/lib*.so* ${LIBS_OUTPUT_PATH} WORKING_DIRECTORY ${EXTERNAL_SOURCE_PATH}/curl/curl-8.1.2/ ) # ------------------ curl ------------------ end add_custom_command( OUTPUT ${EXTERNAL_SOURCE_PATH}/curl/curl-8.1.2/lib/.libs/libcurl.a COMMAND make curl WORKING_DIRECTORY ${PROJECT_ROOT_PATH}/cmake-shell/ ) add_custom_target( compile_curl DEPENDS ${EXTERNAL_SOURCE_PATH}/curl/curl-8.1.2/lib/.libs/libcurl.a WORKING_DIRECTORY ${EXTERNAL_SOURCE_PATH}/curl/curl-8.1.2/ ) add_custom_command( TARGET ${TARGET_NAME} PRE_BUILD COMMAND make compile_curl WORKING_DIRECTORY ${PROJECT_ROOT_PATH}/cmake-shell/ ) if ("${COMPILE_IMPROVE_SUPPORT}" MATCHES "true") add_custom_target( Servers_code_check COMMAND ${CLANG_TIDY_EXE} -checks='${CLANG_TIDY_CHECKS}' --header-filter=.* --system-headers=false ${SRC_FILES} ${CLANG_TIDY_CONFIG} -p ${PLATFORM_PATH}/cmake-shell WORKING_DIRECTORY ${UTILS_SOURCE_PATH}/Servers ) file(GLOB_RECURSE HEADER_FILES *.h) add_custom_target( Servers_code_format COMMAND ${CLANG_FORMAT_EXE} -style=file -i ${SRC_FILES} ${HEADER_FILES} WORKING_DIRECTORY ${UTILS_SOURCE_PATH}/Servers ) add_custom_command( TARGET ${TARGET_NAME} PRE_BUILD COMMAND make Servers_code_check COMMAND make Servers_code_format WORKING_DIRECTORY ${PLATFORM_PATH}/cmake-shell/ ) endif() define_file_name(${TARGET_NAME}) file(GLOB_RECURSE INSTALL_HEADER_FILES include/*.h) install(FILES ${INSTALL_HEADER_FILES} DESTINATION include)