From a263c335af34c6e705ad1429c3a291258218996c Mon Sep 17 00:00:00 2001
From: Cyril Roussillon <cyril.roussillon@laas.fr>
Date: Sun, 19 Jun 2011 01:02:54 +0200
Subject: [PATCH] [wip/jafar-rtslam] Try to fix optional dependencies

---
 jafar-rtslam/Makefile         |  62 +++++++++++++++++--
 jafar-rtslam/PLIST            |   2 +-
 jafar-rtslam/distinfo         |   9 ++-
 jafar-rtslam/patches/patch-bb | 112 ++++++++++++++++++++++++++++++++++
 jafar-rtslam/patches/patch-dd |  41 +++++++++++++
 jafar-rtslam/patches/patch-ee |  67 ++++++++++++++++++++
 6 files changed, 284 insertions(+), 9 deletions(-)
 create mode 100644 jafar-rtslam/patches/patch-bb
 create mode 100644 jafar-rtslam/patches/patch-dd
 create mode 100644 jafar-rtslam/patches/patch-ee

diff --git a/jafar-rtslam/Makefile b/jafar-rtslam/Makefile
index d8df36c8..144cafed 100644
--- a/jafar-rtslam/Makefile
+++ b/jafar-rtslam/Makefile
@@ -13,19 +13,71 @@ USE_PKGLOCALEDIR=	yes
 
 CMAKE_ARGS+=		-DBOOST_INCLUDEDIR=${PREFIX.boost-headers}/include
 CMAKE_ARGS+=		-DBOOST_LIBDIR=${PREFIX.boost-libs}/include
+CMAKE_ARGS+=	-DCMAKE_MODULE_PATH=.
 
+# because the package generation is buggy, it declares JAFAR_NDEBUG instead
+CPPFLAGS += -DJFR_NDEBUG
+CXXFLAGS += -pthread
 
-
-PKG_SUPPORTED_OPTIONS+=		POSTERLIB
-PKG_OPTION_DESCR.POSTERLIB=	Enable POSTERLIB support.
-define PKG_OPTION_SET.POSTERLIB
+PKG_SUPPORTED_OPTIONS+=		posterlib
+PKG_OPTION_DESCR.posterlib=	Enable posterLib support.
+define PKG_OPTION_SET.posterlib
   CMAKE_ARGS+=			-DHAVE_POSTERLIB=ON
+  CPPFLAGS+=			-DHAVE_POSTERLIB
   include ../../middleware/pocolibs/depend.mk
 endef
-define PKG_OPTION_UNSET.POSTERLIB
+define PKG_OPTION_UNSET.posterlib
   CMAKE_ARGS+=			-DHAVE_POSTERLIB=OFF
 endef
 
+PKG_SUPPORTED_OPTIONS+=		viam
+PKG_OPTION_DESCR.viam=	Enable viam support.
+define PKG_OPTION_SET.viam
+  CMAKE_ARGS+=			-DHAVE_VIAM=ON
+  CPPFLAGS+=			-DHAVE_VIAM
+  include ../../image/viam-libs/depend.mk
+  REQD_BUILD_OPTIONS.viam-libs+=opencv
+  include ../../image/opencv/depend.mk
+endef
+define PKG_OPTION_UNSET.viam
+  CMAKE_ARGS+=			-DHAVE_VIAM=OFF
+endef
+
+PKG_SUPPORTED_OPTIONS+=		MTI
+PKG_OPTION_DESCR.MTI=	Enable MTI support.
+define PKG_OPTION_SET.MTI
+  CMAKE_ARGS+=			-DHAVE_MTI=ON
+  CPPFLAGS+=			-DHAVE_MTI
+  include ../../hardware/MTI/depend.mk
+endef
+define PKG_OPTION_UNSET.MTI
+  CMAKE_ARGS+=			-DHAVE_MTI=OFF
+endef
+
+PKG_SUPPORTED_OPTIONS+=	qdisplay
+PKG_OPTION_DESCR.qdisplay = Enable jafar module qdisplay support for 2D display
+define PKG_OPTION_SET.qdisplay
+  CPPFLAGS+=-DHAVE_MODULE_QDISPLAY
+  include ../../wip/jafar-qdisplay/depend.mk
+endef
+
+PKG_SUPPORTED_OPTIONS+=	gdhe
+PKG_OPTION_DESCR.gdhe = Enable jafar module gdhe support for 3D display
+define PKG_OPTION_SET.gdhe
+  CPPFLAGS+=-DHAVE_MODULE_GDHE
+  include ../../wip/jafar-gdhe/depend.mk
+  include ../../graphics/gdhe/depend.mk
+endef
+
+PKG_SUPPORTED_OPTIONS+=     dseg
+PKG_OPTION_DESCR.dseg=  Enable jafar module dseg support for segments
+define PKG_OPTION_SET.dseg
+  CPPFLAGS+=          -DHAVE_MODULE_DSEG
+  include ../../wip/jafar-dseg/depend.mk
+endef
+
+
+
 include ../../wip/jafar-kernel/depend.mk
 include ../../wip/jafar-image/depend.mk
 include ../../wip/jafar-jmath/depend.mk
