Просмотр исходного кода

aja: Add shared interface library for plugin and frontend-plugin

PatTheMav 2 лет назад
Родитель
Сommit
087353eb3f
1 измененных файлов с 48 добавлено и 33 удалено
  1. 48 33
      plugins/aja/CMakeLists.txt

+ 48 - 33
plugins/aja/CMakeLists.txt

@@ -14,53 +14,68 @@ find_package(LibAJANTV2 REQUIRED)
 add_library(aja MODULE)
 add_library(OBS::aja ALIAS aja)
 
+add_library(aja-support OBJECT)
+add_library(OBS::aja-support ALIAS aja-support)
+
 target_sources(
-  aja
-  PRIVATE main.cpp
+  aja-support
+  PRIVATE # cmake-format: sortable
           aja-card-manager.cpp
           aja-common.cpp
-          aja-common.hpp
-          aja-output.cpp
-          aja-enums.hpp
-          aja-output.hpp
           aja-presets.cpp
-          aja-presets.hpp
           aja-props.cpp
-          aja-props.hpp
           aja-routing.cpp
-          aja-routing.hpp
-          aja-source.cpp
-          aja-source.hpp
           aja-vpid-data.cpp
-          aja-vpid-data.hpp
           aja-widget-io.cpp
-          aja-widget-io.hpp
-          aja-card-manager.hpp
-          aja-ui-props.hpp
+  PUBLIC # cmake-format: sortable
+         aja-card-manager.hpp
+         aja-common.hpp
+         aja-enums.hpp
+         aja-presets.hpp
+         aja-props.hpp
+         aja-routing.hpp
+         aja-ui-props.hpp
+         aja-vpid-data.hpp
+         aja-widget-io.hpp)
+
+target_link_libraries(aja-support PUBLIC OBS::libobs AJA::LibAJANTV2)
+
+set_target_properties(aja-support PROPERTIES FOLDER plugins/aja POSITION_INDEPENDENT_CODE TRUE)
+
+target_sources(
+  aja
+  PRIVATE # cmake-format: sortable
+          aja-output.cpp
+          aja-output.hpp
+          aja-source.cpp
+          aja-source.hpp
           audio-repack.c
           audio-repack.h
-          audio-repack.hpp)
+          audio-repack.hpp
+          main.cpp)
+
+target_compile_options(aja-support PUBLIC $<$<COMPILE_LANG_AND_ID:CXX,AppleClang,Clang>:-Wno-deprecated-declarations>)
 
-target_link_libraries(aja PRIVATE OBS::libobs AJA::LibAJANTV2)
+target_link_libraries(
+  aja
+  PRIVATE OBS::aja-support
+          $<$<PLATFORM_ID:Windows>:netapi32.lib>
+          $<$<PLATFORM_ID:Windows>:setupapi.lib>
+          $<$<PLATFORM_ID:Windows>:shlwapi.lib>
+          $<$<PLATFORM_ID:Windows>:winmm.lib>
+          $<$<PLATFORM_ID:Windows>:ws2_32.lib>
+          "$<$<PLATFORM_ID:Darwin>:$<LINK_LIBRARY:FRAMEWORK,AppKit.framework>>"
+          "$<$<PLATFORM_ID:Darwin>:$<LINK_LIBRARY:FRAMEWORK,CoreFoundation.framework>>"
+          "$<$<PLATFORM_ID:Darwin>:$<LINK_LIBRARY:FRAMEWORK,IOKit.framework>>")
+
+target_link_options(aja PRIVATE $<$<PLATFORM_ID:Windows>:/IGNORE:4099>)
 
 if(OS_WINDOWS)
   configure_file(cmake/windows/obs-module.rc.in win-aja.rc)
   target_sources(aja PRIVATE win-aja.rc)
-
-  target_compile_options(aja PRIVATE /wd4996)
-
-  target_link_libraries(aja PRIVATE ws2_32.lib setupapi.lib Winmm.lib netapi32.lib Shlwapi.lib)
-  target_link_options(aja PRIVATE /IGNORE:4099)
-
-elseif(OS_MACOS)
-  find_library(IOKIT IOKit)
-  find_library(COREFOUNDATION CoreFoundation)
-  find_library(APPKIT AppKit)
-
-  target_link_libraries(aja PRIVATE ${IOKIT} ${COREFOUNDATION} ${APPKIT})
-  target_compile_options(aja PRIVATE -Wno-deprecated-declarations -Wno-shorten-64-to-32)
-elseif(OS_LINUX OR OS_FREEBSD)
-  target_compile_options(aja PRIVATE -Wno-deprecated-declarations)
+  set_property(TARGET aja PROPERTY COMPILE_WARNING_AS_ERROR FALSE)
 endif()
 
-set_target_properties_obs(aja PROPERTIES FOLDER plugins PREFIX "")
+# cmake-format: off
+set_target_properties_obs(aja PROPERTIES FOLDER plugins/aja PREFIX "")
+# cmake-format: on