Skip to content

Commit ee96bd4

Browse files
committed
improved find_package
1 parent c01a868 commit ee96bd4

File tree

6 files changed

+61
-17
lines changed

6 files changed

+61
-17
lines changed

CMakeLists.txt

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,12 @@ macro(EVAL var)
5454
endif()
5555
endmacro()
5656

57+
if(DEFINED OC_PIC)
58+
message("warning, setting ENABLE_PIC as OC_PIC = ${OC_PIC}")
59+
set(ENABLE_PIC ${OC_PIC})
60+
unset(OC_PIC CACHE)
61+
endif()
62+
5763

5864
#############################################
5965
# CONFIGURE #
@@ -68,7 +74,7 @@ option(ENABLE_SSE "compile with SSE instructions" ON)
6874
option(ENABLE_AVX "compile with AVX instructions" ${ENABLE_SSE})
6975
option(ENABLE_BOOST "compile with BOOST networking integration" ON)
7076
option(ENABLE_ASAN "build with asan" OFF)
71-
option(OC_PIC "compile with -fPIC " OFF)
77+
option(ENABLE_PIC "compile with -fPIC " OFF)
7278
option(VERBOSE_FETCH "" ON)
7379

7480
if(NOT DEFINED CRYPTO_TOOLS_STD_VER)
@@ -131,7 +137,9 @@ message(STATUS "Option: ENABLE_COPROTO = ${ENABLE_COPROTO}")
131137
message(STATUS "Option: ENABLE_CIRCUITS = ${ENABLE_CIRCUITS}")
132138

133139
message(STATUS "Option: ENABLE_SSE = ${ENABLE_SSE}")
134-
message(STATUS "Option: ENABLE_AVX = ${ENABLE_AVX}\n\n")
140+
message(STATUS "Option: ENABLE_AVX = ${ENABLE_AVX}")
141+
message(STATUS "Option: ENABLE_PIC = ${ENABLE_PIC}")
142+
message(STATUS "Option: ENABLE_ASAN = ${ENABLE_ASAN}\n\n")
135143

136144

137145

build.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,8 @@ def Build(projectName, argv, install, par, sudo, noConfig):
4646
else:
4747
buildDir = "out/build/linux"
4848

49-
argv.append("-DCMAKE_BUILD_TYPE={0}".format(buildType))
49+
if not any("DCMAKE_BUILD_TYPE" in s for s in argv):
50+
argv.append("-DCMAKE_BUILD_TYPE={0}".format(buildType))
5051

5152
argStr = ""
5253
for a in argv:

cmake/cryptoToolsDepHelper.cmake

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,10 +114,22 @@ macro(FIND_SODIUM)
114114

115115
find_library(SODIUM_LIBRARIES NAMES ${SODIUM_LIB_NAME} PATH_SUFFIXES "/lib/" ${ARGS})
116116
if(EXISTS ${SODIUM_INCLUDE_DIRS} AND EXISTS ${SODIUM_LIBRARIES})
117-
set(SODIUM_FOUND ON)
117+
get_filename_component(SODIUM_LIBRARIES_DIR ${SODIUM_LIBRARIES} DIRECTORY)
118+
if(EXISTS ${SODIUM_LIBRARIES_DIR}/cmake/libsodium/libsodiumConfig.cmake)
119+
include(${SODIUM_LIBRARIES_DIR}/cmake/libsodium/libsodiumConfig.cmake)
120+
if((libsodium_pic AND ENABLE_PIC) OR ((NOT libsodium_pic) AND (NOT ENABLE_PIC)))
121+
set(SODIUM_FOUND ON)
122+
else()
123+
message("Found incompatible libsodium at ${SODIUM_LIBRARIES_DIR}. ENABLE_PIC=${ENABLE_PIC}, libsodium_pic=${libsodium_pic}")
124+
set(SODIUM_FOUND OFF)
125+
endif()
126+
else()
127+
set(SODIUM_FOUND ON)
128+
endif()
118129
else()
119130
set(SODIUM_FOUND OFF)
120131
endif()
132+
121133
endmacro()
122134

123135
if(FETCH_SODIUM_IMPL)
@@ -167,16 +179,36 @@ macro(FIND_COPROTO)
167179

