cmake: Add a FindDlopen module. (Ask for review by dlopen users).
authorPierre d'Herbemont <pdherbemont@videolan.org>
Mon, 4 Feb 2008 20:01:01 +0000 (20:01 +0000)
committerPierre d'Herbemont <pdherbemont@videolan.org>
Mon, 4 Feb 2008 20:01:01 +0000 (20:01 +0000)
extras/buildsystem/cmake/CMakeLists/root_CMakeLists.txt
extras/buildsystem/cmake/CMakeLists/src_CMakeLists.txt
extras/buildsystem/cmake/include/FindDlopen.cmake [new file with mode: 0644]
extras/buildsystem/cmake/include/config.cmake

index 2ec5ec5..215dddd 100644 (file)
@@ -1,20 +1,28 @@
 PROJECT(vlc)
 
+# Set the module path
+set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)
+
 # Our own include
-include( ${CMAKE_SOURCE_DIR}/cmake/vlc_module_funcs.cmake )
+include( vlc_module_funcs )
 
-# Config
-include( ${CMAKE_SOURCE_DIR}/cmake/config.cmake )
+# Our config
+include( config )
 
 add_definitions(-DHAVE_CONFIG_H)
 add_definitions(-D__LIBVLC__)
 add_definitions(-I. -std=gnu99)
+
 # Needed for glibc:
 add_definitions(-D_GNU_SOURCE)
 
+# Our main include directories
 include_directories(${CMAKE_SOURCE_DIR}/include ${CMAKE_BINARY_DIR}/include)
 
-# Sources
+# our sources:
 add_subdirectory(src)
 add_subdirectory(modules)
 
+
+
+
index c174c4a..87663fb 100644 (file)
@@ -177,6 +177,8 @@ if(APPLE)
   target_link_libraries(libvlc ${CARBON_FRAMEWORK})
 endif(APPLE)
 
+target_link_libraries(libvlc ${Dlopen_LIBRARY})
+
 ##########################################################
 # revision.c
 
diff --git a/extras/buildsystem/cmake/include/FindDlopen.cmake b/extras/buildsystem/cmake/include/FindDlopen.cmake
new file mode 100644 (file)
index 0000000..1f2ac9e
--- /dev/null
@@ -0,0 +1,38 @@
+# From licq www.licq.org (GPL)
+# - Find library containing dlopen()
+# The following variables are set if dlopen is found. If dlopen is not
+# found, Dlopen_FOUND is set to false.
+#  Dlopen_FOUND     - System has dlopen.
+#  Dlopen_LIBRARIES - Link these to use dlopen.
+#
+# Copyright (c) 2007 Erik Johansson <erik@ejohansson.se>
+# Redistribution and use is allowed according to the terms of the BSD license.
+
+include(CheckLibraryExists)
+
+# Assume dlopen is not found.
+set(Dlopen_FOUND FALSE)
+
+foreach (library c c_r dl)
+  if (NOT Dlopen_FOUND)
+    check_library_exists(${library} dlopen "" Dlopen_IN_${library})
+
+    if (Dlopen_IN_${library})
+      set(Dlopen_LIBRARIES ${library} CACHE STRING "Library containing dlopen")
+      set(Dlopen_FOUND TRUE)
+    endif (Dlopen_IN_${library})
+
+  endif (NOT Dlopen_FOUND)
+endforeach (library)
+
+if (Dlopen_FOUND)
+  if (NOT Dlopen_FIND_QUIETLY)
+    message(STATUS "Found dlopen in: ${Dlopen_LIBRARIES}")
+  endif (NOT Dlopen_FIND_QUIETLY)
+else (Dlopen_FOUND)
+  if (Dlopen_FIND_REQUIRED)
+    message(FATAL_ERROR "Could not find the library containing dlopen")
+  endif (Dlopen_FIND_REQUIRED)
+endif (Dlopen_FOUND)
+
+mark_as_advanced(Dlopen_LIBRARIES)
index a01f5c7..31b785a 100644 (file)
@@ -22,6 +22,8 @@ vlc_check_include_files (netinet/in.h netinet/udplite.h)
 vlc_check_include_files (netdb.h fcntl.h sys/time.h poll.h)
 vlc_check_include_files (errno.h time.h)
 
+vlc_check_include_files (dlfcn.h dl.h)
+
 vlc_check_include_files (kernel/OS.h)
 vlc_check_include_files (mach-o/dyld.h)
 
@@ -77,7 +79,6 @@ find_library(HAVE_ICONV iconv)
 # FIXME: this will break on *BSD:
 set( ICONV_CONST " " )
 
-check_library_exists(dl dlopen "" HAVE_DL_DLOPEN)
 check_library_exists(rt clock_nanosleep "" HAVE_CLOCK_NANOSLEEP)
 
 ###########################################################
@@ -232,7 +233,9 @@ if(${LIBCDDB_FOUND})
   vlc_add_module_compile_flag(cdda ${LIBCDDB_CFLAGS} )
 endif(${LIBCDDB_FOUND})
 
+include (FindDlopen)
+set(HAVE_DL_DLOPEN ${Dlopen_FOUND})
+
 ###########################################################
 # Final configuration
 ###########################################################
-configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/include/config.h)