| | |
| | | macro(FindLibraryAndSONAME _LIB) |
| | | string(TOUPPER ${_LIB} _UPPERLNAME) |
| | | string(REGEX REPLACE "\\-" "_" _LNAME "${_UPPERLNAME}") |
| | | |
| | | find_library(${_LNAME}_LIB ${_LIB}) |
| | | if(${_LNAME}_LIB) |
| | | # reduce the library name for shared linking |
| | | |
| | | get_filename_component(_LIB_REALPATH ${${_LNAME}_LIB} REALPATH) # resolves symlinks |
| | | get_filename_component(_LIB_JUSTNAME ${_LIB_REALPATH} NAME) |
| | | |
| | | if(APPLE) |
| | | string(REGEX REPLACE "(\\.[0-9]*)\\.[0-9\\.]*dylib$" "\\1.dylib" _LIB_REGEXD "${_LIB_JUSTNAME}") |
| | | else() |
| | | string(REGEX REPLACE "(\\.[0-9]*)\\.[0-9\\.]*$" "\\1" _LIB_REGEXD "${_LIB_JUSTNAME}") |
| | | endif() |
| | | |
| | | SET(_DEBUG_FindSONAME FALSE) |
| | | if(_DEBUG_FindSONAME) |
| | | message_warn("DYNLIB OUTPUTVAR: ${_LIB} ... ${_LNAME}_LIB") |
| | | message_warn("DYNLIB ORIGINAL LIB: ${_LIB} ... ${${_LNAME}_LIB}") |
| | | message_warn("DYNLIB REALPATH LIB: ${_LIB} ... ${_LIB_REALPATH}") |
| | | message_warn("DYNLIB JUSTNAME LIB: ${_LIB} ... ${_LIB_JUSTNAME}") |
| | | message_warn("DYNLIB REGEX'd LIB: ${_LIB} ... ${_LIB_REGEXD}") |
| | | endif() |
| | | |
| | | message(STATUS "dynamic lib${_LIB} -> ${_LIB_REGEXD}") |
| | | set(${_LNAME}_LIB_SONAME ${_LIB_REGEXD}) |
| | | endif() |
| | | endmacro() |
| | | |
| | | macro(CheckDLOPEN) |
| | | check_function_exists(dlopen HAVE_DLOPEN) |
| | | if(NOT HAVE_DLOPEN) |
| | |
| | | if(NOT HAVE_DLOPEN) |
| | | message_warn("You must have SDL_LoadObject() support for dynamic ALSA loading") |
| | | else() |
| | | find_library(_ALSA_LIB asound) |
| | | get_filename_component(F_ALSA_LIB ${_ALSA_LIB} NAME) |
| | | set(SDL_AUDIO_DRIVER_ALSA_DYNAMIC "\"${F_ALSA_LIB}\"") |
| | | FindLibraryAndSONAME("asound") |
| | | set(SDL_AUDIO_DRIVER_ALSA_DYNAMIC "\"${ASOUND_LIB_SONAME}\"") |
| | | set(HAVE_ALSA_SHARED TRUE) |
| | | endif(NOT HAVE_DLOPEN) |
| | | else(ALSA_SHARED) |
| | |
| | | if(NOT HAVE_DLOPEN) |
| | | message_warn("You must have SDL_LoadObject() support for dynamic PulseAudio loading") |
| | | else() |
| | | find_library(D_PULSE_LIB pulse-simple) |
| | | get_filename_component(F_PULSE_LIB ${D_PULSE_LIB} NAME) |
| | | set(SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC "\"${F_PULSE_LIB}\"") |
| | | FindLibraryAndSONAME("pulse-simple") |
| | | set(SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC "\"${PULSE_SIMPLE_LIB_SONAME}\"") |
| | | set(HAVE_PULSEAUDIO_SHARED TRUE) |
| | | endif(NOT HAVE_DLOPEN) |
| | | else(PULSEAUDIO_SHARED) |
| | |
| | | if(NOT HAVE_DLOPEN) |
| | | message_warn("You must have SDL_LoadObject() support for dynamic ESD loading") |
| | | else() |
| | | find_library(D_ESD_LIB esd) |
| | | get_filename_component(F_ESD_LIB ${D_ESD_LIB} NAME) |
| | | set(SDL_AUDIO_DRIVER_ESD_DYNAMIC "\"${F_ESD_LIB}\"") |
| | | FindLibraryAndSONAME(esd) |
| | | set(SDL_AUDIO_DRIVER_ESD_DYNAMIC "\"${ESD_LIB_SONAME}\"") |
| | | set(HAVE_ESD_SHARED TRUE) |
| | | endif(NOT HAVE_DLOPEN) |
| | | else(ESD_SHARED) |
| | |
| | | message_warn("You must have SDL_LoadObject() support for dynamic ARTS loading") |
| | | else() |
| | | # TODO |
| | | find_library(D_ARTS_LIB artsc) |
| | | get_filename_component(F_ARTS_LIB ${D_ARTS_LIB} NAME) |
| | | set(SDL_AUDIO_DRIVER_ARTS_DYNAMIC "\"${F_ARTS_LIB}\"") |
| | | FindLibraryAndSONAME(artsc) |
| | | set(SDL_AUDIO_DRIVER_ARTS_DYNAMIC "\"${ARTSC_LIB_SONAME}\"") |
| | | set(HAVE_ARTS_SHARED TRUE) |
| | | endif(NOT HAVE_DLOPEN) |
| | | else(ARTS_SHARED) |
| | |
| | | if(NOT HAVE_DLOPEN) |
| | | message_warn("You must have SDL_LoadObject() support for dynamic NAS loading") |
| | | else() |
| | | get_filename_component(F_NAS_LIB ${D_NAS_LIB} NAME) |
| | | set(SDL_AUDIO_DRIVER_NAS_DYNAMIC "\"${F_NAS_LIB}\"") |
| | | FindLibraryAndSONAME("audio") |
| | | set(SDL_AUDIO_DRIVER_NAS_DYNAMIC "\"${AUDIO_LIB_SONAME}\"") |
| | | set(HAVE_NAS_SHARED TRUE) |
| | | endif(NOT HAVE_DLOPEN) |
| | | else(NAS_SHARED) |
| | |
| | | if(SNDIO) |
| | | # TODO: set include paths properly, so the sndio headers are found |
| | | check_include_file(sndio.h HAVE_SNDIO_H) |
| | | find_library(D_SNDIO_LIB audio) |
| | | find_library(D_SNDIO_LIB sndio) |
| | | if(HAVE_SNDIO_H AND D_SNDIO_LIB) |
| | | set(HAVE_SNDIO TRUE) |
| | | file(GLOB SNDIO_SOURCES ${SDL2_SOURCE_DIR}/src/audio/sndio/*.c) |
| | |
| | | if(NOT HAVE_DLOPEN) |
| | | message_warn("You must have SDL_LoadObject() support for dynamic sndio loading") |
| | | else() |
| | | get_filename_component(F_SNDIO_LIB ${D_SNDIO_LIB} NAME) |
| | | set(SDL_AUDIO_DRIVER_SNDIO_DYNAMIC "\"${F_SNDIO_LIB}\"") |
| | | FindLibraryAndSONAME("sndio") |
| | | set(SDL_AUDIO_DRIVER_SNDIO_DYNAMIC "\"${SNDIO_LIB_SONAME}\"") |
| | | set(HAVE_SNDIO_SHARED TRUE) |
| | | endif(NOT HAVE_DLOPEN) |
| | | else(SNDIO_SHARED) |
| | |
| | | if(NOT HAVE_DLOPEN) |
| | | message_warn("You must have SDL_LoadObject() support for dynamic FusionSound loading") |
| | | else() |
| | | find_library(D_FUSIONSOUND_LIB fusionsound) |
| | | get_filename_component(F_FUSIONSOUND_LIB ${D_FUSIONSOUND_LIB} NAME) |
| | | set(SDL_AUDIO_DRIVER_FUSIONSOUND_DYNAMIC "\"${F_FUSIONSOUND_LIB}\"") |
| | | FindLibraryAndSONAME("fusionsound") |
| | | set(SDL_AUDIO_DRIVER_FUSIONSOUND_DYNAMIC "\"${FUSIONSOUND_LIB_SONAME}\"") |
| | | set(HAVE_FUSIONSOUND_SHARED TRUE) |
| | | endif(NOT HAVE_DLOPEN) |
| | | else(FUSIONSOUND_SHARED) |
| | |
| | | macro(CheckX11) |
| | | if(VIDEO_X11) |
| | | foreach(_LIB X11 Xext Xcursor Xinerama Xi Xrandr Xrender Xss Xxf86vm) |
| | | string(TOUPPER ${_LIB} _LNAME) |
| | | find_library(${_LNAME}_LIB ${_LIB}) |
| | | if(${_LNAME}_LIB) |
| | | # reduce the library name for shared linking |
| | | get_filename_component(_TMP ${${_LNAME}_LIB} NAME) |
| | | set(${_LNAME}_LIB ${_TMP}) |
| | | endif() |
| | | FindLibraryAndSONAME("${_LIB}") |
| | | endforeach() |
| | | |
| | | find_path(X_INCLUDEDIR X11/Xlib.h) |
| | |
| | | set(SOURCE_FILES ${SOURCE_FILES} ${X11_SOURCES}) |
| | | set(SDL_VIDEO_DRIVER_X11 1) |
| | | |
| | | if(HAVE_GCC_FVISIBILITY) |
| | | set(X11_SYMBOLS_PRIVATE TRUE) |
| | | else() |
| | | set(X11_SYMBOLS_PRIVATE FALSE) |
| | | endif(HAVE_GCC_FVISIBILITY) |
| | | |
| | | if(APPLE) |
| | | set(X11_SHARED OFF) |
| | | set(X11_SYMBOLS_PRIVATE TRUE) |
| | | endif(APPLE) |
| | | |
| | | check_function_exists("shmat" HAVE_SHMAT) |
| | |
| | | if(NOT HAVE_DLOPEN) |
| | | message_warn("You must have SDL_LoadObject() support for dynamic X11 loading") |
| | | set(HAVE_X11_SHARED FALSE) |
| | | if(X11_SYMBOLS_PRIVATE) |
| | | message_warn("You must have gcc4 (-fvisibility=hidden) for dynamic X11 loading") |
| | | set(HAVE_X11_SHARED TRUE) |
| | | endif(X11_SYMBOLS_PRIVATE) |
| | | else(NOT HAVE_DLOPEN) |
| | | set(HAVE_X11_SHARED TRUE) |
| | | endif() |
| | | if(HAVE_X11_SHARED) |
| | | set(SDL_VIDEO_DRIVER_X11_DYNAMIC "\"${X11_LIB}\"") |
| | | set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT "\"${XEXT_LIB}\"") |
| | | set(SDL_VIDEO_DRIVER_X11_DYNAMIC "\"${X11_LIB_SONAME}\"") |
| | | set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT "\"${XEXT_LIB_SONAME}\"") |
| | | else(HAVE_X11_SHARED) |
| | | list(APPEND EXTRA_LIBS ${X11_LIB} ${XEXT_LIB}) |
| | | endif(HAVE_X11_SHARED) |
| | |
| | | if(VIDEO_X11_XCURSOR AND HAVE_XCURSOR_H) |
| | | set(HAVE_VIDEO_X11_XCURSOR TRUE) |
| | | if(HAVE_X11_SHARED AND XCURSOR_LIB) |
| | | set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR "\"${XCURSOR_LIB}\"") |
| | | set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XCURSOR "\"${XCURSOR_LIB_SONAME}\"") |
| | | else(HAVE_X11_SHARED AND XCURSOR_LIB) |
| | | list(APPEND EXTRA_LIBS ${XCURSOR_LIB}) |
| | | endif(HAVE_X11_SHARED AND XCURSOR_LIB) |
| | |
| | | if(VIDEO_X11_XINERAMA AND HAVE_XINERAMA_H) |
| | | set(HAVE_VIDEO_X11_XINERAMA TRUE) |
| | | if(HAVE_X11_SHARED AND XINERAMA_LIB) |
| | | set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA "\"${XINERAMA_LIB}\"") |
| | | set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XINERAMA "\"${XINERAMA_LIB_SONAME}\"") |
| | | else(HAVE_X11_SHARED AND XINERAMA_LIB) |
| | | list(APPEND EXTRA_LIBS ${XINERAMA_LIB}) |
| | | endif(HAVE_X11_SHARED AND XINERAMA_LIB) |
| | |
| | | if(VIDEO_X11_XINPUT AND HAVE_XINPUT_H) |
| | | set(HAVE_VIDEO_X11_XINPUT TRUE) |
| | | if(HAVE_X11_SHARED AND XI_LIB) |
| | | set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 "\"${XI_LIB}\"") |
| | | set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 "\"${XI_LIB_SONAME}\"") |
| | | else(HAVE_X11_SHARED AND XI_LIB) |
| | | list(APPEND EXTRA_LIBS ${XI_LIB}) |
| | | endif(HAVE_X11_SHARED AND XI_LIB) |
| | |
| | | |
| | | if(VIDEO_X11_XRANDR AND HAVE_XRANDR_H) |
| | | if(HAVE_X11_SHARED AND XRANDR_LIB) |
| | | set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR "\"${XRANDR_LIB}\"") |
| | | set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR "\"${XRANDR_LIB_SONAME}\"") |
| | | else(HAVE_X11_SHARED AND XRANDR_LIB) |
| | | list(APPEND EXTRA_LIBS ${XRANDR_LIB}) |
| | | endif(HAVE_X11_SHARED AND XRANDR_LIB) |
| | |
| | | |
| | | if(VIDEO_X11_XSCRNSAVER AND HAVE_XSS_H) |
| | | if(HAVE_X11_SHARED AND XSS_LIB) |
| | | set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS "\"${XSS_LIB}\"") |
| | | set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS "\"${XSS_LIB_SONAME}\"") |
| | | else(HAVE_X11_SHARED AND XSS_LIB) |
| | | list(APPEND EXTRA_LIBS ${XSS_LIB}) |
| | | endif(HAVE_X11_SHARED AND XSS_LIB) |
| | |
| | | endif(VIDEO_X11_XSHAPE AND HAVE_XSHAPE_H) |
| | | |
| | | if(VIDEO_X11_XVM AND HAVE_XF86VM_H) |
| | | if(HAVE_X11_SHARED AND XF86VMODE_LIB) |
| | | set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE "\"${XF86VMODE_LIB}\"") |
| | | else(HAVE_X11_SHARED AND XF86VMODE_LIB) |
| | | list(APPEND EXTRA_LIBS ${XF86VMODE_LIB}) |
| | | endif(HAVE_X11_SHARED AND XF86VMODE_LIB) |
| | | if(HAVE_X11_SHARED AND XXF86VM_LIB) |
| | | set(SDL_VIDEO_DRIVER_X11_DYNAMIC_XVIDMODE "\"${XXF86VM_LIB_SONAME}\"") |
| | | else(HAVE_X11_SHARED AND XXF86VM_LIB) |
| | | list(APPEND EXTRA_LIBS ${XXF86VM_LIB}) |
| | | endif(HAVE_X11_SHARED AND XXF86VM_LIB) |
| | | set(SDL_VIDEO_DRIVER_X11_XVIDMODE 1) |
| | | set(HAVE_VIDEO_X11_XVM TRUE) |
| | | endif(VIDEO_X11_XVM AND HAVE_XF86VM_H) |
| | |
| | | endif(VIDEO_X11) |
| | | endmacro(CheckX11) |
| | | |
| | | macro(CheckMir) |
| | | # !!! FIXME: hook up dynamic loading here. |
| | | if(VIDEO_MIR) |
| | | find_library(MIR_LIB mirclient mircommon egl) |
| | | pkg_check_modules(MIR_TOOLKIT mirclient mircommon) |
| | | pkg_check_modules(EGL egl) |
| | | pkg_check_modules(XKB xkbcommon) |
| | | |
| | | if (MIR_LIB AND MIR_TOOLKIT_FOUND AND EGL_FOUND AND XKB_FOUND) |
| | | set(HAVE_VIDEO_MIR TRUE) |
| | | set(HAVE_SDL_VIDEO TRUE) |
| | | |
| | | file(GLOB MIR_SOURCES ${SDL2_SOURCE_DIR}/src/video/mir/*.c) |
| | | set(SOURCE_FILES ${SOURCE_FILES} ${MIR_SOURCES}) |
| | | set(SDL_VIDEO_DRIVER_MIR 1) |
| | | |
| | | list(APPEND EXTRA_CFLAGS ${MIR_TOOLKIT_CFLAGS} ${EGL_CLFAGS} ${XKB_CLFLAGS}) |
| | | list(APPEND EXTRA_LDFLAGS ${MIR_TOOLKIT_LDFLAGS} ${EGL_LDLAGS} ${XKB_LDLAGS}) |
| | | endif (MIR_LIB AND MIR_TOOLKIT_FOUND AND EGL_FOUND AND XKB_FOUND) |
| | | endif(VIDEO_MIR) |
| | | endmacro(CheckMir) |
| | | |
| | | # Requires: |
| | | # - EGL |
| | | macro(CheckWayland) |
| | | # !!! FIXME: hook up dynamic loading here. |
| | | if(VIDEO_WAYLAND) |
| | | pkg_check_modules(WAYLAND wayland-client wayland-cursor wayland-egl egl xkbcommon) |
| | | if(WAYLAND_FOUND) |
| | | link_directories( |
| | | ${WAYLAND_LIBRARY_DIRS} |
| | | ) |
| | | include_directories( |
| | | ${WAYLAND_INCLUDE_DIRS} |
| | | ) |
| | | set(EXTRA_LIBS ${WAYLAND_LIBRARIES} ${EXTRA_LIBS}) |
| | | set(HAVE_VIDEO_WAYLAND TRUE) |
| | | set(HAVE_SDL_VIDEO TRUE) |
| | | |
| | | file(GLOB WAYLAND_SOURCES ${SDL2_SOURCE_DIR}/src/video/wayland/*.c) |
| | | set(SOURCE_FILES ${SOURCE_FILES} ${WAYLAND_SOURCES}) |
| | | set(SDL_VIDEO_DRIVER_WAYLAND 1) |
| | | endif(WAYLAND_FOUND) |
| | | endif(VIDEO_WAYLAND) |
| | | endmacro(CheckWayland) |
| | | |
| | | # Requires: |
| | | # - n/a |
| | | # |
| | | macro(CheckCOCOA) |
| | | if(VIDEO_COCOA) |
| | | check_objc_source_compiles(" |
| | | #import <Cocoa/Cocoa.h> |
| | | int main (int argc, char** argv) {}" HAVE_VIDEO_COCOA) |
| | | if(APPLE) # Apple always has Cocoa. |
| | | set(HAVE_VIDEO_COCOA TRUE) |
| | | endif(APPLE) |
| | | if(HAVE_VIDEO_COCOA) |
| | | file(GLOB COCOA_SOURCES ${SDL2_SOURCE_DIR}/src/video/cocoa/*.m) |
| | | set_source_files_properties(${COCOA_SOURCES} PROPERTIES LANGUAGE C) |
| | |
| | | if(NOT HAVE_DLOPEN) |
| | | message_warn("You must have SDL_LoadObject() support for dynamic DirectFB loading") |
| | | else() |
| | | find_library(D_DIRECTFB_LIB directfb) |
| | | get_filename_component(F_DIRECTFB_LIB ${D_DIRECTFB_LIB} NAME) |
| | | set(SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC "\"${F_DIRECTFB_LIB}\"") |
| | | FindLibraryAndSONAME("directfb") |
| | | set(SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC "\"${DIRECTFB_LIB_SONAME}\"") |
| | | set(HAVE_DIRECTFB_SHARED TRUE) |
| | | endif(NOT HAVE_DLOPEN) |
| | | else(DIRECTFB_SHARED) |
| | |
| | | elseif(HPUX) |
| | | set(PTHREAD_CFLAGS "-D_REENTRANT") |
| | | set(PTHREAD_LDFLAGS "-L/usr/lib -pthread") |
| | | elseif(HAIKU) |
| | | set(PTHREAD_CFLAGS "-D_REENTRANT") |
| | | set(PTHREAD_LDFLAGS "") |
| | | else() |
| | | set(PTHREAD_CFLAGS "-D_REENTRANT") |
| | | set(PTHREAD_LDFLAGS "-lpthread") |