From b7cf90a09e6337f76f8244475bfb58ee17041bdb Mon Sep 17 00:00:00 2001 From: Mark Vejvoda Date: Wed, 16 May 2012 05:46:04 +0000 Subject: [PATCH] - attempt to get static linking working for libvlc --- mk/cmake/Modules/FindLIBVLC.cmake | 19 +++++++++++++---- source/glest_game/CMakeLists.txt | 21 +++++++++++++++++++ source/shared_lib/CMakeLists.txt | 2 +- .../sources/graphics/video_player.cpp | 5 +++++ 4 files changed, 42 insertions(+), 5 deletions(-) diff --git a/mk/cmake/Modules/FindLIBVLC.cmake b/mk/cmake/Modules/FindLIBVLC.cmake index 5459b228..d28479c4 100644 --- a/mk/cmake/Modules/FindLIBVLC.cmake +++ b/mk/cmake/Modules/FindLIBVLC.cmake @@ -45,24 +45,35 @@ PATHS find_path(LIBVLC_INCLUDE_DIR PATHS "${CMAKE_INCLUDE_PATH}/vlc" NAMES vlc.h HINTS ${PC_LIBVLC_INCLUDEDIR} ${PC_LIBVLC_INCLUDE_DIRS}) +# dream on libvlc doesn't support static linking +OPTION(WANT_STATIC_LIBS "builds as many static libs as possible" OFF) +set(LIBVLC_LIB_NAMES vlc libvlc) +set(LIBVLC_LIB_CORE_NAMES vlccore libvlccore) +IF(WANT_STATIC_LIBS) + set(LIBVLC_LIB_NAMES libvlc.a ${LIBVLC_LIB_NAMES}) + set(LIBVLC_LIB_CORE_NAMES libvlccore.a ${LIBVLC_LIB_CORE_NAMES}) + + message(STATUS "Looking for LIBVLC static libs") +ENDIF() + #Put here path to custom location #example: /home/user/vlc/lib etc.. -find_library(LIBVLC_LIBRARY NAMES vlc libvlc +find_library(LIBVLC_LIBRARY NAMES ${LIBVLC_LIB_NAMES} 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 +find_library(LIBVLC_LIBRARY NAMES ${LIBVLC_LIB_NAMES}) +find_library(LIBVLCCORE_LIBRARY NAMES ${LIBVLC_LIB_CORE_NAMES} 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) +find_library(LIBVLCCORE_LIBRARY NAMES ${LIBVLC_LIB_CORE_NAMES}) set(LIBVLC_VERSION ${PC_LIBVLC_VERSION}) if (NOT LIBVLC_VERSION) diff --git a/source/glest_game/CMakeLists.txt b/source/glest_game/CMakeLists.txt index 73a7af73..e1207493 100644 --- a/source/glest_game/CMakeLists.txt +++ b/source/glest_game/CMakeLists.txt @@ -95,6 +95,27 @@ IF(BUILD_MEGAGLEST) SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${GLEW_LIBRARY}) ENDIF() + #SET(LIBVLC_MIN_VERSION "2.0.1") + FIND_PACKAGE(LIBVLC) + + IF(LIBVLC_FOUND AND NOT LIBVLC_VERSION STRLESS "${LIBVLC_MIN_VERSION}") + MESSAGE(STATUS "**NOTE: LIBVLC found so intro videos are supported.") + INCLUDE_DIRECTORIES(${LIBVLC_INCLUDE_DIR}) + IF(UNIX) + SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${LIBVLCCORE_LIBRARY} ${LIBVLC_LIBRARY}) + ADD_DEFINITIONS(-DHAS_LIBVLC) + ENDIF() + IF(LIBVLC_VERSION_PRE_V2) + ADD_DEFINITIONS(-DLIBVLC_VERSION_PRE_2) + ENDIF() + IF(LIBVLC_VERSION_PRE_1_1_13) + ADD_DEFINITIONS(-DLIBVLC_VERSION_PRE_1_1_13) + ENDIF() + + ELSE() + MESSAGE(STATUS "**WARNING: LIBVLC NOT found so intro videos are NOT supported.") + ENDIF() + ######################################################################################### # megaglest game diff --git a/source/shared_lib/CMakeLists.txt b/source/shared_lib/CMakeLists.txt index e123a295..3a2afcca 100644 --- a/source/shared_lib/CMakeLists.txt +++ b/source/shared_lib/CMakeLists.txt @@ -235,7 +235,7 @@ IF(BUILD_MEGAGLEST_MODEL_VIEWER OR BUILD_MEGAGLEST_MAP_EDITOR OR BUILD_MEGAGLEST MESSAGE(STATUS "**NOTE: LIBVLC found so intro videos are supported.") INCLUDE_DIRECTORIES(${LIBVLC_INCLUDE_DIR}) IF(UNIX) - SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${LIBVLC_LIBRARY}) + SET(EXTERNAL_LIBS ${EXTERNAL_LIBS} ${LIBVLCCORE_LIBRARY} ${LIBVLC_LIBRARY}) ADD_DEFINITIONS(-DHAS_LIBVLC) ENDIF() IF(LIBVLC_VERSION_PRE_V2) diff --git a/source/shared_lib/sources/graphics/video_player.cpp b/source/shared_lib/sources/graphics/video_player.cpp index 949e6d93..8541600c 100644 --- a/source/shared_lib/sources/graphics/video_player.cpp +++ b/source/shared_lib/sources/graphics/video_player.cpp @@ -160,6 +160,11 @@ void VideoPlayer::PlayVideo() { std::vector vlc_argv; vlc_argv.push_back("--no-xlib" /* tell VLC to not use Xlib */); vlc_argv.push_back("--no-video-title-show"); +#if defined(LIBVLC_VERSION_PRE_2) + string fullPluginsParam = "--plugin-path=" + pluginsPath; + vlc_argv.push_back(fullPluginsParam.c_str()); +#endif + #if defined(LIBVLC_VERSION_PRE_2) && defined(LIBVLC_VERSION_PRE_1_1_13) char clock[64], cunlock[64], cdata[64]; char cwidth[32], cheight[32], cpitch[32];