stamp_core_enums = custom_target('stamp-core-enums.h',
  input : [
    files(
      'core-enums.h'
    ),
  ],
  output: [ 'stamp-core-enums.h', ],
  command: [
    mkenums_wrap, perl,
    meson.project_source_root(), meson.current_source_dir(),
    meson.current_build_dir(),
    'core-',
    '#include <gio/gio.h>\n'              +
    '#include "libpikabase/pikabase.h"\n',
    '#include "pika-intl.h"'
  ],
  build_by_default: true
)

appcoremarshal = gnome.genmarshal('pikamarshal',
  prefix: 'pika_marshal',
  sources: 'pikamarshal.list',
  install_header: false,
)

libappcore_sources = [
  'pika-atomic.c',
  'pika-batch.c',
  'pika-cairo.c',
  'pika-contexts.c',
  'pika-data-factories.c',
  'pika-edit.c',
  'pika-filter-history.c',
  'pika-gradients.c',
  'pika-gui.c',
  'pika-internal-data.c',
  'pika-memsize.c',
  'pika-modules.c',
  'pika-palettes.c',
  'pika-parallel.cc',
  'pika-parasites.c',
  'pika-spawn.c',
  'pika-tags.c',
  'pika-templates.c',
  'pika-transform-resize.c',
  'pika-transform-3d-utils.c',
  'pika-transform-utils.c',
  'pika-units.c',
  'pika-user-install.c',
  'pika-utils.c',
  'pika.c',
  'pikaasync.c',
  'pikaasyncset.c',
  'pikaauxitem.c',
  'pikaauxitemundo.c',
  'pikabacktrace-linux.c',
  'pikabacktrace-none.c',
  'pikabacktrace-windows.c',
  'pikabezierdesc.c',
  'pikaboundary.c',
  'pikabrush-boundary.c',
  'pikabrush-load.c',
  'pikabrush-mipmap.cc',
  'pikabrush-save.c',
  'pikabrush-transform.cc',
  'pikabrush.c',
  'pikabrushcache.c',
  'pikabrushclipboard.c',
  'pikabrushgenerated-load.c',
  'pikabrushgenerated-save.c',
  'pikabrushgenerated.c',
  'pikabrushpipe-load.c',
  'pikabrushpipe-save.c',
  'pikabrushpipe.c',
  'pikabuffer.c',
  'pikacancelable.c',
  'pikachannel-combine.c',
  'pikachannel-select.c',
  'pikachannel.c',
  'pikachannelpropundo.c',
  'pikachannelundo.c',
  'pikachunkiterator.c',
  'pikacontainer-filter.c',
  'pikacontainer.c',
  'pikacontext.c',
  'pikacoords-interpolate.c',
  'pikacoords.c',
  'pikacurve-load.c',
  'pikacurve-map.c',
  'pikacurve-save.c',
  'pikacurve.c',
  'pikadashpattern.c',
  'pikadata.c',
  'pikadatafactory.c',
  'pikadataloaderfactory.c',
  'pikadisplay.c',
  'pikadocumentlist.c',
  'pikadrawable-bucket-fill.c',
  'pikadrawable-combine.c',
  'pikadrawable-edit.c',
  'pikadrawable-equalize.c',
  'pikadrawable-fill.c',
  'pikadrawable-filters.c',
  'pikadrawable-floating-selection.c',
  'pikadrawable-foreground-extract.c',
  'pikadrawable-gradient.c',
  'pikadrawable-histogram.c',
  'pikadrawable-levels.c',
  'pikadrawable-offset.c',
  'pikadrawable-operation.c',
  'pikadrawable-preview.c',
  'pikadrawable-shadow.c',
  'pikadrawable-stroke.c',
  'pikadrawable-transform.c',
  'pikadrawable.c',
  'pikadrawablefilter.c',
  'pikadrawablemodundo.c',
  'pikadrawablepropundo.c',
  'pikadrawablestack.c',
  'pikadrawableundo.c',
  'pikadynamics-load.c',
  'pikadynamics-save.c',
  'pikadynamics.c',
  'pikadynamicsoutput.c',
  'pikaerror.c',
  'pikaextension-error.c',
  'pikaextension.c',
  'pikaextensionmanager.c',
  'pikafilloptions.c',
  'pikafilter.c',
  'pikafilteredcontainer.c',
  'pikafilterstack.c',
  'pikafloatingselectionundo.c',
  'pikagradient-load.c',
  'pikagradient-save.c',
  'pikagradient.c',
  'pikagrid.c',
  'pikagrouplayer.c',
  'pikagrouplayerundo.c',
  'pikaguide.c',
  'pikaguideundo.c',
  'pikahistogram.c',
  'pikaidtable.c',
  'pikaimage-arrange.c',
  'pikaimage-color-profile.c',
  'pikaimage-colormap.c',
  'pikaimage-convert-indexed.c',
  'pikaimage-convert-precision.c',
  'pikaimage-convert-type.c',
  'pikaimage-crop.c',
  'pikaimage-duplicate.c',
  'pikaimage-flip.c',
  'pikaimage-grid.c',
  'pikaimage-guides.c',
  'pikaimage-item-list.c',
  'pikaimage-merge.c',
  'pikaimage-metadata.c',
  'pikaimage-new.c',
  'pikaimage-pick-color.c',
  'pikaimage-pick-item.c',
  'pikaimage-preview.c',
  'pikaimage-quick-mask.c',
  'pikaimage-resize.c',
  'pikaimage-rotate.c',
  'pikaimage-sample-points.c',
  'pikaimage-scale.c',
  'pikaimage-snap.c',
  'pikaimage-symmetry.c',
  'pikaimage-transform.c',
  'pikaimage-undo-push.c',
  'pikaimage-undo.c',
  'pikaimage.c',
  'pikaimagefile.c',
  'pikaimageproxy.c',
  'pikaimageundo.c',
  'pikaitem-exclusive.c',
  'pikaitem-preview.c',
  'pikaitem.c',
  'pikaitemlist.c',
  'pikaitempropundo.c',
  'pikaitemstack.c',
  'pikaitemtree.c',
  'pikaitemundo.c',
  'pikalayer-floating-selection.c',
  'pikalayer-new.c',
  'pikalayer.c',
  'pikalayermask.c',
  'pikalayermaskpropundo.c',
  'pikalayermaskundo.c',
  'pikalayerpropundo.c',
  'pikalayerstack.c',
  'pikalayerundo.c',
  'pikalineart.c',
  'pikalist.c',
  'pikamaskundo.c',
  'pikamybrush-load.c',
  'pikamybrush.c',
  'pikaobject.c',
  'pikaobjectqueue.c',
  'pikapaintinfo.c',
  'pikapalette-import.c',
  'pikapalette-load.c',
  'pikapalette-save.c',
  'pikapalette.c',
  'pikapalettemru.c',
  'pikaparamspecs-desc.c',
  'pikaparamspecs.c',
  'pikaparasitelist.c',
  'pikapattern-load.c',
  'pikapattern-save.c',
  'pikapattern.c',
  'pikapatternclipboard.c',
  'pikapdbprogress.c',
  'pikapickable-auto-shrink.c',
  'pikapickable-contiguous-region.cc',
  'pikapickable.c',
  'pikaprogress.c',
  'pikaprojectable.c',
  'pikaprojection.c',
  'pikaresource.c',
  'pikasamplepoint.c',
  'pikasamplepointundo.c',
  'pikascanconvert.c',
  'pikaselection.c',
  'pikasettings.c',
  'pikastrokeoptions.c',
  'pikasubprogress.c',
  'pikasymmetry-mandala.c',
  'pikasymmetry-mirror.c',
  'pikasymmetry-tiling.c',
  'pikasymmetry.c',
  'pikatag.c',
  'pikatagcache.c',
  'pikatagged.c',
  'pikataggedcontainer.c',
  'pikatempbuf.c',
  'pikatemplate.c',
  'pikatilehandlerprojectable.c',
  'pikatoolgroup.c',
  'pikatoolinfo.c',
  'pikatoolitem.c',
  'pikatooloptions.c',
  'pikatoolpreset-load.c',
  'pikatoolpreset-save.c',
  'pikatoolpreset.c',
  'pikatreehandler.c',
  'pikatreeproxy.c',
  'pikatriviallycancelablewaitable.c',
  'pikauncancelablewaitable.c',
  'pikaundo.c',
  'pikaundostack.c',
  'pikaunit.c',
  'pikaviewable.c',
  'pikawaitable.c',

  'core-enums.c',
  stamp_core_enums,

  appcoremarshal,
  cursors_sources,
  pickers_sources,
  icons_core_sources,
]

libappcore = static_library('appcore',
  libappcore_sources,
  include_directories: [ rootInclude, rootAppInclude, ],
  c_args: '-DG_LOG_DOMAIN="Pika-Core"',
  dependencies: [
    cairo,
    gegl,
    gdk_pixbuf,
    libmypaint,
    gexiv2,
    appstream_glib,
    math,
    dl,
    libunwind,
  ],
)
