
# Author(s):  Marcin Balicki
# Created on: 2008-04-30

cmake_minimum_required(VERSION 2.8)

project(EarRobot1)

cmake_minimum_required (VERSION 2.8)

find_package (cisst REQUIRED)

if (cisst_FOUND)
 # Modify CMake configuration to use cisst
 include (${CISST_USE_FILE})


    # -------------------------------------------------------------------------
    # FLTK
    # -------------------------------------------------------------------------
    find_package(FLTK REQUIRED)
    include_directories(${FLTK_INCLUDE_DIR})

    # -------------------------------------------------------------------------
    # Galil Motion Controller
    # the debug only works if you place the debug "galil1.dll" in the local build/debug
	# On linux please see the following for installation instructions:
	#http://www.galilmc.com/forums/ubbthreads.php?ubb=showflat&Number=8157&page=1#Post8163
    # -------------------------------------------------------------------------
   

#this temporarly fixes a linker error on the OCT pc
IF(WIN32)
 	find_library(GALIL_LIB_DEBUG
                 NAMES Galil1
                 HINTS "C:/users/mbalicki/Software/LibGalil-1.4.0-7-vs2008-x86/debug/" 
     	#on linux it is /usr/lib/libGalil.so
                 )
	find_library(GALIL_LIB_RELEASE
                 NAMES Galil1
                 HINTS "C:/users/mbalicki/Software/LibGalil-1.4.0-7-vs2008-x86/release/"
                 )

ELSE (WIN32)
find_library(GALIL_LIB_DEBUG
                 NAMES libGalil.so
                 HINTS "/usr/lib/libGalil.so" 
                 )
find_library(GALIL_LIB_RELEASE
                  NAMES libGalil.so
                 HINTS "/usr/lib/libGalil.so" 
)
ENDIF(WIN32)

    find_path(GALIL_LIB_INCLUDE_DIR
              NAMES Galil.h
              HINTS "C:/users/mbalicki/Software/LibGalil-1.4.0-7-vs2008-x86/"
	      HINTS "/usr/include/"
              )
    include_directories(${GALIL_LIB_INCLUDE_DIR})

    # -------------------------------------------------------------------------
    # Robotorium Libs:
    # -------------------------------------------------------------------------
    find_path (ROBOTORIUM_LIBS_DIR robotorium_libs.txt
                HINTS "../../libs/"
                      "../../../../../robotorium/libs/"
                )
    # -------------------------------------------------------------------------
    # devSpaceNavigator
    # -------------------------------------------------------------------------
#    add_subdirectory(${ROBOTORIUM_LIBS_DIR}/devSpaceNavigator
#                     "./libs/devSpaceNavigator"
#                     )
#    include_directories(${devSpaceNavigator_INCLUDE_DIR})

    # -------------------------------------------------------------------------
    # devFTSensorATI
    # -------------------------------------------------------------------------
    add_subdirectory(${ROBOTORIUM_LIBS_DIR}/devFTSensorATI
                     "./libs/devFTSensorATI"
                     )
    include_directories(${devFTSensorATILib_INCLUDE_DIRS})

    # -------------------------------------------------------------------------
    # devFBGSensor
    # -------------------------------------------------------------------------
    add_subdirectory(../devFBGSensor
                     "./libs/devFBGSensor"
                     )
    include_directories(${devFBGSensor_INCLUDE_DIR}
     					#${devFBGSensor_SOURCE_DIR}/build/libs/devOpenAL_Force        
                       #hack to make fltk produced h files visible
                       #  "C:/users/mbalicki/development/robotorium/trunk/apps/EyeRobot2/build/libs/devFBGSensor/libs/devOpenAL"
                       #  "C:/users/mbalicki/development/robotorium/trunk/apps/EyeRobot2/build/libs/devFBGSensor"
    )
    # -------------------------------------------------------------------------
    # VTK
    # -------------------------------------------------------------------------
    find_package(VTK REQUIRED)
    include_directories(${VTK_INCLUDE_DIRS})
    link_directories(${VTK_LIBRARY_DIRS})
    
    # -------------------------------------------------------------------------
    # devGalilController1886Lib
    # -------------------------------------------------------------------------
    add_library(devGalilController1886Lib
                devGalilController1886.cpp
                devGalilController1886.h
                )
    target_link_libraries(devGalilController1886Lib
                          debug ${GALIL_LIB_DEBUG}
                          optimized ${GALIL_LIB_RELEASE}
                          )

    # -------------------------------------------------------------------------
    # devSimControllerLib
    # -------------------------------------------------------------------------
    add_library(devSimControllerLib
                devSimController.cpp
                devSimController.h
                )
    cisst_target_link_libraries(devSimControllerLib
                    cisstCommon cisstVector cisstOSAbstraction cisstMultiTask cisstParameterTypes cisstRobot )
	     
    # -------------------------------------------------------------------------
    # devGestureManagerLib
    # -------------------------------------------------------------------------
    #add_library(devGestureManagerLib
    #            Gesture.cpp
    #            Gesture.h
    #            GestureManagerTask.cpp
    #            GestureManagerTask.h
    #            )

    # -------------------------------------------------------------------------
    # EarRobot1
    # -------------------------------------------------------------------------
    fltk_wrap_ui(EarRobot1
                 actuatorUI.fl
                 sensorATIFTUI.fl
                 sensorPedalUI.fl
                 # sensorSpaceNavigatorUI.fl
                 robotControlUI.fl
                 tipForceUI.fl
                 uiRobotLogger.fl
                 #"../../../../eye-brp/trunk/apps/devOpenAL/OpenAL_UI.fl"
                 )
    
    
    add_executable(EarRobot1
                   ${EarRobot1_FLTK_UI_SRCS}
                   appTask.cpp
                   appTask.h
                   main.cpp
                   robotControlAlgorithm.cpp
                   robotControlAlgorithm.h
                   robotModel.cpp
                   robotModel.h
                   robotTask.cpp
                   robotTask.h
                   sensorUpdateAlgorithm.cpp
                   sensorUpdateAlgorithm.h
                   guiRobotLogger.cpp
                   guiRobotLogger.h
                   devRobotLoggerTask.h
                   devRobotLoggerTask.cpp
                   constraintControlAlgorithm.h
                   constraintControlAlgorithm.cpp
                   prmOCTPeaks.h
                   prmOCTPeaks.cpp
                   prmOCTAScan.h
                   prmOCTAScan.cpp
                   PythonInterpreter.h
                   PythonInterpreter.cpp
                   rcoControlOptimizer.h
                   rcoControlOptimizer.cpp
                   )
    include_directories(${EarRobot1_SOURCE_DIR}
                     ../../libs/
                    ${EarRobot1_SOURCE_DIR}/ConstraintControl/
                    )
    target_link_libraries(EarRobot1
                          ${FLTK_LIBRARIES}
                          #debug ${SOCKET_LIB_DEBUG}
                          #optimized ${SOCKET_LIB_RELEASE}
                          devFTSensorATILib
                          devFBGSensor
                          devFBGSensorUI_lib
                          devGalilController1886Lib
                          #devGestureManagerLib
                          devOpenAL_Lib
                          ${OPENAL_LIBRARY}
                          ${ALUT_LIBRARY}
                          #devSimControllerLib
                          #devSpaceNavigator
                          )
 # cisst_target_link_libraries will check that the libraries are compiled
 # and set the correct link options
 cisst_target_link_libraries (EarRobot1 cisstCommon cisstVector cisstNumerical cisstOSAbstraction cisstMultiTask cisstParameterTypes cisstRobot cisstStereoVision)
endif (cisst_FOUND)



