diff --git a/CMakeLists.txt b/CMakeLists.txt index b015981969..065d483518 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1252,6 +1252,27 @@ if(SDL_JOYSTICK) set(SDL_JOYSTICK_DSU 1) file(GLOB JOYSTICK_DSU_SOURCES ${SDL2_SOURCE_DIR}/src/joystick/dsu/*.c) list(APPEND SOURCE_FILES ${JOYSTICK_DSU_SOURCES}) + + # DSU requires network libraries on Unix-like systems + if(UNIX AND NOT APPLE AND NOT ANDROID) + if(NOT WIN32) + # Check if we need to link against socket libraries + include(CheckFunctionExists) + check_function_exists(socket HAVE_SOCKET_IN_LIBC) + if(NOT HAVE_SOCKET_IN_LIBC) + # Try to find socket in libsocket (Solaris) + check_library_exists(socket socket "" HAVE_LIBSOCKET) + if(HAVE_LIBSOCKET) + list(APPEND EXTRA_LIBS socket) + endif() + # Try to find inet_addr in libnsl (Solaris) + check_library_exists(nsl inet_addr "" HAVE_LIBNSL) + if(HAVE_LIBNSL) + list(APPEND EXTRA_LIBS nsl) + endif() + endif() + endif() + endif() endif() endif() @@ -2480,6 +2501,11 @@ elseif(HAIKU) CheckPTHREAD() list(APPEND EXTRA_LIBS root be media game device textencoding) + + # Add network library for DSU support on Haiku + if(SDL_DSU_JOYSTICK) + list(APPEND EXTRA_LIBS network) + endif() elseif(RISCOS) if(SDL_MISC)