From b91ead90254ac6d6daf908f689c38e372a44c615 Mon Sep 17 00:00:00 2001
From: 0xFFFC0000 <0xFFFC0000@proton.me>
Date: Thu, 13 Jun 2024 10:26:46 +0000
Subject: [PATCH] cmake: add different parameters to add_monero_library. 1.
 LINKS flag, will link publicly the libraries provided. 2. PRIVATE_LINKS flag,
 will link privately the libraries provided. 3. INCLUDES flag, will includes
 publicly the dirs provided. 4. PRIVATE_INCLUDES flag, will include privately
 the libraries provided.

---
 CMakeLists.txt | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6ffdaeb55..d77a1d689 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -643,7 +643,7 @@ function (monero_add_library name)
 endfunction()
 
 function (monero_add_library_with_deps)
-  cmake_parse_arguments(MONERO_ADD_LIBRARY "" "NAME" "DEPENDS;SOURCES" ${ARGN})
+  cmake_parse_arguments(MONERO_ADD_LIBRARY "" "NAME" "DEPENDS;LINKS;PRIVATE_LINKS;INCLUDES;PRIVATE_INCLUDES;SOURCES" ${ARGN})
   source_group("${MONERO_ADD_LIBRARY_NAME}" FILES ${MONERO_ADD_LIBRARY_SOURCES})
 
   # Define a ("virtual") object library and an actual library that links those
@@ -658,6 +658,22 @@ function (monero_add_library_with_deps)
   if (MONERO_ADD_LIBRARY_DEPENDS)
     add_dependencies(${objlib} ${MONERO_ADD_LIBRARY_DEPENDS})
   endif()
+  if (MONERO_ADD_LIBRARY_LINKS)
+    target_link_libraries(${objlib} PUBLIC ${MONERO_ADD_LIBRARY_LINKS})
+    target_link_libraries(${MONERO_ADD_LIBRARY_NAME} PUBLIC ${MONERO_ADD_LIBRARY_LINKS})
+  endif()
+  if (MONERO_ADD_LIBRARY_PRIVATE_LINKS)
+    target_link_libraries(${objlib} PRIVATE ${MONERO_ADD_LIBRARY_PRIVATE_LINKS})
+    target_link_libraries(${MONERO_ADD_LIBRARY_NAME} PRIVATE ${MONERO_ADD_LIBRARY_PRIVATE_LINKS})
+  endif()
+  if (MONERO_ADD_LIBRARY_INCLUDES)
+    target_include_directories(${objlib} PUBLIC ${MONERO_ADD_LIBRARY_INCLUDES})
+    target_include_directories(${MONERO_ADD_LIBRARY_NAME} PUBLIC ${MONERO_ADD_LIBRARY_INCLUDES})
+  endif()
+  if (MONERO_ADD_LIBRARY_PRIVATE_INCLUDES)
+    target_include_directories(${objlib} PRIVATE ${MONERO_ADD_LIBRARY_PRIVATE_INCLUDES})
+    target_include_directories(${MONERO_ADD_LIBRARY_NAME} PRIVATE ${MONERO_ADD_LIBRARY_PRIVATE_INCLUDES})
+  endif()  
   set_property(TARGET "${MONERO_ADD_LIBRARY_NAME}" PROPERTY FOLDER "libs")
   target_compile_definitions(${objlib}
     PRIVATE $<TARGET_PROPERTY:${MONERO_ADD_LIBRARY_NAME},INTERFACE_COMPILE_DEFINITIONS>)