1- cmake_minimum_required (VERSION 3.12)
2- project (OTExtension LANGUAGES CXX)
3-
4- if (CMAKE_COMPILER_IS_GNUCXX AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0)
5- message (FATAL_ERROR "ENCRYPTO_utils require at least g++-8" )
1+ cmake_minimum_required (VERSION 3.13)
2+ list (INSERT CMAKE_MODULE_PATH 0 "${CMAKE_CURRENT_LIST_DIR} /cmake/Modules" )
3+ include (OTExtensionCacheVariables)
4+ if (ANDROID)
5+ set (CMAKE_CXX_STANDARD 14)
6+ else ()
7+ set (CMAKE_CXX_STANDARD 17)
68endif ()
7-
8- option (OTEXTENSION_BUILD_EXE "Build executables" OFF )
9-
10- find_package (ENCRYPTO_utils QUIET )
11- if (ENCRYPTO_utils_FOUND)
12- message (STATUS "Found ENCRYPTO_utils" )
13- elseif (NOT ENCRYPTO_utils_FOUND AND NOT TARGET ENCRYPTO_utils::encrypto_utils)
14- message ("ENCRYPTO_utils was not found: add ENCRYPTO_utils subdirectory" )
15- if (NOT EXISTS "${PROJECT_SOURCE_DIR} /extern/ENCRYPTO_utils/CMakeLists.txt" )
16- find_package (Git REQUIRED)
17- message ("initialize Git submodule: extern/ENCRYPTO_utils" )
18- execute_process (COMMAND git submodule update --init extern/ENCRYPTO_utils
19- WORKING_DIRECTORY "${PROJECT_SOURCE_DIR} " )
20- endif ()
21- add_subdirectory (extern/ENCRYPTO_utils)
9+ project (OTExtension LANGUAGES C CXX)
10+
11+ if (ANDROID)
12+ if (ANDROID_ARM_NEON)
13+ set (OTExtension_INSTALL_PREFIX "platforms/${ANDROID_PLATFORM} /arch-${ANDROID_SYSROOT_ABI} /NEON" )
14+ else (ANDROID_ARM_NEON)
15+ set (OTExtension_INSTALL_PREFIX "platforms/${ANDROID_PLATFORM} /arch-${ANDROID_SYSROOT_ABI} " )
16+ endif (ANDROID_ARM_NEON)
17+ set (OTExtension_INSTALL_INCLUDE "${OTExtension_INSTALL_PREFIX} /include" )
18+ set (OTExtension_INSTALL_LIB "${OTExtension_INSTALL_PREFIX} /lib" )
19+ set (OTExtension_INSTALL_ARCHIVE "${OTExtension_INSTALL_PREFIX} /lib" )
20+ set (OTExtension_INSTALL_CONFIG "" )
21+ else (ANDROID)
22+ set (OTExtension_INSTALL_PREFIX "" )
23+ set (OTExtension_INSTALL_INCLUDE "include" )
24+ set (OTExtension_INSTALL_LIB "lib" )
25+ set (OTExtension_INSTALL_ARCHIVE "lib" )
26+ set (OTExtension_INSTALL_CONFIG "" )
27+ endif (ANDROID)
28+
29+ if (ANDROID AND CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
30+ set (CMAKE_INSTALL_PREFIX "${ANDROID_NDK} /usr/local"
31+ CACHE PATH "Default install directory for android builds." FORCE)
2232endif ()
33+
34+ include (AddRelic)
35+ include (AddENCRYPTO_utils)
2336find_package (Threads REQUIRED)
2437
2538
26- add_library (otextension
39+ add_library (otextension ${OTExtension_LIBRARY_TYPE}
2740 ot/alsz-ot-ext -rec.cpp
2841 ot/alsz-ot-ext -snd.cpp
29- # ot/asharov-lindell.cpp
3042 ot/iknp-ot-ext -rec.cpp
3143 ot/iknp-ot-ext -snd.cpp
3244 ot/kk-ot-ext -rec.cpp
3345 ot/kk-ot-ext -snd.cpp
3446 ot/naor-pinkas.cpp
35- # ot/naor-pinkas_noro.cpp
3647 ot/nnob-ot-ext -rec.cpp
3748 ot/nnob-ot-ext -snd.cpp
3849 ot/ot-ext .cpp
@@ -41,55 +52,44 @@ add_library(otextension
4152 ot/pvwddh.cpp
4253 ot/simpleot.cpp
4354)
55+ set_target_properties (otextension PROPERTIES INSTALL_RPATH_USE_LINK_PATH TRUE )
56+
4457add_library (OTExtension::otextension ALIAS otextension)
4558
46- target_compile_features (otextension PUBLIC cxx_std_17)
4759target_compile_options (otextension PRIVATE "-Wall" "-Wextra" )
48- #target_compile_options(otextension PUBLIC "-fno-omit-frame-pointer" "-fsanitize=address")
49- #target_link_options(otextension PUBLIC "-fno-omit-frame-pointer" "-fsanitize=address")
5060
5161target_include_directories (otextension
5262 PUBLIC
53- $<INSTALL_INTERFACE:include >
63+ $<INSTALL_INTERFACE:${OTExtension_INSTALL_INCLUDE} >
5464 $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR} >
5565)
5666
5767
5868target_link_libraries (otextension
5969 PUBLIC ENCRYPTO_utils::encrypto_utils
70+ PUBLIC Relic::relic
6071 PUBLIC Threads::Threads
6172)
6273
6374
75+ include (InstallConfig)
76+ install_config(OTExtension_INSTALL_LOCATION "OTExtension" OTExtension::otextension)
77+
6478install (TARGETS otextension
6579 EXPORT "${PROJECT_NAME} Targets"
66- ARCHIVE DESTINATION lib
67- LIBRARY DESTINATION lib
68- INCLUDES DESTINATION lib
69- )
80+ ARCHIVE DESTINATION "${OTExtension_INSTALL_ARCHIVE} "
81+ LIBRARY DESTINATION "${OTExtension_INSTALL_LIB} "
82+ INCLUDES DESTINATION "${OTExtension_INSTALL_INCLUDE} " )
7083install (DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR} /ot"
71- DESTINATION include
72- FILES_MATCHING PATTERN "*.h"
73- )
74- export (TARGETS otextension NAMESPACE "${PROJECT_NAME} ::" FILE "${PROJECT_NAME} Targets.cmake" )
84+ DESTINATION "${OTExtension_INSTALL_INCLUDE} "
85+ FILES_MATCHING REGEX ".*\\ .h(pp|h)?$" REGEX ".*cmake.*" EXCLUDE )
86+ export (TARGETS otextension ${OTExtension_DEPENDENCIES_TO_EXPORT}
87+ NAMESPACE "${PROJECT_NAME} ::"
88+ FILE "${PROJECT_NAME} Targets.cmake" )
7589install (EXPORT "${PROJECT_NAME} Targets"
7690 NAMESPACE "${PROJECT_NAME} ::"
77- DESTINATION "lib/cmake/${PROJECT_NAME} "
78- )
79-
80-
81- include (CMakePackageConfigHelpers)
82-
83- configure_package_config_file("${CMAKE_CURRENT_LIST_DIR} /cmake/${PROJECT_NAME} Config.cmake.in"
84- ${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} Config.cmake
85- INSTALL_DESTINATION "lib/cmake/${PROJECT_NAME} "
86- )
87-
88- install (FILES
89- "${CMAKE_CURRENT_BINARY_DIR} /${PROJECT_NAME} Config.cmake"
90- DESTINATION "lib/cmake/${PROJECT_NAME} "
91- )
91+ DESTINATION "${OTExtension_INSTALL_LOCATION} " )
9292
93- if (OTEXTENSION_BUILD_EXE )
93+ if (OTExtension_BUILD_EXE )
9494 add_subdirectory (mains)
95- endif (OTEXTENSION_BUILD_EXE )
95+ endif (OTExtension_BUILD_EXE )
0 commit comments