OSDN Git Service

rewrite VLC CMake module
authorIvailo Monev <xakepa10@gmail.com>
Fri, 22 Jan 2016 12:30:12 +0000 (14:30 +0200)
committerIvailo Monev <xakepa10@gmail.com>
Fri, 22 Jan 2016 12:30:12 +0000 (14:30 +0200)
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
CMakeLists.txt
cmake/modules/FindLIBVLC.cmake [deleted file]
cmake/modules/FindVLC.cmake [new file with mode: 0644]
src/phonon/CMakeLists.txt
src/phonon/phonon-vlc/CMakeLists.txt

index 51f934f..9356406 100644 (file)
@@ -426,9 +426,9 @@ set_package_properties(Sqlite PROPERTIES
     TYPE RECOMMENDED
 )
 
-set(LIBVLC_MIN_VERSION "2.1.0")
-find_package(LIBVLC)
-set_package_properties(LIBVLC PROPERTIES
+set(VLC_MIN_VERSION "2.1.0")
+find_package(VLC)
+set_package_properties(VLC PROPERTIES
     PURPOSE "Required for VLC Phonon backend"
     DESCRIPTION "VLC C API Library"
     URL "http://www.videolan.org/vlc/"
diff --git a/cmake/modules/FindLIBVLC.cmake b/cmake/modules/FindLIBVLC.cmake
deleted file mode 100644 (file)
index 8358ac1..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-# CMake module to search for LIBVLC (VLC library)
-#
-# Copyright (C) 2011-2012, Harald Sitter <sitter@kde.org>
-# Copyright (C) 2010, Rohit Yadav <rohityadav89@gmail.com>
-# Copyright (C) 2015, Ivailo Monev <xakepa10@gmail.com>
-#
-# Redistribution and use is allowed according to the terms of the BSD license.
-#
-# If it's found it sets LIBVLC_FOUND to TRUE
-# and following variables are set:
-#    LIBVLC_INCLUDE_DIR
-#    LIBVLC_LIBRARY
-#    LIBVLC_VERSION
-
-if(NOT LIBVLC_MIN_VERSION)
-    set(LIBVLC_MIN_VERSION "0.0")
-endif(NOT LIBVLC_MIN_VERSION)
-
-# find_path and find_library normally search standard locations
-# before the specified paths. To search non-standard paths first,
-# FIND_* is invoked first with specified paths and NO_DEFAULT_PATH
-# and then again with no specified paths to search the default
-# locations. When an earlier FIND_* succeeds, subsequent FIND_*s
-# searching for the same item do nothing.
-
-if (NOT WIN32)
-    find_package(PkgConfig)
-    pkg_check_modules(PC_LIBVLC libvlc)
-    set(LIBVLC_DEFINITIONS ${PC_LIBVLC_CFLAGS_OTHER})
-endif (NOT WIN32)
-
-#Put here path to custom location
-#example: /home/user/vlc/include etc..
-find_path(LIBVLC_INCLUDE_DIR vlc/vlc.h
-HINTS "$ENV{LIBVLC_INCLUDE_PATH}" ${PC_LIBVLC_INCLUDEDIR} ${PC_LIBVLC_INCLUDE_DIRS}
-PATHS
-    "$ENV{LIB_DIR}/include"
-    "$ENV{LIB_DIR}/include/vlc"
-    "/usr/include"
-    "/usr/include/vlc"
-    "/usr/local/include"
-    "/usr/local/include/vlc"
-    #mingw
-    c:/msys/local/include
-)
-find_path(LIBVLC_INCLUDE_DIR PATHS "${CMAKE_INCLUDE_PATH}/vlc" NAMES vlc.h 
-        HINTS ${PC_LIBVLC_INCLUDEDIR} ${PC_LIBVLC_INCLUDE_DIRS})
-
-#Put here path to custom location
-#example: /home/user/vlc/lib etc..
-find_library(LIBVLC_LIBRARY NAMES vlc libvlc
-HINTS "$ENV{LIBVLC_LIBRARY_PATH}" ${PC_LIBVLC_LIBDIR} ${PC_LIBVLC_LIBRARY_DIRS}
-PATHS
-    "$ENV{LIB_DIR}/lib"
-    #mingw
-    c:/msys/local/lib
-)
-find_library(LIBVLC_LIBRARY NAMES vlc libvlc)
-find_library(LIBVLCCORE_LIBRARY NAMES vlccore libvlccore
-HINTS "$ENV{LIBVLC_LIBRARY_PATH}" ${PC_LIBVLC_LIBDIR} ${PC_LIBVLC_LIBRARY_DIRS}
-PATHS
-    "$ENV{LIB_DIR}/lib"
-    #mingw
-    c:/msys/local/lib
-)
-find_library(LIBVLCCORE_LIBRARY NAMES vlccore libvlccore)
-
-set(LIBVLC_VERSION ${PC_LIBVLC_VERSION})
-if (NOT LIBVLC_VERSION AND LIBVLC_INCLUDE_DIR)
-    file(READ "${LIBVLC_INCLUDE_DIR}/vlc/libvlc_version.h" _libvlc_version_h)
-
-    string(REGEX MATCH "# define LIBVLC_VERSION_MAJOR +\\(([0-9])\\)" _dummy "${_libvlc_version_h}")
-    set(_version_major "${CMAKE_MATCH_1}")
-
-    string(REGEX MATCH "# define LIBVLC_VERSION_MINOR +\\(([0-9])\\)" _dummy "${_libvlc_version_h}")
-    set(_version_minor "${CMAKE_MATCH_1}")
-
-    string(REGEX MATCH "# define LIBVLC_VERSION_REVISION +\\(([0-9])\\)" _dummy "${_libvlc_version_h}")
-    set(_version_revision "${CMAKE_MATCH_1}")
-
-    # Optionally, one could also parse LIBVLC_VERSION_EXTRA, but it does not
-    # seem to be used by libvlc.pc.
-
-    set(LIBVLC_VERSION "${_version_major}.${_version_minor}.${_version_revision}")
-endif (NOT LIBVLC_VERSION AND LIBVLC_INCLUDE_DIR)
-
-if (LIBVLC_INCLUDE_DIR AND LIBVLC_LIBRARY AND LIBVLCCORE_LIBRARY)
-set(LIBVLC_FOUND TRUE)
-endif (LIBVLC_INCLUDE_DIR AND LIBVLC_LIBRARY AND LIBVLCCORE_LIBRARY)
-
-if (LIBVLC_VERSION STRLESS "${LIBVLC_MIN_VERSION}")
-    message(WARNING "LibVLC version not found: version searched: ${LIBVLC_MIN_VERSION}, found ${LIBVLC_VERSION}\nUnless you are on Windows this is bound to fail.")
-# TODO: only activate once version detection can be garunteed (which is currently not the case on windows)
-#     set(LIBVLC_FOUND FALSE)
-endif (LIBVLC_VERSION STRLESS "${LIBVLC_MIN_VERSION}")
-
-if (LIBVLC_FOUND)
-    if (NOT LIBVLC_FIND_QUIETLY)
-        message(STATUS "Found LibVLC include-dir path: ${LIBVLC_INCLUDE_DIR}")
-        message(STATUS "Found LibVLC library path:${LIBVLC_LIBRARY}")
-        message(STATUS "Found LibVLCcore library path:${LIBVLCCORE_LIBRARY}")
-        message(STATUS "Found LibVLC version: ${LIBVLC_VERSION} (searched for: ${LIBVLC_MIN_VERSION})")
-    endif (NOT LIBVLC_FIND_QUIETLY)
-else (LIBVLC_FOUND)
-    if (LIBVLC_FIND_REQUIRED)
-        message(FATAL_ERROR "Could not find LibVLC")
-    endif (LIBVLC_FIND_REQUIRED)
-endif (LIBVLC_FOUND)
diff --git a/cmake/modules/FindVLC.cmake b/cmake/modules/FindVLC.cmake
new file mode 100644 (file)
index 0000000..5716ca5
--- /dev/null
@@ -0,0 +1,62 @@
+# - Try to find the VLC
+# Once done this will define
+#
+#  VLC_FOUND - system has VLC
+#  VLC_INCLUDES - the VLC include directory
+#  VLC_LIBRARIES - The libraries needed to use VLC
+#
+# Copyright (c) 2015, Ivailo Monev, <xakepa10@gmail.com>
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+
+if(VLC_INCLUDES AND VLC_LIBRARIES)
+    set(VLC_FIND_QUIETLY TRUE)
+endif()
+
+if(NOT WIN32)
+    include(FindPkgConfig)
+    pkg_check_modules(PC_VLC QUIET libvlc)
+    
+    set(VLC_VERSION ${PC_VLC_VERSION})
+endif()
+
+find_path(VLC_INCLUDES
+    NAMES
+    vlc/vlc.h
+    HINTS
+    $ENV{VLCDIR}/include
+    ${PC_VLC_INCLUDEDIR}
+    /usr/include
+    /usr/local/include
+    ${INCLUDE_INSTALL_DIR}
+)
+
+find_library(VLC_LIBRARIES
+    vlc
+    HINTS
+    $ENV{VLCDIR}/lib
+    ${PC_VLC_LIBDIR}
+    /usr/lib
+    /usr/local/lib
+    ${LIB_INSTALL_DIR}
+)
+
+find_library(VLC_CORE_LIBRARIES
+    vlccore
+    HINTS
+    $ENV{VLCDIR}/lib
+    ${PC_VLC_LIBDIR}
+    /usr/lib
+    /usr/local/lib
+    ${LIB_INSTALL_DIR}
+)
+
+if(VLC_LIBRARIES AND VLC_CORE_LIBRARIES)
+    set(VLC_LIBRARIES ${VLC_LIBRARIES} ${VLC_CORE_LIBRARIES})
+endif()
+
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(VLC DEFAULT_MSG VLC_INCLUDES VLC_LIBRARIES VLC_CORE_LIBRARIES)
+
+mark_as_advanced(VLC_INCLUDES VLC_LIBRARIES)
index 116c67a..fe5b837 100644 (file)
@@ -385,7 +385,7 @@ if(WITH_DBUS AND DBUS_FOUND)
 endif()
 katie_generate_package(KtPhonon "" "${EXTRA_PHONON_LIBS}" "${PHONON_REQUIRES}")
 
-if(WITH_VLC AND LIBVLC_FOUND)
+if(WITH_VLC AND VLC_FOUND)
     add_subdirectory(phonon-vlc)
 endif()
 
index 4524d03..4f1b6b3 100644 (file)
@@ -5,8 +5,8 @@ else()
 endif()
 
 include_directories(
-    ${LIBVLC_INCLUDE_DIR}
-    ${LIBVLC_INCLUDE_DIR}/vlc/plugins
+    ${VLC_INCLUDES}
+    ${VLC_INCLUDES}/vlc/plugins
     ${CMAKE_CURRENT_SOURCE_DIR}
     ${CMAKE_CURRENT_BINARY_DIR}
     ${CMAKE_CURRENT_BINARY_DIR}/audio
@@ -59,7 +59,7 @@ set(phonon_vlc_SRCS
     utils/libvlc.cpp
 )
 
-if(${LIBVLC_VERSION} VERSION_GREATER "2.2.0" OR ${LIBVLC_VERSION} VERSION_EQUAL "2.2.0")
+if(${VLC_VERSION} VERSION_GREATER "2.2.0" OR ${VLC_VERSION} VERSION_EQUAL "2.2.0")
     list(APPEND phonon_vlc_SRCS equalizereffect.cpp)
 endif()
 
@@ -106,8 +106,7 @@ set_target_properties(phonon_vlc PROPERTIES
 
 target_link_libraries(phonon_vlc
     KtPhonon
-    ${LIBVLCCORE_LIBRARY}
-    ${LIBVLC_LIBRARY}
+    ${VLC_LIBRARIES}
 )
 
 install(