# common datatypes
if (NOT TARGET datatypes)
    SdrAddProtoLibrary(datatypes EXCLUDE_FROM_ALL datatypes.proto)
    set_property(TARGET datatypes PROPERTY POSITION_INDEPENDENT_CODE ON)
endif ()

### PLUGINS ###

if (NOT COMPILE_PROTOS_FOR OR COMPILE_PROTOS_FOR STREQUAL "plugins")
    SdrAddProtoLibraryWithCommonDatatypes(digital_trigger)
    SdrAddProtoLibraryWithCommonDatatypes(pulse_player)
    SdrAddProtoLibraryWithCommonDatatypes(sequencer)
    SdrAddProtoLibraryWithCommonDatatypes(ad5672_5684)
    SdrAddProtoLibraryWithCommonDatatypes(ad5675)
    SdrAddProtoLibraryWithCommonDatatypes(ad7291)
    SdrAddProtoLibraryWithCommonDatatypes(bench)
    SdrAddProtoLibraryWithCommonDatatypes(bidirectionalmixer)
    SdrAddProtoLibraryWithCommonDatatypes(bullkidcalintegration)
    SdrAddProtoLibraryWithCommonDatatypes(capreadoutchain)
    SdrAddProtoLibraryWithCommonDatatypes(chip_info)
    SdrAddProtoLibraryWithCommonDatatypes(combgenerator)
    SdrAddProtoLibraryWithCommonDatatypes(detector_emulator)
    SdrAddProtoLibraryWithCommonDatatypes(dma)
    SdrAddProtoLibraryWithCommonDatatypes(dmacontroller)
    SdrAddProtoLibraryWithCommonDatatypes(erasynth)
    SdrAddProtoLibraryWithCommonDatatypes(eventdetection)
    SdrAddProtoLibraryWithCommonDatatypes(faultrec)
    SdrAddProtoLibraryWithCommonDatatypes(firmwareupdate)
    SdrAddProtoLibraryWithCommonDatatypes(fluxramp_generator)
    SdrAddProtoLibraryWithCommonDatatypes(fluxrampdemod)
    SdrAddProtoLibraryWithCommonDatatypes(healthmon)
    SdrAddProtoLibraryWithCommonDatatypes(lmk04208)
    SdrAddProtoLibraryWithCommonDatatypes(lmx2594)
    SdrAddProtoLibraryWithCommonDatatypes(ltc2000_cfg)
    SdrAddProtoLibraryWithCommonDatatypes(ltc5586)
    SdrAddProtoLibraryWithCommonDatatypes(matrixvectormultiplier)
    SdrAddProtoLibraryWithCommonDatatypes(mdnspublisher)
    SdrAddProtoLibraryWithCommonDatatypes(memmap)
    SdrAddProtoLibraryWithCommonDatatypes(multichannelddc)
    SdrAddProtoLibraryWithCommonDatatypes(multilateration)
    SdrAddProtoLibraryWithCommonDatatypes(oscilloscope)
    SdrAddProtoLibraryWithCommonDatatypes(pimc)
    SdrAddProtoLibraryWithCommonDatatypes(pulsegen)
    SdrAddProtoLibraryWithCommonDatatypes(qic_pulseplayer)
    SdrAddProtoLibraryWithCommonDatatypes(qic_storage)
    SdrAddProtoLibraryWithCommonDatatypes(qic_unitcell)
    # Declare dependencies between qic_unitcell and the proto files that it uses
    target_link_libraries(qic_unitcell pulsegen digital_trigger pulse_player sequencer)
    SdrAddProtoLibraryWithCommonDatatypes(rampgen)
    SdrAddProtoLibraryWithCommonDatatypes(recording)
    SdrAddProtoLibraryWithCommonDatatypes(rfdc)
    SdrAddProtoLibraryWithCommonDatatypes(rfpcbsuper)
    SdrAddProtoLibraryWithCommonDatatypes(signalamplifier)
    SdrAddProtoLibraryWithCommonDatatypes(spectrum_analyzer)
    SdrAddProtoLibraryWithCommonDatatypes(stimulation)
    SdrAddProtoLibraryWithCommonDatatypes(sysmon)
    SdrAddProtoLibraryWithCommonDatatypes(taskrunner)
    SdrAddProtoLibraryWithCommonDatatypes(tdmchannelmultipick)
    SdrAddProtoLibraryWithCommonDatatypes(vna)

    SdrAddProtoLibraryWithCommonDatatypes(pp_channelizer)
    SdrAddProtoLibraryWithCommonDatatypes(direct_rf)

    SdrAddProtoLibraryWithCommonDatatypes(multi_harmonic_detection)
    SdrAddProtoLibraryWithCommonDatatypes(lorentzian)
    SdrAddProtoLibraryWithCommonDatatypes(b2b_controller)
endif ()

### Servicehub ###

if (NOT COMPILE_PROTOS_FOR OR COMPILE_PROTOS_FOR STREQUAL "servicehub")
    SdrAddProtoLibraryWithCommonDatatypes(servicehubcontrol)
endif ()
