cmake_minimum_required(VERSION 3.15)

###########################################################
# Set Output Targets
add_library("avfilter")

###########################################################
# Options (Configure)

###########################################################
# Target Settings

## avfilter -----------------------------------------------
set(SourceDir "${SourceDirRoot}/libavfilter")
set(SourceFiles)
list(APPEND SourceFiles
    "${SourceDir}/aeval.c"
    "${SourceDir}/af_acontrast.c"
    "${SourceDir}/af_acopy.c"
    "${SourceDir}/af_acrossover.c"
    "${SourceDir}/af_acrusher.c"
    "${SourceDir}/af_adeclick.c"
    "${SourceDir}/af_adelay.c"
    "${SourceDir}/af_aderivative.c"
    "${SourceDir}/af_aecho.c"
    "${SourceDir}/af_aemphasis.c"
    "${SourceDir}/af_afade.c"
    "${SourceDir}/af_afftdn.c"
    "${SourceDir}/af_afftfilt.c"
    "${SourceDir}/af_afir.c"
    "${SourceDir}/af_afir.h"
    "${SourceDir}/af_aformat.c"
    "${SourceDir}/af_agate.c"
    "${SourceDir}/af_aiir.c"
    "${SourceDir}/af_alimiter.c"
    "${SourceDir}/af_amerge.c"
    "${SourceDir}/af_amix.c"
    "${SourceDir}/af_amultiply.c"
    "${SourceDir}/af_anequalizer.c"
    "${SourceDir}/af_anlmdn.c"
    "${SourceDir}/af_anlmdndsp.h"
    "${SourceDir}/af_anull.c"
    "${SourceDir}/af_apad.c"
    "${SourceDir}/af_aphaser.c"
    "${SourceDir}/af_apulsator.c"
    "${SourceDir}/af_aresample.c"
    "${SourceDir}/af_asetnsamples.c"
    "${SourceDir}/af_asetrate.c"
    "${SourceDir}/af_ashowinfo.c"
    "${SourceDir}/af_asoftclip.c"
    # "${SourceDir}/af_asr.c"
    "${SourceDir}/af_astats.c"
    "${SourceDir}/af_atempo.c"
    "${SourceDir}/af_biquads.c"
    # "${SourceDir}/af_bs2b.c"
    "${SourceDir}/af_channelmap.c"
    "${SourceDir}/af_channelsplit.c"
    "${SourceDir}/af_chorus.c"
    "${SourceDir}/af_compand.c"
    "${SourceDir}/af_compensationdelay.c"
    "${SourceDir}/af_crossfeed.c"
    "${SourceDir}/af_crystalizer.c"
    "${SourceDir}/af_dcshift.c"
    "${SourceDir}/af_deesser.c"
    "${SourceDir}/af_drmeter.c"
    "${SourceDir}/af_dynaudnorm.c"
    "${SourceDir}/af_earwax.c"
    "${SourceDir}/af_extrastereo.c"
    "${SourceDir}/af_firequalizer.c"
    "${SourceDir}/af_flanger.c"
    "${SourceDir}/af_haas.c"
    "${SourceDir}/af_hdcd.c"
    "${SourceDir}/af_headphone.c"
    "${SourceDir}/af_join.c"
    # "${SourceDir}/af_ladspa.c"
    "${SourceDir}/af_loudnorm.c"
    # "${SourceDir}/af_lv2.c"
    "${SourceDir}/af_mcompand.c"
    "${SourceDir}/af_pan.c"
    "${SourceDir}/af_replaygain.c"
    "${SourceDir}/af_resample.c"
    # "${SourceDir}/af_rubberband.c"
    "${SourceDir}/af_sidechaincompress.c"
    "${SourceDir}/af_silencedetect.c"
    "${SourceDir}/af_silenceremove.c"
    # "${SourceDir}/af_sofalizer.c"
    "${SourceDir}/af_stereotools.c"
    "${SourceDir}/af_stereowiden.c"
    "${SourceDir}/af_superequalizer.c"
    "${SourceDir}/af_surround.c"
    "${SourceDir}/af_tremolo.c"
    "${SourceDir}/af_vibrato.c"
    "${SourceDir}/af_volume.c"
    "${SourceDir}/af_volume.h"
    "${SourceDir}/af_volumedetect.c"
    "${SourceDir}/all_channel_layouts.inc"
    "${SourceDir}/allfilters.c"
    "${SourceDir}/asink_anullsink.c"
    "${SourceDir}/asrc_anoisesrc.c"
    "${SourceDir}/asrc_anullsrc.c"
    # "${SourceDir}/asrc_flite.c"
    "${SourceDir}/asrc_hilbert.c"
    "${SourceDir}/asrc_sinc.c"
    "${SourceDir}/asrc_sine.c"
    "${SourceDir}/audio.c"
    "${SourceDir}/audio.h"
    "${SourceDir}/avf_abitscope.c"
    "${SourceDir}/avf_ahistogram.c"
    "${SourceDir}/avf_aphasemeter.c"
    "${SourceDir}/avf_avectorscope.c"
    "${SourceDir}/avf_concat.c"
    "${SourceDir}/avf_showcqt.c"
    "${SourceDir}/avf_showcqt.h"
    "${SourceDir}/avf_showfreqs.c"
    "${SourceDir}/avf_showspatial.c"
    "${SourceDir}/avf_showspectrum.c"
    "${SourceDir}/avf_showvolume.c"
    "${SourceDir}/avf_showwaves.c"
    "${SourceDir}/avfilter.c"
    "${SourceDir}/avfilter.h"
    "${SourceDir}/avfiltergraph.c"
    "${SourceDir}/avfilterres.rc"
    "${SourceDir}/bbox.c"
    "${SourceDir}/bbox.h"
    "${SourceDir}/blend.h"
    "${SourceDir}/boxblur.c"
    "${SourceDir}/boxblur.h"
    "${SourceDir}/bufferqueue.h"
    "${SourceDir}/buffersink.c"
    "${SourceDir}/buffersink.h"
    "${SourceDir}/buffersrc.c"
    "${SourceDir}/buffersrc.h"
    "${SourceDir}/bwdif.h"
    "${SourceDir}/colorspace.c"
    "${SourceDir}/colorspace.h"
    "${SourceDir}/colorspacedsp.c"
    "${SourceDir}/colorspacedsp.h"
    # "${SourceDir}/colorspacedsp_template.c"
    # "${SourceDir}/colorspacedsp_yuv2yuv_template.c"
    "${SourceDir}/convolution.h"
    "${SourceDir}/deshake.h"
    "${SourceDir}/dnn_interface.h"
    "${SourceDir}/dnn/dnn_backend_native.c"
    "${SourceDir}/dnn/dnn_backend_native.h"
    "${SourceDir}/dnn/dnn_backend_native_layer_pad.c"
    "${SourceDir}/dnn/dnn_backend_native_layer_pad.h"
    "${SourceDir}/dnn/dnn_interface.c"
    "${SourceDir}/drawutils.c"
    "${SourceDir}/drawutils.h"
    "${SourceDir}/ebur128.c"
    "${SourceDir}/ebur128.h"
    "${SourceDir}/f_bench.c"
    "${SourceDir}/f_cue.c"
    "${SourceDir}/f_drawgraph.c"
    "${SourceDir}/f_ebur128.c"
    "${SourceDir}/f_graphmonitor.c"
    "${SourceDir}/f_interleave.c"
    "${SourceDir}/f_loop.c"
    "${SourceDir}/f_metadata.c"
    "${SourceDir}/f_perms.c"
    "${SourceDir}/f_realtime.c"
    "${SourceDir}/f_reverse.c"
    "${SourceDir}/f_select.c"
    "${SourceDir}/f_sendcmd.c"
    "${SourceDir}/f_sidedata.c"
    "${SourceDir}/f_streamselect.c"
    # "${SourceDir}/f_zmq.c"
    "${SourceDir}/fifo.c"
    "${SourceDir}/filters.h"
    "${SourceDir}/formats.c"
    "${SourceDir}/formats.h"
    "${SourceDir}/framepool.c"
    "${SourceDir}/framepool.h"
    "${SourceDir}/framequeue.c"
    "${SourceDir}/framequeue.h"
    "${SourceDir}/framerate.h"
    "${SourceDir}/framesync.c"
    "${SourceDir}/framesync.h"
    "${SourceDir}/gblur.h"
    "${SourceDir}/generate_wave_table.c"
    "${SourceDir}/generate_wave_table.h"
    "${SourceDir}/gradfun.h"
    "${SourceDir}/graphdump.c"
    "${SourceDir}/graphparser.c"
    "${SourceDir}/hermite.h"
    "${SourceDir}/hflip.h"
    "${SourceDir}/internal.h"
    "${SourceDir}/lavfutils.c"
    "${SourceDir}/lavfutils.h"
    "${SourceDir}/libavfilter.v"
    "${SourceDir}/limiter.h"
    "${SourceDir}/log2_tab.c"
    "${SourceDir}/lswsutils.c"
    "${SourceDir}/lswsutils.h"
    "${SourceDir}/maskedmerge.h"
    "${SourceDir}/motion_estimation.c"
    "${SourceDir}/motion_estimation.h"
    "${SourceDir}/psnr.h"
    "${SourceDir}/pthread.c"
    "${SourceDir}/removegrain.h"
    "${SourceDir}/scale.c"
    "${SourceDir}/scale.h"
    "${SourceDir}/scene_sad.c"
    "${SourceDir}/scene_sad.h"
    "${SourceDir}/setpts.c"
    "${SourceDir}/settb.c"
    "${SourceDir}/signature.h"
    "${SourceDir}/signature_lookup.c"
    "${SourceDir}/split.c"
    "${SourceDir}/src_movie.c"
    "${SourceDir}/ssim.h"
    "${SourceDir}/stereo3d.h"
    "${SourceDir}/thread.h"
    "${SourceDir}/threshold.h"
    "${SourceDir}/tinterlace.h"
    "${SourceDir}/transform.c"
    "${SourceDir}/transform.h"
    "${SourceDir}/transpose.h"
    "${SourceDir}/trim.c"
    "${SourceDir}/unsharp.h"
    "${SourceDir}/vaf_spectrumsynth.c"
    "${SourceDir}/version.h"
    "${SourceDir}/vf_addroi.c"
    "${SourceDir}/vf_alphamerge.c"
    "${SourceDir}/vf_amplify.c"
    "${SourceDir}/vf_aspect.c"
    "${SourceDir}/vf_atadenoise.c"
    "${SourceDir}/vf_avgblur.c"
    "${SourceDir}/vf_bbox.c"
    "${SourceDir}/vf_bitplanenoise.c"
    "${SourceDir}/vf_blackdetect.c"
    "${SourceDir}/vf_blackframe.c"
    "${SourceDir}/vf_blend.c"
    "${SourceDir}/vf_bm3d.c"
    "${SourceDir}/vf_boxblur.c"
    "${SourceDir}/vf_bwdif.c"
    "${SourceDir}/vf_chromakey.c"
    "${SourceDir}/vf_chromashift.c"
    "${SourceDir}/vf_ciescope.c"
    "${SourceDir}/vf_codecview.c"
    "${SourceDir}/vf_colorbalance.c"
    "${SourceDir}/vf_colorchannelmixer.c"
    "${SourceDir}/vf_colorconstancy.c"
    "${SourceDir}/vf_colorkey.c"
    "${SourceDir}/vf_colorlevels.c"
    "${SourceDir}/vf_colormatrix.c"
    "${SourceDir}/vf_colorspace.c"
    "${SourceDir}/vf_convolution.c"
    "${SourceDir}/vf_convolve.c"
    "${SourceDir}/vf_copy.c"
    "${SourceDir}/vf_coreimage.m"
    "${SourceDir}/vf_cover_rect.c"
    "${SourceDir}/vf_crop.c"
    "${SourceDir}/vf_cropdetect.c"
    "${SourceDir}/vf_curves.c"
    "${SourceDir}/vf_datascope.c"
    "${SourceDir}/vf_dctdnoiz.c"
    "${SourceDir}/vf_deband.c"
    "${SourceDir}/vf_deblock.c"
    "${SourceDir}/vf_decimate.c"
    "${SourceDir}/vf_dedot.c"
    "${SourceDir}/vf_deflicker.c"
    "${SourceDir}/vf_dejudder.c"
    "${SourceDir}/vf_delogo.c"
    "${SourceDir}/vf_derain.c"
    "${SourceDir}/vf_deshake.c"
    "${SourceDir}/vf_despill.c"
    "${SourceDir}/vf_detelecine.c"
    "${SourceDir}/vf_displace.c"
    "${SourceDir}/vf_drawbox.c"
    # "${SourceDir}/vf_drawtext.c"
    "${SourceDir}/vf_edgedetect.c"
    "${SourceDir}/vf_elbg.c"
    "${SourceDir}/vf_entropy.c"
    "${SourceDir}/vf_eq.c"
    "${SourceDir}/vf_eq.h"
    "${SourceDir}/vf_extractplanes.c"
    "${SourceDir}/vf_fade.c"
    "${SourceDir}/vf_fftdnoiz.c"
    "${SourceDir}/vf_fftfilt.c"
    "${SourceDir}/vf_field.c"
    "${SourceDir}/vf_fieldhint.c"
    "${SourceDir}/vf_fieldmatch.c"
    "${SourceDir}/vf_fieldorder.c"
    "${SourceDir}/vf_fillborders.c"
    "${SourceDir}/vf_find_rect.c"
    "${SourceDir}/vf_floodfill.c"
    "${SourceDir}/vf_format.c"
    "${SourceDir}/vf_fps.c"
    "${SourceDir}/vf_framepack.c"
    "${SourceDir}/vf_framerate.c"
    "${SourceDir}/vf_framestep.c"
    "${SourceDir}/vf_freezedetect.c"
    # "${SourceDir}/vf_frei0r.c"
    "${SourceDir}/vf_fspp.c"
    "${SourceDir}/vf_fspp.h"
    "${SourceDir}/vf_gblur.c"
    "${SourceDir}/vf_geq.c"
    "${SourceDir}/vf_gradfun.c"
    "${SourceDir}/vf_hflip.c"
    "${SourceDir}/vf_histeq.c"
    "${SourceDir}/vf_histogram.c"
    "${SourceDir}/vf_hqdn3d.c"
    "${SourceDir}/vf_hqdn3d.h"
    "${SourceDir}/vf_hqx.c"
    "${SourceDir}/vf_hue.c"
    "${SourceDir}/vf_hwdownload.c"
    "${SourceDir}/vf_hwmap.c"
    "${SourceDir}/vf_hwupload.c"
    "${SourceDir}/vf_hysteresis.c"
    "${SourceDir}/vf_idet.c"
    "${SourceDir}/vf_idet.h"
    "${SourceDir}/vf_il.c"
    "${SourceDir}/vf_kerndeint.c"
    "${SourceDir}/vf_lagfun.c"
    "${SourceDir}/vf_lenscorrection.c"
    # "${SourceDir}/vf_lensfun.c"
    "${SourceDir}/vf_limiter.c"
    "${SourceDir}/vf_lumakey.c"
    "${SourceDir}/vf_lut.c"
    "${SourceDir}/vf_lut2.c"
    "${SourceDir}/vf_lut3d.c"
    "${SourceDir}/vf_maskedclamp.c"
    "${SourceDir}/vf_maskedmerge.c"
    "${SourceDir}/vf_maskfun.c"
    "${SourceDir}/vf_mcdeint.c"
    "${SourceDir}/vf_mergeplanes.c"
    "${SourceDir}/vf_mestimate.c"
    "${SourceDir}/vf_midequalizer.c"
    "${SourceDir}/vf_minterpolate.c"
    "${SourceDir}/vf_mix.c"
    "${SourceDir}/vf_mpdecimate.c"
    "${SourceDir}/vf_neighbor.c"
    "${SourceDir}/vf_nlmeans.c"
    "${SourceDir}/vf_nlmeans.h"
    "${SourceDir}/vf_nnedi.c"
    "${SourceDir}/vf_noise.c"
    "${SourceDir}/vf_noise.h"
    "${SourceDir}/vf_normalize.c"
    "${SourceDir}/vf_null.c"
    # "${SourceDir}/vf_ocr.c"
    "${SourceDir}/vf_overlay.c"
    "${SourceDir}/vf_overlay.h"
    "${SourceDir}/vf_owdenoise.c"
    "${SourceDir}/vf_pad.c"
    "${SourceDir}/vf_palettegen.c"
    "${SourceDir}/vf_paletteuse.c"
    "${SourceDir}/vf_perspective.c"
    "${SourceDir}/vf_phase.c"
    "${SourceDir}/vf_pixdesctest.c"
    "${SourceDir}/vf_pp.c"
    "${SourceDir}/vf_pp7.c"
    "${SourceDir}/vf_pp7.h"
    "${SourceDir}/vf_premultiply.c"
    "${SourceDir}/vf_pseudocolor.c"
    "${SourceDir}/vf_psnr.c"
    "${SourceDir}/vf_pullup.c"
    "${SourceDir}/vf_pullup.h"
    "${SourceDir}/vf_qp.c"
    "${SourceDir}/vf_random.c"
    "${SourceDir}/vf_readeia608.c"
    "${SourceDir}/vf_readvitc.c"
    "${SourceDir}/vf_remap.c"
    "${SourceDir}/vf_removegrain.c"
    "${SourceDir}/vf_removelogo.c"
    "${SourceDir}/vf_repeatfields.c"
    "${SourceDir}/vf_rotate.c"
    "${SourceDir}/vf_sab.c"
    "${SourceDir}/vf_scale.c"
    # "${SourceDir}/vf_scale_npp.c"
    "${SourceDir}/vf_selectivecolor.c"
    "${SourceDir}/vf_separatefields.c"
    "${SourceDir}/vf_setparams.c"
    "${SourceDir}/vf_showinfo.c"
    "${SourceDir}/vf_showpalette.c"
    "${SourceDir}/vf_shuffleframes.c"
    "${SourceDir}/vf_shuffleplanes.c"
    "${SourceDir}/vf_signalstats.c"
    "${SourceDir}/vf_signature.c"
    "${SourceDir}/vf_smartblur.c"
    "${SourceDir}/vf_spp.c"
    "${SourceDir}/vf_spp.h"
    "${SourceDir}/vf_sr.c"
    "${SourceDir}/vf_ssim.c"
    "${SourceDir}/vf_stack.c"
    "${SourceDir}/vf_stereo3d.c"
    # "${SourceDir}/vf_subtitles.c"
    "${SourceDir}/vf_super2xsai.c"
    "${SourceDir}/vf_swaprect.c"
    "${SourceDir}/vf_swapuv.c"
    "${SourceDir}/vf_telecine.c"
    "${SourceDir}/vf_threshold.c"
    "${SourceDir}/vf_thumbnail.c"
    "${SourceDir}/vf_tile.c"
    "${SourceDir}/vf_tinterlace.c"
    "${SourceDir}/vf_tonemap.c"
    "${SourceDir}/vf_tpad.c"
    "${SourceDir}/vf_transpose.c"
    # "${SourceDir}/vf_transpose_npp.c"
    "${SourceDir}/vf_unsharp.c"
    "${SourceDir}/vf_uspp.c"
    "${SourceDir}/vf_v360.c"
    "${SourceDir}/vf_vaguedenoiser.c"
    "${SourceDir}/vf_vectorscope.c"
    "${SourceDir}/vf_vflip.c"
    "${SourceDir}/vf_vfrdet.c"
    "${SourceDir}/vf_vibrance.c"
    # "${SourceDir}/vf_vidstabdetect.c"
    # "${SourceDir}/vf_vidstabtransform.c"
    "${SourceDir}/vf_vignette.c"
    "${SourceDir}/vf_vmafmotion.c"
    "${SourceDir}/vf_w3fdif.c"
    "${SourceDir}/vf_waveform.c"
    "${SourceDir}/vf_weave.c"
    "${SourceDir}/vf_xbr.c"
    "${SourceDir}/vf_xmedian.c"
    "${SourceDir}/vf_yadif.c"
    "${SourceDir}/vf_zoompan.c"
    # "${SourceDir}/vf_zscale.c"
    "${SourceDir}/video.c"
    "${SourceDir}/video.h"
    # "${SourceDir}/vidstabutils.c"
    "${SourceDir}/vidstabutils.h"
    "${SourceDir}/vmaf_motion.h"
    "${SourceDir}/vsink_nullsink.c"
    "${SourceDir}/vsrc_cellauto.c"
    "${SourceDir}/vsrc_life.c"
    "${SourceDir}/vsrc_mandelbrot.c"
    "${SourceDir}/vsrc_mptestsrc.c"
    "${SourceDir}/vsrc_testsrc.c"
    "${SourceDir}/w3fdif.h"
    "${SourceDir}/window_func.h"
    "${SourceDir}/yadif.h"
    "${SourceDir}/yadif_common.c"
)
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
list(APPEND SourceFiles
    "${SourceDir}/x86/af_afir.asm"
    "${SourceDir}/x86/af_afir_init.c"
    "${SourceDir}/x86/af_anlmdn.asm"
    "${SourceDir}/x86/af_anlmdn_init.c"
    "${SourceDir}/x86/af_volume.asm"
    "${SourceDir}/x86/af_volume_init.c"
    "${SourceDir}/x86/avf_showcqt.asm"
    "${SourceDir}/x86/avf_showcqt_init.c"
    "${SourceDir}/x86/colorspacedsp.asm"
    "${SourceDir}/x86/colorspacedsp_init.c"
    "${SourceDir}/x86/scene_sad.asm"
    "${SourceDir}/x86/scene_sad_init.c"
    "${SourceDir}/x86/vf_blend.asm"
    "${SourceDir}/x86/vf_blend_init.c"
    "${SourceDir}/x86/vf_bwdif.asm"
    "${SourceDir}/x86/vf_bwdif_init.c"
    "${SourceDir}/x86/vf_convolution.asm"
    "${SourceDir}/x86/vf_convolution_init.c"
    "${SourceDir}/x86/vf_eq.c"
    "${SourceDir}/x86/vf_framerate.asm"
    "${SourceDir}/x86/vf_framerate_init.c"
    "${SourceDir}/x86/vf_fspp.asm"
    "${SourceDir}/x86/vf_fspp_init.c"
    "${SourceDir}/x86/vf_gblur.asm"
    "${SourceDir}/x86/vf_gblur_init.c"
    "${SourceDir}/x86/vf_gradfun.asm"
    "${SourceDir}/x86/vf_gradfun_init.c"
    "${SourceDir}/x86/vf_hflip.asm"
    "${SourceDir}/x86/vf_hflip_init.c"
    "${SourceDir}/x86/vf_hqdn3d.asm"
    "${SourceDir}/x86/vf_hqdn3d_init.c"
    "${SourceDir}/x86/vf_idet.asm"
    "${SourceDir}/x86/vf_idet_init.c"
    "${SourceDir}/x86/vf_interlace.asm"
    "${SourceDir}/x86/vf_limiter.asm"
    "${SourceDir}/x86/vf_limiter_init.c"
    "${SourceDir}/x86/vf_maskedmerge.asm"
    "${SourceDir}/x86/vf_maskedmerge_init.c"
    "${SourceDir}/x86/vf_noise.c"
    "${SourceDir}/x86/vf_overlay.asm"
    "${SourceDir}/x86/vf_overlay_init.c"
    "${SourceDir}/x86/vf_pp7.asm"
    "${SourceDir}/x86/vf_pp7_init.c"
    "${SourceDir}/x86/vf_psnr.asm"
    "${SourceDir}/x86/vf_psnr_init.c"
    "${SourceDir}/x86/vf_pullup.asm"
    "${SourceDir}/x86/vf_pullup_init.c"
    "${SourceDir}/x86/vf_removegrain.asm"
    "${SourceDir}/x86/vf_removegrain_init.c"
    "${SourceDir}/x86/vf_spp.c"
    "${SourceDir}/x86/vf_ssim.asm"
    "${SourceDir}/x86/vf_ssim_init.c"
    "${SourceDir}/x86/vf_stereo3d.asm"
    "${SourceDir}/x86/vf_stereo3d_init.c"
    "${SourceDir}/x86/vf_threshold.asm"
    "${SourceDir}/x86/vf_threshold_init.c"
    "${SourceDir}/x86/vf_tinterlace_init.c"
    "${SourceDir}/x86/vf_w3fdif.asm"
    "${SourceDir}/x86/vf_w3fdif_init.c"
    "${SourceDir}/x86/vf_yadif.asm"
    "${SourceDir}/x86/vf_yadif_init.c"
    "${SourceDir}/x86/yadif-10.asm"
    "${SourceDir}/x86/yadif-16.asm"
)
endif()

