Browse Source

Added USE_SYSTEM_JUICE cmake option

Paul-Louis Ageneau 4 years ago
parent
commit
247bfb4c0a
2 changed files with 32 additions and 4 deletions
  1. 15 4
      CMakeLists.txt
  2. 17 0
      cmake/Modules/FindLibJuice.cmake

+ 15 - 4
CMakeLists.txt

@@ -8,6 +8,7 @@ set(PROJECT_DESCRIPTION "WebRTC Data Channels Library")
 option(USE_GNUTLS "Use GnuTLS instead of OpenSSL" OFF)
 option(USE_NICE "Use libnice instead of libjuice" OFF)
 option(USE_SYSTEM_SRTP "Use system libSRTP" OFF)
+option(USE_SYSTEM_JUICE "Use system libjuice" OFF)
 option(NO_WEBSOCKET "Disable WebSocket support" OFF)
 option(NO_MEDIA "Disable media transport support" OFF)
 option(NO_EXAMPLES "Disable examples" OFF)
@@ -228,7 +229,7 @@ set_target_properties(datachannel-static PROPERTIES
 	VERSION ${PROJECT_VERSION}
 	CXX_STANDARD 17)
 
-target_include_directories(datachannel PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include> $<INSTALL_INTERFACE:include>)
+target_include_directories(datachannel PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>)
 target_include_directories(datachannel PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include/rtc)
 target_include_directories(datachannel PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)
 target_link_libraries(datachannel PUBLIC Threads::Threads)
@@ -324,11 +325,21 @@ if (USE_NICE)
 	target_link_libraries(datachannel PRIVATE LibNice::LibNice)
 	target_link_libraries(datachannel-static PRIVATE LibNice::LibNice)
 else()
-	add_subdirectory(deps/libjuice EXCLUDE_FROM_ALL)
 	target_compile_definitions(datachannel PRIVATE USE_NICE=0)
 	target_compile_definitions(datachannel-static PRIVATE USE_NICE=0)
-	target_link_libraries(datachannel PRIVATE LibJuice::LibJuiceStatic)
-	target_link_libraries(datachannel-static PRIVATE LibJuice::LibJuiceStatic)
+	if(USE_SYSTEM_JUICE)
+		find_package(LibJuice REQUIRED)
+		target_compile_definitions(datachannel PRIVATE RTC_SYSTEM_JUICE=1)
+		target_compile_definitions(datachannel-static PRIVATE RTC_SYSTEM_JUICE=1)
+		target_link_libraries(datachannel PRIVATE LibJuice::LibJuice)
+		target_link_libraries(datachannel-static PRIVATE LibJuice::LibJuice)
+	else()
+		add_subdirectory(deps/libjuice EXCLUDE_FROM_ALL)
+		target_compile_definitions(datachannel PRIVATE RTC_SYSTEM_JUICE=0)
+		target_compile_definitions(datachannel-static PRIVATE RTC_SYSTEM_JUICE=0)
+		target_link_libraries(datachannel PRIVATE LibJuice::LibJuiceStatic)
+		target_link_libraries(datachannel-static PRIVATE LibJuice::LibJuiceStatic)
+	endif()
 endif()
 
 if(CAPI_STDCALL)

+ 17 - 0
cmake/Modules/FindLibJuice.cmake

@@ -0,0 +1,17 @@
+if (NOT TARGET LibJuice::LibJuice)
+	find_path(JUICE_INCLUDE_DIR juice/juice.h)
+	find_library(JUICE_LIBRARY NAMES juice)
+
+	include(FindPackageHandleStandardArgs)
+	find_package_handle_standard_args(LibJuice DEFAULT_MSG JUICE_LIBRARY JUICE_INCLUDE_DIR)
+
+    if (LibJuice_FOUND)
+        add_library(LibJuice::LibJuice UNKNOWN IMPORTED)
+        set_target_properties(LibJuice::LibJuice PROPERTIES
+            IMPORTED_LOCATION "${JUICE_LIBRARY}"
+            INTERFACE_INCLUDE_DIRECTORIES "${JUICE_INCLUDE_DIRS}"
+            INTERFACE_LINK_LIBRARIES "${JUICE_LIBRARIES}"
+                IMPORTED_LINK_INTERFACE_LANGUAGES "C")
+    endif ()
+endif ()
+