if(BRLCAD_X11_PROVIDER_RESOLVED STREQUAL "XMIN" AND
   Xmin_RUN_EXECUTABLE AND SH_EXEC AND TARGET m35.g)
  set(_gui_smoke "${CMAKE_SOURCE_DIR}/regress/gui/gui_smoke.sh")
  set(_gui_smoke_environment
    "CMAKE_COMMAND=${CMAKE_COMMAND}"
    "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/${LIB_DIR}"
    "GUI_TEST_SHELL=${CMAKE_SOURCE_DIR}/regress/gui/gui_test.sh"
  )
  set(_gui_test_db "${CMAKE_BINARY_DIR}/${DATA_DIR}/db/m35.g")
  set(_gui_test_library "${CMAKE_SOURCE_DIR}/regress/gui/gui_test.tcl")
  set(_gui_tcl_runner "${CMAKE_SOURCE_DIR}/regress/gui/gui_tcl_test.sh")

  if(TARGET mged AND TARGET dm-tkswrast AND TARGET dm-X AND TARGET dm-ogl
     AND TARGET icv AND TARGET pixcrop AND TARGET rt)
    brlcad_add_gui_test(
      NAME regress-mged-xmin-gui-edit
      TIMEOUT 600
      ENVIRONMENT
        "CMAKE_COMMAND=${CMAKE_COMMAND}"
        "ICV_BIN=$<TARGET_FILE:icv>"
        "LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/${LIB_DIR}"
        "MGED_BIN=$<TARGET_FILE:mged>"
        "MGED_DM_TYPES=tkswrast X ogl"
        "MGED_GUI_APNG_DIR=${CMAKE_CURRENT_BINARY_DIR}"
        "MGED_GUI_MANIFEST=${CMAKE_CURRENT_SOURCE_DIR}/mged/mged_gui_menu_manifest.txt"
        "MGED_PIPE_ORACLE=${CMAKE_CURRENT_SOURCE_DIR}/mged/xmin_gui_pipe_oracle.tcl"
        "MGED_RT_BIN=$<TARGET_FILE:rt>"
        "GUI_TEST_SHELL=${CMAKE_SOURCE_DIR}/regress/gui/gui_test.sh"
        "MGED_GUI_RC=${CMAKE_CURRENT_SOURCE_DIR}/mged/xmin_gui_edit.tcl"
        "PIXCROP_BIN=$<TARGET_FILE:pixcrop>"
        "GUI_TEST_LIBRARY=${_gui_test_library}"
      COMMAND "${SH_EXEC}" "${CMAKE_CURRENT_SOURCE_DIR}/mged/mged_xmin_gui.sh"
    )
    brlcad_regression_test(regress-mged-xmin-gui-edit
      "mged;dm-tkswrast;dm-X;dm-ogl;icv;pixcrop;rt"
      STAND_ALONE TEST_DEFINED)
  endif()

  if(TARGET mged AND TARGET dm-tkswrast)
    brlcad_add_gui_test(
      NAME regress-mged-xmin-gui-controls
      TIMEOUT 180
      ENVIRONMENT ${_gui_smoke_environment}
        "GUI_TEST_LIBRARY=${_gui_test_library}"
      COMMAND "${SH_EXEC}" "${_gui_tcl_runner}"
        mged-controls $<TARGET_FILE:mged> --gui --dm-type tkswrast
        --rcfile "${CMAKE_CURRENT_SOURCE_DIR}/mged/xmin_gui_controls.tcl"
        --geom 680x520+0+0 --ggeom 512x512+700+0
        "${_gui_test_db}"
    )
    brlcad_regression_test(regress-mged-xmin-gui-controls
      "mged;dm-tkswrast;m35.g" STAND_ALONE TEST_DEFINED)

    brlcad_add_gui_test(
      NAME regress-mged-xmin-gui-workflows
      TIMEOUT 300
      ENVIRONMENT ${_gui_smoke_environment}
        "GUI_TEST_LIBRARY=${_gui_test_library}"
      COMMAND "${SH_EXEC}" "${_gui_tcl_runner}"
        mged-workflows $<TARGET_FILE:mged> --gui --dm-type tkswrast
        --rcfile "${CMAKE_CURRENT_SOURCE_DIR}/mged/xmin_gui_workflows.tcl"
        --geom 680x520+0+0 --ggeom 512x512+700+0
        "${_gui_test_db}"
    )
    brlcad_regression_test(regress-mged-xmin-gui-workflows
      "mged;dm-tkswrast;m35.g" STAND_ALONE TEST_DEFINED)

    function(mged_add_xmin_gui_fixture test_name dependencies)
      string(REPLACE "-" "_" script_name "${test_name}")
      brlcad_add_gui_test(
        NAME regress-mged-xmin-gui-${test_name}
        TIMEOUT 180
        ENVIRONMENT ${_gui_smoke_environment}
          "MGED_GUI_TEST_LIBRARY=${CMAKE_CURRENT_SOURCE_DIR}/mged/xmin_gui_test.tcl"
          "GUI_TEST_LIBRARY=${_gui_test_library}"
          ${ARGN}
        COMMAND "${SH_EXEC}" "${_gui_tcl_runner}"
          mged-${test_name} $<TARGET_FILE:mged> --gui --dm-type tkswrast
          --rcfile "${CMAKE_CURRENT_SOURCE_DIR}/mged/xmin_gui_${script_name}.tcl"
          --geom 680x520+0+0 --ggeom 512x512+700+0
          "${_gui_test_db}"
      )
      brlcad_regression_test(regress-mged-xmin-gui-${test_name}
        "${dependencies}" STAND_ALONE TEST_DEFINED)
    endfunction()

    mged_add_xmin_gui_fixture(lod
      "mged;dm-tkswrast;m35.g;plot3-asc"
      "PLOT3_ASC_BIN=$<TARGET_FILE:plot3-asc>"
    )
    mged_add_xmin_gui_fixture(render-outputs
      "mged;dm-tkswrast;m35.g;plot3-asc;rt"
      "PLOT3_ASC_BIN=$<TARGET_FILE:plot3-asc>"
    )
    mged_add_xmin_gui_fixture(help "mged;dm-tkswrast;m35.g")
    mged_add_xmin_gui_fixture(edit-interaction "mged;dm-tkswrast;m35.g")
    mged_add_xmin_gui_fixture(bot "mged;dm-tkswrast;m35.g")
    mged_add_xmin_gui_fixture(editors "mged;dm-tkswrast;m35.g")
    mged_add_xmin_gui_fixture(query-pattern "mged;dm-tkswrast;m35.g")
    mged_add_xmin_gui_fixture(search-exec "mged;dm-tkswrast;m35.g")
    mged_add_xmin_gui_fixture(overlaps
      "mged;dm-tkswrast;m35.g;gchecker"
    )
    mged_add_xmin_gui_fixture(shotvis "mged;dm-tkswrast;m35.g")
  endif()

  if(TARGET archer)
    brlcad_add_gui_test(
      NAME regress-archer-xmin-smoke
      TIMEOUT 180
      ENVIRONMENT ${_gui_smoke_environment}
        "GUI_SMOKE_ACTION=${CMAKE_CURRENT_SOURCE_DIR}/archer_action.sh"
        "GUI_MIN_CHANGED_BYTES=10000"
      COMMAND "${SH_EXEC}" "${_gui_smoke}" "Archer ${BRLCAD_VERSION}"
        "${CMAKE_CURRENT_SOURCE_DIR}/archer_smoke.sh"
        $<TARGET_FILE:archer> "${_gui_test_db}"
    )
    brlcad_regression_test(regress-archer-xmin-smoke
      "archer;m35.g" STAND_ALONE TEST_DEFINED)

    if(TARGET bwish)
      brlcad_add_gui_test(
        NAME regress-archer-xmin-gui
        TIMEOUT 180
        ENVIRONMENT ${_gui_smoke_environment}
          "GUI_TEST_LIBRARY=${_gui_test_library}"
          "ARCHER_LAUNCH=${CMAKE_BINARY_DIR}/${DATA_DIR}/tclscripts/archer/init/archer_launch.tcl"
          "ARCHER_TEST_DATABASE=${_gui_test_db}"
          "ARCHER_MENU_MANIFEST=${CMAKE_CURRENT_SOURCE_DIR}/archer_menu_manifest.txt"
        COMMAND "${SH_EXEC}" "${_gui_tcl_runner}" archer
          $<TARGET_FILE:bwish> "${CMAKE_CURRENT_SOURCE_DIR}/archer_xmin_gui.tcl"
      )
      brlcad_regression_test(regress-archer-xmin-gui
        "archer;bwish;m35.g" STAND_ALONE TEST_DEFINED)

      brlcad_add_gui_test(
        NAME regress-archer-embedded-xmin-gui
        TIMEOUT 180
        ENVIRONMENT ${_gui_smoke_environment}
          "GUI_TEST_LIBRARY=${_gui_test_library}"
        COMMAND "${SH_EXEC}" "${_gui_tcl_runner}" archer-embedded
          $<TARGET_FILE:bwish>
          "${CMAKE_CURRENT_SOURCE_DIR}/archer_embedded_xmin_gui.tcl"
      )
      brlcad_regression_test(regress-archer-embedded-xmin-gui
        "archer;bwish" STAND_ALONE TEST_DEFINED)

      brlcad_add_gui_test(
        NAME regress-archer-geometry-xmin-gui
        TIMEOUT 120
        ENVIRONMENT ${_gui_smoke_environment}
          "GUI_TEST_LIBRARY=${_gui_test_library}"
        COMMAND "${SH_EXEC}" "${_gui_tcl_runner}" archer-geometry
          $<TARGET_FILE:bwish>
          "${CMAKE_CURRENT_SOURCE_DIR}/archer_geometry_xmin_gui.tcl"
      )
      brlcad_regression_test(regress-archer-geometry-xmin-gui
        "archer;bwish" STAND_ALONE TEST_DEFINED)
    endif()
  endif()

  if(TARGET rtwizard)
    brlcad_add_gui_test(
      NAME regress-rtwizard-xmin-smoke
      TIMEOUT 180
      ENVIRONMENT ${_gui_smoke_environment}
        "GUI_SMOKE_ACTION=${CMAKE_CURRENT_SOURCE_DIR}/rtwizard_action.sh"
        "GUI_MIN_CHANGED_BYTES=5000"
      COMMAND "${SH_EXEC}" "${_gui_smoke}" RtWizard
        $<TARGET_FILE:rtwizard> --gui -i "${_gui_test_db}" -t A
    )
    brlcad_regression_test(regress-rtwizard-xmin-smoke
      "rtwizard;m35.g" STAND_ALONE TEST_DEFINED)

    if(TARGET bwish)
      brlcad_add_gui_test(
        NAME regress-rtwizard-xmin-gui
        TIMEOUT 180
        ENVIRONMENT ${_gui_smoke_environment}
          "GUI_TEST_LIBRARY=${_gui_test_library}"
          "RTWIZARD_TEST_DATABASE=${_gui_test_db}"
          "RTWIZARD_MENU_MANIFEST=${CMAKE_CURRENT_SOURCE_DIR}/rtwizard_menu_manifest.txt"
        COMMAND "${SH_EXEC}" "${_gui_tcl_runner}" rtwizard
          $<TARGET_FILE:bwish> "${CMAKE_CURRENT_SOURCE_DIR}/rtwizard_xmin_gui.tcl"
      )
      brlcad_regression_test(regress-rtwizard-xmin-gui
        "rtwizard;bwish;m35.g" STAND_ALONE TEST_DEFINED)
    endif()
  endif()

  # qged is still evolving, so keep this fixture deliberately narrow: prove
  # that Qt starts, the console accepts a command, and OpenGL redraws.
  if(TARGET qged)
    brlcad_add_gui_test(
      NAME regress-qged-xmin-smoke
      TIMEOUT 180
      ENVIRONMENT ${_gui_smoke_environment}
        "GUI_SMOKE_ACTION=${CMAKE_CURRENT_SOURCE_DIR}/qged_action.sh"
        "GUI_MIN_CHANGED_BYTES=5000"
      COMMAND "${SH_EXEC}" "${_gui_smoke}" QGED
        "${CMAKE_CURRENT_SOURCE_DIR}/qged_smoke.sh"
        $<TARGET_FILE:qged> "${_gui_test_db}"
    )
    brlcad_regression_test(regress-qged-xmin-smoke
      "qged;m35.g" STAND_ALONE TEST_DEFINED)
  endif()
