Skip to content

Commit 2142586

Browse files
madebrsezero
authored andcommitted
cmake: use pkg-config's library dirs as hint for finding a shared library
(cherry-picked from commit 11d53c8)
1 parent 08f83f9 commit 2142586

File tree

1 file changed

+42
-39
lines changed

1 file changed

+42
-39
lines changed

cmake/sdlchecks.cmake

Lines changed: 42 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
1+
include(CMakeParseArguments)
12
macro(FindLibraryAndSONAME _LIB)
3+
cmake_parse_arguments(FLAS "" "" "LIBDIRS" ${ARGN})
4+
25
string(TOUPPER ${_LIB} _UPPERLNAME)
36
string(REGEX REPLACE "\\-" "_" _LNAME "${_UPPERLNAME}")
47

5-
find_library(${_LNAME}_LIB ${_LIB})
8+
find_library(${_LNAME}_LIB ${_LIB} PATHS ${FLAS_LIBDIRS})
69
if(${_LNAME}_LIB)
710
# reduce the library name for shared linking
811

@@ -131,7 +134,7 @@ macro(CheckPipewire)
131134
if(SDL_PIPEWIRE_SHARED AND NOT HAVE_SDL_LOADSO)
132135
message_warn("You must have SDL_LoadObject() support for dynamic Pipewire loading")
133136
endif()
134-
FindLibraryAndSONAME("pipewire-0.3")
137+
FindLibraryAndSONAME("pipewire-0.3" LIBDIRS ${PKG_PIPEWIRE_LIBRARY_DIRS})
135138
if(SDL_PIPEWIRE_SHARED AND PIPEWIRE_0.3_LIB AND HAVE_SDL_LOADSO)
136139
set(SDL_AUDIO_DRIVER_PIPEWIRE_DYNAMIC "\"${PIPEWIRE_0.3_LIB_SONAME}\"")
137140
set(HAVE_PIPEWIRE_SHARED TRUE)
@@ -160,7 +163,7 @@ macro(CheckPulseAudio)
160163
if(SDL_PULSEAUDIO_SHARED AND NOT HAVE_SDL_LOADSO)
161164
message_warn("You must have SDL_LoadObject() support for dynamic PulseAudio loading")
162165
endif()
163-
FindLibraryAndSONAME("pulse-simple")
166+
FindLibraryAndSONAME("pulse-simple" LIBDIRS ${PKG_PULSEAUDIO_LIBRARY_DIRS})
164167
if(SDL_PULSEAUDIO_SHARED AND PULSE_SIMPLE_LIB AND HAVE_SDL_LOADSO)
165168
set(SDL_AUDIO_DRIVER_PULSEAUDIO_DYNAMIC "\"${PULSE_SIMPLE_LIB_SONAME}\"")
166169
set(HAVE_PULSEAUDIO_SHARED TRUE)
@@ -189,7 +192,7 @@ macro(CheckJACK)
189192
if(SDL_JACK_SHARED AND NOT HAVE_SDL_LOADSO)
190193
message_warn("You must have SDL_LoadObject() support for dynamic JACK audio loading")
191194
endif()
192-
FindLibraryAndSONAME("jack")
195+
FindLibraryAndSONAME("jack" LIBDIRS ${PKG_JACK_LIBRARY_DIRS})
193196
if(SDL_JACK_SHARED AND JACK_LIB AND HAVE_SDL_LOADSO)
194197
set(SDL_AUDIO_DRIVER_JACK_DYNAMIC "\"${JACK_LIB_SONAME}\"")
195198
set(HAVE_JACK_SHARED TRUE)
@@ -218,7 +221,7 @@ macro(CheckESD)
218221
if(SDL_ESD_SHARED AND NOT HAVE_SDL_LOADSO)
219222
message_warn("You must have SDL_LoadObject() support for dynamic ESD loading")
220223
endif()
221-
FindLibraryAndSONAME(esd)
224+
FindLibraryAndSONAME(esd LIBDIRS ${PKG_ESD_LIBRARY_DIRS})
222225
if(SDL_ESD_SHARED AND ESD_LIB AND HAVE_SDL_LOADSO)
223226
set(SDL_AUDIO_DRIVER_ESD_DYNAMIC "\"${ESD_LIB_SONAME}\"")
224227
set(HAVE_ESD_SHARED TRUE)
@@ -312,7 +315,7 @@ macro(CheckSNDIO)
312315
if(SDL_SNDIO_SHARED AND NOT HAVE_SDL_LOADSO)
313316
message_warn("You must have SDL_LoadObject() support for dynamic sndio loading")
314317
endif()
315-
FindLibraryAndSONAME("sndio")
318+
FindLibraryAndSONAME("sndio" LIBDIRS ${PKG_SNDIO_LIBRARY_DIRS})
316319
if(SDL_SNDIO_SHARED AND SNDIO_LIB AND HAVE_SDL_LOADSO)
317320
set(SDL_AUDIO_DRIVER_SNDIO_DYNAMIC "\"${SNDIO_LIB_SONAME}\"")
318321
set(HAVE_SNDIO_SHARED TRUE)
@@ -341,7 +344,7 @@ macro(CheckFusionSound)
341344
if(FUSIONSOUND_SHARED AND NOT HAVE_SDL_LOADSO)
342345
message_warn("You must have SDL_LoadObject() support for dynamic FusionSound loading")
343346
endif()
344-
FindLibraryAndSONAME("fusionsound")
347+
FindLibraryAndSONAME("fusionsound" LIBDIRS ${PKG_FUSIONSOUND_LIBRARY_DIRS})
345348
if(FUSIONSOUND_SHARED AND FUSIONSOUND_LIB AND HAVE_SDL_LOADSO)
346349
set(SDL_AUDIO_DRIVER_FUSIONSOUND_DYNAMIC "\"${FUSIONSOUND_LIB_SONAME}\"")
347350
set(HAVE_FUSIONSOUND_SHARED TRUE)
@@ -637,9 +640,11 @@ endmacro()
637640
# - HAVE_SDL_LOADSO opt
638641
macro(CheckWayland)
639642
if(SDL_WAYLAND)
640-
pkg_check_modules(WAYLAND "wayland-client>=1.18" wayland-egl wayland-cursor egl "xkbcommon>=0.5.0")
643+
set(WAYLAND_FOUND FALSE)
644+
pkg_check_modules(PKG_WAYLAND "wayland-client>=1.18" wayland-egl wayland-cursor egl "xkbcommon>=0.5.0")
641645

