summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/xeus/cmake_find_cryptopp_and_check_cxx_compatibility.patch
blob: da19f84134f5b5741d352e384103cb51c61f30d9 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 810d5d1..d6ba3e9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -49,7 +49,33 @@ message(STATUS "xeus binary version: v${XEUS_BINARY_VERSION}")
 find_package(nlohmann_json 3.2.0 REQUIRED)
 find_package(xtl 0.4 REQUIRED)
 find_package(cppzmq 4.3.0 REQUIRED)
-find_package(cryptopp REQUIRED)
+
+# cryptopp isn't built with cmake, find it manually
+find_path(cryptopp_ROOT_DIR
+  NAMES include/cryptopp/cryptlib.h
+  PATHS ENV cryptopp_ROOT)
+
+find_path(cryptopp_INCLUDE_DIR
+  NAMES cryptopp/cryptlib.h
+  HINTS ${cryptopp_ROOT_DIR}
+  PATH_SUFFIXES include)
+
+find_library(cryptopp_STATIC_LIB
+  NAMES libcryptopp.a
+  HINTS ${cryptopp_ROOT_DIR}
+  PATH_SUFFIXES lib)
+
+if (NOT cryptopp_INCLUDE_DIR OR NOT cryptopp_STATIC_LIB)
+  message(FATAL_ERROR "cannot find cryptopp, missing include dir or static lib")
+else()
+  message("Found cryptopp: ${cryptopp_ROOT_DIR}")
+endif()
+
+add_library(cryptopp-static STATIC IMPORTED)
+set_target_properties(cryptopp-static
+  PROPERTIES
+    IMPORTED_LOCATION ${cryptopp_STATIC_LIB}
+    INTERFACE_INCLUDE_DIRECTORIES ${cryptopp_INCLUDE_DIR})
 
 # On Unix platforms, ZeroMQ is built with autotools and pkg-config is
 # required to locate it.
@@ -157,10 +183,11 @@ get_target_property(cryptopp_INCLUDE_DIR cryptopp-static INTERFACE_INCLUDE_DIREC
 get_target_property(cryptopp_LIBRARY cryptopp-static LOCATION)
 set(CMAKE_REQUIRED_LIBRARIES ${cryptopp_LIBRARY})
 set(CMAKE_REQUIRED_INCLUDES ${cryptopp_INCLUDE_DIR})
+set(CMAKE_REQUIRED_FLAGS "--std=c++11")
 check_cxx_source_compiles("
 #include \"cryptopp/config.h\"
 int main(){
-  [[maybe_unused]] CryptoPP::byte b = CryptoPP::byte{0x36};
+  CryptoPP::byte b = CryptoPP::byte{0x36};
 }" HAVE_CRYPTOPP_BYTE_T)
 
 cmake_pop_check_state()