HELP
This commit is contained in:
parent
39184751d7
commit
eb0372edc5
24 changed files with 338 additions and 439 deletions
|
|
@ -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)
|
||||
|
|
|
|||
2
extern/lame/CMakeLists.txt
vendored
2
extern/lame/CMakeLists.txt
vendored
|
|
@ -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)
|
||||
|
|
|
|||
2
extern/libogg/CMakeLists.txt
vendored
2
extern/libogg/CMakeLists.txt
vendored
|
|
@ -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})
|
||||
|
|
|
|||
4
extern/libsndfile-modified/CMakeLists.txt
vendored
4
extern/libsndfile-modified/CMakeLists.txt
vendored
|
|
@ -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
|
|||
$<$<BOOL:${HAVE_EXTERNAL_XIPH_LIBS}>:FLAC::FLAC>
|
||||
$<$<AND:$<BOOL:${ENABLE_EXPERIMENTAL}>,$<BOOL:${HAVE_EXTERNAL_XIPH_LIBS}>,$<BOOL:${HAVE_SPEEX}>>:Speex::Speex>
|
||||
$<$<BOOL:${HAVE_EXTERNAL_XIPH_LIBS}>:Opus::opus>
|
||||
$<$<BOOL:${HAVE_MPEG}>:MPG123::libmpg123>
|
||||
# tildearrow: oh my freaking
|
||||
$<$<BOOL:${HAVE_MPEG}>:MPG123::mpg123>
|
||||
$<$<BOOL:${HAVE_MPEG}>:mp3lame::mp3lame>
|
||||
)
|
||||
set_target_properties (sndfile PROPERTIES
|
||||
|
|
|
|||
|
|
@ -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}"
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
45
extern/mpg123/CMakeLists.txt
vendored
45
extern/mpg123/CMakeLists.txt
vendored
|
|
@ -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")
|
||||
|
|
|
|||
|
|
@ -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})
|
||||
60
extern/mpg123/ports/cmake/CMakeLists.txt
vendored
60
extern/mpg123/ports/cmake/CMakeLists.txt
vendored
|
|
@ -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()
|
||||
6
extern/mpg123/ports/cmake/README.md
vendored
Normal file
6
extern/mpg123/ports/cmake/README.md
vendored
Normal file
|
|
@ -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
|
||||
|
|
@ -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 <stdlib.h>")
|
||||
else()
|
||||
set(INCLUDE_STDLIB_H "/* #include <stdlib.h> is not available on this system */")
|
||||
endif()
|
||||
if(HAVE_SYS_TYPES_H)
|
||||
set(INCLUDE_SYS_TYPE_H "#include <sys/types.h>")
|
||||
else()
|
||||
set(INCLUDE_SYS_TYPE_H "/* #include <sys/types.h> 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/$<$<NOT:$<BOOL:${NO_ICY}>>:icy.c>"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$<NOT:$<BOOL:${NO_ICY}>>:icy2utf8.c>"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$<NOT:$<BOOL:${NO_LAYER1}>>:layer1.c>"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$<NOT:$<OR:$<BOOL:${NO_LAYER1}>,$<BOOL:${NO_LAYER2}>>>:layer2.c>"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$<NOT:$<BOOL:${NO_LAYER3}>>:layer3.c>"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$<NOT:$<BOOL:${NO_NTOM}>>:ntom.c>"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$<NOT:$<BOOL:${NO_8BIT}>>:synth_8bit.c>"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$<NOT:$<BOOL:${NO_16BIT}>>:synth.c>"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$<AND:$<BOOL:${HAVE_FPU}>,$<NOT:$<BOOL:${NO_32BIT}>>>:synth_s32.c>"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$<AND:$<BOOL:${HAVE_FPU}>,$<NOT:$<BOOL:${NO_REAL}>>>:synth_real.c>"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$<NOT:$<BOOL:${NO_STRING}>>:stringbuf.c>"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$<NOT:$<BOOL:${NO_FEATURE_REPORT}>>:feature.c>"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/../../../../src/libmpg123/$<$<NOT:$<BOOL:${PORTABLE_API}>>:lfs_wrap.c>"
|
||||
$<TARGET_OBJECTS:compat>)
|
||||
|
||||
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
|
||||
$<$<BOOL:$<TARGET_PROPERTY:POSITION_INDEPENDENT_CODE>>:PIC>)
|
||||
|
||||
target_compile_definitions(${TARGET} PRIVATE
|
||||
${PLATFORM_DEFINITIONS}
|
||||
$<$<BOOL:${HAVE_FPU}>:REAL_IS_FLOAT>
|
||||
$<$<NOT:$<BOOL:${HAVE_FPU}>>: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
|
||||
$<$<BOOL:${HAVE_M}>:m>
|
||||
$<$<BOOL:${WANT_WIN32_UNICODE}>:shlwapi>)
|
||||
target_include_directories(${TARGET} INTERFACE
|
||||
"$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>"
|
||||
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>")
|
||||
|
||||
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}")
|
||||
|
||||
|
|
@ -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(
|
||||
$<$<BOOL:${WIN32}>:_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"
|
||||
$<$<BOOL:${NET123_EXEC}>:${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"
|
||||
$<$<BOOL:${TERM_POSIX}>:${CMAKE_CURRENT_SOURCE_DIR}/../../../src/term_posix.c>
|
||||
$<$<BOOL:${TERM_NONE}>:${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}
|
||||
$<$<BOOL:${HAVE_M}>: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)
|
||||
|
|
@ -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()
|
||||
260
extern/mpg123/src/libmpg123/CMakeLists.txt
vendored
Normal file
260
extern/mpg123/src/libmpg123/CMakeLists.txt
vendored
Normal file
|
|
@ -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 <stdlib.h>")
|
||||
else()
|
||||
set(INCLUDE_STDLIB_H "/* #include <stdlib.h> is not available on this system */")
|
||||
endif()
|
||||
if(HAVE_SYS_TYPES_H)
|
||||
set(INCLUDE_SYS_TYPE_H "#include <sys/types.h>")
|
||||
else()
|
||||
set(INCLUDE_SYS_TYPE_H "/* #include <sys/types.h> 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"
|
||||
"$<$<NOT:$<BOOL:${NO_ICY}>>:icy.c>"
|
||||
"$<$<NOT:$<BOOL:${NO_ICY}>>:icy2utf8.c>"
|
||||
"$<$<NOT:$<BOOL:${NO_LAYER1}>>:layer1.c>"
|
||||
"$<$<NOT:$<OR:$<BOOL:${NO_LAYER1}>,$<BOOL:${NO_LAYER2}>>>:layer2.c>"
|
||||
"$<$<NOT:$<BOOL:${NO_LAYER3}>>:layer3.c>"
|
||||
"$<$<NOT:$<BOOL:${NO_NTOM}>>:ntom.c>"
|
||||
"$<$<NOT:$<BOOL:${NO_8BIT}>>:synth_8bit.c>"
|
||||
"$<$<NOT:$<BOOL:${NO_16BIT}>>:synth.c>"
|
||||
"$<$<AND:$<BOOL:${HAVE_FPU}>,$<NOT:$<BOOL:${NO_32BIT}>>>:synth_s32.c>"
|
||||
"$<$<AND:$<BOOL:${HAVE_FPU}>,$<NOT:$<BOOL:${NO_REAL}>>>:synth_real.c>"
|
||||
"$<$<NOT:$<BOOL:${NO_STRING}>>:stringbuf.c>"
|
||||
"$<$<NOT:$<BOOL:${NO_FEATURE_REPORT}>>:feature.c>"
|
||||
"$<$<NOT:$<BOOL:${PORTABLE_API}>>:lfs_wrap.c>"
|
||||
$<TARGET_OBJECTS:compat>)
|
||||
|
||||
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
|
||||
$<$<BOOL:$<TARGET_PROPERTY:POSITION_INDEPENDENT_CODE>>:PIC>)
|
||||
|
||||
target_compile_definitions(${TARGET} PRIVATE
|
||||
${PLATFORM_DEFINITIONS}
|
||||
$<$<BOOL:${HAVE_FPU}>:REAL_IS_FLOAT>
|
||||
$<$<NOT:$<BOOL:${HAVE_FPU}>>: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
|
||||
$<$<BOOL:${HAVE_M}>:m>
|
||||
$<$<BOOL:${WANT_WIN32_UNICODE}>:shlwapi>)
|
||||
target_include_directories(${TARGET} INTERFACE
|
||||
"$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>"
|
||||
"$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>")
|
||||
|
||||
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)
|
||||
Loading…
Add table
Add a link
Reference in a new issue