# Distributed under the original FontForge BSD 3-clause license

add_executable(fontforgeexe main.c)
set_target_properties(fontforgeexe PROPERTIES OUTPUT_NAME "fontforge")

if(ENABLE_GUI)
  target_sources(fontforgeexe PRIVATE
    alignment.c
    anchorsaway.c
    autowidth2dlg.c
    basedlg.c
    bdfinfo.c
    bitmapdlg.c
    bitmapview.c
    charinfo.c
    charview_private.h
    charview.c
    clipui.c
    combinations.c
    contextchain.c
    cursors.c
    cvaddpoints.c
    cvdebug.c
    cvdgloss.c
    cvexportdlg.c
    cvfreehand.c
    cvgetinfo.c
    cvgridfit.c
    cvhand.c
    cvhints.c
    cvimportdlg.c
    cvknife.c
    cvpalettes.c
    cvpointer.c
    cvruler.c
    cvruler.h
    cvshapes.c
    cvstroke.c
    cvtranstools.c
    deltaui.c
    displayfonts.c
    effectsui.c
    encodingui.c
    fontinfo.c
    fontview.c
    freetypeui.c
    fvfontsdlg.c
    fvmetricsdlg.c
    gotodlg.c
    groupsdlg.c
    histograms.c
    images.c
    justifydlg.c
    kernclass.c
    layer2layer.c
    lookupui.c
    macencui.c
    math.c
    metricsview.c
    mmdlg.c
    multidialog.c
    nonlineartransui.c
    openfontdlg.c
    pluginui.c
    prefs.c
    problems.c
    pythonui.c
    savefontdlg.c
    scriptingdlg.c
    scstylesui.c
    searchview.c
    sftextfield.c
    sftextfieldP.h
    sfundo.c
    sfundo.h
    showatt.c
    simplifydlg.c
    splashimage.c
    startui.c
    statemachine.c
    tilepath.c
    transform.c
    ttfinstrsui.c
    uiutil.c
    usermenu.c
    usermenu.h
    windowmenu.c
    wordlistparser.c
    wordlistparser.h
  )

  if(APPLE)
    target_sources(fontforgeexe PRIVATE macobjective.m)
    target_link_libraries(fontforgeexe
      PRIVATE
      "-framework Cocoa"
    )
  endif()

  if(ENABLE_FREETYPE_DEBUGGER)
    target_link_libraries(fontforgeexe PRIVATE Threads::Threads)
  endif()

  target_link_libraries(fontforgeexe PRIVATE gdraw)
else()
  target_sources(fontforgeexe PRIVATE startnoui.c)
endif()

if(WIN32)
  string(SUBSTRING ${PROJECT_VERSION} 0 4 FF_RC_YEAR)
  string(SUBSTRING ${PROJECT_VERSION} 4 2 FF_RC_MONTH)
  string(SUBSTRING ${PROJECT_VERSION} 6 2 FF_RC_DAY)
  string(REGEX REPLACE "^0+" "" FF_RC_MONTH "${FF_RC_MONTH}")
  string(REGEX REPLACE "^0+" "" FF_RC_DAY "${FF_RC_DAY}")
  configure_file(fontforge.exe.manifest.in fontforge.exe.manifest @ONLY)
  configure_file(fontforge.rc.in fontforge.rc @ONLY)
  target_sources(fontforgeexe PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/fontforge.rc" "${CMAKE_CURRENT_BINARY_DIR}/fontforge.exe.manifest")
endif()

if(ENABLE_PYTHON_SCRIPTING_RESULT)
  target_link_libraries(fontforgeexe PRIVATE Python3::Python)
endif()

target_link_libraries(fontforgeexe PRIVATE fontforge Iconv::Iconv MathLib::MathLib)
install(TARGETS fontforgeexe RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})

if(UNIX)
  install(CODE "
    foreach(_script fontimage.pe fontlint.pe sfddiff.pe)
      get_filename_component(_output \"\${_script}\" NAME_WE)
      file(READ \"${CMAKE_CURRENT_SOURCE_DIR}/\${_script}\" _input)
      file(WRITE \"${CMAKE_CURRENT_BINARY_DIR}/\${_output}\" \"#!\${CMAKE_INSTALL_PREFIX}/bin/fontforge -lang=ff\\n\${_input}\")
    endforeach()
  " COMPONENT nativescripts)
  install(FILES "${CMAKE_CURRENT_BINARY_DIR}/fontimage" "${CMAKE_CURRENT_BINARY_DIR}/fontlint" "${CMAKE_CURRENT_BINARY_DIR}/sfddiff"
    DESTINATION ${CMAKE_INSTALL_BINDIR}
    PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
    COMPONENT nativescripts
  )
else()
  install(FILES fontimage.pe fontlint.pe sfddiff.pe DESTINATION ${CMAKE_INSTALL_DATADIR}/fontforge/nativescripts COMPONENT nativescripts)
endif()
install(FILES fontforge.1 sfddiff.1 fontlint.1 fontimage.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)

add_subdirectory(pixmaps)
