freedv-gui/cmake/BuildMpg123.cmake

73 lines
3.1 KiB
CMake

set(CONFIGURE_COMMAND autoreconf -i && ./configure --disable-shared --disable-components --enable-libmpg123 --prefix=${CMAKE_BINARY_DIR}/external/dist)
if (CMAKE_CROSSCOMPILING)
set(CONFIGURE_COMMAND ${CONFIGURE_COMMAND} --host=${CMAKE_C_COMPILER_TARGET} --target=${CMAKE_C_COMPILER_TARGET})
endif (CMAKE_CROSSCOMPILING)
set(MPG123_URL https://download.sourceforge.net/project/mpg123/mpg123/1.33.4/mpg123-1.33.4.tar.bz2)
set(MPG123_HASH SHA512=9b7aa93b692132da7eb8dcfef12ce91bf66bf8475af50e9c57d7b80225f96c0e74264e518e558371af1f4cf6d2afda5b3dfc844949fd747db7ac7c44d0e9f6ad)
include(ExternalProject)
if(APPLE AND BUILD_OSX_UNIVERSAL)
# mpg123 build doesn't behave properly when trying to build a universal binary;
# build it twice and use lipo to create a universal library instead.
ExternalProject_Add(build_mpg123_x86
DOWNLOAD_EXTRACT_TIMESTAMP NO
BUILD_IN_SOURCE 1
CONFIGURE_COMMAND ${CONFIGURE_COMMAND} --host=x86_64-apple-darwin --target=x86_64-apple-darwin CFLAGS=-arch\ x86_64\ -O3\ -mmacosx-version-min=11.0
BUILD_COMMAND $(MAKE) && $(MAKE) install
INSTALL_COMMAND ""
URL ${MPG123_URL}
URL_HASH ${MPG123_HASH}
)
ExternalProject_Add(build_mpg123_arm
DOWNLOAD_EXTRACT_TIMESTAMP NO
BUILD_IN_SOURCE 1
CONFIGURE_COMMAND ${CONFIGURE_COMMAND} --host=aarch64-apple-darwin --target=aarch64-apple-darwin CFLAGS=-arch\ arm64\ -O3\ -mmacosx-version-min=11.0
BUILD_COMMAND $(MAKE) && $(MAKE) install
INSTALL_COMMAND ""
URL ${MPG123_URL}
URL_HASH ${MPG123_HASH}
)
ExternalProject_Get_Property(build_mpg123_arm SOURCE_DIR)
set(MPG123_ARM_BINARY_DIR ${SOURCE_DIR})
ExternalProject_Get_Property(build_mpg123_x86 SOURCE_DIR)
set(MPG123_X86_BINARY_DIR ${SOURCE_DIR})
add_custom_command(
OUTPUT ${CMAKE_BINARY_DIR}/libmpg123${CMAKE_STATIC_LIBRARY_SUFFIX}
COMMAND lipo ${MPG123_ARM_BINARY_DIR}/src/libmpg123/.libs/libmpg123${CMAKE_STATIC_LIBRARY_SUFFIX} ${MPG123_X86_BINARY_DIR}/src/libmpg123/.libs/libmpg123${CMAKE_STATIC_LIBRARY_SUFFIX} -output ${CMAKE_BINARY_DIR}/libmpg123${CMAKE_STATIC_LIBRARY_SUFFIX} -create && cp ${CMAKE_BINARY_DIR}/libmpg123${CMAKE_STATIC_LIBRARY_SUFFIX} ${CMAKE_BINARY_DIR}/external/dist/lib
DEPENDS build_mpg123_arm build_mpg123_x86)
add_custom_target(
libmpg123.a
DEPENDS ${CMAKE_BINARY_DIR}/libmpg123${CMAKE_STATIC_LIBRARY_SUFFIX})
add_library(mpg123 STATIC IMPORTED)
add_dependencies(mpg123 libmpg123.a)
set_target_properties(mpg123 PROPERTIES
IMPORTED_LOCATION "${CMAKE_BINARY_DIR}/external/dist/lib/libmpg123${CMAKE_STATIC_LIBRARY_SUFFIX}"
)
else(APPLE AND BUILD_OSX_UNIVERSAL)
ExternalProject_Add(build_mpg123
BUILD_IN_SOURCE 1
CONFIGURE_COMMAND ${CONFIGURE_COMMAND}
BUILD_COMMAND $(MAKE) && $(MAKE) install
URL ${MPG123_URL}
URL_HASH ${MPG123_HASH}
)
add_library(mpg123 STATIC IMPORTED)
add_dependencies(mpg123 build_mpg123)
set_target_properties(mpg123 PROPERTIES
IMPORTED_LOCATION "${CMAKE_BINARY_DIR}/external/dist/lib/libmpg123${CMAKE_STATIC_LIBRARY_SUFFIX}"
IMPORTED_IMPLIB "${CMAKE_BINARY_DIR}/external/dist/lib/libmpg123${CMAKE_STATIC_LIBRARY_SUFFIX}"
)
endif(APPLE AND BUILD_OSX_UNIVERSAL)
set(MPG123_ROOT ${CMAKE_BINARY_DIR}/external/dist)