168180
if(ENABLE_BOOST)
169181
set(COPROTO_COMPONENTS boost)
182+
else()
183+
set(COPROTO_COMPONENTS no_boost)
170184
endif()
171-
172185
if(ENABLE_OPENSSL)
173186
set(COPROTO_COMPONENTS ${COPROTO_COMPONENTS} openssl)
187+
else()
188+
set(COPROTO_COMPONENTS ${COPROTO_COMPONENTS} no_openssl)
189+
endif()
190+
if(ENABLE_ASAN)
191+
set(COPROTO_COMPONENTS ${COPROTO_COMPONENTS} asan)
192+
else()
193+
set(COPROTO_COMPONENTS ${COPROTO_COMPONENTS} no_asan)
194+
endif()
195+
if(ENABLE_PIC)
196+
set(COPROTO_COMPONENTS ${COPROTO_COMPONENTS} pic)
197+
else()
198+
set(COPROTO_COMPONENTS ${COPROTO_COMPONENTS} no_pic)
199+
endif()
200+
201+
set(COPROTO_COMPONENTS ${COPROTO_COMPONENTS} cpp${CRYPTO_TOOLS_STD_VER})
202+
203+
if( "${CMAKE_BUILD_TYPE}" STREQUAL "Release"
204+
OR "${CMAKE_BUILD_TYPE}" STREQUAL "Debug"
205+
OR "${CMAKE_BUILD_TYPE}" STREQUAL "RelWithDebInfo" )
206+
set(COPROTO_COMPONENTS ${COPROTO_COMPONENTS} ${CMAKE_BUILD_TYPE} )
174207
endif()
175208

176209
find_package(coproto ${COPROTO_DP} ${ARGN} COMPONENTS ${COPROTO_COMPONENTS})
177-
178210
endmacro()
179-
message("FETCH_COPROTO_IMPL=${FETCH_COPROTO_IMPL}")
211+
180212
if(FETCH_COPROTO_IMPL)
181213
FIND_COPROTO(QUIET)
182214
include(${CMAKE_CURRENT_LIST_DIR}/../thirdparty/getCoproto.cmake)

cryptoTools/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ else()
3838
target_compile_options(cryptoTools PUBLIC -mavx2)
3939
endif()
4040

41-
if(OC_PIC)
41+
if(ENABLE_PIC)
4242
target_compile_options(cryptoTools PUBLIC -fPIC)
4343
endif()
4444

thirdparty/getCoproto.cmake

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@
22
set(USER_NAME )
33
set(TOKEN )
44
set(GIT_REPOSITORY "https://github.com/Visa-Research/coproto.git")
5-
set(GIT_TAG "b8f38f3213537dc1dbf03b816d28a37020d19209" )
5+
set(GIT_TAG "7c59b4704ec0e1ad7023f614857b99bb5b9f1128" )
66

77
set(CLONE_DIR "${OC_THIRDPARTY_CLONE_DIR}/coproto")
88
set(BUILD_DIR "${CLONE_DIR}/out/build/${OC_CONFIG}")
99
set(LOG_FILE "${CMAKE_CURRENT_LIST_DIR}/log-coproto.txt")
1010

11+
1112
include("${CMAKE_CURRENT_LIST_DIR}/fetch.cmake")
1213
if(NOT DEFINED FETCH_BOOST)
1314
set(COPROTO_FETCH_BOOST ${ENABLE_BOOST})
@@ -16,24 +17,24 @@ else()
1617
endif()
1718
if(NOT coproto_FOUND)
1819
string (REPLACE ";" "%" CMAKE_PREFIX_PATH_STR "${CMAKE_PREFIX_PATH}")
19-
message("\n\nCMAKE_PREFIX_PATH_STR=${CMAKE_PREFIX_PATH_STR}\n\n")
2020
find_program(GIT git REQUIRED)
2121
set(DOWNLOAD_CMD ${GIT} clone ${GIT_REPOSITORY})
2222
set(CHECKOUT_CMD ${GIT} checkout ${GIT_TAG})
2323
set(CONFIGURE_CMD ${CMAKE_COMMAND} -S ${CLONE_DIR} -B ${BUILD_DIR} -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}
2424
"-DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH_STR}"
2525
-DCMAKE_BUILD_TYPE:STRING=${CMAKE_BUILD_TYPE}
26-
-DVERBOSE_FETCH=${VERBOSE_FETCH}
26+
-DVERBOSE_FETCH=true
2727
-DCOPROTO_FETCH_SPAN=ON
2828
-DCOPROTO_FETCH_FUNCTION2=ON
2929
-DCOPROTO_FETCH_MACORO=ON
3030
-DCOPROTO_FETCH_BOOST=${COPROTO_FETCH_BOOST}
3131
-DCOPROTO_ENABLE_BOOST=${ENABLE_BOOST}
3232
-DCOPROTO_ENABLE_OPENSSL=${ENABLE_OPENSSL}
3333
-DCOPROTO_CPP_VER=${CRYPTO_TOOLS_STD_VER}
34-
-DCOPROTO_PIC=${OC_PIC}
34+
-DCOPROTO_PIC=${ENABLE_PIC}
3535
-DCOPROTO_ASAN=${ENABLE_ASAN}
3636
-DCOPROTO_THIRDPARTY_CLONE_DIR=${OC_THIRDPARTY_CLONE_DIR}
37+
-DCOPROTO_STAGE=${OC_THIRDPARTY_INSTALL_PREFIX}
3738
)
3839
set(BUILD_CMD ${CMAKE_COMMAND} --build ${BUILD_DIR} --config ${CMAKE_BUILD_TYPE})
3940
set(INSTALL_CMD ${CMAKE_COMMAND} --install ${BUILD_DIR} --config ${CMAKE_BUILD_TYPE} --prefix ${OC_THIRDPARTY_INSTALL_PREFIX})

