123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- set(impls
- "devurandom"
- )
- set(impls_Windows
- "CryptGenRandom"
- )
- if(NOT "${impls_${CMAKE_SYSTEM_NAME}}" STREQUAL "")
- list(INSERT impls 0 ${impls_${CMAKE_SYSTEM_NAME}})
- endif()
- function(success dir impl)
- message("randombytes() ${impl} -- Succeeded!")
- file(COPY "${dir}/randombytes-impl.h" DESTINATION "${CMAKE_BINARY_DIR}/include_internal")
- file(RENAME
- ${CMAKE_BINARY_DIR}/include_internal/randombytes-impl.h
- ${CMAKE_BINARY_DIR}/include_internal/randombytes.h
- )
- include_directories(${dir})
- add_library(randombytes ${dir}/${impl}.c)
- endfunction()
- file(READ "${CMAKE_SOURCE_DIR}/randombytes/test.c" testContent)
- foreach(impl ${impls})
- set(dir "${CMAKE_BINARY_DIR}/randombytes/${impl}")
- file(MAKE_DIRECTORY ${dir})
- file(COPY "${CMAKE_SOURCE_DIR}/randombytes/${impl}.c" DESTINATION ${dir})
- file(RENAME "${dir}/${impl}.c" "${dir}/test.c")
- file(APPEND "${dir}/test.c" "${testContent}")
- file(COPY "${CMAKE_SOURCE_DIR}/randombytes/${impl}.c" DESTINATION ${dir})
- file(COPY "${CMAKE_SOURCE_DIR}/randombytes/${impl}.h" DESTINATION ${dir})
- file(RENAME "${dir}/${impl}.h" "${dir}/randombytes-impl.h")
- if (CMAKE_CROSSCOMPILING)
- try_compile(compileResult
- ${dir}
- ${dir}/test.c
- OUTPUT_VARIABLE compileOut
- )
- if(NOT compileResult)
- message("randombytes() ${impl} -- Failed to compile [${compileOut}]")
- else()
- success("${dir}" "${impl}")
- break()
- endif()
- else()
- try_run(runResult compileResult
- ${dir}
- ${dir}/test.c
- COMPILE_OUTPUT_VARIABLE compileOut
- )
- if(NOT compileResult)
- message("randombytes() ${impl} -- Failed to compile [${compileOut}]")
- elseif(runResult)
- message("randombytes() ${impl} -- Failed")
- else()
- success(${dir} ${impl})
- break()
- endif()
- endif()
- endforeach()
|