tInitial support for plugins. - vaccinewars - be a doctor and try to vaccinate the world
 (HTM) git clone git://src.adamsgaard.dk/vaccinewars
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 4babd3f50a5087c0bdd753dd2ee97b1802ca9675
 (DIR) parent f2d9ed4d35d05763c0dc5c35097b26d11724ee57
 (HTM) Author: Ben Webb <ben@salilab.org>
       Date:   Mon, 30 Mar 2015 23:21:20 -0700
       
       Initial support for plugins.
       
       Diffstat:
         M CMakeLists.txt                      |      32 +++++++++++++++++++++++++++++++
         A cmake_modules/FindDL.cmake          |      17 +++++++++++++++++
         M config-cmake.h.in                   |       6 +++---
         A src/plugins/CMakeLists.txt          |       7 +++++++
       
       4 files changed, 59 insertions(+), 3 deletions(-)
       ---
 (DIR) diff --git a/CMakeLists.txt b/CMakeLists.txt
       t@@ -10,6 +10,7 @@ include(GNUInstallDirs)
        set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
            ${PROJECT_SOURCE_DIR}/cmake_modules)
        include(${PROJECT_SOURCE_DIR}/cmake_modules/FindGLIB.cmake)
       +include(${PROJECT_SOURCE_DIR}/cmake_modules/FindDL.cmake)
        
        # Find source headers
        include_directories("${PROJECT_SOURCE_DIR}/src")
       t@@ -45,6 +46,7 @@ option(NETWORKING
        
        option(WITH_ESD "support ESD sound output" ON)
        option(WITH_SDL "support SDL sound output" ON)
       +option(PLUGINS "use dynamically-loaded sound modules" ON)
        
        find_package(GLIB)
        if (!GLIB_FOUND)
       t@@ -85,6 +87,36 @@ if (GUI_CLIENT OR GUI_SERVER)
          endif()
        endif()
        
       +if (PLUGINS)
       +  find_package(DL)
       +  if (DL_FOUND)
       +    include_directories(${DL_INCLUDE_DIR})
       +    set(EXTRA_LIBS ${EXTRA_LIBS} ${DL_LIBRARIES})
       +  else()
       +    set(PLUGINS OFF)
       +  endif()
       +endif()
       +
       +if (PLUGINS)
       +  # Add esound support if available
       +  find_package(ESD)
       +  if (ESD_FOUND)
       +    include_directories(${ESD_INCLUDE_DIR})
       +    set(SOUND_LIBS ${SOUND_LIBS} ${ESD_LIBRARY})
       +    set(HAVE_ESD ON)
       +  endif()
       +
       +  # Add SDL_mixer sound support if available
       +  find_package(SDL_mixer)
       +  if (SDL_MIXER_FOUND)
       +    include_directories(${SDL_MIXER_INCLUDE_DIRS})
       +    set(SOUND_LIBS ${SOUND_LIBS} ${SDL_MIXER_LIBRARIES})
       +    set(HAVE_SDL_MIXER ON)
       +  endif()
       +endif()
       +
       +add_subdirectory("src/plugins")
       +
        configure_file("${PROJECT_SOURCE_DIR}/config-cmake.h.in"
                       "${PROJECT_BINARY_DIR}/config.h")
        
 (DIR) diff --git a/cmake_modules/FindDL.cmake b/cmake_modules/FindDL.cmake
       t@@ -0,0 +1,17 @@
       +# - find where dlopen and friends are located.
       +# DL_FOUND - system has dynamic linking interface available
       +# DL_INCLUDE_DIR - where dlfcn.h is located.
       +# DL_LIBRARIES - libraries needed to use dlopen
       +
       +include(CheckFunctionExists)
       +
       +find_path(DL_INCLUDE_DIR NAMES dlfcn.h)
       +find_library(DL_LIBRARIES NAMES dl)
       +if(DL_LIBRARIES)
       +set(DL_FOUND)
       +else(DL_LIBRARIES)
       +check_function_exists(dlopen DL_FOUND)
       +# If dlopen can be found without linking in dl then dlopen is part
       +# of libc, so don't need to link extra libs.
       +set(DL_LIBRARIES "")
       +endif(DL_LIBRARIES)
 (DIR) diff --git a/config-cmake.h.in b/config-cmake.h.in
       t@@ -82,7 +82,7 @@
        #undef HAVE_MEMORY_H
        
        /* Do we have the SDL_mixer sound library? */
       -#undef HAVE_SDL_MIXER
       +#cmakedefine HAVE_SDL_MIXER
        
        /* Define to 1 if you have the `select' function. */
        #cmakedefine HAVE_SELECT
       t@@ -164,10 +164,10 @@
        #undef PACKAGE_VERSION
        
        /* The directory containing the plugins */
       -#undef PLUGINDIR
       +#define PLUGINDIR "@CMAKE_INSTALL_FULL_LIBDIR@/dopewars"
        
        /* Define if using dynamically-loaded sound modules */
       -#undef PLUGINS
       +#cmakedefine PLUGINS
        
        /* The size of `long long', as computed by sizeof. */
        #undef SIZEOF_LONG_LONG
 (DIR) diff --git a/src/plugins/CMakeLists.txt b/src/plugins/CMakeLists.txt
       t@@ -0,0 +1,7 @@
       +if (HAVE_ESD)
       +  add_library(libsound_esd MODULE sound_esd.c)
       +endif()
       +
       +if (HAVE_SDL_MIXER)
       +  add_library(libsound_sdl MODULE sound_sdl.c)
       +endif()