thirdparty/getSodium.cmake

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ if(NOT SODIUM_FOUND)
3131
"mkdir ${OC_THIRDPARTY_INSTALL_PREFIX}/lib/ -Force\n"
3232
"cp ./src/libsodium/include/* ${OC_THIRDPARTY_INSTALL_PREFIX}/include/ -Recurse -Force\n"
3333
"cp ./Build/Release/x64/libsodium.lib ${OC_THIRDPARTY_INSTALL_PREFIX}/lib/ -Force\n"
34+
"mkdir ${OC_THIRDPARTY_INSTALL_PREFIX}/lib/cmake/libsodium/ -Force\n"
3435
WD ${CLONE_DIR}
3536
)
3637

@@ -46,7 +47,7 @@ if(NOT SODIUM_FOUND)
4647
run(NAME "dos2unix" CMD ${DOS2UNIX_CMD} WD ${CLONE_DIR})
4748
endif()
4849

49-
if(OC_PIC)
50+
if(ENABLE_PIC)
5051
set(WITH_PIC "--with-pic=yes")
5152
else()
5253
set(WITH_PIC "--with-pic=no")
@@ -66,9 +67,10 @@ if(NOT SODIUM_FOUND)
6667
run(NAME "Configure" CMD ${CONFIGURE_CMD} WD ${CLONE_DIR})
6768
run(NAME "Build" CMD ${BUILD_CMD} WD ${CLONE_DIR})
6869
run(NAME "Install" CMD ${INSTALL_CMD} WD ${CLONE_DIR})
69-
70+
run(NAME "Install2" CMD "mkdir" "-p" "${OC_THIRDPARTY_INSTALL_PREFIX}/lib/cmake/libsodium" WD ${CLONE_DIR})
7071
endif()
71-
72+
73+
file(WRITE ${OC_THIRDPARTY_INSTALL_PREFIX}/lib/cmake/libsodium/libsodiumConfig.cmake "set(libsodium_pic ${ENABLE_PIC})")
7274
message("log ${LOG_FILE}\n==========================================")
7375

7476
else()
@@ -89,10 +91,10 @@ else()
8991
9092
if(NOT CMAKE_INSTALL_PREFIX STREQUAL \"${OC_THIRDPARTY_INSTALL_PREFIX}\")
9193
execute_process(
92-
COMMAND ${SUDO} mkdir -p \${CMAKE_INSTALL_PREFIX}/lib/
93-
COMMAND ${SUDO} mkdir -p \${CMAKE_INSTALL_PREFIX}/include
94+
COMMAND ${SUDO} mkdir -p \${CMAKE_INSTALL_PREFIX}/lib/cmake/libsodium
9495
COMMAND ${SUDO} mkdir -p \${CMAKE_INSTALL_PREFIX}/include/sodium
9596
COMMAND ${SUDO} cp ${OC_THIRDPARTY_INSTALL_PREFIX}/lib/libsodium.a \${CMAKE_INSTALL_PREFIX}/lib/
97+
COMMAND ${SUDO} cp -r ${OC_THIRDPARTY_INSTALL_PREFIX}/lib/cmake/libsodium/libsodiumConfig.cmake \${CMAKE_INSTALL_PREFIX}/lib/cmake/libsodium/
9698
COMMAND ${SUDO} cp ${OC_THIRDPARTY_INSTALL_PREFIX}/include/sodium.h \${CMAKE_INSTALL_PREFIX}/include/
9799
COMMAND ${SUDO} cp -r ${OC_THIRDPARTY_INSTALL_PREFIX}/include/sodium \${CMAKE_INSTALL_PREFIX}/include/
98100
WORKING_DIRECTORY \"${CLONE_DIR}\"

0 commit comments

Comments
 (0)