blob: 50270fba4347f757ab1f3e13e5a4496d5236e0aa [file] [log] [blame]
# Create AMCL library and examples
# add the binary tree directory to the search path for include files and linking
include_directories( ${CMAKE_CURRENT_BINARY_DIR} )
link_directories( ${CMAKE_CURRENT_BINARY_DIR} )
# post build: mv amcl_.h amcl.h
if(EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/amcl.h")
file(RENAME amcl.h amcl_.h)
endif()
file(COPY DLLDefines.h DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
set(SOURCES_AMCL
big.c
fp.c
ecp.c
hash.c
rand.c
aes.c
gcm.c
oct.c
rom.c
fp2.c
ecp2.c
fp4.c
fp12.c
ff.c)
# Build AMCL
add_library(amcl ${LIB_TYPE} ${SOURCES_AMCL} version.c)
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
if(BUILD_SHARED_LIBS)
message(STATUS "Build shared libs")
target_link_libraries (amcl libm.so)
else()
message(STATUS "Build static libs")
target_link_libraries (amcl libm.a)
endif(BUILD_SHARED_LIBS)
endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
# Build libmpin
if(BUILD_MPIN)
add_library(mpin ${LIB_TYPE} pair.c mpin.c utils.c)
target_link_libraries (mpin amcl)
add_executable (testmpin testmpin.c)
target_link_libraries (testmpin mpin)
endif(BUILD_MPIN)
# Copy built libs to c/tests which allows testing without
# having to install the libs.
if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
message(STATUS "Copy libamcl.dll to c/tests for testing")
add_custom_command(
TARGET amcl
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_BINARY_DIR}/libamcl.dll" "${PROJECT_BINARY_DIR}/c/tests/")
if(BUILD_MPIN)
message(STATUS "Copy libmpin.dll to c/tests for testing")
add_custom_command(
TARGET mpin
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_BINARY_DIR}/libmpin.dll" "${PROJECT_BINARY_DIR}/c/tests/")
endif(BUILD_MPIN)
endif(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
# Copy built libs to pythonCFFI which allows testing without
# having to install the libs.
if (BUILD_PYTHON AND BUILD_SHARED_LIBS)
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
if(BUILD_MPIN)
message(STATUS "Copy libmpin.so to pythonCFFI for testing")
add_custom_command(
TARGET mpin
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_BINARY_DIR}/libmpin.so" "${PROJECT_BINARY_DIR}/pythonCFFI/")
endif(BUILD_MPIN)
endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
message(STATUS "Copy libamcl.dll to pythonCFFI for testing")
add_custom_command(
TARGET amcl
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_BINARY_DIR}/libamcl.dll" "${PROJECT_BINARY_DIR}/pythonCFFI/")
if(BUILD_MPIN)
message(STATUS "Copy libmpin.dll to pythonCFFI for testing")
add_custom_command(
TARGET mpin
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_BINARY_DIR}/libmpin.dll" "${PROJECT_BINARY_DIR}/pythonCFFI/")
endif(BUILD_MPIN)
endif(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
message(STATUS "Copy libamcl.dylib to pythonCFFI for testing")
add_custom_command(
TARGET amcl
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_BINARY_DIR}/libamcl.dylib" "${PROJECT_BINARY_DIR}/pythonCFFI/")
if(BUILD_MPIN)
message(STATUS "Copy libmpin.dylib to pythonCFFI for testing")
add_custom_command(
TARGET mpin
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_BINARY_DIR}/libmpin.dylib" "${PROJECT_BINARY_DIR}/pythonCFFI/")
endif(BUILD_MPIN)
endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
endif (BUILD_PYTHON AND BUILD_SHARED_LIBS)
# Example programs
add_executable (testecm testecm.c ecdh.c)
add_executable (testecdh testecdh.c ecdh.c)
add_executable (testrsa testrsa.c rsa.c)
target_link_libraries (testecm amcl)
target_link_libraries (testecdh amcl)
target_link_libraries (testrsa amcl)
add_subdirectory (tests)
# Install libs and headers
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
install(DIRECTORY DESTINATION include/amcl DIRECTORY_PERMISSIONS
OWNER_WRITE OWNER_READ OWNER_EXECUTE
GROUP_WRITE GROUP_READ
WORLD_WRITE WORLD_READ WORLD_EXECUTE)
install (TARGETS amcl DESTINATION lib PERMISSIONS
OWNER_WRITE OWNER_READ OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/amcl.h DESTINATION include/amcl PERMISSIONS
OWNER_WRITE OWNER_READ OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)
install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/utils.h DESTINATION include/amcl PERMISSIONS
OWNER_WRITE OWNER_READ OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)
install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/DLLDefines.h DESTINATION include/amcl PERMISSIONS
OWNER_WRITE OWNER_READ OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)
if(BUILD_MPIN)
install (TARGETS mpin DESTINATION lib PERMISSIONS
OWNER_WRITE OWNER_READ OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)
install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/mpin.h DESTINATION include/amcl PERMISSIONS
OWNER_WRITE OWNER_READ OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)
endif(BUILD_MPIN)
endif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
# Windows specific code
install (TARGETS amcl DESTINATION lib)
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/amcl.h DESTINATION lib)
install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/utils.h DESTINATION lib)
install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/DLLDefines.h DESTINATION lib)
if(BUILD_MPIN)
install (TARGETS mpin DESTINATION lib)
install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/mpin.h DESTINATION lib)
endif(BUILD_MPIN)
endif(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
# Mac OS X specific code
install(DIRECTORY DESTINATION include/amcl DIRECTORY_PERMISSIONS
OWNER_WRITE OWNER_READ OWNER_EXECUTE
GROUP_WRITE GROUP_READ
WORLD_WRITE WORLD_READ WORLD_EXECUTE)
install (TARGETS amcl DESTINATION lib PERMISSIONS
OWNER_WRITE OWNER_READ OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)
install (FILES ${CMAKE_CURRENT_BINARY_DIR}/amcl.h DESTINATION include/amcl PERMISSIONS
OWNER_WRITE OWNER_READ OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)
install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/utils.h DESTINATION include/amcl PERMISSIONS
OWNER_WRITE OWNER_READ OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)
install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/DLLDefines.h DESTINATION include/amcl PERMISSIONS
OWNER_WRITE OWNER_READ OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)
if(BUILD_MPIN)
install (TARGETS mpin DESTINATION lib PERMISSIONS
OWNER_WRITE OWNER_READ OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)
install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/mpin.h DESTINATION include/amcl PERMISSIONS
OWNER_WRITE OWNER_READ OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)
endif(BUILD_MPIN)
endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")