Skip to content

Commit b7601ed

Browse files
authored
[mpg123] Fix dllexport, fix pkgconfig, add test port (#42601)
1 parent f3961d4 commit b7601ed

File tree

10 files changed

+140
-1
lines changed

10 files changed

+140
-1
lines changed

ports/mpg123/fix-dllexport.diff

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
diff --git a/src/libmpg123/mpg123lib_intern.h b/src/libmpg123/mpg123lib_intern.h
2+
index b46c419..7cd5504 100644
3+
--- a/src/libmpg123/mpg123lib_intern.h
4+
+++ b/src/libmpg123/mpg123lib_intern.h
5+
@@ -21,7 +21,10 @@
6+
7+
// Only portable API plays a role in the library itself, outside of lfs_wrap.c.
8+
// Also, we need to ensure no suffix renaming for the primary implementations.
9+
-#define MPG123_PORTABLE_API
10+
+// But: The _definition_ of non-portable API needs to be present for those
11+
+// primary implementations being exported for DLL builds. Just the largefile
12+
+// renaming needs to be skipped!
13+
+#define MPG123_NO_LARGENAME
14+
#define MPG123_ENUM_API
15+
#include "mpg123.h"
16+

ports/mpg123/pkgconfig.diff

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
diff --git a/ports/cmake/src/CMakeLists.txt b/ports/cmake/src/CMakeLists.txt
2+
index 32bc03c..952141b 100644
3+
--- a/ports/cmake/src/CMakeLists.txt
4+
+++ b/ports/cmake/src/CMakeLists.txt
5+
@@ -450,3 +450,7 @@ if(UNIX AND NOT PORTABLE_API)
6+
endif()
7+
8+
configure_file(config.cmake.h.in config.h)
9+
+
10+
+set(LIBMPG123_LIBS "${LIBMPG123_LIBS}" PARENT_SCOPE)
11+
+set(LIBOUT123_LIBS "${LIBOUT123_LIBS}" PARENT_SCOPE)
12+
+set(LIBSYN123_LIBS "${LIBSYN123_LIBS}" PARENT_SCOPE)
13+
diff --git a/ports/cmake/src/libmpg123/CMakeLists.txt b/ports/cmake/src/libmpg123/CMakeLists.txt
14+
index 7cb08be..3e1c042 100644
15+
--- a/ports/cmake/src/libmpg123/CMakeLists.txt
16+
+++ b/ports/cmake/src/libmpg123/CMakeLists.txt
17+
@@ -235,6 +235,13 @@ else()
18+
target_sources(${TARGET} PRIVATE ${PLATFORM_SOURCES})
19+
endif()
20+
21+
+if(HAVE_M)
22+
+ string(APPEND LIBMPG123_LIBS " -lm")
23+
+endif()
24+
+if(WANT_WIN32_UNICODE)
25+
+ string(APPEND LIBMPG123_LIBS " -lshlwapi")
26+
+endif()
27+
+set(LIBMPG123_LIBS "${LIBMPG123_LIBS}" PARENT_SCOPE)
28+
target_link_libraries(${TARGET} PRIVATE
29+
$<$<BOOL:${HAVE_M}>:m>
30+
$<$<BOOL:${WANT_WIN32_UNICODE}>:shlwapi>)
31+
diff --git a/ports/cmake/src/libout123/CMakeLists.txt b/ports/cmake/src/libout123/CMakeLists.txt
32+
index d0fe358..cd800d8 100644
33+
--- a/ports/cmake/src/libout123/CMakeLists.txt
34+
+++ b/ports/cmake/src/libout123/CMakeLists.txt
35+
@@ -18,6 +18,13 @@ add_library(${TARGET}
36+
37+
set_target_properties(${TARGET} PROPERTIES OUTPUT_NAME out123)
38+
39+
+if(HAVE_UNIX_DL)
40+
+ string(APPEND LIBOUT123_LIBS " -ldl")
41+
+endif()
42+
+if(WANT_WIN32_UNICODE)
43+
+ string(APPEND LIBOUT123_LIBS " -lshlwapi")
44+
+endif()
45+
+set(LIBOUT123_LIBS "${LIBOUT123_LIBS}" PARENT_SCOPE)
46+
target_link_libraries(${TARGET} PRIVATE
47+
$<TARGET_NAME_IF_EXISTS:defaultmodule>
48+
$<$<BOOL:${HAVE_UNIX_DL}>:dl>
49+
diff --git a/ports/cmake/src/libsyn123/CMakeLists.txt b/ports/cmake/src/libsyn123/CMakeLists.txt
50+
index 6edb5b7..0b660f5 100644
51+
--- a/ports/cmake/src/libsyn123/CMakeLists.txt
52+
+++ b/ports/cmake/src/libsyn123/CMakeLists.txt
53+
@@ -19,6 +19,13 @@ target_include_directories(${TARGET} INTERFACE
54+
"$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>"
55+
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>")
56+
57+
+if(HAVE_M)
58+
+ string(APPEND LIBSYN123_LIBS " -lm")
59+
+endif()
60+
+if(WANT_WIN32_UNICODE)
61+
+ string(APPEND LIBSYN123_LIBS " -lshlwapi")
62+
+endif()
63+
+set(LIBSYN123_LIBS "${LIBSYN123_LIBS}" PARENT_SCOPE)
64+
target_link_libraries(${TARGET} PRIVATE
65+
$<$<BOOL:${HAVE_M}>:m>
66+
$<$<BOOL:${WANT_WIN32_UNICODE}>:shlwapi>)

ports/mpg123/portfile.cmake

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ vcpkg_from_sourceforge(
55
FILENAME "mpg123-${VERSION}.tar.bz2"
66
SHA512 dccb640b0845061811cb41bf145587e7093556d686d49a748232b079659b46284b6cc40db42d14febceac11277c58edf2b69d1b4c46c223829a3d15478e2e26c
77
PATCHES
8+
fix-dllexport.diff
89
have-fpu.diff
10+
pkgconfig.diff
911
)
1012

1113
if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW)
@@ -27,6 +29,8 @@ vcpkg_cmake_configure(
2729
${options}
2830
MAYBE_UNUSED_VARIABLES
2931
BUILD_PROGRAMS
32+
CMAKE_DISABLE_FIND_PACKAGE_ALSA
33+
CMAKE_DISABLE_FIND_PACKAGE_PkgConfig
3034
)
3135
vcpkg_cmake_install()
3236
vcpkg_copy_pdbs()

ports/mpg123/vcpkg.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"name": "mpg123",
33
"version": "1.32.9",
4+
"port-version": 1,
45
"description": "mpg123 is a real time MPEG 1.0/2.0/2.5 audio player/decoder for layers 1, 2 and 3 (MPEG 1.0 layer 3 also known as MP3).",
56
"homepage": "https://sourceforge.net/projects/mpg123/",
67
"license": "LGPL-2.1-or-later",
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
SET(VCPKG_POLICY_EMPTY_PACKAGE enabled)
2+
3+
vcpkg_find_acquire_program(PKGCONFIG)
4+
5+
vcpkg_cmake_configure(
6+
SOURCE_PATH "${CURRENT_PORT_DIR}/project"
7+
OPTIONS
8+
"-DPKG_CONFIG_EXECUTABLE=${PKGCONFIG}"
9+
)
10+
vcpkg_cmake_build()
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
cmake_minimum_required(VERSION 3.30)
2+
3+
project(vcpkg-ci-mpg123 C)
4+
5+
find_package(mpg123 REQUIRED)
6+
7+
add_executable(main main.c)
8+
target_link_libraries(main PRIVATE MPG123::libmpg123)
9+
10+
find_package(PkgConfig REQUIRED)
11+
pkg_check_modules(MPG123_PC REQUIRED IMPORTED_TARGET libmpg123)
12+
13+
add_executable(main-pc main.c)
14+
target_link_libraries(main-pc PRIVATE PkgConfig::MPG123_PC)
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
#include <mpg123.h>
2+
3+
int main()
4+
{
5+
mpg123_handle *m = mpg123_new(NULL, NULL);
6+
mpg123_open(m, "vcpkg");
7+
mpg123_scan(m);
8+
mpg123_close(m);
9+
mpg123_delete(m);
10+
return 0;
11+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"name": "vcpkg-ci-mpg123",
3+
"version-string": "ci",
4+
"description": "Validates mpg123",
5+
"dependencies": [
6+
"mpg123",
7+
{
8+
"name": "vcpkg-cmake",
9+
"host": true
10+
}
11+
]
12+
}

versions/baseline.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6098,7 +6098,7 @@
60986098
},
60996099
"mpg123": {
61006100
"baseline": "1.32.9",
6101-
"port-version": 0
6101+
"port-version": 1
61026102
},
61036103
"mpi": {
61046104
"baseline": "1",

versions/m-/mpg123.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
{
22
"versions": [
3+
{
4+
"git-tree": "0c11d8d8818fece4a1fb1de93e5423a078f6c29e",
5+
"version": "1.32.9",
6+
"port-version": 1
7+
},
38
{
49
"git-tree": "24f943a44e7512101017022557b2291d5ef209be",
510
"version": "1.32.9",

0 commit comments

Comments
 (0)