project(rxcpp LANGUAGES CXX)

set(headers
  Rx/v2/src/vtkrxcpp/operators/rx-all.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-amb.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-any.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-buffer_count.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-buffer_time.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-buffer_time_count.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-combine_latest.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-concat.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-concat_map.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-connect_forever.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-debounce.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-delay.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-distinct.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-distinct_until_changed.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-element_at.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-filter.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-finally.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-flat_map.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-group_by.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-ignore_elements.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-lift.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-map.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-merge.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-merge_delay_error.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-multicast.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-observe_on.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-on_error_resume_next.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-pairwise.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-publish.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-reduce.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-ref_count.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-repeat.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-replay.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-retry-repeat-common.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-retry.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-sample_time.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-scan.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-sequence_equal.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-skip.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-skip_last.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-skip_until.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-skip_while.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-start_with.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-subscribe.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-subscribe_on.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-switch_if_empty.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-switch_on_next.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-take.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-take_last.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-take_until.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-take_while.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-tap.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-time_interval.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-timeout.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-timestamp.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-window.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-window_time.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-window_time_count.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-window_toggle.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-with_latest_from.hpp
  Rx/v2/src/vtkrxcpp/operators/rx-zip.hpp
  Rx/v2/src/vtkrxcpp/rx-composite_exception.hpp
  Rx/v2/src/vtkrxcpp/rx-connectable_observable.hpp
  Rx/v2/src/vtkrxcpp/rx-coordination.hpp
  Rx/v2/src/vtkrxcpp/rx-coroutine.hpp
  Rx/v2/src/vtkrxcpp/rx-grouped_observable.hpp
  Rx/v2/src/vtkrxcpp/rx-includes.hpp
  Rx/v2/src/vtkrxcpp/rx-lite.hpp
  Rx/v2/src/vtkrxcpp/rx-notification.hpp
  Rx/v2/src/vtkrxcpp/rx-observable-fwd.hpp
  Rx/v2/src/vtkrxcpp/rx-observable.hpp
  Rx/v2/src/vtkrxcpp/rx-observer.hpp
  Rx/v2/src/vtkrxcpp/rx-operators.hpp
  Rx/v2/src/vtkrxcpp/rx-predef.hpp
  Rx/v2/src/vtkrxcpp/rx-scheduler.hpp
  Rx/v2/src/vtkrxcpp/rx-sources.hpp
  Rx/v2/src/vtkrxcpp/rx-subjects.hpp
  Rx/v2/src/vtkrxcpp/rx-subscriber.hpp
  Rx/v2/src/vtkrxcpp/rx-subscription.hpp
  Rx/v2/src/vtkrxcpp/rx-test.hpp
  Rx/v2/src/vtkrxcpp/rx-trace.hpp
  Rx/v2/src/vtkrxcpp/rx-util.hpp
  Rx/v2/src/vtkrxcpp/rx.hpp
  Rx/v2/src/vtkrxcpp/schedulers/rx-currentthread.hpp
  Rx/v2/src/vtkrxcpp/schedulers/rx-eventloop.hpp
  Rx/v2/src/vtkrxcpp/schedulers/rx-immediate.hpp
  Rx/v2/src/vtkrxcpp/schedulers/rx-newthread.hpp
  Rx/v2/src/vtkrxcpp/schedulers/rx-runloop.hpp
  Rx/v2/src/vtkrxcpp/schedulers/rx-sameworker.hpp
  Rx/v2/src/vtkrxcpp/schedulers/rx-test.hpp
  Rx/v2/src/vtkrxcpp/schedulers/rx-virtualtime.hpp
  Rx/v2/src/vtkrxcpp/sources/rx-create.hpp
  Rx/v2/src/vtkrxcpp/sources/rx-defer.hpp
  Rx/v2/src/vtkrxcpp/sources/rx-empty.hpp
  Rx/v2/src/vtkrxcpp/sources/rx-error.hpp
  Rx/v2/src/vtkrxcpp/sources/rx-interval.hpp
  Rx/v2/src/vtkrxcpp/sources/rx-iterate.hpp
  Rx/v2/src/vtkrxcpp/sources/rx-never.hpp
  Rx/v2/src/vtkrxcpp/sources/rx-range.hpp
  Rx/v2/src/vtkrxcpp/sources/rx-scope.hpp
  Rx/v2/src/vtkrxcpp/sources/rx-timer.hpp
  Rx/v2/src/vtkrxcpp/subjects/rx-behavior.hpp
  Rx/v2/src/vtkrxcpp/subjects/rx-replaysubject.hpp
  Rx/v2/src/vtkrxcpp/subjects/rx-subject.hpp
  Rx/v2/src/vtkrxcpp/subjects/rx-synchronize.hpp)

vtk_module_add_module(ParaView::rxcpp
  HEADER_ONLY HEADER_DIRECTORIES
  HEADERS ${headers}
  HEADERS_SUBDIR "vtkrxcpp")
vtk_module_include(ParaView::rxcpp
  INTERFACE
    "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Rx/v2/src>")
