143 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			CMake
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			143 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			CMake
		
	
	
		
			Executable File
		
	
	
	
	
 | 
						|
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) |