diff --git a/NEWS b/NEWS index b4148dd2..f358b676 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,7 @@ - libmpg123: -- Un-break DLL builds that need I/O functions defined in libmpg123.c (like mpg123_open(), bug 374). +- ports/cmake: More fixup to also produce .pc files with Libs.private. 1.32.9 ------ diff --git a/ports/cmake/src/CMakeLists.txt b/ports/cmake/src/CMakeLists.txt index 32bc03c0..93ef004f 100644 --- a/ports/cmake/src/CMakeLists.txt +++ b/ports/cmake/src/CMakeLists.txt @@ -41,6 +41,14 @@ function(check_m) check_function_exists(sin HAVE_M) endfunction(check_m) check_m() +# Cargo coding the check if there is a library rt, possibly providing +# a canary symbol. I am not sure if this logic really mirrors what +# autotools does. +function(check_rt) + set(CMAKE_REQUIRED_LIBRARIES rt) + check_function_exists(clock_gettime HAVE_RT) +endfunction(check_rt) +check_rt() check_function_exists(atoll HAVE_ATOLL) check_function_exists(getaddrinfo HAVE_IPV6) @@ -450,3 +458,7 @@ if(UNIX AND NOT PORTABLE_API) endif() configure_file(config.cmake.h.in config.h) + +set(LIBMPG123_LIBS "${LIBMPG123_LIBS}" PARENT_SCOPE) +set(LIBOUT123_LIBS "${LIBOUT123_LIBS}" PARENT_SCOPE) +set(LIBSYN123_LIBS "${LIBSYN123_LIBS}" PARENT_SCOPE) diff --git a/ports/cmake/src/libmpg123/CMakeLists.txt b/ports/cmake/src/libmpg123/CMakeLists.txt index 7cb08be0..3e1c0421 100644 --- a/ports/cmake/src/libmpg123/CMakeLists.txt +++ b/ports/cmake/src/libmpg123/CMakeLists.txt @@ -235,6 +235,13 @@ else() target_sources(${TARGET} PRIVATE ${PLATFORM_SOURCES}) endif() +if(HAVE_M) + string(APPEND LIBMPG123_LIBS " -lm") +endif() +if(WANT_WIN32_UNICODE) + string(APPEND LIBMPG123_LIBS " -lshlwapi") +endif() +set(LIBMPG123_LIBS "${LIBMPG123_LIBS}" PARENT_SCOPE) target_link_libraries(${TARGET} PRIVATE $<$:m> $<$:shlwapi>) diff --git a/ports/cmake/src/libout123/CMakeLists.txt b/ports/cmake/src/libout123/CMakeLists.txt index d0fe3586..7ff1f8cb 100644 --- a/ports/cmake/src/libout123/CMakeLists.txt +++ b/ports/cmake/src/libout123/CMakeLists.txt @@ -18,9 +18,24 @@ add_library(${TARGET} set_target_properties(${TARGET} PROPERTIES OUTPUT_NAME out123) +if(HAVE_UNIX_DL) + string(APPEND LIBOUT123_LIBS " -ldl") +endif() +if(HAVE_M) + string(APPEND LIBOUT123_LIBS " -lm") +endif() +if(HAVE_RT) + string(APPEND LIBOUT123_LIBS " -lrt") +endif() +if(WANT_WIN32_UNICODE) + string(APPEND LIBOUT123_LIBS " -lshlwapi") +endif() +set(LIBOUT123_LIBS "${LIBOUT123_LIBS}" PARENT_SCOPE) target_link_libraries(${TARGET} PRIVATE $ $<$:dl> + $<$:m> + $<$:rt> $<$:shlwapi>) target_include_directories(${TARGET} INTERFACE diff --git a/ports/cmake/src/libsyn123/CMakeLists.txt b/ports/cmake/src/libsyn123/CMakeLists.txt index 6edb5b7c..22051abd 100644 --- a/ports/cmake/src/libsyn123/CMakeLists.txt +++ b/ports/cmake/src/libsyn123/CMakeLists.txt @@ -19,9 +19,12 @@ target_include_directories(${TARGET} INTERFACE "$" "$") +if(HAVE_M) + string(APPEND LIBSYN123_LIBS " -lm") +endif() +set(LIBSYN123_LIBS "${LIBSYN123_LIBS}" PARENT_SCOPE) target_link_libraries(${TARGET} PRIVATE - $<$:m> - $<$:shlwapi>) + $<$:m>) install(TARGETS ${TARGET} EXPORT targets ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}/"