--- CMakeLists.txt.orig	2021-09-04 23:24:41 UTC
+++ CMakeLists.txt
@@ -171,6 +171,13 @@ set_target_properties(openshot-audio PROPERTIES
   EXPORT_NAME Audio  # Exports as OpenShot::Audio target
 )
 
+if(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
+	find_package(Threads REQUIRED)
+	if(Threads_FOUND)
+		target_link_libraries(openshot-audio PRIVATE ${CMAKE_THREAD_LIBS_INIT})
+	endif(Threads_FOUND)
+endif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
+
 # Require language features we use
 if(CMAKE_VERSION VERSION_GREATER 3.8)
   target_compile_features(openshot-audio PUBLIC
@@ -189,7 +196,8 @@ endif()
 # Enable stack-unwinding support in c objects on gcc-based platforms.
 # Failing to do so will cause your program to be terminated when a png
 # or a jpeg exception is thrown on linux or macosx.
-if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR
+    CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
   target_compile_options(openshot-audio PRIVATE -fexceptions)
 endif()
 
@@ -252,8 +260,8 @@ if(UNIX AND NOT APPLE)
       INTERFACE_INCLUDE_DIRECTORIES ${ALSA_INCLUDE_DIR}
       INTERFACE_LINK_LIBRARIES ${ALSA_LIBRARIES})
   endif()
-  target_compile_definitions(openshot-audio PUBLIC LINUX)
-  target_link_libraries(openshot-audio PUBLIC ALSA::ALSA)
+  #target_compile_definitions(openshot-audio PUBLIC LINUX)
+  target_link_libraries(openshot-audio PRIVATE ALSA::ALSA)
 else()
   # For EXPORTED Config
   set(NEED_ALSA FALSE)
@@ -261,10 +269,24 @@ endif()
 
 # ZLIB -- uses IMPORTED target ZLIB::ZLIB which has existed since CMake 3.1
 find_package(ZLIB REQUIRED)
-target_link_libraries(openshot-audio PUBLIC ZLIB::ZLIB)
+target_link_libraries(openshot-audio PRIVATE ZLIB::ZLIB)
 
+# EXECINFO, SYSINFO
+if(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
+	find_library(EXECINFO_LIBRARY NAMES execinfo)
+	if(NOT EXECINFO_LIBRARY)
+		message(FATAL_ERROR "${EXECINFO_LIBRARY}")
+	endif(NOT EXECINFO_LIBRARY)
+	target_link_libraries(openshot-audio PRIVATE ${EXECINFO_LIBRARY})
+	find_library(SYSINFO_LIBRARY NAMES sysinfo)
+	if(NOT SYSINFO_LIBRARY)
+		message(FATAL_ERROR "${SYSINFO_LIBRARY}")
+	endif(NOT SYSINFO_LIBRARY)
+	target_link_libraries(openshot-audio PRIVATE ${SYSINFO_LIBRARY})
+endif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
+
 # Link with dynamic loader for platform
-target_link_libraries(openshot-audio PUBLIC ${CMAKE_DL_LIBS})
+target_link_libraries(openshot-audio PRIVATE ${CMAKE_DL_LIBS})
 
 # Create an alias so our EXPORT target name works internally, as well
 add_library(OpenShot::Audio ALIAS openshot-audio)