642-
if(WAYLAND_FOUND)
646+
if(PKG_WAYLAND_FOUND)
647+
set(WAYLAND_FOUND TRUE)
643648
find_program(WAYLAND_SCANNER NAMES wayland-scanner REQUIRED)
644649
execute_process(
645650
COMMAND ${WAYLAND_SCANNER} --version
@@ -662,8 +667,8 @@ macro(CheckWayland)
662667
endif()
663668

664669
if(WAYLAND_FOUND)
665-
target_link_directories(sdl-build-options INTERFACE "${WAYLAND_LIBRARY_DIRS}")
666-
target_include_directories(sdl-build-options INTERFACE "${WAYLAND_INCLUDE_DIRS}")
670+
target_link_directories(sdl-build-options INTERFACE "${PKG_WAYLAND_LIBRARY_DIRS}")
671+
target_include_directories(sdl-build-options INTERFACE "${PKG_WAYLAND_INCLUDE_DIRS}")
667672

668673
set(HAVE_WAYLAND TRUE)
669674
set(HAVE_SDL_VIDEO TRUE)
@@ -689,36 +694,36 @@ macro(CheckWayland)
689694
if(SDL_WAYLAND_SHARED AND NOT HAVE_SDL_LOADSO)
690695
message_warn("You must have SDL_LoadObject() support for dynamic Wayland loading")
691696
endif()
692-
FindLibraryAndSONAME(wayland-client)
693-
FindLibraryAndSONAME(wayland-egl)
694-
FindLibraryAndSONAME(wayland-cursor)
695-
FindLibraryAndSONAME(xkbcommon)
697+
FindLibraryAndSONAME(wayland-client LIBDIRS ${PKG_WAYLAND_LIBRARY_DIRS})
698+
FindLibraryAndSONAME(wayland-egl LIBDIRS ${PKG_WAYLAND_LIBRARY_DIRS})
699+
FindLibraryAndSONAME(wayland-cursor LIBDIRS ${PKG_WAYLAND_LIBRARY_DIRS})
700+
FindLibraryAndSONAME(xkbcommon LIBDIRS ${PKG_WAYLAND_LIBRARY_DIRS})
696701
if(SDL_WAYLAND_SHARED AND WAYLAND_CLIENT_LIB AND WAYLAND_EGL_LIB AND WAYLAND_CURSOR_LIB AND XKBCOMMON_LIB AND HAVE_SDL_LOADSO)
697702
set(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC "\"${WAYLAND_CLIENT_LIB_SONAME}\"")
698703
set(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_EGL "\"${WAYLAND_EGL_LIB_SONAME}\"")
699704
set(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_CURSOR "\"${WAYLAND_CURSOR_LIB_SONAME}\"")
700705
set(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_XKBCOMMON "\"${XKBCOMMON_LIB_SONAME}\"")
701706
set(HAVE_WAYLAND_SHARED TRUE)
702707
else()
703-
list(APPEND EXTRA_LIBS ${WAYLAND_LIBRARIES})
708+
list(APPEND EXTRA_LIBS ${PKG_WAYLAND_LIBRARIES})
704709
endif()
705710

706711
if(SDL_WAYLAND_LIBDECOR)
707-
pkg_check_modules(LIBDECOR libdecor-0)
708-
if(LIBDECOR_FOUND)
712+
pkg_check_modules(PKG_LIBDECOR libdecor-0)
713+
if(PKG_LIBDECOR)
709714
set(HAVE_WAYLAND_LIBDECOR TRUE)
710715
set(HAVE_LIBDECOR_H 1)
711-
target_link_directories(sdl-build-options INTERFACE "${LIBDECOR_LIBRARY_DIRS}")
712-
target_include_directories(sdl-build-options INTERFACE "${LIBDECOR_INCLUDE_DIRS}")
716+
target_link_directories(sdl-build-options INTERFACE "${PKG_LIBDECOR_LIBRARY_DIRS}")
717+
target_include_directories(sdl-build-options INTERFACE "${PKG_LIBDECOR_INCLUDE_DIRS}")
713718
if(SDL_WAYLAND_LIBDECOR_SHARED AND NOT HAVE_SDL_LOADSO)
714719
message_warn("You must have SDL_LoadObject() support for dynamic libdecor loading")
715720
endif()
716-
FindLibraryAndSONAME(decor-0)
721+
FindLibraryAndSONAME(decor-0 LIBDIRS ${PKG_LIBDECOR_LIBRARY_DIRS})
717722
if(SDL_WAYLAND_LIBDECOR_SHARED AND DECOR_0_LIB AND HAVE_SDL_LOADSO)
718723
set(HAVE_LIBDECOR_SHARED TRUE)
719724
set(SDL_VIDEO_DRIVER_WAYLAND_DYNAMIC_LIBDECOR "\"${DECOR_0_LIB_SONAME}\"")
720725
else()
721-
list(APPEND EXTRA_LIBS ${LIBDECOR_LIBRARIES})
726+
list(APPEND EXTRA_LIBS ${PKG_LIBDECOR_LIBRARIES})
722727
endif()
723728
endif()
724729
endif()
@@ -764,7 +769,7 @@ macro(CheckDirectFB)
764769
if(SDL_DIRECTFB_SHARED AND NOT HAVE_SDL_LOADSO)
765770
message_warn("You must have SDL_LoadObject() support for dynamic DirectFB loading")
766771
endif()
767-
FindLibraryAndSONAME("directfb")
772+
FindLibraryAndSONAME("directfb" LIBDIRS ${PKG_DIRECTFB_LIBRARY_DIRS})
768773
if(SDL_DIRECTFB_SHARED AND DIRECTFB_LIB AND HAVE_SDL_LOADSO)
769774
set(SDL_VIDEO_DRIVER_DIRECTFB_DYNAMIC "\"${DIRECTFB_LIB_SONAME}\"")
770775
set(HAVE_DIRECTFB_SHARED TRUE)
@@ -1170,19 +1175,19 @@ macro(CheckHIDAPI)
11701175
if(SDL_HIDAPI)
11711176
if(SDL_HIDAPI_LIBUSB)
11721177
set(HAVE_LIBUSB FALSE)
1173-
pkg_check_modules(LIBUSB libusb-1.0)
1174-
if(LIBUSB_FOUND)
1175-
check_include_file(libusb.h HAVE_LIBUSB_H ${LIBUSB_CFLAGS})
1178+
pkg_check_modules(PKG_LIBUSB libusb-1.0)
1179+
if(PKG_LIBUSB_FOUND)
1180+
check_include_file(libusb.h HAVE_LIBUSB_H ${PKG_LIBUSB_CFLAGS})
11761181
if(HAVE_LIBUSB_H)
11771182
set(HAVE_LIBUSB TRUE)
1178-
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${LIBUSB_CFLAGS}")
1183+
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${PKG_LIBUSB_CFLAGS}")
11791184
if(HIDAPI_ONLY_LIBUSB)
1180-
list(APPEND EXTRA_LIBS ${LIBUSB_LIBRARIES})
1185+
list(APPEND EXTRA_LIBS ${PKG_LIBUSB_LIBRARIES})
11811186
elseif(OS2)
11821187
set(SDL_LIBUSB_DYNAMIC "\"usb100.dll\"")
11831188
else()
11841189
# libusb is loaded dynamically, so don't add it to EXTRA_LIBS
1185-
FindLibraryAndSONAME("usb-1.0")
1190+
FindLibraryAndSONAME("usb-1.0" LIBDIRS ${PKG_LIBUSB_LIBRARY_DIRS})
11861191
if(USB_1.0_LIB)
11871192
set(SDL_LIBUSB_DYNAMIC "\"${USB_1.0_LIB_SONAME}\"")
11881193
endif()
@@ -1268,33 +1273,31 @@ endmacro()
12681273
# - HAVE_SDL_LOADSO opt
12691274
macro(CheckKMSDRM)
12701275
if(SDL_KMSDRM)
1271-
pkg_check_modules(KMSDRM libdrm gbm egl)
1272-
if(KMSDRM_FOUND AND HAVE_OPENGL_EGL)
1273-
link_directories(
1274-
${KMSDRM_LIBRARY_DIRS}
1275-
)
1276-
target_include_directories(sdl-build-options INTERFACE "${KMSDRM_INCLUDE_DIRS}")
1276+
pkg_check_modules(PKG_KMSDRM libdrm gbm egl)
1277+
if(PKG_KMSDRM_FOUND AND HAVE_OPENGL_EGL)
1278+
target_link_directories(sdl-build-options INTERFACE ${PKG_KMSDRM_LIBRARY_DIRS})
1279+
target_include_directories(sdl-build-options INTERFACE "${PKG_KMSDRM_INCLUDE_DIRS}")
12771280
set(HAVE_KMSDRM TRUE)
12781281
set(HAVE_SDL_VIDEO TRUE)
12791282

12801283
file(GLOB KMSDRM_SOURCES ${SDL2_SOURCE_DIR}/src/video/kmsdrm/*.c)
12811284
list(APPEND SOURCE_FILES ${KMSDRM_SOURCES})
12821285

1283-
list(APPEND EXTRA_CFLAGS ${KMSDRM_CFLAGS})
1286+
list(APPEND EXTRA_CFLAGS ${PKG_KMSDRM_CFLAGS})
12841287

12851288
set(SDL_VIDEO_DRIVER_KMSDRM 1)
12861289

12871290
if(SDL_KMSDRM_SHARED AND NOT HAVE_SDL_LOADSO)
12881291
message_warn("You must have SDL_LoadObject() support for dynamic KMS/DRM loading")
12891292
endif()
12901293
if(SDL_KMSDRM_SHARED AND HAVE_SDL_LOADSO)
1291-
FindLibraryAndSONAME(drm)
1292-
FindLibraryAndSONAME(gbm)
1294+
FindLibraryAndSONAME(drm LIBDIRS ${PKG_KMSDRM_LIBRARY_DIRS})
1295+
FindLibraryAndSONAME(gbm LIBDIRS ${PKG_KMSDRM_LIBRARY_DIRS})
12931296
set(SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC "\"${DRM_LIB_SONAME}\"")
12941297
set(SDL_VIDEO_DRIVER_KMSDRM_DYNAMIC_GBM "\"${GBM_LIB_SONAME}\"")
12951298
set(HAVE_KMSDRM_SHARED TRUE)
12961299
else()
1297-
list(APPEND EXTRA_LIBS ${KMSDRM_LIBRARIES})
1300+
list(APPEND EXTRA_LIBS ${PKG_KMSDRM_LIBRARIES})
12981301
endif()
12991302
endif()
13001303
endif()

0 commit comments

Comments
 (0)