1# This file is part of the openHiTLS project. 2# 3# openHiTLS is licensed under the Mulan PSL v2. 4# You can use this software according to the terms and conditions of the Mulan PSL v2. 5# You may obtain a copy of Mulan PSL v2 at: 6# 7# http://license.coscl.org.cn/MulanPSL2 8# 9# THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, 10# EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, 11# MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. 12# See the Mulan PSL v2 for more details. 13 14cmake_minimum_required(VERSION 3.16 FATAL_ERROR) 15 16project(openHiTLS_PROVIDER_TEST) 17 18set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -shared") 19 20# Set output directory 21set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}) 22 23# Define a function to recursively include directories 24function(include_directories_recursive dir) 25 include_directories(${dir}) 26 file(GLOB children RELATIVE ${dir} ${dir}/*) 27 foreach(child ${children}) 28 if(IS_DIRECTORY ${dir}/${child}) 29 include_directories_recursive(${dir}/${child}) 30 endif() 31 endforeach() 32endfunction() 33 34# Call the function to recursively include the specified directory 35include_directories_recursive(${CMAKE_SOURCE_DIR}/../../../include) 36 37# Define four file areas 38set(SOURCE_FILES_PATH1_SO 39 provider_load_test1.c 40) 41 42set(SOURCE_FILES_PATH1_LIBSO 43 provider_get_cap_test1.c 44 provider_load_test2.c 45 provider_load_test_no_fullfunc.c 46 provider_load_test_no_init.c 47 provider_load_test1.c 48 provider_load_test_providerNoInit.c 49 provider_load_test_providerNoFree.c 50 provider_self_decoder_test.c 51) 52 53set(SOURCE_FILES_PATH2_SO 54 55) 56 57set(SOURCE_FILES_PATH2_LIBSO 58 provider_load_test1.c 59) 60 61 62# Create shared library targets for files with %s.so format in path1 directory 63foreach(SOURCE_FILE ${SOURCE_FILES_PATH1_SO}) 64 get_filename_component(FILE_NAME ${SOURCE_FILE} NAME_WE) 65 if(NOT TARGET ${FILE_NAME}_path1) 66 add_library(${FILE_NAME}_path1 SHARED ${SOURCE_FILE}) 67 set_target_properties(${FILE_NAME}_path1 PROPERTIES 68 PREFIX "" 69 OUTPUT_NAME "${FILE_NAME}" 70 LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/path1" 71 ) 72 endif() 73endforeach() 74 75# Create shared library targets for files with lib%s.so format in path1 directory 76foreach(SOURCE_FILE ${SOURCE_FILES_PATH1_LIBSO}) 77 get_filename_component(FILE_NAME ${SOURCE_FILE} NAME_WE) 78 if(NOT TARGET lib${FILE_NAME}_path1) 79 add_library(lib${FILE_NAME}_path1 SHARED ${SOURCE_FILE} provider_test_utils.c) 80 target_include_directories(lib${FILE_NAME}_path1 PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) 81 target_compile_options(lib${FILE_NAME}_path1 PRIVATE -g -O0) 82 set_target_properties(lib${FILE_NAME}_path1 PROPERTIES 83 PREFIX "" 84 OUTPUT_NAME "lib${FILE_NAME}" 85 LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/path1" 86 ) 87 endif() 88endforeach() 89 90 91set(OPENHITLS_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../..) 92add_library(provider_new_alg_test SHARED provider_new_alg_test.c provider_test_utils.c) 93target_link_directories(provider_new_alg_test PUBLIC ${OPENHITLS_ROOT}/build 94 ${OPENHITLS_ROOT}/platform/Secure_C/lib) 95target_include_directories(provider_new_alg_test PUBLIC ${CMAKE_CURRENT_SOURCE_DIR} 96 ${OPENHITLS_ROOT}/include/crypto 97 ${OPENHITLS_ROOT}/include/bsl 98 ${OPENHITLS_ROOT}/config/macro_config 99 ${OPENHITLS_ROOT}/bsl/obj/include 100 ${OPENHITLS_ROOT}/bsl/asn1/include 101 ${OPENHITLS_ROOT}/crypto/codecskey/include 102 ${OPENHITLS_ROOT}/platform/Secure_C/include) 103target_link_libraries(provider_new_alg_test boundscheck) 104target_compile_options(provider_new_alg_test PUBLIC -g -O0 -DHITLS_BSL_OBJ -DHITLS_CRYPTO_CODECSKEY -DHITLS_CRYPTO_KEY_DECODE) 105set_target_properties(provider_new_alg_test PROPERTIES 106LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/path1" 107) 108 109# Create shared library targets for files with %s.so format in path2 directory 110foreach(SOURCE_FILE ${SOURCE_FILES_PATH2_SO}) 111 get_filename_component(FILE_NAME ${SOURCE_FILE} NAME_WE) 112 if(NOT TARGET ${FILE_NAME}_path2) 113 add_library(${FILE_NAME}_path2 SHARED ${SOURCE_FILE}) 114 target_compile_options(lib${FILE_NAME}_path2 PRIVATE -g -O0) 115 set_target_properties(${FILE_NAME}_path2 PROPERTIES 116 PREFIX "" 117 OUTPUT_NAME "${FILE_NAME}" 118 LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/path2" 119 ) 120 endif() 121endforeach() 122 123# Create shared library targets for files with lib%s.so format in path2 directory 124foreach(SOURCE_FILE ${SOURCE_FILES_PATH2_LIBSO}) 125 get_filename_component(FILE_NAME ${SOURCE_FILE} NAME_WE) 126 if(NOT TARGET lib${FILE_NAME}_path2) 127 add_library(lib${FILE_NAME}_path2 SHARED ${SOURCE_FILE}) 128 set_target_properties(lib${FILE_NAME}_path2 PROPERTIES 129 PREFIX "" 130 OUTPUT_NAME "lib${FILE_NAME}" 131 LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/path2" 132 ) 133 endif() 134endforeach() 135