diff --git a/CMakeLists.txt b/CMakeLists.txt index de1f2b5f0..7e6bfe535 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -310,10 +310,12 @@ endif() if (WITH_MPEG) list(APPEND DEPENDENCIES_DEFINES HAVE_MP3_EXPORT) # why do I have to provide an absolute path? - set(MP3LAME_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/extern/lame/include CACHE STRING "LAME include dir" FORCE) + set(MP3LAME_INCLUDE_DIR extern/lame/include CACHE STRING "LAME include dir" FORCE) set(MP3LAME_LIBRARY mp3lame CACHE STRING "LAME library" FORCE) add_subdirectory(extern/lame EXCLUDE_FROM_ALL) - add_subdirectory(extern/mpg123/ports/cmake EXCLUDE_FROM_ALL) + add_subdirectory(extern/mpg123 EXCLUDE_FROM_ALL) + set(mpg123_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/extern/mpg123/src/include CACHE STRING "mpg123 include dir" FORCE) + set(mpg123_LIBRARY mpg123 CACHE STRING "mpg123 library" FORCE) endif() if (USE_SNDFILE) diff --git a/extern/lame/CMakeLists.txt b/extern/lame/CMakeLists.txt index d9c03c846..b437d56d1 100644 --- a/extern/lame/CMakeLists.txt +++ b/extern/lame/CMakeLists.txt @@ -52,6 +52,6 @@ include/lame/lame.h ) target_compile_definitions(mp3lame PRIVATE ${LAME_DEFINES}) -target_include_directories(mp3lame PRIVATE config_ta include) +target_include_directories(mp3lame PUBLIC include PRIVATE config_ta) add_library(mp3lame::mp3lame ALIAS mp3lame) diff --git a/extern/libogg/CMakeLists.txt b/extern/libogg/CMakeLists.txt index b14a637b2..5e1b5b8c8 100644 --- a/extern/libogg/CMakeLists.txt +++ b/extern/libogg/CMakeLists.txt @@ -21,7 +21,7 @@ endif() # tildearrow: disabled for vendored libogg. option(INSTALL_DOCS "Install documentation" OFF) option(INSTALL_PKG_CONFIG_MODULE "Install ogg.pc file" OFF) -option(INSTALL_CMAKE_PACKAGE_MODULE "Install CMake package configuration module" OFF) +option(INSTALL_CMAKE_PACKAGE_MODULE "Install CMake package configuration module" ON) # Extract library version from configure.ac string(REGEX MATCH "LIB_CURRENT=([0-9]*)" DUMMY ${CONFIGURE_AC_CONTENTS}) diff --git a/extern/libsndfile-modified/CMakeLists.txt b/extern/libsndfile-modified/CMakeLists.txt index 6245450bc..b55995578 100644 --- a/extern/libsndfile-modified/CMakeLists.txt +++ b/extern/libsndfile-modified/CMakeLists.txt @@ -98,6 +98,7 @@ if (ENABLE_EXTERNAL_LIBS AND NOT (Vorbis_FOUND OR FLAC_FOUND OR OPUS_FOUND)) set (ENABLE_EXTERNAL_LIBS OFF) endif() if(ENABLE_MPEG AND (NOT HAVE_MPEG_LIBS)) + message(FATAL_ERROR "NO MPEG FOR YOU") set (ENABLE_MPEG OFF) endif() if (BUILD_REGTEST AND (NOT SQLITE3_FOUND)) @@ -396,7 +397,8 @@ target_link_libraries (sndfile $<$:FLAC::FLAC> $<$,$,$>:Speex::Speex> $<$:Opus::opus> - $<$:MPG123::libmpg123> + # tildearrow: oh my freaking + $<$:MPG123::mpg123> $<$:mp3lame::mp3lame> ) set_target_properties (sndfile PROPERTIES diff --git a/extern/libsndfile-modified/cmake/Findmpg123.cmake b/extern/libsndfile-modified/cmake/Findmpg123.cmake index 36bb2389a..8c5d39cd2 100644 --- a/extern/libsndfile-modified/cmake/Findmpg123.cmake +++ b/extern/libsndfile-modified/cmake/Findmpg123.cmake @@ -9,7 +9,7 @@ Imported Targets This module provides the following imported targets, if found: -``MPG123::libmpg123`` +``MPG123::mpg123`` The mpg123 library Result Variables @@ -40,7 +40,7 @@ if (mpg123_INCLUDE_DIR) endif () find_package (PkgConfig QUIET) -pkg_check_modules(PC_MPG123 QUIET libmpg123>=1.25.10) +pkg_check_modules(PC_MPG123 QUIET mpg123>=1.25.10) find_path (mpg123_INCLUDE_DIR mpg123.h HINTS @@ -83,9 +83,9 @@ find_package_handle_standard_args (mpg123 mpg123_VERSION ) -if (mpg123_FOUND AND NOT TARGET MPG123::libmpg123) - add_library (MPG123::libmpg123 UNKNOWN IMPORTED) - set_target_properties (MPG123::libmpg123 +if (mpg123_FOUND AND NOT TARGET MPG123::mpg123) + add_library (MPG123::mpg123 UNKNOWN IMPORTED) + set_target_properties (MPG123::mpg123 PROPERTIES IMPORTED_LOCATION "${mpg123_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${mpg123_INCLUDE_DIR}" diff --git a/extern/libsndfile-modified/cmake/SndFileChecks.cmake b/extern/libsndfile-modified/cmake/SndFileChecks.cmake index 2ad8ccde0..1a822183f 100644 --- a/extern/libsndfile-modified/cmake/SndFileChecks.cmake +++ b/extern/libsndfile-modified/cmake/SndFileChecks.cmake @@ -51,7 +51,8 @@ endif () find_package (mp3lame) find_package (mpg123 1.25.10) -if (TARGET mp3lame::mp3lame AND (TARGET MPG123::libmpg123)) +# tildearrow: modified for fucking passing the build +if (TARGET mp3lame::mp3lame AND (TARGET MPG123::mpg123)) set (HAVE_MPEG_LIBS 1) else () set (HAVE_MPEG_LIBS 0) diff --git a/extern/mpg123/CMakeLists.txt b/extern/mpg123/CMakeLists.txt index a02ff6143..55e0efbb7 100644 --- a/extern/mpg123/CMakeLists.txt +++ b/extern/mpg123/CMakeLists.txt @@ -1 +1,44 @@ -# tildearrow: CMake port of Autotools build scripts. +cmake_minimum_required(VERSION 3.0...3.19) + +include(cmake/read_api_version.cmake) +read_api_version(MPG123_VERSION) + +project(mpg123 VERSION ${MPG123_VERSION} LANGUAGES C ASM) +#set(CMAKE_C_STANDARD 99) + +# tildearrow: disable for vendored build. + +include(cmake/search_libs.cmake) +include(CMakePackageConfigHelpers) +include(GNUInstallDirs) + +set(PACKAGE_VERSION ${PROJECT_VERSION}) +add_subdirectory("src") + +install( + EXPORT targets + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" + NAMESPACE MPG123::) + +configure_package_config_file( + mpg123-config.cmake.in mpg123-config.cmake + INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") +write_basic_package_version_file( + mpg123-config-version.cmake COMPATIBILITY AnyNewerVersion) + +install( + FILES + "${CMAKE_CURRENT_BINARY_DIR}/mpg123-config.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/mpg123-config-version.cmake" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") + +set(prefix "${CMAKE_INSTALL_PREFIX}") +set(exec_prefix "${CMAKE_INSTALL_PREFIX}") +set(libdir "${CMAKE_INSTALL_FULL_LIBDIR}") +set(includedir "${CMAKE_INSTALL_FULL_INCLUDEDIR}") +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/libmpg123.pc.in" libmpg123.pc @ONLY) + +install( + FILES + "${CMAKE_CURRENT_BINARY_DIR}/libmpg123.pc" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") diff --git a/extern/mpg123/ports/cmake/cmake/CheckCPUArch.c.in b/extern/mpg123/cmake/CheckCPUArch.c.in similarity index 100% rename from extern/mpg123/ports/cmake/cmake/CheckCPUArch.c.in rename to extern/mpg123/cmake/CheckCPUArch.c.in diff --git a/extern/mpg123/ports/cmake/cmake/CheckCPUArch.cmake b/extern/mpg123/cmake/CheckCPUArch.cmake similarity index 100% rename from extern/mpg123/ports/cmake/cmake/CheckCPUArch.cmake rename to extern/mpg123/cmake/CheckCPUArch.cmake diff --git a/extern/mpg123/ports/cmake/cmake/read_api_version.cmake b/extern/mpg123/cmake/read_api_version.cmake similarity index 90% rename from extern/mpg123/ports/cmake/cmake/read_api_version.cmake rename to extern/mpg123/cmake/read_api_version.cmake index 74002cea0..e5e1f4dc7 100644 --- a/extern/mpg123/ports/cmake/cmake/read_api_version.cmake +++ b/extern/mpg123/cmake/read_api_version.cmake @@ -1,6 +1,6 @@ function(read_api_version project_version) - file( READ "${CMAKE_CURRENT_SOURCE_DIR}/../../src/version.h" version_h ) + file( READ "${CMAKE_CURRENT_SOURCE_DIR}/src/version.h" version_h ) string( REGEX MATCH "#define +MPG123_MAJOR +([0-9]+)" result ${version_h} ) set( major_version ${CMAKE_MATCH_1}) diff --git a/extern/mpg123/ports/cmake/cmake/search_libs.cmake b/extern/mpg123/cmake/search_libs.cmake similarity index 100% rename from extern/mpg123/ports/cmake/cmake/search_libs.cmake rename to extern/mpg123/cmake/search_libs.cmake diff --git a/extern/mpg123/ports/cmake/linux_i686.toolchain.cmake b/extern/mpg123/linux_i686.toolchain.cmake similarity index 100% rename from extern/mpg123/ports/cmake/linux_i686.toolchain.cmake rename to extern/mpg123/linux_i686.toolchain.cmake diff --git a/extern/mpg123/ports/cmake/mpg123-config.cmake.in b/extern/mpg123/mpg123-config.cmake.in similarity index 100% rename from extern/mpg123/ports/cmake/mpg123-config.cmake.in rename to extern/mpg123/mpg123-config.cmake.in diff --git a/extern/mpg123/ports/cmake/CMakeLists.txt b/extern/mpg123/ports/cmake/CMakeLists.txt deleted file mode 100644 index b10484987..000000000 --- a/extern/mpg123/ports/cmake/CMakeLists.txt +++ /dev/null @@ -1,60 +0,0 @@ -cmake_minimum_required(VERSION 3.12) - -include(cmake/read_api_version.cmake) -read_api_version(MPG123_VERSION) - -project(mpg123 VERSION ${MPG123_VERSION} LANGUAGES C ASM) -set(CMAKE_C_STANDARD 99) - -option(BUILD_LIBOUT123 "build libout123 (prerequisite for included programs)" ON) -if(CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") - message(WARNING "Output module is not implemented for '${CMAKE_SYSTEM_NAME}' platform.") - message(WARNING "To prevent build errors 'BUILD_LIBOUT123' option is set to OFF.") - set(BUILD_LIBOUT123 OFF) -endif() - -include(cmake/search_libs.cmake) -include(CMakePackageConfigHelpers) -include(GNUInstallDirs) - -set(PACKAGE_VERSION ${PROJECT_VERSION}) -add_subdirectory("src") - -#install( -# EXPORT targets -# DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" -# NAMESPACE MPG123::) - -configure_package_config_file( - mpg123-config.cmake.in mpg123-config.cmake - INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") -write_basic_package_version_file( - mpg123-config-version.cmake COMPATIBILITY AnyNewerVersion) - -install( - FILES - "${CMAKE_CURRENT_BINARY_DIR}/mpg123-config.cmake" - "${CMAKE_CURRENT_BINARY_DIR}/mpg123-config-version.cmake" - DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") - -set(prefix "${CMAKE_INSTALL_PREFIX}") -set(exec_prefix "${CMAKE_INSTALL_PREFIX}") -set(libdir "${CMAKE_INSTALL_FULL_LIBDIR}") -set(includedir "${CMAKE_INSTALL_FULL_INCLUDEDIR}") -configure_file("${CMAKE_CURRENT_SOURCE_DIR}/../../libmpg123.pc.in" libmpg123.pc @ONLY) -if(BUILD_LIBOUT123) - configure_file("${CMAKE_CURRENT_SOURCE_DIR}/../../libout123.pc.in" libout123.pc @ONLY) -endif() -configure_file("${CMAKE_CURRENT_SOURCE_DIR}/../../libsyn123.pc.in" libsyn123.pc @ONLY) - -install( - FILES - "${CMAKE_CURRENT_BINARY_DIR}/libmpg123.pc" - "${CMAKE_CURRENT_BINARY_DIR}/libsyn123.pc" - DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") -if(BUILD_LIBOUT123) - install( - FILES - "${CMAKE_CURRENT_BINARY_DIR}/libout123.pc" - DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") -endif() diff --git a/extern/mpg123/ports/cmake/README.md b/extern/mpg123/ports/cmake/README.md new file mode 100644 index 000000000..eeee34733 --- /dev/null +++ b/extern/mpg123/ports/cmake/README.md @@ -0,0 +1,6 @@ +# MODIFIED + +this directory's contents have been moved out of here, to the top of this project. +CMake refuses to find the libmpg123 target. + +- tildearrow diff --git a/extern/mpg123/ports/cmake/src/libmpg123/CMakeLists.txt b/extern/mpg123/ports/cmake/src/libmpg123/CMakeLists.txt deleted file mode 100644 index 3e1c04217..000000000 --- a/extern/mpg123/ports/cmake/src/libmpg123/CMakeLists.txt +++ /dev/null @@ -1,260 +0,0 @@ -cmake_minimum_required(VERSION 3.12) - -option(NO_FEATURE_REPORT "Disable feature report function" OFF) -if(CMAKE_SYSTEM_NAME STREQUAL "Android") - option(WITH_SSE "x86: build with SSE support if detected. Turn OFF for older devices where autodetection is misleading." ON) -endif() - -include_directories("${CMAKE_CURRENT_BINARY_DIR}" "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/") - -if(HAVE_STDLIB_H) - set(INCLUDE_STDLIB_H "#include ") -else() - set(INCLUDE_STDLIB_H "/* #include is not available on this system */") -endif() -if(HAVE_SYS_TYPES_H) - set(INCLUDE_SYS_TYPE_H "#include ") -else() - set(INCLUDE_SYS_TYPE_H "/* #include is not available on this system */") -endif() - - - -# PPC with AltiVec is missing. But probably obsolete enough for CMake users. - -if(ARCH_IS_X64) - set(MACHINE amd64) -elseif(ARCH_IS_X86) - set(MACHINE x86) -elseif(ARCH_IS_ARM64) - set(MACHINE arm64) -elseif(ARCH_IS_ARM32) - set(MACHINE arm32) -else() - message(WARNING "Unknown processor. Using generic optimizations.") - set(MACHINE generic) -endif() -message(STATUS "Detected machine: ${MACHINE}") - -set(TARGET lib${PROJECT_NAME}) -add_library(${TARGET} - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/parse.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/frame.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/format.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/dct64.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/equalizer.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/id3.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/optimize.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/readers.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/tabinit.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/libmpg123.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/index.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$>:icy.c>" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$>:icy2utf8.c>" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$>:layer1.c>" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$,$>>:layer2.c>" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$>:layer3.c>" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$>:ntom.c>" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$>:synth_8bit.c>" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$>:synth.c>" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$,$>>:synth_s32.c>" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$,$>>:synth_real.c>" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$>:stringbuf.c>" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$>:feature.c>" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$>:lfs_wrap.c>" - $) - -if(MSVC) - if(MACHINE MATCHES "x86|amd64") - find_program(YASM_ASSEMBLER yasm) - if(NOT YASM_ASSEMBLER) - message(WARNING "Couldn't find yasm assembler for optimizded decoders. Please set YASM_ASSEMBLER variable") - set(MACHINE generic) - endif() - else() - message(WARNING "Need work to support non-x86 assembly optimizations with MSVC.") - set(MACHINE generic) - endif() -endif() - -if(MACHINE STREQUAL "amd64") - if(HAVE_FPU) - set(PLATFORM_DEFINITIONS OPT_MULTI OPT_X86_64 OPT_AVX OPT_GENERIC OPT_GENERIC_DITHER) - set(PLATFORM_SOURCES - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/dct36_x86_64.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/dct64_x86_64_float.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_x86_64_float.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_x86_64_s32.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_stereo_x86_64_float.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_stereo_x86_64_s32.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/dct36_avx.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/dct64_avx_float.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_stereo_avx_float.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_stereo_avx_s32.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/getcpuflags_x86_64.S") - target_sources(${TARGET} PRIVATE - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/dither.c") - if(ACCURATE_ROUNDING) - list(APPEND PLATFORM_SOURCES - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_x86_64_accurate.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_stereo_x86_64_accurate.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_stereo_avx_accurate.S") - else() - list(APPEND PLATFORM_SOURCES - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/dct64_x86_64.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_x86_64.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_stereo_x86_64.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_stereo_avx.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/dct64_avx.S") - endif() - else() - set(PLATFORM_DEFINITIONS OPT_GENERIC) - endif() -elseif(MACHINE STREQUAL "x86") - if(TRUE) - set(PLATFORM_DEFINITIONS OPT_I386) - target_sources(${TARGET} PRIVATE - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/dct64_i386.c") - endif() - - cmake_host_system_information(RESULT HAVE_SSE QUERY HAS_SSE) - if(CMAKE_SYSTEM_NAME STREQUAL "Android") - set(HAVE_SSE ${WITH_SSE}) - endif() - if(HAVE_SSE) - set(PLATFORM_DEFINITIONS OPT_SSE) - set(PLATFORM_SOURCES - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/tabinit_mmx.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/dct36_sse.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/dct64_sse_float.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_sse_float.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_stereo_sse_float.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_sse_s32.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_stereo_sse_s32.S") - if(ACCURATE_ROUNDING) - list(APPEND PLATFORM_SOURCES - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_sse_accurate.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_stereo_sse_accurate.S") - else() - list(APPEND PLATFORM_SOURCES - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/dct64_sse.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_sse.S") - endif() - endif() -elseif(MACHINE STREQUAL "arm64") - set(PLATFORM_DEFINITIONS OPT_MULTI OPT_GENERIC OPT_GENERIC_DITHER OPT_NEON64) - set(PLATFORM_SOURCES - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/dct36_neon64.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/dct64_neon64_float.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_neon64_float.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_neon64_s32.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_stereo_neon64_float.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_stereo_neon64_s32.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/check_neon.S") - if(ACCURATE_ROUNDING) - list(APPEND PLATFORM_SOURCES - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_neon64_accurate.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_stereo_neon64_accurate.S") - else() - list(APPEND PLATFORM_SOURCES - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_neon64.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_stereo_neon64.S") - endif() - target_sources(${TARGET} PRIVATE - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/dither.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/getcpuflags_arm.c") -elseif(MACHINE STREQUAL "arm32") - if(HAVE_FPU) - set(PLATFORM_DEFINITIONS OPT_MULTI OPT_GENERIC OPT_GENERIC_DITHER OPT_NEON) - set(PLATFORM_SOURCES - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/dct36_neon.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/dct64_neon_float.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_neon_float.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_neon_s32.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_stereo_neon_float.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_stereo_neon_s32.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/check_neon.S") - target_sources(${TARGET} PRIVATE - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/getcpuflags_arm.c") - if(ACCURATE_ROUNDING) - list(APPEND PLATFORM_SOURCES - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_neon_accurate.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_stereo_neon_accurate.S") - else() - list(APPEND PLATFORM_SOURCES - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/dct64_neon.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_neon.S" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_stereo_neon.S") - endif() - target_sources(${TARGET} PRIVATE ${PLATFORM_SOURCES}) - target_sources(${TARGET} PRIVATE - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/dither.c") - else() - set(PLATFORM_DEFINITIONS OPT_ARM) - if(ACCURATE_ROUNDING) - set(PLATFORM_SOURCES - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_arm_accurate.S") - else() - set(PLATFORM_SOURCES - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/synth_arm.S") - endif() - target_sources(${TARGET} PRIVATE ${PLATFORM_SOURCES}) - endif() -elseif(MACHINE STREQUAL "generic") - set(PLATFORM_DEFINITIONS OPT_GENERIC) -endif() - -set_target_properties(${TARGET} PROPERTIES OUTPUT_NAME mpg123) - -target_compile_definitions(${TARGET} PRIVATE - $<$>:PIC>) - -target_compile_definitions(${TARGET} PRIVATE - ${PLATFORM_DEFINITIONS} - $<$:REAL_IS_FLOAT> - $<$>:REAL_IS_FIXED>) - -if(MSVC AND MACHINE MATCHES "x86|amd64" AND YASM_ASSEMBLER) - list(TRANSFORM PLATFORM_DEFINITIONS PREPEND /D) - foreach(FILE ${PLATFORM_SOURCES}) - get_filename_component(FILENAME ${FILE} NAME) - add_custom_command( - OUTPUT ${FILENAME}.asm - COMMAND ${CMAKE_C_COMPILER} /DASMALIGN_BALIGN ${PLATFORM_DEFINITIONS} - /I"${PROJECT_SOURCE_DIR}/../../src" /I"${PROJECT_BINARY_DIR}/src" /P /Fi${FILENAME}.asm /Tc "${FILE}" - DEPENDS ${FILE} - WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") - add_custom_command( - OUTPUT ${FILENAME}.obj - COMMAND ${YASM_ASSEMBLER} -a x86 -m ${MACHINE} -p gas -r raw -f win32 -g null -o ${FILENAME}.obj ${FILENAME}.asm - DEPENDS ${FILENAME}.asm - WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") - target_sources(${TARGET} PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/${FILENAME}.obj") - endforeach() -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>) -target_include_directories(${TARGET} INTERFACE - "$" - "$") - -install(TARGETS ${TARGET} EXPORT targets - ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}/" - LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}/" - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}/") -install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/include/mpg123.h" - DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") -install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/include/fmt123.h" - DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") - diff --git a/extern/mpg123/ports/cmake/src/CMakeLists.txt b/extern/mpg123/src/CMakeLists.txt similarity index 76% rename from extern/mpg123/ports/cmake/src/CMakeLists.txt rename to extern/mpg123/src/CMakeLists.txt index 7861e3532..b7331c69b 100644 --- a/extern/mpg123/ports/cmake/src/CMakeLists.txt +++ b/extern/mpg123/src/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.12) +cmake_minimum_required(VERSION 3.0...3.19) include(CheckCSourceCompiles) include(CheckFunctionExists) @@ -350,14 +350,14 @@ option(NO_REAL "no real (floating point) output" OFF) option(NO_STRING "no string API (this will disable ID3v2; main mpg123 won't build anymore)" OFF) cmake_dependent_option(NO_ID3V2 "no ID3v2 parsing" OFF "NOT NO_STRING" ON) option(SYN123_NO_CASES "include special cases for likely parameter values (channel count, encoding sizes in libsyn123 routines) in the hope of better optimization at the expense of some code bloat (default enabled)" OFF) -cmake_dependent_option(USE_MODULES "dynamically loadable output modules" ON "BUILD_SHARED_LIBS;HAVE_WIN_DL OR HAVE_UNIX_DL" OFF) +cmake_dependent_option(USE_MODULES "dynamically loadable output modules" OFF "BUILD_SHARED_LIBS;HAVE_WIN_DL OR HAVE_UNIX_DL" OFF) option(USE_NEW_HUFFTABLE "use new huffman decoding scheme by Taihei (faster on modern CPUs at least, so on by default)" ON) - +# what a hack include_directories( - "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/" "${CMAKE_CURRENT_BINARY_DIR}" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/include") + "include") +# "${CMAKE_CURRENT_SOURCE_DIR}" add_compile_definitions( $<$:_CRT_SECURE_NO_WARNINGS> @@ -369,105 +369,10 @@ add_compile_options( add_subdirectory("compat") add_subdirectory("libmpg123") -if(BUILD_LIBOUT123) - add_subdirectory("libout123") -endif() -add_subdirectory("libsyn123") - -if(UNIX AND NOT PORTABLE_API) - option(BUILD_PROGRAMS "Build programs (mpg123 executable and others)" ON) - - if(BUILD_PROGRAMS) - - if(HAVE_FORK AND HAVE_EXECVP AND NETWORK) - set(NET123 ON) - set(NET123_EXEC ON) - endif() - - if(HAVE_TERMIOS) - set(TERM_POSIX ON) - else() - set(TERM_NONE ON) - endif() - - add_subdirectory("tests") - - if(BUILD_LIBOUT123) - add_executable(${PROJECT_NAME} - "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/audio.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/common.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/sysutil.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/control_generic.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/equalizer.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/getlopt.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/httpget.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/resolver.c" - $<$:${CMAKE_CURRENT_SOURCE_DIR}/../../../src/net123_exec.c> - "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/genre.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/mpg123.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/metaprint.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/local.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/playlist.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/streamdump.c" - $<$:${CMAKE_CURRENT_SOURCE_DIR}/../../../src/term_posix.c> - $<$:${CMAKE_CURRENT_SOURCE_DIR}/../../../src/term_none.c> - "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/term.c") - target_link_libraries(${PROJECT_NAME} PRIVATE - compat - lib${PROJECT_NAME} - libout123 - libsyn123 - ${GETHOSTBYNAME_LIB} - ${SOCKET_LIB} - $<$:m>) - - add_executable(out123 - "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/sysutil.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/getlopt.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/filters.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/local.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/out123.c") - target_link_libraries(out123 PRIVATE - lib${PROJECT_NAME} - libout123 - libsyn123) - install(TARGETS ${PROJECT_NAME} out123 - EXPORT targets - ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}/" - LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}/" - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}/") - endif() - - add_executable(${PROJECT_NAME}-id3dump - "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/mpg123-id3dump.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/getlopt.c") - target_link_libraries(${PROJECT_NAME}-id3dump PRIVATE - lib${PROJECT_NAME}) - - add_executable(${PROJECT_NAME}-strip - "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/mpg123-strip.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../src/getlopt.c") - target_link_libraries(${PROJECT_NAME}-strip PRIVATE - lib${PROJECT_NAME} - libsyn123) - - install(TARGETS ${PROJECT_NAME}-id3dump ${PROJECT_NAME}-strip - EXPORT targets - ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}/" - LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}/" - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}/") - - install( - FILES - "${CMAKE_CURRENT_SOURCE_DIR}/../../../man1/mpg123.1" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../man1/out123.1" - DESTINATION "${CMAKE_INSTALL_MANDIR}") - - endif() -endif() +#add_subdirectory("libsyn123") 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) +#set(LIBSYN123_LIBS "${LIBSYN123_LIBS}" PARENT_SCOPE) diff --git a/extern/mpg123/ports/cmake/src/compat/CMakeLists.txt b/extern/mpg123/src/compat/CMakeLists.txt similarity index 61% rename from extern/mpg123/ports/cmake/src/compat/CMakeLists.txt rename to extern/mpg123/src/compat/CMakeLists.txt index c4b2ec116..a08fec9ae 100644 --- a/extern/mpg123/ports/cmake/src/compat/CMakeLists.txt +++ b/extern/mpg123/src/compat/CMakeLists.txt @@ -1,19 +1,19 @@ set(TARGET compat) add_library(${TARGET} OBJECT - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/compat/compat.c" - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/compat/compat_str.c") + "compat.c" + "compat_str.c") if(BUILD_SHARED_LIBS) set_target_properties(${TARGET} PROPERTIES POSITION_INDEPENDENT_CODE ON) endif() add_library(${TARGET}_dl OBJECT - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/compat/compat_dl.c") + "compat_dl.c") if(BUILD_SHARED_LIBS) set_target_properties(${TARGET}_dl PROPERTIES POSITION_INDEPENDENT_CODE ON) endif() add_library(${TARGET}_str OBJECT - "${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/compat/compat_str.c") + "compat_str.c") if(BUILD_SHARED_LIBS) set_target_properties(${TARGET}_str PROPERTIES POSITION_INDEPENDENT_CODE ON) endif() diff --git a/extern/mpg123/ports/cmake/src/config.cmake.h.in b/extern/mpg123/src/config.cmake.h.in similarity index 100% rename from extern/mpg123/ports/cmake/src/config.cmake.h.in rename to extern/mpg123/src/config.cmake.h.in diff --git a/extern/mpg123/src/libmpg123/CMakeLists.txt b/extern/mpg123/src/libmpg123/CMakeLists.txt new file mode 100644 index 000000000..c2d5873bb --- /dev/null +++ b/extern/mpg123/src/libmpg123/CMakeLists.txt @@ -0,0 +1,260 @@ +cmake_minimum_required(VERSION 3.0...3.19) + +option(NO_FEATURE_REPORT "Disable feature report function" OFF) +if(CMAKE_SYSTEM_NAME STREQUAL "Android") + option(WITH_SSE "x86: build with SSE support if detected. Turn OFF for older devices where autodetection is misleading." ON) +endif() + +if(HAVE_STDLIB_H) + set(INCLUDE_STDLIB_H "#include ") +else() + set(INCLUDE_STDLIB_H "/* #include is not available on this system */") +endif() +if(HAVE_SYS_TYPES_H) + set(INCLUDE_SYS_TYPE_H "#include ") +else() + set(INCLUDE_SYS_TYPE_H "/* #include is not available on this system */") +endif() + + + +# PPC with AltiVec is missing. But probably obsolete enough for CMake users. + +if(ARCH_IS_X64) + set(MACHINE amd64) +elseif(ARCH_IS_X86) + set(MACHINE x86) +elseif(ARCH_IS_ARM64) + set(MACHINE arm64) +elseif(ARCH_IS_ARM32) + set(MACHINE arm32) +else() + message(WARNING "Unknown processor. Using generic optimizations.") + set(MACHINE generic) +endif() +message(STATUS "Detected machine: ${MACHINE}") + +set(TARGET mpg123) +add_library(${TARGET} + "parse.c" + "frame.c" + "format.c" + "dct64.c" + "equalizer.c" + "id3.c" + "optimize.c" + "readers.c" + "tabinit.c" + "libmpg123.c" + "index.c" + "$<$>:icy.c>" + "$<$>:icy2utf8.c>" + "$<$>:layer1.c>" + "$<$,$>>:layer2.c>" + "$<$>:layer3.c>" + "$<$>:ntom.c>" + "$<$>:synth_8bit.c>" + "$<$>:synth.c>" + "$<$,$>>:synth_s32.c>" + "$<$,$>>:synth_real.c>" + "$<$>:stringbuf.c>" + "$<$>:feature.c>" + "$<$>:lfs_wrap.c>" + $) + +if(MSVC) + if(MACHINE MATCHES "x86|amd64") + find_program(YASM_ASSEMBLER yasm) + if(NOT YASM_ASSEMBLER) + message(WARNING "Couldn't find yasm assembler for optimizded decoders. Please set YASM_ASSEMBLER variable") + set(MACHINE generic) + endif() + else() + message(WARNING "Need work to support non-x86 assembly optimizations with MSVC.") + set(MACHINE generic) + endif() +endif() + +if(MACHINE STREQUAL "amd64") + if(HAVE_FPU) + set(PLATFORM_DEFINITIONS OPT_MULTI OPT_X86_64 OPT_AVX OPT_GENERIC OPT_GENERIC_DITHER) + set(PLATFORM_SOURCES + "dct36_x86_64.S" + "dct64_x86_64_float.S" + "synth_x86_64_float.S" + "synth_x86_64_s32.S" + "synth_stereo_x86_64_float.S" + "synth_stereo_x86_64_s32.S" + "dct36_avx.S" + "dct64_avx_float.S" + "synth_stereo_avx_float.S" + "synth_stereo_avx_s32.S" + "getcpuflags_x86_64.S") + target_sources(${TARGET} PRIVATE + "dither.c") + if(ACCURATE_ROUNDING) + list(APPEND PLATFORM_SOURCES + "synth_x86_64_accurate.S" + "synth_stereo_x86_64_accurate.S" + "synth_stereo_avx_accurate.S") + else() + list(APPEND PLATFORM_SOURCES + "dct64_x86_64.S" + "synth_x86_64.S" + "synth_stereo_x86_64.S" + "synth_stereo_avx.S" + "dct64_avx.S") + endif() + else() + set(PLATFORM_DEFINITIONS OPT_GENERIC) + endif() +elseif(MACHINE STREQUAL "x86") + if(TRUE) + set(PLATFORM_DEFINITIONS OPT_I386) + target_sources(${TARGET} PRIVATE + "dct64_i386.c") + endif() + + cmake_host_system_information(RESULT HAVE_SSE QUERY HAS_SSE) + if(CMAKE_SYSTEM_NAME STREQUAL "Android") + set(HAVE_SSE ${WITH_SSE}) + endif() + if(HAVE_SSE) + set(PLATFORM_DEFINITIONS OPT_SSE) + set(PLATFORM_SOURCES + "tabinit_mmx.S" + "dct36_sse.S" + "dct64_sse_float.S" + "synth_sse_float.S" + "synth_stereo_sse_float.S" + "synth_sse_s32.S" + "synth_stereo_sse_s32.S") + if(ACCURATE_ROUNDING) + list(APPEND PLATFORM_SOURCES + "synth_sse_accurate.S" + "synth_stereo_sse_accurate.S") + else() + list(APPEND PLATFORM_SOURCES + "dct64_sse.S" + "synth_sse.S") + endif() + endif() +elseif(MACHINE STREQUAL "arm64") + set(PLATFORM_DEFINITIONS OPT_MULTI OPT_GENERIC OPT_GENERIC_DITHER OPT_NEON64) + set(PLATFORM_SOURCES + "dct36_neon64.S" + "dct64_neon64_float.S" + "synth_neon64_float.S" + "synth_neon64_s32.S" + "synth_stereo_neon64_float.S" + "synth_stereo_neon64_s32.S" + "check_neon.S") + if(ACCURATE_ROUNDING) + list(APPEND PLATFORM_SOURCES + "synth_neon64_accurate.S" + "synth_stereo_neon64_accurate.S") + else() + list(APPEND PLATFORM_SOURCES + "synth_neon64.S" + "synth_stereo_neon64.S") + endif() + target_sources(${TARGET} PRIVATE + "dither.c" + "getcpuflags_arm.c") +elseif(MACHINE STREQUAL "arm32") + if(HAVE_FPU) + set(PLATFORM_DEFINITIONS OPT_MULTI OPT_GENERIC OPT_GENERIC_DITHER OPT_NEON) + set(PLATFORM_SOURCES + "dct36_neon.S" + "dct64_neon_float.S" + "synth_neon_float.S" + "synth_neon_s32.S" + "synth_stereo_neon_float.S" + "synth_stereo_neon_s32.S" + "check_neon.S") + target_sources(${TARGET} PRIVATE + "getcpuflags_arm.c") + if(ACCURATE_ROUNDING) + list(APPEND PLATFORM_SOURCES + "synth_neon_accurate.S" + "synth_stereo_neon_accurate.S") + else() + list(APPEND PLATFORM_SOURCES + "dct64_neon.S" + "synth_neon.S" + "synth_stereo_neon.S") + endif() + target_sources(${TARGET} PRIVATE ${PLATFORM_SOURCES}) + target_sources(${TARGET} PRIVATE + "dither.c") + else() + set(PLATFORM_DEFINITIONS OPT_ARM) + if(ACCURATE_ROUNDING) + set(PLATFORM_SOURCES + "synth_arm_accurate.S") + else() + set(PLATFORM_SOURCES + "synth_arm.S") + endif() + target_sources(${TARGET} PRIVATE ${PLATFORM_SOURCES}) + endif() +elseif(MACHINE STREQUAL "generic") + set(PLATFORM_DEFINITIONS OPT_GENERIC) +endif() + +#set_target_properties(${TARGET} PROPERTIES OUTPUT_NAME mpg123) + +target_compile_definitions(${TARGET} PRIVATE + $<$>:PIC>) + +target_compile_definitions(${TARGET} PRIVATE + ${PLATFORM_DEFINITIONS} + $<$:REAL_IS_FLOAT> + $<$>:REAL_IS_FIXED>) + +if(MSVC AND MACHINE MATCHES "x86|amd64" AND YASM_ASSEMBLER) + list(TRANSFORM PLATFORM_DEFINITIONS PREPEND /D) + foreach(FILE ${PLATFORM_SOURCES}) + get_filename_component(FILENAME ${FILE} NAME) + add_custom_command( + OUTPUT ${FILENAME}.asm + COMMAND ${CMAKE_C_COMPILER} /DASMALIGN_BALIGN ${PLATFORM_DEFINITIONS} + /I"${PROJECT_SOURCE_DIR}/src" /I"${PROJECT_BINARY_DIR}/src" /P /Fi${FILENAME}.asm /Tc "${FILE}" + DEPENDS ${FILE} + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") + add_custom_command( + OUTPUT ${FILENAME}.obj + COMMAND ${YASM_ASSEMBLER} -a x86 -m ${MACHINE} -p gas -r raw -f win32 -g null -o ${FILENAME}.obj ${FILENAME}.asm + DEPENDS ${FILENAME}.asm + WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}") + target_sources(${TARGET} PRIVATE "${CMAKE_CURRENT_BINARY_DIR}/${FILENAME}.obj") + endforeach() +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>) +target_include_directories(${TARGET} INTERFACE + "$" + "$") + +install(TARGETS ${TARGET} EXPORT targets + ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}/" + LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}/" + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}/") +install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../src/include/mpg123.h" + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") +install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/../../src/include/fmt123.h" + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") + +# tildearrow: necessary +export(EXPORT targets NAMESPACE MPG123:: FILE mpg123Targets.cmake) diff --git a/extern/mpg123/ports/cmake/src/libout123/CMakeLists.txt b/extern/mpg123/src/libout123/CMakeLists.txt similarity index 100% rename from extern/mpg123/ports/cmake/src/libout123/CMakeLists.txt rename to extern/mpg123/src/libout123/CMakeLists.txt diff --git a/extern/mpg123/ports/cmake/src/libout123/modules/CMakeLists.txt b/extern/mpg123/src/libout123/modules/CMakeLists.txt similarity index 100% rename from extern/mpg123/ports/cmake/src/libout123/modules/CMakeLists.txt rename to extern/mpg123/src/libout123/modules/CMakeLists.txt diff --git a/extern/mpg123/ports/cmake/src/libsyn123/CMakeLists.txt b/extern/mpg123/src/libsyn123/CMakeLists.txt similarity index 100% rename from extern/mpg123/ports/cmake/src/libsyn123/CMakeLists.txt rename to extern/mpg123/src/libsyn123/CMakeLists.txt diff --git a/extern/mpg123/ports/cmake/src/tests/CMakeLists.txt b/extern/mpg123/src/tests/CMakeLists.txt similarity index 100% rename from extern/mpg123/ports/cmake/src/tests/CMakeLists.txt rename to extern/mpg123/src/tests/CMakeLists.txt