From cfa14e8d6015d27c15b9b687ea91a7adc85af328 Mon Sep 17 00:00:00 2001 From: "Joshua M. Doe" Date: Thu, 25 Mar 2010 13:47:03 -0400 Subject: [PATCH] * Improve CMake lists and modules --- CMakeLists.txt | 69 ++++------ cmake/modules/FindGlib2.cmake | 10 ++ cmake/modules/FindGstreamer.cmake | 206 +++++++++++++----------------- cmake/modules/FindLibIconv.cmake | 5 + cmake/modules/FindLibXml2.cmake | 5 + cmake/modules/FindNIIMAQ.cmake | 61 +++++++-- gst/CMakeLists.txt | 20 +-- set_paths_and_run_cmake.bat | 17 ++- sys/CMakeLists.txt | 3 +- 9 files changed, 199 insertions(+), 197 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d265d01..c05d236 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,60 +1,35 @@ -cmake_minimum_required ( VERSION "2.6.0" ) +cmake_minimum_required (VERSION "2.8.0") -list ( APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules ) +list (APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules) project ( gst-plugins-vision ) -find_package ( Glib2 REQUIRED ) -find_package ( Gstreamer COMPONENTS gstbase ) -find_package ( LibXml2 ) -find_package ( LibIconv ) -find_package ( NIIMAQ REQUIRED ) # make this optional +find_package (Gstreamer REQUIRED) +find_package (Glib2 REQUIRED) +find_package (NIIMAQ) -function ( check_package name LEVEL ) - if ( ${name}_FOUND ) - message ( STATUS "Found ${name}... YES" ) - else ( ${name}_FOUND ) - message ( STATUS "Found ${name}... NO" ) - if ( LEVEL ) - if ( WIN32 ) - message ( FATAL_ERROR "You should set the env variable ${name}_DIR" ) - else ( WIN32 ) - message ( FATAL_ERROR "You should install ${name} dev package" ) - endif ( WIN32 ) - endif ( LEVEL ) - endif ( ${name}_FOUND ) -endfunction ( check_package ) +# conditional required packages +include (CheckIncludeFiles) +CHECK_INCLUDE_FILES ("${GSTREAMER_INCLUDE_DIR}/gst/gstconfig.h" GST_USING_BINARY_REGISTRY) +if (NOT GST_USING_BINARY_REGISTRY) + find_package (LIBXML2) + find_package (LIBICONV) + include_directories (AFTER + ${LIBXML2_INCLUDE_DIR} + ${LIBICONV_INCLUDE_DIR}) +endif (NOT GST_USING_BINARY_REGISTRY) -# required packages -check_package ( GLIB2 1 ) -check_package ( GSTREAMER 1 ) - -# conditionnal required packages -INCLUDE ( CheckIncludeFiles ) -CHECK_INCLUDE_FILES ( "${GSTREAMER_gstconfig_INCLUDE_DIR}/gst/gstconfig.h" GST_USING_BINARY_REGISTRY ) -if ( NOT GST_USING_BINARY_REGISTRY ) - check_package ( LIBXML2 1 ) - check_package ( LIBICONV 1 ) -endif ( NOT GST_USING_BINARY_REGISTRY ) - -# debug -message ( "****" ${GLIB2_INCLUDE_DIR} ) -message ( "****" ${GLIB2_LIBRARIES} ) -message ( "****" ${GSTREAMER_INCLUDE_DIR} ) -message ( "****" ${GSTREAMER_LIBRARIES} ) -message ( "****" ${NIIMAQ_INCLUDE_DIR} ) -message ( "****" ${NIIMAQ_LIBRARIES} ) include_directories ( . ${GSTREAMER_INCLUDE_DIR} ${GLIB2_INCLUDE_DIR} ) -if ( NOT GST_USING_BINARY_REGISTRY ) - include_directories ( AFTER - ${LIBXML2_INCLUDE_DIR} - ${LIBICONV_INCLUDE_DIR} ) -endif ( NOT GST_USING_BINARY_REGISTRY ) +if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) + file (TO_CMAKE_PATH "${GSTREAMER_INCLUDE_DIR}/../.." PREFIX) + set (CMAKE_INSTALL_PREFIX + ${PREFIX} CACHE PATH "Directory to install plugins, under lib/gstreamer-0.10" FORCE) +endif (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) -add_subdirectory ( gst ) -add_subdirectory ( sys ) +add_subdirectory (gst) +add_subdirectory (sys) diff --git a/cmake/modules/FindGlib2.cmake b/cmake/modules/FindGlib2.cmake index 821296c..7204a9e 100644 --- a/cmake/modules/FindGlib2.cmake +++ b/cmake/modules/FindGlib2.cmake @@ -1,3 +1,7 @@ +if (NOT GLIB2_DIR) + set (GLIB2_DIR "" CACHE PATH "Directory containing glib-2 includes and libraries") +endif () + FILE(TO_CMAKE_PATH "$ENV{GLIB2_DIR}" TRY1_DIR) FILE(TO_CMAKE_PATH "${GLIB2_DIR}" TRY2_DIR) FILE(GLOB GLIB2_DIR ${TRY1_DIR} ${TRY2_DIR}) @@ -5,34 +9,40 @@ FILE(GLOB GLIB2_DIR ${TRY1_DIR} ${TRY2_DIR}) FIND_PATH(GLIB_glib_2_INCLUDE_DIR glib.h PATHS ${GLIB2_DIR}/include ${GLIB2_DIR}/include/glib-2.0 /usr/local/include/glib-2.0 /usr/include/glib-2.0 /opt/local/include/glib-2.0 ENV INCLUDE DOC "Directory containing glib.h include file") +mark_as_advanced (GLIB_glib_2_INCLUDE_DIR) FIND_PATH(GLIB_glibconfig_2_INCLUDE_DIR glibconfig.h PATHS ${GLIB2_DIR}/include ${GLIB2_DIR}/include/glib-2.0 ${GLIB2_DIR}/lib/include ${GLIB2_DIR}/lib/glib-2.0/include /usr/local/include/glib-2.0 /usr/include/glib-2.0 /usr/lib/glib-2.0/include /usr/local/lib/glib-2.0/include /opt/local/lib/glib-2.0/include ENV INCLUDE DOC "Directory containing glibconfig.h include file") +mark_as_advanced (GLIB_glibconfig_2_INCLUDE_DIR) FIND_LIBRARY(GLIB_glib_2_LIBRARY NAMES glib-2.0 PATHS ${GLIB2_DIR}/bin ${GLIB2_DIR}/win32/bin ${GLIB2_DIR}/lib ${GLIB2_DIR}/win32/lib /usr/local/lib /usr/lib /opt/local/lib ENV LIB DOC "glib library to link with" NO_SYSTEM_ENVIRONMENT_PATH) +mark_as_advanced (GLIB_glib_2_LIBRARY) FIND_LIBRARY(GLIB_gmodule_2_LIBRARY NAMES gmodule-2.0 PATHS ${GLIB2_DIR}/bin ${GLIB2_DIR}/win32/bin ${GLIB2_DIR}/lib ${GLIB2_DIR}/win32/lib /usr/local/lib /usr/lib /opt/local/lib ENV LIB DOC "gmodule library to link with" NO_SYSTEM_ENVIRONMENT_PATH) +mark_as_advanced (GLIB_gmodule_2_LIBRARY) FIND_LIBRARY(GLIB_gobject_2_LIBRARY NAMES gobject-2.0 PATHS ${GLIB2_DIR}/bin ${GLIB2_DIR}/win32/bin ${GLIB2_DIR}/lib ${GLIB2_DIR}/win32/lib /usr/local/lib /usr/lib /opt/local/lib ENV LIB DOC "gobject library to link with" NO_SYSTEM_ENVIRONMENT_PATH) +mark_as_advanced (GLIB_gobject_2_LIBRARY) FIND_LIBRARY(GLIB_gthread_2_LIBRARY NAMES gthread-2.0 PATHS ${GLIB2_DIR}/bin ${GLIB2_DIR}/win32/bin ${GLIB2_DIR}/lib ${GLIB2_DIR}/win32/lib /usr/local/lib /usr/lib /opt/local/lib ENV LIB DOC "gthread library to link with" NO_SYSTEM_ENVIRONMENT_PATH) +mark_as_advanced (GLIB_gthread_2_LIBRARY) IF (GLIB_glib_2_INCLUDE_DIR AND GLIB_glibconfig_2_INCLUDE_DIR AND GLIB_glib_2_LIBRARY AND GLIB_gmodule_2_LIBRARY AND GLIB_gobject_2_LIBRARY AND GLIB_gthread_2_LIBRARY) SET(GLIB2_INCLUDE_DIR ${GLIB_glib_2_INCLUDE_DIR} ${GLIB_glibconfig_2_INCLUDE_DIR}) diff --git a/cmake/modules/FindGstreamer.cmake b/cmake/modules/FindGstreamer.cmake index 64fa90a..933a37e 100644 --- a/cmake/modules/FindGstreamer.cmake +++ b/cmake/modules/FindGstreamer.cmake @@ -1,134 +1,104 @@ -FILE(TO_CMAKE_PATH "$ENV{GSTREAMER_DIR}" TRY1_DIR) -FILE(TO_CMAKE_PATH "${GSTREAMER_DIR}" TRY2_DIR) -FILE(GLOB GSTREAMER_DIR ${TRY1_DIR} ${TRY2_DIR}) -message(STATUS ": GSTREAMER_DIR=${GSTREAMER_DIR}") +# - Try to find GStreamer +# Once done this will define +# +# GSTREAMER_FOUND - system has GStreamer +# GSTREAMER_INCLUDE_DIR - the GStreamer include directory +# GSTREAMER_LIBRARIES - the libraries needed to use GStreamer +# GSTREAMER_DEFINITIONS - Compiler switches required for using GStreamer -FIND_PATH(GSTREAMER_gst_INCLUDE_DIR gst/gst.h - PATHS ${GSTREAMER_DIR}/include ${GSTREAMER_DIR}/include/gstreamer-0.10 /usr/local/include/gstreamer-0.10 /usr/include/gstreamer-0.10 C:/gstreamer/include/gstreamer-0.10/gst - ENV INCLUDE DOC "Directory containing gst/gst.h include file") -message(STATUS "GSTREAMER_gst_INCLUDE_DIR = ${GSTREAMER_gst_INCLUDE_DIR}") +# Copyright (c) 2006, Tim Beaulen +# Copyright (c) 2010, United States Government, Joshua M. Doe +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. -FIND_PATH(GSTREAMER_gstconfig_INCLUDE_DIR gst/gstconfig.h - PATHS ${GSTREAMER_DIR}/include ${GSTREAMER_DIR}/lib/include ${GSTREAMER_DIR}/include/gstreamer-0.10 /usr/local/include/gstreamer-0.10 /usr/include/gstreamer-0.10 /usr/local/lib/include/gstreamer-0.10 /usr/lib/include/gstreamer-0.10 - ENV INCLUDE DOC "Directory containing gst/gstconfig.h include file") -message(STATUS "GSTREAMER_gstconfig_INCLUDE_DIR = ${GSTREAMER_gstconfig_INCLUDE_DIR}") +# TODO: Other versions --> GSTREAMER_X_Y_FOUND (Example: GSTREAMER_0_8_FOUND and GSTREAMER_0_10_FOUND etc) -FIND_LIBRARY(GSTREAMER_gstaudio_LIBRARY NAMES gstaudio-0.10 libgstaudio-0.10 gstaudio - PATHS ${GSTREAMER_DIR}/bin ${GSTREAMER_DIR}/win32/bin ${GSTREAMER_DIR}/bin/bin C:/gstreamer/bin ${GSTREAMER_DIR}/lib ${GSTREAMER_DIR}/win32/lib /usr/local/lib /usr/lib - ENV LIB - DOC "gstaudio library to link with" - NO_SYSTEM_ENVIRONMENT_PATH) -message(STATUS "GSTREAMER_gstaudio_LIBRARY = ${GSTREAMER_gstaudio_LIBRARY}") +IF (GSTREAMER_INCLUDE_DIR AND GSTREAMER_LIBRARIES AND GSTREAMER_BASE_LIBRARY AND GSTREAMER_INTERFACE_LIBRARY) + # in cache already + SET(GStreamer_FIND_QUIETLY TRUE) +ELSE (GSTREAMER_INCLUDE_DIR AND GSTREAMER_LIBRARIES AND GSTREAMER_BASE_LIBRARY AND GSTREAMER_INTERFACE_LIBRARY) + SET(GStreamer_FIND_QUIETLY FALSE) +ENDIF (GSTREAMER_INCLUDE_DIR AND GSTREAMER_LIBRARIES AND GSTREAMER_BASE_LIBRARY AND GSTREAMER_INTERFACE_LIBRARY) -FIND_LIBRARY(GSTREAMER_gstbase_LIBRARY NAMES gstbase-0.10 libgstbase-0.10 gstbase - PATHS ${GSTREAMER_DIR}/bin ${GSTREAMER_DIR}/win32/bin ${GSTREAMER_DIR}/bin/bin C:/gstreamer/bin ${GSTREAMER_DIR}/lib ${GSTREAMER_DIR}/win32/lib /usr/local/lib /usr/lib - ENV LIB - DOC "gstbase library to link with" - NO_SYSTEM_ENVIRONMENT_PATH) +SET (GSTREAMER_DIR ${GSTREAMER_DIR} CACHE PATH "Directory containing gstreamer") -FIND_LIBRARY(GLIB_gstcdda_LIBRARY NAMES gstcdda-0.10 libgstcdda-0.10 gstcdda - PATHS ${GSTREAMER_DIR}/bin ${GSTREAMER_DIR}/win32/bin ${GSTREAMER_DIR}/bin/bin C:/gstreamer/bin ${GSTREAMER_DIR}/lib ${GSTREAMER_DIR}/win32/lib /usr/local/lib /usr/lib - ENV LIB - DOC "gstcdda library to link with" - NO_SYSTEM_ENVIRONMENT_PATH) +IF (NOT WIN32) + # use pkg-config to get the directories and then use these values + # in the FIND_PATH() and FIND_LIBRARY() calls + FIND_PACKAGE(PkgConfig) + PKG_CHECK_MODULES(PC_GSTREAMER QUIET gstreamer-0.10) + #MESSAGE(STATUS "DEBUG: GStreamer include directory = ${GSTREAMER_INCLUDE_DIRS}") + #MESSAGE(STATUS "DEBUG: GStreamer link directory = ${GSTREAMER_LIBRARY_DIRS}") + #MESSAGE(STATUS "DEBUG: GStreamer CFlags = ${GSTREAMER_CFLAGS_OTHER}") + SET(GSTREAMER_DEFINITIONS ${PC_GSTREAMER_CFLAGS_OTHER}) +ELSE (NOT WIN32) + IF (NOT GSTREAMER_DIR) + SET (GSTREAMER_DIR "C:/gstreamer") + ENDIF (NOT GSTREAMER_DIR) +ENDIF (NOT WIN32) -FIND_LIBRARY(GSTREAMER_gstcontroller_LIBRARY NAMES gstcontroller-0.10 libgstcontroller-0.10 gstcontroller - PATHS ${GSTREAMER_DIR}/bin ${GSTREAMER_DIR}/win32/bin ${GSTREAMER_DIR}/bin/bin C:/gstreamer/bin ${GSTREAMER_DIR}/lib ${GSTREAMER_DIR}/win32/lib /usr/local/lib /usr/lib - ENV LIB - DOC "gstcontroller library to link with" - NO_SYSTEM_ENVIRONMENT_PATH) +FIND_PATH(GSTREAMER_INCLUDE_DIR gst/gst.h + PATHS + ${GSTREAMER_DIR}/include/gstreamer-0.10 + ${PC_GSTREAMER_INCLUDEDIR} + ${PC_GSTREAMER_INCLUDE_DIRS} + #PATH_SUFFIXES gst + ) -FIND_LIBRARY(GSTREAMER_gstdataprotocol_LIBRARY NAMES gstdataprotocol-0.10 libgstdataprotocol-0.10 gstdataprotocol - PATHS ${GSTREAMER_DIR}/bin ${GSTREAMER_DIR}/win32/bin ${GSTREAMER_DIR}/bin/bin C:/gstreamer/bin ${GSTREAMER_DIR}/lib ${GSTREAMER_DIR}/win32/lib /usr/local/lib /usr/lib - ENV LIB - DOC "gstdataprotocol library to link with" - NO_SYSTEM_ENVIRONMENT_PATH) +FIND_LIBRARY(GSTREAMER_LIBRARIES NAMES gstreamer-0.10 + PATHS + ${GSTREAMER_DIR}/lib + ${PC_GSTREAMER_LIBDIR} + ${PC_GSTREAMER_LIBRARY_DIRS} + ) -FIND_LIBRARY(GSTREAMER_gstinterfaces_LIBRARY NAMES gstinterfaces-0.10 libgstinterfaces-0.10 gstinterfaces - PATHS ${GSTREAMER_DIR}/bin ${GSTREAMER_DIR}/win32/bin ${GSTREAMER_DIR}/bin/bin C:/gstreamer/bin ${GSTREAMER_DIR}/lib ${GSTREAMER_DIR}/win32/lib /usr/local/lib /usr/lib - ENV LIB - DOC "gstinterfaces library to link with" - NO_SYSTEM_ENVIRONMENT_PATH) +FIND_LIBRARY(GSTREAMER_BASE_LIBRARY NAMES gstbase-0.10 + PATHS + ${GSTREAMER_DIR}/lib + ${PC_GSTREAMER_LIBDIR} + ${PC_GSTREAMER_LIBRARY_DIRS} + ) -FIND_LIBRARY(GSTREAMER_gstnet_LIBRARY NAMES gstnet-0.10 libgstnet-0.10 gstnet - PATHS ${GSTREAMER_DIR}/bin ${GSTREAMER_DIR}/win32/bin ${GSTREAMER_DIR}/bin/bin C:/gstreamer/bin ${GSTREAMER_DIR}/lib ${GSTREAMER_DIR}/win32/lib /usr/local/lib /usr/lib - ENV LIB - DOC "gstnet library to link with" - NO_SYSTEM_ENVIRONMENT_PATH) +FIND_LIBRARY(GSTREAMER_INTERFACE_LIBRARY NAMES gstinterfaces-0.10 + PATHS + ${GSTREAMER_DIR}/lib + ${PC_GSTREAMER_LIBDIR} + ${PC_GSTREAMER_LIBRARY_DIRS} + ) -FIND_LIBRARY(GSTREAMER_gstnetbuffer_LIBRARY NAMES gstnetbuffer-0.10 libgstnetbuffer-0.10 gstnetbuffer - PATHS ${GSTREAMER_DIR}/bin ${GSTREAMER_DIR}/win32/bin ${GSTREAMER_DIR}/bin/bin C:/gstreamer/bin ${GSTREAMER_DIR}/lib ${GSTREAMER_DIR}/win32/lib /usr/local/lib /usr/lib - ENV LIB - DOC "gstnetbuffer library to link with" - NO_SYSTEM_ENVIRONMENT_PATH) +FIND_LIBRARY(GSTREAMER_VIDEO_LIBRARY NAMES gstvideo-0.10 + PATHS + ${GSTREAMER_DIR}/lib + ${PC_GSTREAMER_LIBDIR} + ${PC_GSTREAMER_LIBRARY_DIRS} + ) -FIND_LIBRARY(GSTREAMER_gstpbutils_LIBRARY NAMES gstpbutils-0.10 libgstpbutils-0.10 gstpbutils - PATHS ${GSTREAMER_DIR}/bin ${GSTREAMER_DIR}/win32/bin ${GSTREAMER_DIR}/bin/bin C:/gstreamer/bin ${GSTREAMER_DIR}/lib ${GSTREAMER_DIR}/win32/lib /usr/local/lib /usr/lib - ENV LIB - DOC "gstpbutils library to link with" - NO_SYSTEM_ENVIRONMENT_PATH) +IF (GSTREAMER_INCLUDE_DIR) + #MESSAGE(STATUS "DEBUG: Found GStreamer include dir: ${GSTREAMER_INCLUDE_DIR}") +ELSE (GSTREAMER_INCLUDE_DIR) + MESSAGE(STATUS "GStreamer: WARNING: include dir not found") +ENDIF (GSTREAMER_INCLUDE_DIR) -FIND_LIBRARY(GSTREAMER_gstreamer_LIBRARY NAMES gstreamer-0.10 libgstreamer-0.10 gstreamer - PATHS ${GSTREAMER_DIR}/bin ${GSTREAMER_DIR}/win32/bin ${GSTREAMER_DIR}/bin/bin C:/gstreamer/bin ${GSTREAMER_DIR}/lib ${GSTREAMER_DIR}/win32/lib /usr/local/lib /usr/lib - ENV LIB - DOC "gstreamer library to link with" - NO_SYSTEM_ENVIRONMENT_PATH) +IF (GSTREAMER_LIBRARIES) + #MESSAGE(STATUS "DEBUG: Found GStreamer library: ${GSTREAMER_LIBRARIES}") +ELSE (GSTREAMER_LIBRARIES) + MESSAGE(STATUS "GStreamer: WARNING: library not found") +ENDIF (GSTREAMER_LIBRARIES) -FIND_LIBRARY(GSTREAMER_gstriff_LIBRARY NAMES gstriff-0.10 libgstriff-0.10 gstriff - PATHS ${GSTREAMER_DIR}/bin ${GSTREAMER_DIR}/win32/bin ${GSTREAMER_DIR}/bin/bin C:/gstreamer/bin ${GSTREAMER_DIR}/lib ${GSTREAMER_DIR}/win32/lib /usr/local/lib /usr/lib - ENV LIB - DOC "gstriff library to link with" - NO_SYSTEM_ENVIRONMENT_PATH) +IF (GSTREAMER_INTERFACE_LIBRARY) + #MESSAGE(STATUS "DEBUG: Found GStreamer interface library: ${GSTREAMER_INTERFACE_LIBRARY}") +ELSE (GSTREAMER_INTERFACE_LIBRARY) + MESSAGE(STATUS "GStreamer: WARNING: interface library not found") +ENDIF (GSTREAMER_INTERFACE_LIBRARY) -FIND_LIBRARY(GSTREAMER_gstrtp_LIBRARY NAMES gstrtp-0.10 libgstrtp-0.10 gstrtp - PATHS ${GSTREAMER_DIR}/bin ${GSTREAMER_DIR}/win32/bin ${GSTREAMER_DIR}/bin/bin C:/gstreamer/bin ${GSTREAMER_DIR}/lib ${GSTREAMER_DIR}/win32/lib /usr/local/lib /usr/lib - ENV LIB - DOC "gstrtp library to link with" - NO_SYSTEM_ENVIRONMENT_PATH) +IF (GSTREAMER_VIDEO_LIBRARY) + #MESSAGE(STATUS "DEBUG: Found GStreamer video library: ${GSTREAMER_VIDEO_LIBRARY}") +ELSE (GSTREAMER_VIDEO_LIBRARY) + MESSAGE(STATUS "GStreamer: WARNING: video library not found") +ENDIF (GSTREAMER_VIDEO_LIBRARY) -FIND_LIBRARY(GSTREAMER_gstrtsp_LIBRARY NAMES gstrtsp-0.10 libgstrtsp-0.10 gstrtsp - PATHS ${GSTREAMER_DIR}/bin ${GSTREAMER_DIR}/win32/bin ${GSTREAMER_DIR}/bin/bin C:/gstreamer/bin ${GSTREAMER_DIR}/lib ${GSTREAMER_DIR}/win32/lib /usr/local/lib /usr/lib - ENV LIB - DOC "gstrtsp library to link with" - NO_SYSTEM_ENVIRONMENT_PATH) +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(GStreamer DEFAULT_MSG GSTREAMER_LIBRARIES GSTREAMER_INCLUDE_DIR GSTREAMER_BASE_LIBRARY GSTREAMER_INTERFACE_LIBRARY GSTREAMER_VIDEO_LIBRARY) -#FIND_LIBRARY(GSTREAMER_gstsdp_LIBRARY NAMES gstsdp-0.10 libgstsdp-0.10 -# PATHS ${GSTREAMER_DIR}/bin ${GSTREAMER_DIR}/win32/bin ${GSTREAMER_DIR}/bin/bin C:/gstreamer/bin ${GSTREAMER_DIR}/lib ${GSTREAMER_DIR}/win32/lib /usr/local/lib /usr/lib -# ENV LIB -# DOC "gstsdp library to link with" -# NO_SYSTEM_ENVIRONMENT_PATH) - -FIND_LIBRARY(GSTREAMER_gsttag_LIBRARY NAMES gsttag-0.10 libgsttag-0.10 gsttag - PATHS ${GSTREAMER_DIR}/bin ${GSTREAMER_DIR}/win32/bin ${GSTREAMER_DIR}/bin/bin C:/gstreamer/bin ${GSTREAMER_DIR}/lib ${GSTREAMER_DIR}/win32/lib /usr/local/lib /usr/lib - ENV LIB - DOC "gsttag library to link with" - NO_SYSTEM_ENVIRONMENT_PATH) - -FIND_LIBRARY(GSTREAMER_gstvideo_LIBRARY NAMES gstvideo-0.10 libgstvideo-0.10 gstvideo - PATHS ${GSTREAMER_DIR}/bin ${GSTREAMER_DIR}/win32/bin ${GSTREAMER_DIR}/bin/bin C:/gstreamer/bin ${GSTREAMER_DIR}/lib ${GSTREAMER_DIR}/win32/lib /usr/local/lib /usr/lib - ENV LIB - DOC "gstvideo library to link with" - NO_SYSTEM_ENVIRONMENT_PATH) - - -#IF (GSTREAMER_gst_INCLUDE_DIR AND GSTREAMER_gstconfig_INCLUDE_DIR AND -# GSTREAMER_gstaudio_LIBRARY AND GSTREAMER_gstbase_LIBRARY AND GSTREAMER_gstcontroller_LIBRARY AND -# GSTREAMER_gstdataprotocol_LIBRARY AND GSTREAMER_gstinterfaces_LIBRARY AND GSTREAMER_gstnet_LIBRARY AND -# GSTREAMER_gstnetbuffer_LIBRARY AND GSTREAMER_gstpbutils_LIBRARY AND GSTREAMER_gstreamer_LIBRARY AND -# GSTREAMER_gstriff_LIBRARY AND GSTREAMER_gstrtp_LIBRARY AND GSTREAMER_gstrtsp_LIBRARY AND GSTREAMER_gstsdp_LIBRARY AND -# GSTREAMER_gsttag_LIBRARY AND GSTREAMER_gstvideo_LIBRARY) - SET(GSTREAMER_INCLUDE_DIR ${GSTREAMER_gst_INCLUDE_DIR} ${GSTREAMER_gstconfig_INCLUDE_DIR}) - list(REMOVE_DUPLICATES GSTREAMER_INCLUDE_DIR) - SET(GSTREAMER_LIBRARIES ${GSTREAMER_gstaudio_LIBRARY} ${GSTREAMER_gstbase_LIBRARY} - ${GSTREAMER_gstcontroller_LIBRARY} ${GSTREAMER_gstdataprotocol_LIBRARY} ${GSTREAMER_gstinterfaces_LIBRARY} - ${GSTREAMER_gstnet_LIBRARY} ${GSTREAMER_gstnetbuffer_LIBRARY} ${GSTREAMER_gstpbutils_LIBRARY} - ${GSTREAMER_gstreamer_LIBRARY} ${GSTREAMER_gstriff_LIBRARY} ${GSTREAMER_gstrtp_LIBRARY} - ${GSTREAMER_gstrtsp_LIBRARY} ${GSTREAMER_gstsdp_LIBRARY} ${GSTREAMER_gsttag_LIBRARY} ${GSTREAMER_gstvideo_LIBRARY}) - list(REMOVE_DUPLICATES GSTREAMER_LIBRARIES) - SET(GSTREAMER_FOUND TRUE) -#ENDIF (GSTREAMER_gst_INCLUDE_DIR AND GSTREAMER_gstconfig_INCLUDE_DIR AND -# GSTREAMER_gstaudio_LIBRARY AND GSTREAMER_gstbase_LIBRARY AND GSTREAMER_gstcontroller_LIBRARY AND -# GSTREAMER_gstdataprotocol_LIBRARY AND GSTREAMER_gstinterfaces_LIBRARY AND GSTREAMER_gstnet_LIBRARY AND -# GSTREAMER_gstnetbuffer_LIBRARY AND GSTREAMER_gstpbutils_LIBRARY AND GSTREAMER_gstreamer_LIBRARY AND -# GSTREAMER_gstriff_LIBRARY AND GSTREAMER_gstrtp_LIBRARY AND GSTREAMER_gstrtsp_LIBRARY AND GSTREAMER_gstsdp_LIBRARY AND -# GSTREAMER_gsttag_LIBRARY AND GSTREAMER_gstvideo_LIBRARY) +MARK_AS_ADVANCED(GSTREAMER_INCLUDE_DIR GSTREAMER_LIBRARIES GSTREAMER_BASE_LIBRARY GSTREAMER_INTERFACE_LIBRARY GSTREAMER_VIDEO_LIBRARY) diff --git a/cmake/modules/FindLibIconv.cmake b/cmake/modules/FindLibIconv.cmake index 0934202..5206c01 100644 --- a/cmake/modules/FindLibIconv.cmake +++ b/cmake/modules/FindLibIconv.cmake @@ -1,3 +1,7 @@ +if (NOT LIBICONV_DIR) + set (LIBICONV_DIR "" CACHE PATH "Directory containing iconv.h") +endif () + FILE(TO_CMAKE_PATH "$ENV{LIBICONV_DIR}" TRY1_DIR) FILE(TO_CMAKE_PATH "${LIBICONV_DIR}" TRY2_DIR) FILE(GLOB LIBICONV_DIR ${TRY1_DIR} ${TRY2_DIR}) @@ -5,6 +9,7 @@ FILE(GLOB LIBICONV_DIR ${TRY1_DIR} ${TRY2_DIR}) FIND_PATH(LIBICONV_INCLUDE_DIR iconv.h PATHS ${LIBICONV_DIR}/include /usr/local/include /usr/include ENV INCLUDE DOC "Directory containing iconv.h include file") +mark_as_advanced (LIBICONV_INCLUDE_DIR) IF (LIBICONV_INCLUDE_DIR) SET(LIBICONV_FOUND TRUE) diff --git a/cmake/modules/FindLibXml2.cmake b/cmake/modules/FindLibXml2.cmake index 399f5a2..c172566 100644 --- a/cmake/modules/FindLibXml2.cmake +++ b/cmake/modules/FindLibXml2.cmake @@ -1,3 +1,7 @@ +if (NOT LIBXML2_DIR) + set (LIBXML2_DIR "" CACHE PATH "Directory containing libxml") +endif () + FILE(TO_CMAKE_PATH "$ENV{LIBXML2_DIR}" TRY1_DIR) FILE(TO_CMAKE_PATH "${LIBXML2_DIR}" TRY2_DIR) FILE(GLOB LIBXML2_DIR ${TRY1_DIR} ${TRY2_DIR}) @@ -5,6 +9,7 @@ FILE(GLOB LIBXML2_DIR ${TRY1_DIR} ${TRY2_DIR}) FIND_PATH(LIBXML2_INCLUDE_DIR libxml/parser.h PATHS ${LIBXML2_DIR}/include ${LIBXML2_DIR}/include/libxml2 /usr/local/include/libxml2 /usr/include/libxml2 ENV INCLUDE DOC "Directory containing libxml/parser.h include file") +mark_as_advanced (LIBXML2_INCLUDE_DIR) IF (LIBXML2_INCLUDE_DIR) SET(LIBXML2_FOUND TRUE) diff --git a/cmake/modules/FindNIIMAQ.cmake b/cmake/modules/FindNIIMAQ.cmake index 1a11df1..2fbe979 100644 --- a/cmake/modules/FindNIIMAQ.cmake +++ b/cmake/modules/FindNIIMAQ.cmake @@ -1,17 +1,50 @@ -FILE(TO_CMAKE_PATH "$ENV{NIIMAQ_DIR}" TRY1_DIR) -FILE(TO_CMAKE_PATH "${NIIMAQ_DIR}" TRY2_DIR) -FILE(GLOB NIIMAQ_DIR ${TRY1_DIR} ${TRY2_DIR}) +# - Try to find National Instruments IMAQ +# Once done this will define +# +# NIIMAQ_FOUND - system has NI-IMAQ +# NIIMAQ_INCLUDE_DIR - the NI-IMAQ include directory +# NIIMAQ_LIBRARIES - the libraries needed to use NI-IMAQ -FIND_PATH(NIIMAQ_INCLUDE_DIR niimaq.h - PATHS "${NIIMAQ_DIR}/Shared/ExternalCompilerSupport/C/Include" "${NIIMAQ_DIR}/Include" - ENV INCLUDE DOC "Directory containing niimaq.h include file") +# Copyright (c) 2006, Tim Beaulen +# Copyright (c) 2010, United States Government, Joshua M. Doe +# +# Redistribution and use is allowed according to the terms of the BSD license. +# For details see the accompanying COPYING-CMAKE-SCRIPTS file. -FIND_LIBRARY(NIIMAQ_LIBRARY NAMES imaq - PATHS "${NIIMAQ_DIR}/Shared/ExternalCompilerSupport/C/Lib32/MSVC" "${NIIMAQ_DIR}/Lib32/MSVC" - ENV LIB - DOC "niimaq library to link with" - NO_SYSTEM_ENVIRONMENT_PATH) +IF (NIIMAQ_INCLUDE_DIR AND NIIMAQ_LIBRARIES) + # in cache already + SET(NIIMAQ_FIND_QUIETLY TRUE) +ELSE (NIIMAQ_INCLUDE_DIR AND NIIMAQ_LIBRARIES) + SET(NIIMAQ_FIND_QUIETLY FALSE) +ENDIF (NIIMAQ_INCLUDE_DIR AND NIIMAQ_LIBRARIES) -IF (NIIMAQ_INCLUDE_DIR AND NIIMAQ_LIBRARY) - SET(NIIMAQ_FOUND TRUE) -ENDIF (NIIMAQ_INCLUDE_DIR AND NIIMAQ_LIBRARY) +IF (NOT NIIMAQ_DIR) + SET (NIIMAQ_DIR "C:/Program Files/National Instruments" CACHE PATH "Directory containing NI includes and libraries") +ENDIF (NOT NIIMAQ_DIR) + +FIND_PATH (NIIMAQ_INCLUDE_DIR niimaq.h + PATHS + "${NIIMAQ_DIR}/Shared/ExternalCompilerSupport/C/Include" + DOC "Directory containing niimaq.h include file") + +FIND_LIBRARY (NIIMAQ_LIBRARIES NAMES imaq + PATHS + "${NIIMAQ_DIR}/Shared/ExternalCompilerSupport/C/Lib32/MSVC" + DOC "niimaq library to link with") + +IF (NIIMAQ_INCLUDE_DIR) + #MESSAGE(STATUS "DEBUG: Found NI-IMAQ include dir: ${NIIMAQ_INCLUDE_DIR}") +ELSE (NIIMAQ_INCLUDE_DIR) + MESSAGE(STATUS "NI-IMAQ: WARNING: include dir not found") +ENDIF (NIIMAQ_INCLUDE_DIR) + +IF (NIIMAQ_LIBRARIES) + #MESSAGE(STATUS "DEBUG: Found NI-IMAQ library: ${NIIMAQ_LIBRARIES}") +ELSE (NIIMAQ_LIBRARIES) + MESSAGE(STATUS "NI-IMAQ: WARNING: library not found") +ENDIF (NIIMAQ_LIBRARIES) + +INCLUDE (FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS (NIIMAQ DEFAULT_MSG NIIMAQ_INCLUDE_DIR NIIMAQ_LIBRARIES) + +MARK_AS_ADVANCED(NIIMAQ_INCLUDE_DIR NIIMAQ_LIBRARIES) \ No newline at end of file diff --git a/gst/CMakeLists.txt b/gst/CMakeLists.txt index fcc4a0f..32fd772 100644 --- a/gst/CMakeLists.txt +++ b/gst/CMakeLists.txt @@ -1,20 +1,24 @@ -add_definitions(-DHAVE_CONFIG_H) +add_definitions (-DHAVE_CONFIG_H) -set ( SOURCES +set (SOURCES main.c - gstvideolevels.c ) + gstvideolevels.c) -set ( HEADERS - gstvideolevels.h ) +set (HEADERS + gstvideolevels.h) include_directories(AFTER . ) - add_library ( libgstvision MODULE ${SOURCES} - ${HEADERS} ) + ${HEADERS}) target_link_libraries ( libgstvision general ${GLIB2_LIBRARIES} - general ${GSTREAMER_LIBRARIES} ) + general ${GSTREAMER_LIBRARIES} + general ${GSTREAMER_BASE_LIBRARY} + general ${GSTREAMER_VIDEO_LIBRARY}) + +install (TARGETS libgstnvl + LIBRARY DESTINATION lib/gstreamer-0.10) diff --git a/set_paths_and_run_cmake.bat b/set_paths_and_run_cmake.bat index 5b9bac1..874017e 100644 --- a/set_paths_and_run_cmake.bat +++ b/set_paths_and_run_cmake.bat @@ -5,17 +5,16 @@ set LIBICONV_DIR=%GSTREAMER_DIR% set GLIB2_DIR=%GSTREAMER_DIR% set NIIMAQ_DIR=C:\Program Files\National Instruments +rem Plugins will be installed under %CMAKE_PREFIX_PATH%\lib\gstreamer-0.10 +set CMAKE_PREFIX_PATH=C:\gstreamer + rem cd mingw32 rem del *ache* && cmake -G "MinGW Makefiles" .. -rem cd vs8 -rem del *ache* && cmake -G "Visual Studio 8 2005" .. +rem cd vs9 +rem del *ache* && cmake -G "Visual Studio 9 2008" .. -cd vs9 -del *ache* && cmake -G "Visual Studio 9 2008" .. - -rem cd codeblocks -rem del *ache* && cmake -G "CodeBlocks - MinGW Makefiles" .. - -cmd +rem cmd rem ######################################################################## + +cmake-gui \ No newline at end of file diff --git a/sys/CMakeLists.txt b/sys/CMakeLists.txt index a002ec3..b40557b 100644 --- a/sys/CMakeLists.txt +++ b/sys/CMakeLists.txt @@ -17,4 +17,5 @@ add_library ( libgstimaq MODULE target_link_libraries ( libgstimaq general ${GLIB2_LIBRARIES} general ${GSTREAMER_LIBRARIES} - general ${NIIMAQ_LIBRARY} ) \ No newline at end of file + general ${GSTREAMER_BASE_LIBRARY} + general ${NIIMAQ_LIBRARIES} ) \ No newline at end of file