# Distributed under the original FontForge BSD 3-clause license

set(FONTFORGE_NOINST_HEADERS
  asmfpst.h
  autohint.h
  autosave.h
  autotrace.h
  autowidth.h
  autowidth2.h
  bitmapchar.h
  bitmapcontrol.h
  bvedit.h
  clipnoui.h
  crctab.h
  cvexport.h
  cvimages.h
  cvundoes.h
  dumpbdf.h
  dumppfa.h
  effects.h
  encoding.h
  featurefile.h
  fontforgeui.h
  fvcomposite.h
  fvfonts.h
  fvimportbdf.h
  ikarus.h
  langfreq.h
  macbinary.h
  macenc.h
  mathconstants.h
  namelist.h
  othersubrs.h
  palmfonts.h
  parsepdf.h
  parsepfa.h
  parsettf.h
  parsettfatt.h
  parsettfbmf.h
  parsettfvar.h
  psread.h
  pua.h
  savefont.h
  scstyles.h
  sfd.h
  spiro.h
  splinefill.h
  splinefit.h
  splineorder2.h
  splineoverlap.h
  splinerefigure.h
  splinesave.h
  splinesaveafm.h
  splinestroke.h
  splineutil.h
  splineutil2.h
  start.h
  svg.h
  tottf.h
  tottfaat.h
  tottfgpos.h
  tottfvar.h
  ttfspecial.h
  utanvec.h
  winfonts.h
  woff.h
  zapfnomen.h
)

set(FONTFORGE_INST_HEADERS
  autowidth.h
  autowidth2.h
  baseviews.h
  bezctx_ff.h
  bitmapcontrol.h
  delta.h
  edgelist.h
  edgelist2.h
  encoding.h
  fffreetype.h
  ffpython.h
  flaglist.h
  fontforge.h
  fontforgevw.h
  fvmetrics.h
  glif_name_hash.h
  glyphcomp.h
  groups.h
  lookups.h
  mem.h
  mm.h
  namehash.h
  nonlineartrans.h
  ofl.h
  PfEd.h
  print.h
  psfont.h
  savefont.h
  scriptfuncs.h
  scripting.h
  sd.h
  search.h
  sfd1.h
  sflayoutP.h
  splinefont.h
  stemdb.h
  ttf.h
  ttfinstrs.h
  uiinterface.h
  unicoderange.h
  views.h
)

add_library(fontforge
  ${FONTFORGE_NOINST_HEADERS}
  ${FONTFORGE_INST_HEADERS}
  activeinui.c
  asmfpst.c
  autohint.c
  autosave.c
  autotrace.c
  autowidth.c
  autowidth2.c
  bezctx_ff.c
  bitmapchar.c
  bitmapcontrol.c
  bvedit.c
  clipnoui.c
  crctab.c
  cvexport.c
  cvimages.c
  cvundoes.c
  dumpbdf.c
  dumppfa.c
  effects.c
  encoding.c
  featurefile.c
  flaglist.c
  fontviewbase.c
  freetype.c
  ftdelta.c
  fvcomposite.c
  fvfonts.c
  fvimportbdf.c
  fvmetrics.c
  glif_name_hash.c
  glyphcomp.c
  groups.c
  ikarus.c
  langfreq.c
  lookups.c
  macbinary.c
  macenc.c
  mathconstants.c
  mem.c
  mm.c
  namelist.c
  nonlineartrans.c
  noprefs.c
  nouiutil.c
  nowakowskittfinstr.c
  ofl.c
  othersubrs.c
  palmfonts.c
  parsepdf.c
  parsepfa.c
  parsettf.c
  parsettfatt.c
  parsettfbmf.c
  parsettfvar.c
  print.c
  psread.c
  pua.c
  python.c
  savefont.c
  scripting.c
  scstyles.c
  search.c
  sfd.c
  sfd1.c
  sflayout.c
  spiro.c
  splinechar.c
  splinefill.c
  splinefit.c
  splinefont.c
  splineorder2.c
  splineoverlap.c
  splinerefigure.c
  splinesave.c
  splinesaveafm.c
  splinestroke.c
  splineutil.c
  splineutil2.c
  start.c
  stemdb.c
  svg.c
  tottf.c
  tottfaat.c
  tottfgpos.c
  tottfvar.c
  ttfinstrs.c
  ttfspecial.c
  ufo.c
  unicoderange.c
  utanvec.c
  winfonts.c
  woff.c
  zapfnomen.c
)

if(ENABLE_WOFF2_RESULT)
  target_sources(fontforge PRIVATE woff2.cc)
endif()

# Turn up warnings on a few source files
set_property(SOURCE splineoverlap.c APPEND PROPERTY COMPILE_OPTIONS ${FONTFORGE_EXTRA_CFLAGS})

set_property(TARGET fontforge PROPERTY VERSION 4)
if(WIN32 AND BUILD_SHARED_LIBS)
    target_link_options(fontforge PRIVATE -Wl,--export-all-symbols) # FIXME
endif()

# This is pretty bad...
target_include_directories(fontforge PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})

target_link_libraries(fontforge
  PUBLIC
    fontforge_common_headers
    Freetype::Freetype
    LibXml2::LibXml2
    GLIB::GLIB
    Intl::Intl
  PRIVATE
    MathLib::MathLib
    Iconv::Iconv
    ZLIB::ZLIB
)

if(APPLE)
  target_link_libraries(fontforge
    PRIVATE
    "-framework CoreServices"
  )
endif()

if(ENABLE_FREETYPE_DEBUGGER)
  target_link_libraries(fontforge PUBLIC FreeTypeSource::FreeTypeSource)
endif()
if(ENABLE_LIBSPIRO_RESULT)
  target_link_libraries(fontforge PUBLIC Libspiro::Libspiro)
endif()
if(ENABLE_LIBUNINAMESLIST_RESULT)
  target_link_libraries(fontforge PUBLIC Libuninameslist::Libuninameslist)
endif()
if(ENABLE_LIBREADLINE_RESULT)
  target_link_libraries(fontforge PUBLIC Readline::Readline)
endif()
if(ENABLE_PYTHON_SCRIPTING_RESULT)
  target_link_libraries(fontforge PUBLIC Python3::Python)
endif()
if(ENABLE_WOFF2_RESULT)
  target_link_libraries(fontforge PRIVATE WOFF2::WOFF2)
endif()

if(${CMAKE_VERSION} VERSION_LESS "3.12.0")
  target_link_libraries(fontforge PRIVATE gunicode_interface gutils_interface)
else()
  target_link_libraries(fontforge PRIVATE gunicode gutils)
endif()

# No dev package -> no need to install if static
if(BUILD_SHARED_LIBS)
  if(WIN32)
    install(TARGETS fontforge RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
  else()
    install(TARGETS fontforge RUNTIME DESTINATION ${CMAKE_INSTALL_LIBDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
  endif()
endif()