endif()

cmakefiles(
  CMakeLists.txt
  README.md
  xmin_gui_ctl.sh
  archer_action.sh
  archer_smoke.sh
  archer_embedded_xmin_gui.tcl
  archer_geometry_xmin_gui.tcl
  archer_menu_manifest.txt
  archer_xmin_gui.tcl
  qged_action.sh
  qged_smoke.sh
  rtwizard_action.sh
  rtwizard_menu_manifest.txt
  rtwizard_xmin_gui.tcl
  mged/MGED_GUI_TEST_COVERAGE.md
  mged/mged_gui_menu_manifest.txt
  mged/mged_xmin_gui.sh
  mged/xmin_gui_bot.tcl
  mged/xmin_gui_controls.tcl
  mged/xmin_gui_edit.tcl
  mged/xmin_gui_edit_interaction.tcl
  mged/xmin_gui_editors.tcl
  mged/xmin_gui_help.tcl
  mged/xmin_gui_lod.tcl
  mged/xmin_gui_overlaps.tcl
  mged/xmin_gui_pipe_oracle.tcl
  mged/xmin_gui_query_pattern.tcl
  mged/xmin_gui_render_outputs.tcl
  mged/xmin_gui_search_exec.tcl
  mged/xmin_gui_shotvis.tcl
  mged/xmin_gui_test.tcl
  mged/xmin_gui_workflows.tcl
)

# Local Variables:
# tab-width: 8
# mode: cmake
# indent-tabs-mode: t
# End:
# ex: shiftwidth=2 tabstop=8
