$NetBSD$

--- CMakeLists.txt.orig	2021-02-03 11:42:41.000000000 +0000
+++ CMakeLists.txt
@@ -3,6 +3,7 @@ cmake_policy(SET CMP0076 NEW)
 cmake_policy(SET CMP0091 NEW)
 
 set_property(GLOBAL PROPERTY USE_FOLDERS ON)
+set(CMAKE_POSITION_INDEPENDENT_BINARIES True)
 
 set(TG_OWT_SPECIAL_TARGET "" CACHE STRING "Use special platform target, like 'macstore' for Mac App Store.")
 
@@ -50,21 +51,13 @@ include(cmake/init_target.cmake)
 include(cmake/target_yasm_sources.cmake)
 include(cmake/external.cmake)
 include(cmake/libabsl.cmake)
-include(cmake/libopenh264.cmake)
 include(cmake/libpffft.cmake)
 include(cmake/librnnoise.cmake)
 include(cmake/libsrtp.cmake)
-include(cmake/libusrsctp.cmake)
-include(cmake/libvpx.cmake)
 include(cmake/libwebrtcbuild.cmake)
-include(cmake/libyuv.cmake)
-if (NOT WIN32 AND NOT APPLE)
-    include(cmake/libevent.cmake)
-endif()
 if (APPLE)
     include(cmake/libsdkmacos.cmake)
 endif()
-
 # Use a separate subdirectory, because it will be exported as an INTERFACE
 # for the generated sources and headers.
 if (TG_OWT_USE_PROTOBUF)
@@ -84,19 +77,9 @@ if (is_x86 OR is_x64)
         tg_owt::tg_owt_avx2
         tg_owt::tg_owt_sse2
         tg_owt::libabsl
-        tg_owt::libopenh264
         tg_owt::libpffft
         tg_owt::librnnoise
         tg_owt::libsrtp
-        tg_owt::libusrsctp
-        tg_owt::libvpx
-        tg_owt::libvpx_mmx
-        tg_owt::libvpx_sse2
-        tg_owt::libvpx_ssse3
-        tg_owt::libvpx_sse4
-        tg_owt::libvpx_avx
-        tg_owt::libvpx_avx2
-        tg_owt::libyuv
     )
 else()
     target_link_libraries(tg_owt
@@ -104,13 +87,9 @@ else()
         tg_owt::libwebrtcbuild
     PRIVATE
         tg_owt::libabsl
-        tg_owt::libopenh264
         tg_owt::libpffft
         tg_owt::librnnoise
         tg_owt::libsrtp
-        tg_owt::libusrsctp
-        tg_owt::libvpx
-        tg_owt::libyuv
     )
 endif()
 
@@ -127,28 +106,69 @@ PRIVATE
     ${libopenh264_yasm_objects}
 )
 
-if (NOT WIN32 AND NOT APPLE)
-    target_link_libraries(tg_owt PRIVATE tg_owt::libevent)
-endif()
 if (APPLE)
     target_link_libraries(tg_owt PUBLIC tg_owt::libsdkmacos)
 endif()
 
 link_openssl(tg_owt)
 link_ffmpeg(tg_owt)
+link_libvpx(tg_owt)
+link_openh264(tg_owt)
 link_opus(tg_owt)
+link_usrsctp(tg_owt)
+link_libyuv(tg_owt)
+if (NOT WIN32 AND NOT APPLE)
+	link_libevent(tg_owt)
+endif()
 