if(AARCH64)
list(APPEND SourceFiles
    "${SourceDir}/aarch64/vf_nlmeans_init.c"
    "${SourceDir}/aarch64/vf_nlmeans_neon.S"
)
endif()

if(DNN_TENSORFLOW)
list(APPEND SourceFiles
    "${SourceDir}/dnn/dnn_backend_tf.c"
    "${SourceDir}/dnn/dnn_backend_tf.h"
)
endif()

if(INTEL_QSV)
list(APPEND SourceFiles
    "${SourceDir}/qsvvpp.c"
    "${SourceDir}/qsvvpp.h"
    "${SourceDir}/vf_deinterlace_qsv.c"
    "${SourceDir}/vf_overlay_qsv.c"
    "${SourceDir}/vf_scale_qsv.c"
    "${SourceDir}/vf_vpp_qsv.c"
)
endif()
if(VAAPI)
list(APPEND SourceFiles
    "${SourceDir}/vaapi_vpp.c"
    "${SourceDir}/vaapi_vpp.h"
    "${SourceDir}/vf_deinterlace_vaapi.c"
    "${SourceDir}/vf_scale_vaapi.c"
)
endif()
if(OPENCV)
list(APPEND SourceFiles
    "${SourceDir}/vf_libopencv.c"
)
endif()
if(OPENCL)
list(APPEND SourceFiles
    "${SourceDir}/opencl"
    "${SourceDir}/opencl.c"
    "${SourceDir}/opencl.h"
    "${SourceDir}/opencl_source.h"
    "${SourceDir}/vf_avgblur_opencl.c"
    "${SourceDir}/vf_colorkey_opencl.c"
    "${SourceDir}/vf_convolution_opencl.c"
    "${SourceDir}/vf_deshake_opencl.c"
    "${SourceDir}/vf_neighbor_opencl.c"
    "${SourceDir}/vf_nlmeans_opencl.c"
    "${SourceDir}/vf_overlay_opencl.c"
    "${SourceDir}/vf_program_opencl.c"
    "${SourceDir}/vf_tonemap_opencl.c"
    "${SourceDir}/vf_transpose_opencl.c"
    "${SourceDir}/vf_unsharp_opencl.c"
)
endif()
if(VMAF)
list(APPEND SourceFiles
    "${SourceDir}/vf_libvmaf.c"
)
endif()
if(VAAPI)
list(APPEND SourceFiles
    "${SourceDir}/vf_misc_vaapi.c"
    "${SourceDir}/vf_procamp_vaapi.c"
    "${SourceDir}/vf_transpose_vaapi.c"
)
endif()
if(CUDA)
list(APPEND SourceFiles
    "${SourceDir}/vf_hwupload_cuda.c"
    "${SourceDir}/vf_scale_cuda.c"
    "${SourceDir}/vf_scale_cuda.cu"
    "${SourceDir}/vf_thumbnail_cuda.c"
    "${SourceDir}/vf_thumbnail_cuda.cu"
    "${SourceDir}/vf_yadif_cuda.c"
    "${SourceDir}/vf_yadif_cuda.cu"
)
endif()

###########################################################
# Target Settings
target_sources("avfilter" PRIVATE ${SourceFiles})
target_include_directories("avfilter" PRIVATE ${HeaderDirs})
target_compile_options("avfilter" PRIVATE
    $<$<COMPILE_LANGUAGE:ASM_NASM>:${CompileOptAsm}>
    $<$<COMPILE_LANGUAGE:C>:${CompileOptC}>
    $<$<COMPILE_LANGUAGE:CXX>:${CompileOptCxx}>
)
