Skip to content

Commit a75856f

Browse files
authored
Merge pull request #275 from dbear496/fix-cmake-with-rnp
fix CMake build with RNP
2 parents 0f12f3e + 43aa9b0 commit a75856f

2 files changed

Lines changed: 59 additions & 26 deletions

File tree

CMakeLists.txt

Lines changed: 49 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,11 @@ cmake_dependent_option(
4747
"RS_BITDHT_STUNNER"
4848
OFF )
4949

50+
option(
51+
RS_RNPLIB
52+
"Enable use RNP lib for PGP"
53+
ON )
54+
5055
option(
5156
RS_JSON_API
5257
"Use restbed to expose libretroshare as JSON API via HTTP"
@@ -291,25 +296,48 @@ target_link_libraries(${PROJECT_NAME} PRIVATE OpenSSL::SSL OpenSSL::Crypto)
291296

292297
################################################################################
293298

294-
set(OPENPGPSDK_DEVEL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../openpgpsdk/")
295-
if(EXISTS "${OPENPGPSDK_DEVEL_DIR}/CMakeLists.txt" )
296-
message(
297-
STATUS
298-
"openpgpsdk source found at ${OPENPGPSDK_DEVEL_DIR} using it" )
299-
add_subdirectory("${OPENPGPSDK_DEVEL_DIR}" "${CMAKE_BINARY_DIR}/openpgpsdk")
300-
else()
301-
FetchContent_Declare(
302-
openpgpsdk
303-
GIT_REPOSITORY "https://github.com/RetroShare/OpenPGP-SDK.git"
304-
GIT_TAG "origin/master"
305-
GIT_SHALLOW TRUE
306-
GIT_PROGRESS TRUE
307-
TIMEOUT 10
299+
if(RS_RNPLIB)
300+
# Add RNP build directories to linker search path
301+
target_link_directories(${PROJECT_NAME} PRIVATE
302+
${CMAKE_CURRENT_BINARY_DIR}/../supportlibs/librnp/Build/src/lib
303+
${CMAKE_CURRENT_BINARY_DIR}/../supportlibs/librnp/Build/src/libsexpp
304+
)
305+
306+
# Link libraries by name, including RNP libs and dependencies first
307+
target_link_libraries(${PROJECT_NAME} PRIVATE
308+
rnp # Link by name
309+
sexpp
308310
)
309-
FetchContent_MakeAvailable(openpgpsdk)
310-
endif()
311311

312-
target_link_libraries(${PROJECT_NAME} PRIVATE openpgpsdk)
312+
target_include_directories(${PROJECT_NAME} PUBLIC
313+
"${CMAKE_CURRENT_SOURCE_DIR}/../supportlibs/librnp/include"
314+
"${CMAKE_CURRENT_BINARY_DIR}/../supportlibs/librnp/Build/src/lib"
315+
)
316+
else()
317+
318+
set(OPENPGPSDK_DEVEL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../openpgpsdk/")
319+
if(EXISTS "${OPENPGPSDK_DEVEL_DIR}/CMakeLists.txt" )
320+
message(
321+
STATUS
322+
"openpgpsdk source found at ${OPENPGPSDK_DEVEL_DIR} using it" )
323+
add_subdirectory("${OPENPGPSDK_DEVEL_DIR}" "${CMAKE_BINARY_DIR}/openpgpsdk")
324+
else()
325+
FetchContent_Declare(
326+
openpgpsdk
327+
GIT_REPOSITORY "https://github.com/RetroShare/OpenPGP-SDK.git"
328+
GIT_TAG "origin/master"
329+
GIT_SHALLOW TRUE
330+
GIT_PROGRESS TRUE
331+
TIMEOUT 10
332+
)
333+
FetchContent_MakeAvailable(openpgpsdk)
334+
endif()
335+
336+
target_link_libraries(${PROJECT_NAME} PRIVATE openpgpsdk)
337+
338+
target_compile_definitions(${PROJECT_NAME} PUBLIC USE_OPENPGPSDK)
339+
340+
endif(RS_RNPLIB)
313341

314342
################################################################################
315343

@@ -337,7 +365,7 @@ if(RS_BITDHT)
337365

338366
target_compile_definitions(${PROJECT_NAME} PUBLIC RS_USE_BITDHT)
339367
target_link_libraries(${PROJECT_NAME} PRIVATE bitdht)
340-
368+
341369
if(RS_BITDHT_STUNNER)
342370
target_compile_definitions(${PROJECT_NAME} PUBLIC RS_USE_DHT_STUNNER)
343371

@@ -397,7 +425,7 @@ if(RS_JSON_API)
397425
set(
398426
JSONAPI_GENERATOR_SOURCE_DIR
399427
"${CMAKE_CURRENT_SOURCE_DIR}/src/jsonapi/" )
400-
428+
401429
set(
402430
JSONAPI_GENERATOR_EXECUTABLE
403431
"${JSONAPI_GENERATOR_SOURCE_DIR}/jsonapi-generator.py" )
@@ -457,6 +485,7 @@ if(RS_JSON_API)
457485

458486
target_include_directories(
459487
${PROJECT_NAME} PRIVATE "${RESTBED_DEVEL_DIR}/source/" )
488+
target_link_directories(${PROJECT_NAME} PUBLIC "${CMAKE_CURRENT_BINARY_DIR}/../supportlibs/restbed")
460489
target_link_libraries(${PROJECT_NAME} PRIVATE restbed)
461490
else()
462491
message( WARNING
@@ -598,7 +627,7 @@ endif(NOT RS_WARN_DEPRECATED)
598627

599628
if(RS_WARN_LESS)
600629
target_compile_definitions(${PROJECT_NAME} PRIVATE RS_NO_WARN_CPP)
601-
630+
602631
target_compile_options(
603632
${PROJECT_NAME} PRIVATE
604633
-Wno-cpp -Wno-inconsistent-missing-override )

src/CMakeLists.txt

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -230,21 +230,25 @@ endif(RS_JSON_API)
230230

231231
list(
232232
APPEND RS_SOURCES
233-
pgp/openpgpsdkhandler.cc
234233
pgp/pgpauxutils.cc
235234
pgp/pgphandler.cc
236235
pgp/pgpkeyutil.cc
237-
pgp/rscertificate.cc
238-
pgp/rnppgphandler.cc )
236+
pgp/rscertificate.cc )
239237

240238
list(
241239
APPEND RS_IMPLEMENTATION_HEADERS
242-
pgp/openpgpsdkhandler.h
243240
pgp/pgpauxutils.h
244241
pgp/pgphandler.h
245242
pgp/pgpkeyutil.h
246-
pgp/rscertificate.h
247-
pgp/rnppgphandler.h )
243+
pgp/rscertificate.h )
244+
245+
if(RS_RNPLIB)
246+
list(APPEND RS_SOURCES pgp/rnppgphandler.cc)
247+
list(APPEND RS_IMPLEMENTATION_HEADERS pgp/rnppgphandler.h)
248+
else()
249+
list(APPEND RS_SOURCES pgp/openpgpsdkhandler.cc)
250+
list(APPEND RS_IMPLEMENTATION_HEADERS pgp/openpgpsdkhandler.h)
251+
endif()
248252

249253
#./plugins/dlfcn_win32.cc
250254
#./plugins/dlfcn_win32.h

0 commit comments

Comments
 (0)