set(MGED_INCLUDE_DIRS
  ${TCLCAD_INCLUDE_DIRS}
  ${GED_INCLUDE_DIRS}
  ${WDB_INCLUDE_DIRS}
  ${DM_INCLUDE_DIRS}
  ${BU_INCLUDE_DIRS}
  ${TERMIO_INCLUDE_DIRS}
  ${CMAKE_CURRENT_SOURCE_DIR}
  )
LIST(REMOVE_DUPLICATES MGED_INCLUDE_DIRS)
include_directories(${MGED_INCLUDE_DIRS})

# Until we figure out how to properly use package require,
# we need the internal Tcl headers
include_directories(
  ${CMAKE_SOURCE_DIR}/src/other/tcl/generic
  ${CMAKE_SOURCE_DIR}/src/other/tcl/unix
  ${CMAKE_SOURCE_DIR}/src/other/incrTcl/itcl/generic
  ${CMAKE_SOURCE_DIR}/src/other/incrTcl/itk/generic
  )

if(LEX_EXECUTABLE AND YACC_EXECUTABLE)
  add_subdirectory(points)
  set(MGED_EXTRA_LIBS libpoints)
else(LEX_EXECUTABLE AND YACC_EXECUTABLE)
  CMAKEFILES(points)
endif(LEX_EXECUTABLE AND YACC_EXECUTABLE)


# process.h in points dir makes Windows unhappy,
# and the TERMLIB_INCLUDE_DIR isn't set there
if(NOT WIN32)
  include_directories(
    ${CMAKE_CURRENT_SOURCE_DIR}/points
    ${TERMLIB_INCLUDE_DIR}
    )
endif(NOT WIN32)

if(WIN32 AND BRLCAD_ENABLE_OPENGL)
  set(MGED_DM_SOURCES "${MGED_DM_SOURCES};dm-wgl.c")
endif(WIN32 AND BRLCAD_ENABLE_OPENGL)

if(BRLCAD_ENABLE_X11 AND BRLCAD_ENABLE_OPENGL AND BRLCAD_ENABLE_TK)
  set(MGED_DM_SOURCES "${MGED_DM_SOURCES};dm-ogl.c")
endif(BRLCAD_ENABLE_X11 AND BRLCAD_ENABLE_OPENGL AND BRLCAD_ENABLE_TK)

if(BRLCAD_ENABLE_X11 AND BRLCAD_ENABLE_TK)
  set(MGED_DM_SOURCES "${MGED_DM_SOURCES};dm-X.c")
endif(BRLCAD_ENABLE_X11 AND BRLCAD_ENABLE_TK)

if(BRLCAD_ENABLE_QT AND BRLCAD_ENABLE_TK)
  set(MGED_DM_SOURCES "${MGED_DM_SOURCES};dm-qt.c")
endif(BRLCAD_ENABLE_QT AND BRLCAD_ENABLE_TK)

#if(BRLCAD_ENABLE_TK)
#  set(MGED_DM_SOURCES "${MGED_DM_SOURCES};dm-tk.c")
#endif(BRLCAD_ENABLE_TK)

if(BRLCAD_ENABLE_RTGL)
  set(MGED_DM_SOURCES "${MGED_DM_SOURCES};dm-rtgl.c")
endif(BRLCAD_ENABLE_RTGL)

add_definitions(
  ${C99_FLAG}
  )

set(MGED_SOURCES
  adc.c
  arbs.c
  attach.c
  axes.c
  buttons.c
  chgmodel.c
  chgtree.c
  chgview.c
  cmd.c
  clone.c
  color_scheme.c
  columns.c
  dir.c
  ${MGED_DM_SOURCES}
  dm-generic.c
  dm-plot.c
  dm-ps.c
  dm-txt.c
  dodraw.c
  doevent.c
  dozoom.c
  edarb.c
  edars.c
  edpipe.c
  edsol.c
  facedef.c
  fbserv.c
  grid.c
  history.c
  mater.c
  menu.c
  mged.c
  mover.c
  muves.c
  overlay.c
  plot.c
  polyif.c
  predictor.c
  rect.c
  rtif.c
  scroll.c
  set.c
  setup.c
  share.c
  solids_on_ray.c
  tedit.c
  titles.c
  track.c
  update.c
  usepen.c
  utility1.c
  vparse.c
  )

if(NOT WIN32)
  BRLCAD_ADDEXEC(mged "${MGED_SOURCES}" "libtclcad;libged;libwdb;libdm;libtermio;${MGED_EXTRA_LIBS};${ITCL_LIBRARY};${ITK_LIBRARY}")
else(NOT WIN32)
  BRLCAD_ADDEXEC(mged "${MGED_SOURCES}" "libtclcad;libged;libwdb;libdm;${ITCL_LIBRARY};${ITK_LIBRARY};ws2_32.lib;opengl32.lib")
endif(NOT WIN32)
if(${ITCL_LIBRARY} MATCHES "itcl")
  ADD_DEPENDENCIES(mged itcl)
endif(${ITCL_LIBRARY} MATCHES "itcl")
if(${ITK_LIBRARY} MATCHES "itk")
  ADD_DEPENDENCIES(mged itk)
endif(${ITK_LIBRARY} MATCHES "itk")
if(LEX_EXECUTABLE AND YACC_EXECUTABLE)
  SET_TARGET_PROPERTIES(mged PROPERTIES COMPILE_FLAGS "-DBC_WITH_PARSER")
endif(LEX_EXECUTABLE AND YACC_EXECUTABLE)

# mged depends on the creation/installation of all the
# tclscripts.
foreach(item ${tclindex_target_list})
  ADD_DEPENDENCIES(mged ${item})
endforeach(item ${tclindex_target_list})

BRLCAD_ADDEXEC(cad_boundp cad_boundp.c "libbu;${M_LIBRARY}")

BRLCAD_ADDEXEC(cad_parea cad_parea.c libbu)

if(CMAKE_CONFIGURATION_TYPES)
   foreach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES})
     string(TOUPPER "${CFG_TYPE}" CFG_TYPE_UPPER)
     configure_file(mged.bat ${CMAKE_BINARY_DIR_${CFG_TYPE_UPPER}}/bin/mged.bat COPYONLY)
   endforeach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES})
else(CMAKE_CONFIGURATION_TYPES)
   configure_file(mged.bat ${CMAKE_BINARY_DIR}/bin/mged.bat COPYONLY)
endif(CMAKE_CONFIGURATION_TYPES)
install(PROGRAMS mged.bat DESTINATION bin)

set(mged_ignore_files
  bool_rewrite.c
  cmd.h
  comb_bool.h
  comb_bool_parse.y
  comb_bool_scan.l
  dm-ogl.c
  dm-qt.c
  dm-rtgl.c
  dm-tk.c
  dm-wgl.c
  fbserv.h
  htmlLibraryUi.h
  menu.h
  mgdev.h
  mged.bat
  mged.h
  mged_dm.h
  qray.h
  red.c
  scroll.h
  sedit.h
  titles.h
  )
CMAKEFILES(${mged_ignore_files})

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