diff options
Diffstat (limited to 'CMake/resources.cmake')
| -rw-r--r-- | CMake/resources.cmake | 56 |
1 files changed, 48 insertions, 8 deletions
diff --git a/CMake/resources.cmake b/CMake/resources.cmake index 730f19070..0218813c9 100644 --- a/CMake/resources.cmake +++ b/CMake/resources.cmake @@ -22,26 +22,41 @@ ####################################################################### # headers find_file(HAVE_ALSA_ASOUNDLIB_H alsa/asoundlib.h) -find_file(HAVE_DIRENT_H dirent.h) find_file(HAVE_DLFCN_H dlfcn.h) find_file(HAVE_FREETYPE_H freetype.h PATH_SUFFIXES freetype2 freetype2/freetype) find_file(HAVE_GL_GL_H GL/gl.h) find_file(HAVE_GL_GLU_H GL/glu.h) find_file(HAVE_LIBPNG_PNG_H libpng/png.h) find_file(HAVE_LOCALE_H locale.h) -find_file(HAVE_NDIR_H ndir.h) find_file(HAVE_OPENGL_GLU_H OpenGL/glu.h) find_file(HAVE_PNG_H png.h) find_file(HAVE_PTHREAD_H pthread.h) find_file(HAVE_STDIO_H stdio.h) find_file(HAVE_STRINGS_H strings.h) -find_file(HAVE_SYS_DIR_H sys/dir.h) -find_file(HAVE_SYS_NDIR_H sys/ndir.h) find_file(HAVE_SYS_SELECT_H sys/select.h) find_file(HAVE_SYS_STDTYPES_H sys/stdtypes.h) find_file(HAVE_X11_XREGION_H X11/Xregion.h) find_path(HAVE_XDBE_H Xdbe.h PATH_SUFFIXES X11/extensions extensions) +# Simulate the behavior of autoconf macro AC_HEADER_DIRENT, see: +# https://www.gnu.org/software/autoconf/manual/autoconf-2.69/html_node/Particular-Headers.html +# "Check for the following header files. For the first one that is found +# and defines ‘DIR’, define the listed C preprocessor macro ..." +# +# Note: we don't check if it really defines 'DIR', but we stop processing +# once we found the first suitable header file. + +find_file(HAVE_DIRENT_H dirent.h) +if(NOT HAVE_DIRENT_H) + find_file(HAVE_SYS_NDIR_H sys/ndir.h) + if(NOT HAVE_SYS_NDIR_H) + find_file(HAVE_SYS_DIR_H sys/dir.h) + if(NOT HAVE_SYS_DIR_H) + find_file(HAVE_NDIR_H ndir.h) + endif(NOT HAVE_SYS_DIR_H) + endif(NOT HAVE_SYS_NDIR_H) +endif(NOT HAVE_DIRENT_H) + mark_as_advanced(HAVE_ALSA_ASOUNDLIB_H HAVE_DIRENT_H HAVE_DLFCN_H) mark_as_advanced(HAVE_FREETYPE_H HAVE_GL_GL_H HAVE_GL_GLU_H) mark_as_advanced(HAVE_LIBPNG_PNG_H HAVE_LOCALE_H HAVE_NDIR_H) @@ -79,15 +94,32 @@ mark_as_advanced(LIB_jpeg LIB_png LIB_zlib) # functions include(CheckFunctionExists) +# save CMAKE_REQUIRED_LIBRARIES (is this really necessary ?) +if(DEFINED CMAKE_REQUIRED_LIBRARIES) + set(SAVED_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}) +else(DEFINED CMAKE_REQUIRED_LIBRARIES) + unset(SAVED_REQUIRED_LIBRARIES) +endif(DEFINED CMAKE_REQUIRED_LIBRARIES) +set(CMAKE_REQUIRED_LIBRARIES) + if(HAVE_DLFCN_H) set(HAVE_DLFCN_H 1) endif(HAVE_DLFCN_H) -CHECK_FUNCTION_EXISTS(dlsym HAVE_DLSYM) -CHECK_FUNCTION_EXISTS(localeconv HAVE_LOCALECONV) +if(LIB_dl) + set(CMAKE_REQUIRED_LIBRARIES ${LIB_dl}) + CHECK_FUNCTION_EXISTS(dlsym HAVE_DLSYM) + set(CMAKE_REQUIRED_LIBRARIES) +endif(LIB_dl) -CHECK_FUNCTION_EXISTS(png_get_valid HAVE_PNG_GET_VALID) -CHECK_FUNCTION_EXISTS(png_set_tRNS_to_alpha HAVE_PNG_SET_TRNS_TO_ALPHA) +CHECK_FUNCTION_EXISTS(localeconv HAVE_LOCALECONV) + +if(LIB_png) + set(CMAKE_REQUIRED_LIBRARIES ${LIB_png}) + CHECK_FUNCTION_EXISTS(png_get_valid HAVE_PNG_GET_VALID) + CHECK_FUNCTION_EXISTS(png_set_tRNS_to_alpha HAVE_PNG_SET_TRNS_TO_ALPHA) + set(CMAKE_REQUIRED_LIBRARIES) +endif(LIB_png) CHECK_FUNCTION_EXISTS(scandir HAVE_SCANDIR) CHECK_FUNCTION_EXISTS(snprintf HAVE_SNPRINTF) @@ -120,6 +152,14 @@ if(HAVE_SCANDIR AND NOT HAVE_SCANDIR_POSIX) endif(HAVE_SCANDIR AND NOT HAVE_SCANDIR_POSIX) mark_as_advanced(HAVE_SCANDIR_POSIX) +# restore CMAKE_REQUIRED_LIBRARIES (is this really necessary ?) +if(DEFINED SAVED_REQUIRED_LIBRARIES) + set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES}) + unset(SAVED_REQUIRED_LIBRARIES) +else(DEFINED SAVED_REQUIRED_LIBRARIES) + unset(CMAKE_REQUIRED_LIBRARIES) +endif(DEFINED SAVED_REQUIRED_LIBRARIES) + ####################################################################### # packages |
