project(text-freetype2)

option(ENABLE_FREETYPE "Enable FreeType text plugin" ON)

if(NOT ENABLE_FREETYPE)
  obs_status(DISABLED "text-freetype2")
  return()
endif()

find_package(Freetype REQUIRED)

add_library(text-freetype2 MODULE)
add_library(OBS::text-freetype2 ALIAS text-freetype2)

target_sources(
  text-freetype2 PRIVATE find-font.h obs-convenience.c text-functionality.c
                         text-freetype2.c obs-convenience.h text-freetype2.h)

target_link_libraries(text-freetype2 PRIVATE OBS::libobs Freetype::Freetype)

set_target_properties(text-freetype2 PROPERTIES FOLDER "plugins" PREFIX "")

if(OS_WINDOWS)
  set(MODULE_DESCRIPTION "OBS FreeType text module")
  configure_file(${CMAKE_SOURCE_DIR}/cmake/bundle/windows/obs-module.rc.in
                 text-freetype2.rc)

  target_sources(text-freetype2 PRIVATE find-font.c find-font-windows.c
                                        text-freetype2.rc)
  target_link_options(text-freetype2 PRIVATE "LINKER:/IGNORE:4098"
                      "LINKER:/IGNORE:4099")

elseif(OS_MACOS)
  find_package(Iconv REQUIRED)
  find_library(COCOA Cocoa)
  mark_as_advanced(COCOA)

  target_sources(text-freetype2 PRIVATE find-font.c find-font-cocoa.m
                                        find-font-iconv.c)

  target_link_libraries(text-freetype2 PRIVATE Iconv::Iconv ${COCOA})

elseif(OS_POSIX)
  find_package(Fontconfig REQUIRED)

  target_sources(text-freetype2 PRIVATE find-font-unix.c)

  target_link_libraries(text-freetype2 PRIVATE Fontconfig::Fontconfig)
endif()

setup_plugin_target(text-freetype2)