diff --git a/jafar-rtslam/PLIST b/jafar-rtslam/PLIST
index a5223dd0..880ba67c 100644
--- a/jafar-rtslam/PLIST
+++ b/jafar-rtslam/PLIST
@@ -1,4 +1,4 @@
-@comment Wed Jun 15 22:56:38 CEST 2011
+@comment Sun Jun 19 01:14:33 CEST 2011
 include/jafar/rtslam/activeSearch.hpp
 include/jafar/rtslam/activeSearch.hpp~
 include/jafar/rtslam/activeSegmentSearch.hpp
diff --git a/jafar-rtslam/distinfo b/jafar-rtslam/distinfo
index 2b8ad565..a261b10c 100644
--- a/jafar-rtslam/distinfo
+++ b/jafar-rtslam/distinfo
@@ -1,3 +1,6 @@
-SHA1 (jafar-rtslam-0.1.tar.gz) = 7fe191796cfd6709a52b34da919813948ed811d9
-RMD160 (jafar-rtslam-0.1.tar.gz) = 5f34f41ca99b9ce06c10e3f8dc6a7618e83a2dd2
-Size (jafar-rtslam-0.1.tar.gz) = 2009925 bytes
+SHA1 (jafar-rtslam-0.1.tar.gz) = d6f0cc5f1942d77d392502b00cb9793fc7813208
+RMD160 (jafar-rtslam-0.1.tar.gz) = 501399ae73f2fb94b5fd864f0fe6470e1607db00
+Size (jafar-rtslam-0.1.tar.gz) = 2994279 bytes
+SHA1 (patch-bb) = c5199acd272c3bf7752f0fe3677268890572cfc9
+SHA1 (patch-dd) = 221f7f12ad48def2e3f55ef0f696cdcaf6a19f78
+SHA1 (patch-ee) = 2b79b15318ff326db3339afab63469d9334362fe
diff --git a/jafar-rtslam/patches/patch-bb b/jafar-rtslam/patches/patch-bb
new file mode 100644
index 00000000..2901e39c
--- /dev/null
+++ b/jafar-rtslam/patches/patch-bb
@@ -0,0 +1,112 @@
+diff -Nu FindQt4.cmake FindQt4.cmake
+--- FindQt4.cmake	2011-04-08 12:28:39.000000000 +0200
++++ FindQt4.cmake	2011-06-18 23:37:33.000000000 +0200
+@@ -300,7 +300,7 @@
+ INCLUDE(CheckSymbolExists)
+ INCLUDE(MacroAddFileDependencies)
+ 
+-SET(QT_USE_FILE ${Jafar_SOURCE_DIR}/tools/cmake/UseQt4.cmake)
++SET(QT_USE_FILE UseQt4.cmake)
+ 
+ SET( QT_DEFINITIONS "")
+ 
+diff -Nu UseQt4.cmake UseQt4.cmake
+--- UseQt4.cmake	1970-01-01 01:00:00.000000000 +0100
++++ UseQt4.cmake	2011-06-18 23:36:49.000000000 +0200
+@@ -0,0 +1,96 @@
++# - Use Module for QT4
++# Sets up C and C++ to use Qt 4.  It is assumed that FindQt.cmake
++# has already been loaded.  See FindQt.cmake for information on
++# how to load Qt 4 into your CMake project.
++
++#=============================================================================
++# Copyright 2005-2009 Kitware, Inc.
++#
++# Distributed under the OSI-approved BSD License (the "License");
++# see accompanying file Copyright.txt for details.
++#
++# This software is distributed WITHOUT ANY WARRANTY; without even the
++# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
++# See the License for more information.
++#=============================================================================
++# (To distribute this file outside of CMake, substitute the full
++#  License text for the above reference.)
++
++ADD_DEFINITIONS(${QT_DEFINITIONS})
++SET_PROPERTY(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG QT_DEBUG)
++SET_PROPERTY(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELEASE QT_NO_DEBUG)
++SET_PROPERTY(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELWITHDEBINFO QT_NO_DEBUG)
++SET_PROPERTY(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_MINSIZEREL QT_NO_DEBUG)
++
++INCLUDE_DIRECTORIES(${QT_INCLUDE_DIR})
++
++SET(QT_LIBRARIES "")
++
++IF (QT_USE_QTMAIN)
++  IF (Q_WS_WIN)
++    SET(QT_LIBRARIES ${QT_LIBRARIES} ${QT_QTMAIN_LIBRARY})
++  ENDIF (Q_WS_WIN)
++ENDIF (QT_USE_QTMAIN)
++
++IF(QT_DONT_USE_QTGUI)
++  SET(QT_USE_QTGUI 0)
++ELSE(QT_DONT_USE_QTGUI)
++  SET(QT_USE_QTGUI 1)
++ENDIF(QT_DONT_USE_QTGUI)
++
++IF(QT_DONT_USE_QTCORE)
++  SET(QT_USE_QTCORE 0)
++ELSE(QT_DONT_USE_QTCORE)
++  SET(QT_USE_QTCORE 1)
++ENDIF(QT_DONT_USE_QTCORE)
++
++IF (QT_USE_QT3SUPPORT)
++  ADD_DEFINITIONS(-DQT3_SUPPORT)
++ENDIF (QT_USE_QT3SUPPORT)
++
++# list dependent modules, so dependent libraries are added
++SET(QT_QT3SUPPORT_MODULE_DEPENDS QTGUI QTSQL QTXML QTNETWORK QTCORE)
++SET(QT_QTSVG_MODULE_DEPENDS QTGUI QTXML QTCORE)
++SET(QT_QTUITOOLS_MODULE_DEPENDS QTGUI QTXML QTCORE)
++SET(QT_QTHELP_MODULE_DEPENDS QTGUI QTSQL QTXML QTNETWORK QTCORE)
++IF(QT_QTDBUS_FOUND)
++  SET(QT_PHONON_MODULE_DEPENDS QTGUI QTDBUS QTCORE)
++ELSE(QT_QTDBUS_FOUND)
++  SET(QT_PHONON_MODULE_DEPENDS QTGUI QTCORE)
++ENDIF(QT_QTDBUS_FOUND)
++SET(QT_QTDBUS_MODULE_DEPENDS QTXML QTCORE)
++SET(QT_QTXMLPATTERNS_MODULE_DEPENDS QTNETWORK QTCORE)
++SET(QT_QAXCONTAINER_MODULE_DEPENDS QTGUI QTCORE)
++SET(QT_QAXSERVER_MODULE_DEPENDS QTGUI QTCORE)
++SET(QT_QTSCRIPTTOOLS_MODULE_DEPENDS QTGUI QTCORE)
++SET(QT_QTWEBKIT_MODULE_DEPENDS QTXMLPATTERNS QTGUI QTCORE)
++SET(QT_QTDECLARATIVE_MODULE_DEPENDS QTWEBKIT QTSCRIPT QTSVG QTSQL QTXMLPATTERNS QTXML QTOPENGL QTGUI QTNETWORK QTCORE)
++SET(QT_QTMULTIMEDIA_MODULE_DEPENDS QTGUI QTCORE)
++
++# Qt modules  (in order of dependence)
++FOREACH(module QT3SUPPORT QTOPENGL QTASSISTANT QTDESIGNER QTMOTIF QTNSPLUGIN
++               QAXSERVER QAXCONTAINER QTDECLARATIVE QTSCRIPT QTSVG QTUITOOLS QTHELP
++               QTWEBKIT PHONON QTSCRIPTTOOLS QTMULTIMEDIA QTGUI QTTEST QTDBUS QTXML QTSQL
++               QTXMLPATTERNS QTNETWORK QTCORE)
++
++  IF (QT_USE_${module} OR QT_USE_${module}_DEPENDS)
++    IF (Qt4_${module}_FOUND)
++      IF(QT_USE_${module})
++        STRING(REPLACE "QT" "" qt_module_def "${module}")
++        ADD_DEFINITIONS(-DQT_${qt_module_def}_LIB)
++        INCLUDE_DIRECTORIES(${QT_${module}_INCLUDE_DIR})
++      ENDIF(QT_USE_${module})
++      SET(QT_LIBRARIES ${QT_LIBRARIES} ${Qt4_${module}_LIBRARY})
++      IF(QT_IS_STATIC)
++        SET(QT_LIBRARIES ${QT_LIBRARIES} ${Qt4_${module}_LIB_DEPENDENCIES})
++      ENDIF(QT_IS_STATIC)
++      FOREACH(depend_module ${QT_${module}_MODULE_DEPENDS})
++        SET(QT_USE_${depend_module}_DEPENDS 1)
++      ENDFOREACH(depend_module ${QT_${module}_MODULE_DEPENDS})
++    ELSE (Qt4_${module}_FOUND)
++      MESSAGE("Qt ${module} library not found.")
++    ENDIF (Qt4_${module}_FOUND)
++  ENDIF (QT_USE_${module} OR QT_USE_${module}_DEPENDS)
++  
++ENDFOREACH(module)
++
diff --git a/jafar-rtslam/patches/patch-dd b/jafar-rtslam/patches/patch-dd
new file mode 100644
index 00000000..83e2e475
--- /dev/null
+++ b/jafar-rtslam/patches/patch-dd
@@ -0,0 +1,41 @@
+diff -u CMakeLists.txt CMakeLists.txt
+--- CMakeLists.txt	2011-06-19 00:34:10.000000000 +0200
++++ CMakeLists.txt	2011-06-19 00:56:10.000000000 +0200
+@@ -75,7 +75,7 @@
+ #-----------------------------------------------------------------------------
+ # Go find them
+ #-----------------------------------------------------------------------------
+-foreach(package  GDHE VIAM POSTERLIB OpenCV)
++foreach(package  GDHE VIAM POSTERLIB)
+   find_robots_package("${package}")
+   string(TOUPPER "HAVE_${package}" HAVE_PACKAGE)
+   string(TOUPPER "${package}_FOUND" PACKAGE_FOUND)
+@@ -89,6 +89,28 @@
+   endif(${PACKAGE_FOUND})
+ endforeach(package)
+ 
++###
++# PkgConfig
++###
++include(FindPkgConfig)
++
++###
++# OpenCV
++###
++#include(FindOpenCV)
++#find_package(OpenCV)
++pkg_check_modules(OpenCV opencv)
++set(HAVE_OPENCV ${OpenCV_FOUND})
++set(OPENCV_FOUND ${OpenCV_FOUND})
++if(OpenCV_FOUND)
++  include_directories(${OpenCV_INCLUDE_DIRS})
++  link_directories(${OpenCV_LIBRARY_DIRS})
++  set(LIBS ${LIBS} ${OpenCV_LIBRARIES})
++    message(STATUS "version ${OpenCV_VERSION}")
++  set(LIBS_MAP_OPENCV "OpenCV")
++endif(OpenCV_FOUND)
++set(ROBOTPKG_MAP_OPENCV "image/opencv")
++
+ 
+ #-----------------------------------------------------------------------------
+ # Check for Boost
diff --git a/jafar-rtslam/patches/patch-ee b/jafar-rtslam/patches/patch-ee
new file mode 100644
index 00000000..e1541e50
--- /dev/null
+++ b/jafar-rtslam/patches/patch-ee
@@ -0,0 +1,67 @@
+--- CMakeLists.txt	2011-06-19 02:21:44.000000000 +0200
++++ CMakeLists.txt	2011-06-19 02:22:44.000000000 +0200
+@@ -35,6 +35,55 @@
+ set(CMAKE_CXX_FLAGS_RELEASE "-o2 -g0 -DNDEBUG -DJAFAR_NDEBUG -DBOOST_UBLAS_NDEBUG")
+ set(CMAKE_CXX_FLAGS_DEBUG "-o0 -g3 -ggdb")
+ 
++#------------------------------------------------------------------------------
++#This macro generates qt special files
++#------------------------------------------------------------------------------
++macro(GENERATE_QT_FILES JAFAR_MODULENAME CPPFLAGS)
++  #include qt specific macros
++  include(${QT_USE_FILE})
++
++MESSAGE(STATUS, "QT_MOC_SRCS: ${QT_MOC_SRCS}")
++  string(TOUPPER "${JAFAR_MODULENAME}_WRAPPED_HEADERS" QTUI_H_SRC)
++  string(TOUPPER "${JAFAR_MODULENAME}_WRAPPED_CPPS" QT_MOC_SRCS)
++
++  #generate headers from ui files
++  file(GLOB UI_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/*.ui)
++#  QT4_WRAP_UI(${QTUI_H_SRC} ${UI_FILES})
++    foreach(ui_file ${UI_FILES})
++        get_filename_component(generated_header ${ui_file} NAME_WE)
++        set(generated_header ${CMAKE_CURRENT_SOURCE_DIR}/src/${generated_header}.h)
++    execute_process(
++                COMMAND ${QT_UIC_EXECUTABLE} ${ui_file} -o ${generated_header}
++                OUTPUT_FILE ${generated_header}
++                INPUT_FILE ${ui_file}
++                )
++        set(${QTUI_H_SRC} ${${QTUI_H_SRC}} ${generated_header})
++    endforeach(ui_file)
++
++  # generate moc files from headers contining \"Q_OBJECT\"
++  file(GLOB HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/include/${JAFAR_MODULENAME}/*.hpp" "${CMAKE_CURRENT_SOURCE_DIR}/src/*.hpp")
++  foreach(header ${HEADERS})
++    file(STRINGS ${header} Q_OBJECT_STRING REGEX "Q_OBJECT")
++    if(NOT("${Q_OBJECT_STRING}" STREQUAL ""))
++      get_filename_component(generated_moc ${header} NAME_WE)
++            set(generated_moc ${CMAKE_CURRENT_SOURCE_DIR}/src/${generated_moc}.moc)
++
++      set(MYCPPFLAGS "${CPPFLAGS}")
++      string(STRIP "${MYCPPFLAGS}" MYCPPFLAGS)
++      string(REPLACE " " ";" MYCPPFLAGS "${MYCPPFLAGS}")
++      execute_process(
++                COMMAND ${QT_MOC_EXECUTABLE} ${MYCPPFLAGS} ${header} -o ${generated_moc}
++                )
++            set(${QT_MOC_SRCS} ${${QT_MOC_SRCS}} ${generated_moc})
++#      QT4_GENERATE_MOC(${header} ${CMAKE_CURRENT_SOURCE_DIR}/src/${HEADER_NAME}.moc)
++    endif(NOT("${Q_OBJECT_STRING}" STREQUAL ""))
++  endforeach(header)
++
++#  QT4_WRAP_CPP(${QT_MOC_SRCS} ${HEADERS_TO_MOC})
++
++endmacro(GENERATE_QT_FILES)
++
++
+ #-----------------------------------------------------------------------------
+ # Macro to help find other robotpkg modules
+ #-----------------------------------------------------------------------------
+@@ -189,6 +238,8 @@
+ endforeach(potential_include)
+ include_directories(${headers_folders})
+ 
++generate_qt_files(rtslam "-DHAVE_MODULE_QDISPLAY")
++
+ # build the library
+ add_library(jafar-rtslam SHARED ${module_sources})
+ 
-- 
GitLab