-if (UNIX AND NOT APPLE)
+if (UNIX AND NOT APPLE AND NOT (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD|NetBSD|DragonFly"))
     link_libalsa(tg_owt)
     link_libpulse(tg_owt)
     link_dl(tg_owt)
     link_x11(tg_owt)
 endif()
 
+if (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD|NetBSD|DragonFly")
+    remove_target_sources(tg_owt ${webrtc_loc}
+		modules/audio_device/linux/alsasymboltable_linux.cc
+		modules/audio_device/linux/alsasymboltable_linux.h
+		modules/audio_device/linux/audio_device_alsa_linux.cc
+		modules/audio_device/linux/audio_device_alsa_linux.h
+		modules/audio_device/linux/audio_mixer_manager_alsa_linux.cc
+		modules/audio_device/linux/audio_mixer_manager_alsa_linux.h
+		modules/audio_device/linux/latebindingsymboltable_linux.cc
+		modules/audio_device/linux/latebindingsymboltable_linux.h
+		modules/audio_device/linux/audio_device_pulse_linux.cc
+		modules/audio_device/linux/audio_device_pulse_linux.h
+		modules/audio_device/linux/audio_mixer_manager_pulse_linux.cc
+		modules/audio_device/linux/audio_mixer_manager_pulse_linux.h
+		modules/audio_device/linux/pulseaudiosymboltable_linux.cc
+		modules/audio_device/linux/pulseaudiosymboltable_linux.h
+		modules/audio_device/mac/audio_device_mac.cc
+		modules/audio_device/mac/audio_device_mac.h
+		modules/audio_device/mac/audio_mixer_manager_mac.cc
+		modules/audio_device/mac/audio_mixer_manager_mac.h
+		modules/audio_device/win/audio_device_core_win.cc
+		modules/audio_device/win/audio_device_core_win.h
+		modules/video_capture/linux/device_info_linux.cc
+		modules/video_capture/linux/video_capture_linux.cc
+		modules/video_capture/windows/device_info_ds.cc
+		modules/video_capture/windows/device_info_ds.h
+		modules/video_capture/windows/help_functions_ds.cc
+		modules/video_capture/windows/help_functions_ds.h
+		modules/video_capture/windows/sink_filter_ds.cc
+		modules/video_capture/windows/sink_filter_ds.h
+		modules/video_capture/windows/video_capture_ds.cc
+		modules/video_capture/windows/video_capture_ds.h
+		modules/video_capture/windows/video_capture_factory_windows.cc
+    )
+endif()
+
 function(add_sublibrary postfix)
     add_library(tg_owt_${postfix} OBJECT)
     init_feature_target(tg_owt_${postfix} ${postfix})
     add_library(tg_owt::tg_owt_${postfix} ALIAS tg_owt_${postfix})
+	set_property(TARGET tg_owt_${postfix}  PROPERTY POSITION_INDEPENDENT_CODE ON)
     target_link_libraries(tg_owt_${postfix}
     PUBLIC
         tg_owt::libwebrtcbuild
@@ -166,6 +186,7 @@ function(add_sublibrary postfix)
     PRIVATE
         ${sources_list}
     )
+
 endfunction()
 
 nice_target_sources(tg_owt ${webrtc_loc}
@@ -2149,29 +2170,12 @@ if (WIN32)
 else()
 endif()
 
-set(platform_export)
-if (NOT WIN32 AND NOT APPLE)
-    set(platform_export
-        libevent
-    )
-elseif (APPLE)
+if (APPLE)
     set(platform_export
         libsdkmacos
     )
 endif()
 
-set(vpx_export)
-if (is_x86 OR is_x64)
-    set(vpx_export
-        libvpx_mmx
-        libvpx_sse2
-        libvpx_ssse3
-        libvpx_sse4
-        libvpx_avx
-        libvpx_avx2
-    )
-endif()
-
 set(tg_owt_export tg_owt)
 if (is_x86 OR is_x64)
     set(tg_owt_export
@@ -2184,15 +2188,10 @@ endif()
 set(export_targets
     ${tg_owt_export}
     libabsl
-    libopenh264
     libpffft
     librnnoise
     libsrtp
-    libusrsctp
-    libvpx
-    ${vpx_export}
     libwebrtcbuild
-    libyuv
     ${platform_export}
 )
 if (TG_OWT_USE_PROTOBUF)
