#******************************************************************** #** Image Component Library (ICL) ** #** ** #** Copyright (C) 2006-2010 CITEC, University of Bielefeld ** #** Neuroinformatics Group ** #** Website: www.iclcv.org and ** #** http://opensource.cit-ec.de/projects/icl ** #** ** #** File : CMakeLists.txt ** #** Module : ** #** Authors: Christian Groszewski, Christof Elbrechter ** #** ** #** ** #** Commercial License ** #** ICL can be used commercially, please refer to our website ** #** www.iclcv.org for more details. ** #** ** #** GNU General Public License Usage ** #** Alternatively, this file may be used under the terms of the ** #** GNU General Public License version 3.0 as published by the ** #** Free Software Foundation and appearing in the file LICENSE.GPL ** #** included in the packaging of this file. Please review the ** #** following information to ensure the GNU General Public License ** #** version 3.0 requirements will be met: ** #** http://www.gnu.org/copyleft/gpl.html. ** #** ** #** The development of this software was supported by the ** #** Excellence Cluster EXC 277 Cognitive Interaction Technology. ** #** The Excellence Cluster EXC 277 is a grant of the Deutsche ** #** Forschungsgemeinschaft (DFG) in the context of the German ** #** Excellence Initiative. ** #** ** #********************************************************************* CMAKE_MINIMUM_REQUIRED(VERSION 2.8.0) PROJECT(ICL) #ubuntu version set(ICL_MAJOR "6") set(ICL_MINOR "10") set(ICL_PATCH "0") set(VERSION "${ICL_MAJOR}.${ICL_MINOR}.${ICL_PATCH}") cmake_policy(SET CMP0002 OLD) if(NOT ${CMAKE_PATCH_VERSION} STREQUAL "0") cmake_policy(SET CMP0015 OLD) endif() set(ICL_VAR_ARCHITECTURE_DEPENDENT_BUILD_ON OFF CACHE BOOL "Compile architecture dependent (adding -march=native to CXX_FLAGS)") set(ICL_VAR_DEBUG_MODE OFF CACHE BOOL "Compile with debug options") set(ICL_VAR_USE_OMP OFF CACHE BOOL "add -fopenmp to compiler flags (might not work in combination with Intel IPP or MKL)") include(cmake_files/build_options.cmake) if(UNIX) include(cmake_files/macros-linux.cmake) elseif(APPLE) include(cmake_files/macros-apple.cmake) elseif(WIN32) # not supported yet endif() TODAY(DATE) set(DOC_VERSION_STRING "(build ${VERSION})") set(DOC_DATE_STRING "(build date ${DATE})") #if ON examples apps will be build and install set(ICL_VAR_BUILD_EXAMPLES ON CACHE BOOL "Build example applications") set(LIBRARY_OUTPUT_PATH "lib/icl-${VERSION}${DEBUG_POSTFIX}") set(EXECUTABLE_OUTPUT_PATH "bin/icl-${VERSION}${DEBUG_POSTFIX}") set(DOC_DIR "doc/icl-${VERSION}${DEBUG_POSTFIX}") set(ETC_DIR "etc/icl-${VERSION}${DEBUG_POSTFIX}") #checkboxes to indicate a third party lib will be used set(ICL_XDEP_IPP_ON OFF CACHE BOOL "Use IPP if available") set(ICL_XDEP_MKL_ON OFF CACHE BOOL "Use MKL if available") set(ICL_XDEP_OPENCV_ON OFF CACHE BOOL "Use OPENCV if available") set(ICL_XDEP_LIBZ_ON OFF CACHE BOOL "Use LIBZ if available") set(ICL_XDEP_LIBMESASR_ON OFF CACHE BOOL "Use LIBMESASR if available") set(ICL_XDEP_LIBJPEG_ON OFF CACHE BOOL "Use LIBJPEG if available") set(ICL_XDEP_IMAGEMAGICK_ON OFF CACHE BOOL "Use IMAGEMAGICK if available") set(ICL_XDEP_LIBPNG_ON OFF CACHE BOOL "Use LIBPNG if available") set(ICL_XDEP_LIBDC_ON OFF CACHE BOOL "Use LIBDC if available") set(ICL_XDEP_LIBFREENECT_ON OFF CACHE BOOL "Use libfreenect if available") set(ICL_XDEP_UNICAP_ON OFF CACHE BOOL "Use UNICAP if available") set(ICL_XDEP_XINE_ON OFF CACHE BOOL "Use XINE if available") set(ICL_XDEP_XCF_ON OFF CACHE BOOL "Use XCF if available") set(ICL_XDEP_QT_ON OFF CACHE BOOL "Use QT if available") set(ICL_XDEP_OPENGL_ON OFF CACHE BOOL "Use OPENGL if available") set(ICL_XDEP_GLX_ON OFF CACHE BOOL "Use GLX if available") set(ICL_XDEP_OPENSURF_ON OFF CACHE BOOL "Use OPENSURF if available") set(ICL_XDEP_GTEST_ON OFF CACHE BOOL "Use GTest if available") set(ICL_XDEP_VIDEODEV_ON OFF CACHE BOOL "Use videodev (v4l) headers if available") set(ICL_XDEP_VIDEODEV2_ON OFF CACHE BOOL "Use videodev2 (v4l2) headers if available") set(ICL_XDEP_PYLON_ON ON CACHE BOOL "Use Pylon if available") set(ICL_XDEP_GENICAM_ON ON CACHE BOOL "Use GenICam if available") set(ICL_XDEP_OPENCL_ON ON CACHE BOOL "Use OpenCL if available") set(ICL_XDEP_RSB_ON ON CACHE BOOL "Use Robotics Service Bus if available") set(ICL_XDEP_PROTOBUF_ON ON CACHE BOOL "Use Google Protocol Buffers if available (necessary for RSB)") FIND_PACKAGE(PkgConfig) include(CheckLibraryExists) #####VIDEODEV####### if(UNIX) include(cmake_files/linux/find_VIDEODEV.cmake) include(cmake_files/linux/find_IPP.cmake) include(cmake_files/linux/find_MKL.cmake) include(cmake_files/linux/find_OPENCV.cmake) include(cmake_files/linux/find_LIBZ.cmake) include(cmake_files/linux/find_LIBPNG.cmake) include(cmake_files/linux/find_LIBFREENECT.cmake) include(cmake_files/linux/find_LIBMESASR.cmake) include(cmake_files/linux/find_LIBJPEG.cmake) include(cmake_files/linux/find_IMAGEMAGICK.cmake) include(cmake_files/linux/find_LIBDC.cmake) include(cmake_files/linux/find_UNICAP.cmake) include(cmake_files/linux/find_XINE.cmake) include(cmake_files/linux/find_XCF.cmake) include(cmake_files/linux/find_OPENCL.cmake) include(cmake_files/linux/find_OPENGL.cmake) include(cmake_files/linux/find_GENICAM.cmake) include(cmake_files/linux/find_GTEST.cmake) include(cmake_files/linux/find_RSB_AND_PROTOBUF.cmake) if(HAVE_OPENGL_COND) include(cmake_files/linux/find_QT.cmake) elseif(ICL_XDEP_QT_ON) message(STATUS "QT dependency was deactivated due to the missing OPENGL dependency") message(STATUS "QT detected: FALSE") endif() if(HAVE_OPENCV_COND) include(cmake_files/linux/find_OPENSURF.cmake) else(ICL_XDEP_OPENSURF_ON) message(STATUS "OPENSURF dependency was deactivated due to the missing OPENCV dependency") message(STATUS "OPENSURF detected: FALSE") endif() if(HAVE_GENICAM_COND) include(cmake_files/linux/find_PYLON.cmake) else(ICL_XDEP_PYLON_ON) message(STATUS "PYLON dependency was deactivated due to the missing GENICAM dependency") message(STATUS "PYLON detected: FALSE") endif() endif() if(APPLE) include(cmake_files/apple/find_IPP.cmake) include(cmake_files/apple/find_MKL.cmake) include(cmake_files/apple/find_LIBZ.cmake) include(cmake_files/apple/find_LIBJPEG.cmake) include(cmake_files/apple/find_IMAGEMAGICK.cmake) include(cmake_files/apple/find_LIBDC.cmake) include(cmake_files/apple/find_OPENGL.cmake) include(cmake_files/apple/find_GTEST.cmake) if(HAVE_OPENGL_COND) include(cmake_files/apple/find_QT.cmake) else() message(STATUS "QT dependency was deactivated due to the missing OpenGL dependency") message(STATUS "QT detected: FALSE") endif() endif() #add include directories of ICL include_directories(${PROJECT_SOURCE_DIR}/include) #check for doxygen in order to build the documentation of ICL include(UseDoxygen OPTIONAL) FIND_PACKAGE(Doxygen) #currently we just write the version number of the ICL to this header file configure_file(${PROJECT_SOURCE_DIR}/include/ICLUtils/config.h.cmake ${PROJECT_SOURCE_DIR}/include/ICLUtils/config.h @only) #set the internal and external deps of the ICL #if an entry is not available, it will be empty set(ICLUtils_external_dependencies IPP MKL OPENCL) set(ICLCore_internal_dependencies ICLUtils) set(ICLCC_internal_dependencies ICLCore) set(ICLFilter_internal_dependencies ICLCC) set(ICLBlob_internal_dependencies ICLCC) set(ICLMarkers_internal_dependencies ICLGeom ICLFilter ICLQuick) if(${HAVE_OPENCV_COND}) set(ICLOpenCV_internal_dependencies ICLCore ICLCC) #check for version of opencv if(${HAVE_OPENCV211_COND}) set(ICLOpenCV_external_dependencies OPENCV211 OPENCV2 OPENCV) elseif (${HAVE_OPENCV2_COND}) set(ICLOpenCV_external_dependencies OPENCV2 OPENCV) else() set(ICLOpenCV_external_dependencies OPENCV) endif() set(ICLIO_internal_dependencies ICLOpenCV ICLFilter ICLBlob) set(ICLAlgorithms_internal_dependencies ICLOpenCV ICLQuick ICLGeom ICLMarkers) else() set(ICLIO_internal_dependencies ICLFilter) set(ICLAlgorithms_internal_dependencies ICLQuick ICLGeom) endif() set(ICLIO_external_dependencies LIBZ LIBJPEG LIBMESASR LIBDC XINE UNICAP IMAGEMAGICK XCF VIDEODEV VIDEODEV2 QT LIBFREENECT LIBPNG PYLON GENICAM RSB PROTOBUF) set(ICLQt_internal_dependencies ICLFilter ICLIO) set(ICLQt_external_dependencies QT OPENGL GLX) if(NOT ${HAVE_QT_COND}) if(${HAVE_OPENGL_COND}) set(ICLGeom_external_dependencies OPENGL) endif() endif() if(${HAVE_QT_COND}) set(ICLQuick_internal_dependencies ICLQt ICLFilter ICLIO ICLBlob) else() set(ICLQuick_internal_dependencies ICLFilter ICLIO ICLBlob) endif() set(ICLGeom_internal_dependencies ICLQuick ) set(ICLAlgorithms_external_dependencies OPENSURF) #resolve internal dependencies add_internal_dependencies(ICLCore_internal_dependencies ICLCore_dependencies) add_internal_dependencies(ICLCC_internal_dependencies ICLCC_dependencies) add_internal_dependencies(ICLFilter_internal_dependencies ICLFilter_dependencies) add_internal_dependencies(ICLBlob_internal_dependencies ICLBlob_dependencies) add_internal_dependencies(ICLOpenCV_internal_dependencies ICLOpenCV_dependencies) add_internal_dependencies(ICLIO_internal_dependencies ICLIO_dependencies) add_internal_dependencies(ICLQt_internal_dependencies ICLQt_dependencies) add_internal_dependencies(ICLQuick_internal_dependencies ICLQuick_dependencies) add_internal_dependencies(ICLGeom_internal_dependencies ICLGeom_dependencies) add_internal_dependencies(ICLAlgorithms_internal_dependencies ICLAlgorithms_dependencies) add_internal_dependencies(ICLMarkers_internal_dependencies ICLMarkers_dependencies) #resolve external dependencies add_external_dependencies(ICLUtils_external_dependencies ICLUtils_dependencies) add_external_dependencies(ICLOpenCV_external_dependencies ICLOpenCV_dependencies) add_external_dependencies(ICLIO_external_dependencies ICLIO_dependencies) add_external_dependencies(ICLQt_external_dependencies ICLQt_dependencies) add_external_dependencies(ICLGeom_external_dependencies ICLGeom_dependencies) add_external_dependencies(ICLAlgorithms_external_dependencies ICLAlgorithms_dependencies) #add subdirs add_subdirectory(ICLUtils) add_subdirectory(ICLCore) #what about the dir located in ../examples add_subdirectory(ICLCC) add_subdirectory(ICLFilter) add_subdirectory(ICLBlob) if(${HAVE_OPENCV_COND}) add_subdirectory(ICLOpenCV) endif() add_subdirectory(ICLIO) if(${HAVE_QT_COND}) add_subdirectory(ICLQt) endif() add_subdirectory(ICLQuick) add_subdirectory(ICLGeom) add_subdirectory(ICLAlgorithms) add_subdirectory(ICLMarkers) #installs include files of the project on make install install (DIRECTORY ${CMAKE_SOURCE_DIR}/include/ DESTINATION ${CMAKE_INSTALL_PREFIX}/include/icl-${VERSION}${DEBUG_POSTFIX} FILE_PERMISSIONS OWNER_WRITE OWNER_READ GROUP_WRITE GROUP_READ WORLD_READ DIRECTORY_PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE GROUP_WRITE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE COMPONENT hdrs FILES_MATCHING PATTERN "*.h" REGEX .svn* EXCLUDE ) set(ICL_RESOURCE_DIR_PLACEHOLDER "${CMAKE_INSTALL_PREFIX}/etc/icl-${VERSION}${DEBUG_POSTFIX}") set(ICL_PKG_CFG_PLACEHOLDER "icl-${VERSION}${DEBUG_POSTFIX}") #prepare files from scripts dir for installation configure_file(${CMAKE_SOURCE_DIR}/scripts/icl-create-project ${CMAKE_CURRENT_BINARY_DIR}/scripts/icl-create-project @ONLY) configure_file(${CMAKE_SOURCE_DIR}/scripts/icl-create-project-data/Makefile.custom.template ${CMAKE_CURRENT_BINARY_DIR}/scripts/icl-create-project-data/Makefile.custom.template @ONLY) configure_file(${CMAKE_SOURCE_DIR}/scripts/icl-make ${CMAKE_CURRENT_BINARY_DIR}/scripts/icl-make @ONLY) configure_file(${CMAKE_SOURCE_DIR}/scripts/icl-version ${CMAKE_CURRENT_BINARY_DIR}/scripts/icl-version @ONLY) #installs files from scripts dir on make install with given permissions install(FILES ${CMAKE_CURRENT_BINARY_DIR}/scripts/icl-create-project ${CMAKE_CURRENT_BINARY_DIR}/scripts/icl-make ${CMAKE_CURRENT_BINARY_DIR}/scripts/icl-version PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_EXECUTE DESTINATION ${EXECUTABLE_OUTPUT_PATH} COMPONENT filess ) #install scripts/icl-create-project-data/ to etc install(DIRECTORY ${CMAKE_SOURCE_DIR}/scripts/icl-create-project-data/ DESTINATION ${CMAKE_INSTALL_PREFIX}/${ETC_DIR} FILE_PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_WRITE GROUP_READ WORLD_READ WORLD_EXECUTE DIRECTORY_PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_WRITE GROUP_READ WORLD_READ WORLD_EXECUTE COMPONENT filess FILES_MATCHING PATTERN "*.template" REGEX .svn* EXCLUDE ) # this will overwrite the Makefile.custom.template with the configured one (where ICL_PKG_CFG_PLACEHOLDER is substituted) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/scripts/icl-create-project-data/Makefile.custom.template PERMISSIONS OWNER_WRITE OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_WRITE GROUP_EXECUTE WORLD_READ WORLD_EXECUTE DESTINATION ${CMAKE_INSTALL_PREFIX}/${ETC_DIR}/ COMPONENT filess ) if(DOXYGEN_FOUND) # install(DIRECTORY ${CMAKE_SOURCE_DIR}/doc/ DESTINATION ${CMAKE_INSTALL_PREFIX}/${DOC_DIR}/ICL FILE_PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_WRITE GROUP_READ WORLD_READ WORLD_EXECUTE DIRECTORY_PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_WRITE GROUP_READ WORLD_READ WORLD_EXECUTE COMPONENT docu PATTERN "*template" EXCLUDE REGEX .svn* EXCLUDE REGEX .css EXCLUDE) #rename menuStyle.css to style.css for menu with border install(FILES ${CMAKE_SOURCE_DIR}/doc/menuStyle.css DESTINATION ${CMAKE_INSTALL_PREFIX}/${DOC_DIR}/ICL PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ GROUP_EXECUTE GROUP_WRITE GROUP_READ WORLD_READ WORLD_EXECUTE COMPONENT docu RENAME style.css) #create dir for alldocs exec_program(mkdir ARGS -p "\"${CMAKE_CURRENT_BINARY_DIR}/alldoc/html\"") #the replace entry for menu.html set(ENTRY "