aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/libopenmpt
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/libopenmpt
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/libopenmpt')
-rw-r--r--vcpkg/ports/libopenmpt/CMakeLists.txt107
-rw-r--r--vcpkg/ports/libopenmpt/portfile.cmake28
-rw-r--r--vcpkg/ports/libopenmpt/vcpkg.json21
3 files changed, 156 insertions, 0 deletions
diff --git a/vcpkg/ports/libopenmpt/CMakeLists.txt b/vcpkg/ports/libopenmpt/CMakeLists.txt
new file mode 100644
index 0000000..7223426
--- /dev/null
+++ b/vcpkg/ports/libopenmpt/CMakeLists.txt
@@ -0,0 +1,107 @@
+cmake_minimum_required(VERSION 3.9)
+project(libopenmpt)
+
+if(MSVC)
+ add_compile_options(
+ /W3 /wd4005 /wd4267 /wd4244 /wd4996 /wd4100 /wd4018
+ -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_DEPRECATE
+ -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS
+ )
+endif()
+
+find_package(ZLIB REQUIRED)
+find_package(mpg123 CONFIG REQUIRED)
+find_package(Vorbis CONFIG REQUIRED)
+
+file(GLOB HEADERS libopenmpt/*.h libopenmpt/*.hpp src/openmpt/all/*.hpp)
+list(FILTER HEADERS EXCLUDE REGEX "_impl\\.hpp$|_internal\\.h$")
+
+include_directories(
+ .
+ src
+ build/svn_version
+ libopenmpt
+ common
+ soundbase
+ sounddsp
+ soundlib
+ openmpt123
+)
+
+file(GLOB_RECURSE SOURCES
+ common/*.cpp
+ soundbase/*.cpp
+ sounddsp/*.cpp
+ # Because this is a GLOB_RECURSE, soundlib/plugins/*.cpp will be included
+ soundlib/*.cpp
+ libopenmpt/libopenmpt_c.cpp
+ libopenmpt/libopenmpt_cxx.cpp
+ libopenmpt/libopenmpt_ext_impl.cpp
+ libopenmpt/libopenmpt_impl.cpp
+)
+
+set(CMAKE_CXX_STANDARD 17)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+add_library(libopenmpt ${SOURCES})
+set_target_properties(libopenmpt PROPERTIES OUTPUT_NAME openmpt)
+
+target_compile_definitions(libopenmpt PRIVATE
+ -DMPT_WITH_MPG123 -DMPT_WITH_OGG
+ -DMPT_WITH_VORBIS -DMPT_WITH_VORBISFILE
+ -DMPT_WITH_ZLIB -DMPT_BUILD_VCPKG
+ -DLIBOPENMPT_BUILD
+)
+
+if(BUILD_SHARED_LIBS)
+ target_compile_definitions(
+ libopenmpt
+ PRIVATE -DLIBOPENMPT_BUILD_DLL
+ )
+endif()
+
+target_include_directories(
+ libopenmpt
+ PUBLIC
+ $<INSTALL_INTERFACE:include>
+)
+
+target_link_libraries(
+ libopenmpt
+ PRIVATE
+ MPG123::libmpg123
+ Vorbis::vorbisfile
+ Vorbis::vorbis
+ ZLIB::ZLIB
+)
+
+set(FAKE_CXX_LINKAGE "")
+foreach(lib IN LISTS CMAKE_CXX_IMPLICIT_LINK_LIBRARIES)
+ if(lib IN_LIST CMAKE_C_IMPLICIT_LINK_LIBRARIES)
+ continue()
+ elseif(EXISTS "${lib}")
+ string(APPEND FAKE_CXX_LINKAGE " ${CMAKE_LINK_LIBRARY_FILE_FLAG}${lib}")
+ else()
+ string(APPEND FAKE_CXX_LINKAGE " ${CMAKE_LINK_LIBRARY_FLAG}${lib}")
+ endif()
+endforeach()
+set(LIBOPENMPT_LIBS_PRIVATE "${FAKE_CXX_LINKAGE}")
+set(LIBOPENMPT_REQUIRES_PRIVATE "zlib vorbis vorbisfile libmpg123")
+set(prefix "${CMAKE_INSTALL_PREFIX}")
+set(exec_prefix [[${prefix}]])
+set(includedir [[${prefix}/include]])
+set(libdir [[${prefix}/lib]])
+configure_file(libopenmpt/libopenmpt.pc.in libopenmpt.pc)
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libopenmpt.pc" DESTINATION lib/pkgconfig)
+
+install(TARGETS libopenmpt EXPORT libopenmpt-targets)
+install(EXPORT libopenmpt-targets DESTINATION share/libopenmpt NAMESPACE libopenmpt::)
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/libopenmpt-config.cmake" [[
+include(CMakeFindDependencyMacro)
+find_dependency(ZLIB)
+find_dependency(mpg123 CONFIG)
+find_dependency(Vorbis CONFIG)
+include("${CMAKE_CURRENT_LIST_DIR}/libopenmpt-targets.cmake")
+]])
+install(FILES ${HEADERS} DESTINATION include/libopenmpt)
+install(FILES "${CMAKE_CURRENT_BINARY_DIR}/libopenmpt-config.cmake" DESTINATION share/libopenmpt)
diff --git a/vcpkg/ports/libopenmpt/portfile.cmake b/vcpkg/ports/libopenmpt/portfile.cmake
new file mode 100644
index 0000000..db45ec0
--- /dev/null
+++ b/vcpkg/ports/libopenmpt/portfile.cmake
@@ -0,0 +1,28 @@
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO OpenMPT/openmpt
+ REF "libopenmpt-${VERSION}"
+ SHA512 a82cc543074c5688a8a02d6bcbc378204c1962c1f4a44b9399b3cc708b4d0f660498bf496c446dd5a6dce48110e78eb2754a1454c451bb22de6664f18a8ddbc1
+ HEAD_REF master
+)
+
+file(COPY "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt" DESTINATION "${SOURCE_PATH}")
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ "-DVERSION=${VERSION}"
+)
+vcpkg_cmake_install()
+vcpkg_cmake_config_fixup()
+vcpkg_fixup_pkgconfig()
+vcpkg_copy_pdbs()
+
+if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ vcpkg_replace_string(${CURRENT_PACKAGES_DIR}/include/libopenmpt/libopenmpt_config.h "defined(LIBOPENMPT_USE_DLL)" "0")
+else()
+ vcpkg_replace_string(${CURRENT_PACKAGES_DIR}/include/libopenmpt/libopenmpt_config.h "defined(LIBOPENMPT_USE_DLL)" "1")
+endif()
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE")
diff --git a/vcpkg/ports/libopenmpt/vcpkg.json b/vcpkg/ports/libopenmpt/vcpkg.json
new file mode 100644
index 0000000..d7e4ca9
--- /dev/null
+++ b/vcpkg/ports/libopenmpt/vcpkg.json
@@ -0,0 +1,21 @@
+{
+ "name": "libopenmpt",
+ "version": "0.7.13",
+ "description": "A cross-platform C++ and C library to decode tracked music files (modules) into a raw PCM audio stream.",
+ "homepage": "https://openmpt.org/",
+ "license": "BSD-3-Clause",
+ "dependencies": [
+ "libogg",
+ "libvorbis",
+ "mpg123",
+ {
+ "name": "vcpkg-cmake",
+ "host": true
+ },
+ {
+ "name": "vcpkg-cmake-config",
+ "host": true
+ },
+ "zlib"
+ ]
+}