vcpkg/ports/mpg123/portfile.cmake
Kevin Lu 5512eafd80
[mpg123] Allow cross-compiling, fix previous builds tainting rebuilds (#11535)
* [mpg123] Allow cross-compiling, fix previous builds tainting rebuilds

* [mpg123] Rewrite to use vcpkg_configure_make

* Update ports/mpg123/portfile.cmake

Co-authored-by: Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com>

* [mpg123] Use vcpkg_execute_required_process

* [mpg123] Bump CONTROL version

* [mpg123] Remove unneeded legacy lines and strip out trailing newline from dumpmachine

* pre-install yasm on OSX.

Co-authored-by: Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com>
Co-authored-by: Robert Schumacher <roschuma@microsoft.com>
Co-authored-by: JackBoosY <yuzaiyang@beyondsoft.com>
2020-08-01 13:56:56 -07:00

156 lines
5.7 KiB
CMake

set(MPG123_VERSION 1.25.8)
set(MPG123_HASH f226317dddb07841a13753603fa13c0a867605a5a051626cb30d45cfba266d3d4296f5b8254f65b403bb5eef6addce1784ae8829b671a746854785cda1bad203)
#architecture detection
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
set(MPG123_ARCH Win32)
set(MPG123_CONFIGURATION _x86)
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
set(MPG123_ARCH x64)
set(MPG123_CONFIGURATION _x86)
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm")
set(MPG123_ARCH ARM)
set(MPG123_CONFIGURATION _Generic)
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
set(MPG123_ARCH ARM64)
set(MPG123_CONFIGURATION _Generic)
else()
message(FATAL_ERROR "unsupported architecture")
endif()
#linking
if (VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
set(MPG123_CONFIGURATION_SUFFIX _Dll)
endif()
vcpkg_from_sourceforge(
OUT_SOURCE_PATH SOURCE_PATH
REPO mpg123/mpg123
REF ${MPG123_VERSION}
FILENAME "mpg123-${MPG123_VERSION}.tar.bz2"
SHA512 ${MPG123_HASH}
PATCHES
0001-fix-crt-linking.patch
0002-fix-x86-build.patch
0003-add-arm-configs.patch
0004-add-arm64-uwp-config.patch
)
vcpkg_find_acquire_program(YASM)
get_filename_component(YASM_EXE_PATH ${YASM} DIRECTORY)
set(ENV{PATH} "$ENV{PATH};${YASM_EXE_PATH}")
if(VCPKG_TARGET_IS_UWP)
vcpkg_build_msbuild(
PROJECT_PATH ${SOURCE_PATH}/ports/MSVC++/2015/uwp/libmpg123/libmpg123.vcxproj
OPTIONS /p:UseEnv=True
)
message(STATUS "Installing")
file(INSTALL
${SOURCE_PATH}/ports/MSVC++/2015/uwp/libmpg123/${MPG123_ARCH}/Debug/libmpg123/libmpg123.dll
${SOURCE_PATH}/ports/MSVC++/2015/uwp/libmpg123/${MPG123_ARCH}/Debug/libmpg123/libmpg123.pdb
DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin
)
file(INSTALL
${SOURCE_PATH}/ports/MSVC++/2015/uwp/libmpg123/${MPG123_ARCH}/Debug/libmpg123/libmpg123.lib
DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib
)
file(INSTALL
${SOURCE_PATH}/ports/MSVC++/2015/uwp/libmpg123/${MPG123_ARCH}/Release/libmpg123/libmpg123.dll
${SOURCE_PATH}/ports/MSVC++/2015/uwp/libmpg123/${MPG123_ARCH}/Release/libmpg123/libmpg123.pdb
DESTINATION ${CURRENT_PACKAGES_DIR}/bin
)
file(INSTALL
${SOURCE_PATH}/ports/MSVC++/2015/uwp/libmpg123/${MPG123_ARCH}/Release/libmpg123/libmpg123.lib
DESTINATION ${CURRENT_PACKAGES_DIR}/lib
)
file(INSTALL
${SOURCE_PATH}/ports/MSVC++/mpg123.h
${SOURCE_PATH}/src/libmpg123/fmt123.h
${SOURCE_PATH}/src/libmpg123/mpg123.h.in
DESTINATION ${CURRENT_PACKAGES_DIR}/include
)
elseif(VCPKG_TARGET_IS_WINDOWS)
vcpkg_build_msbuild(
PROJECT_PATH ${SOURCE_PATH}/ports/MSVC++/2015/win32/libmpg123/libmpg123.vcxproj
OPTIONS /p:UseEnv=True
RELEASE_CONFIGURATION Release${MPG123_CONFIGURATION}${MPG123_CONFIGURATION_SUFFIX}
DEBUG_CONFIGURATION Debug${MPG123_CONFIGURATION}${MPG123_CONFIGURATION_SUFFIX}
)
message(STATUS "Installing")
if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
file(INSTALL
${SOURCE_PATH}/ports/MSVC++/2015/win32/libmpg123/${MPG123_ARCH}/Debug/libmpg123.dll
${SOURCE_PATH}/ports/MSVC++/2015/win32/libmpg123/${MPG123_ARCH}/Debug/libmpg123.pdb
DESTINATION ${CURRENT_PACKAGES_DIR}/debug/bin
)
file(INSTALL
${SOURCE_PATH}/ports/MSVC++/2015/win32/libmpg123/${MPG123_ARCH}/Release/libmpg123.dll
${SOURCE_PATH}/ports/MSVC++/2015/win32/libmpg123/${MPG123_ARCH}/Release/libmpg123.pdb
DESTINATION ${CURRENT_PACKAGES_DIR}/bin
)
else()
file(INSTALL
${SOURCE_PATH}/ports/MSVC++/2015/win32/libmpg123/${MPG123_ARCH}/Debug_x86/libmpg123.pdb
DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib
)
file(INSTALL
${SOURCE_PATH}/ports/MSVC++/2015/win32/libmpg123/${MPG123_ARCH}/Release_x86/libmpg123.pdb
DESTINATION ${CURRENT_PACKAGES_DIR}/lib
)
endif()
file(INSTALL
${SOURCE_PATH}/ports/MSVC++/2015/win32/libmpg123/${MPG123_ARCH}/Debug/libmpg123.lib
DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib
)
file(INSTALL
${SOURCE_PATH}/ports/MSVC++/2015/win32/libmpg123/${MPG123_ARCH}/Release/libmpg123.lib
DESTINATION ${CURRENT_PACKAGES_DIR}/lib
)
file(INSTALL
${SOURCE_PATH}/ports/MSVC++/mpg123.h
${SOURCE_PATH}/src/libmpg123/fmt123.h
${SOURCE_PATH}/src/libmpg123/mpg123.h.in
DESTINATION ${CURRENT_PACKAGES_DIR}/include
)
elseif(VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_LINUX)
set(MPG123_OPTIONS
--disable-dependency-tracking
)
# Find cross-compiler prefix
if(VCPKG_CHAINLOAD_TOOLCHAIN_FILE)
include("${VCPKG_CHAINLOAD_TOOLCHAIN_FILE}")
endif()
if(CMAKE_C_COMPILER)
vcpkg_execute_required_process(
COMMAND ${CMAKE_C_COMPILER} -dumpmachine
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}
LOGNAME dumpmachine-${TARGET_TRIPLET}
)
file(READ ${CURRENT_BUILDTREES_DIR}/dumpmachine-${TARGET_TRIPLET}-out.log MPG123_HOST)
string(REPLACE "\n" "" MPG123_HOST "${MPG123_HOST}")
message(STATUS "Cross-compiling with ${CMAKE_C_COMPILER}")
message(STATUS "Detected autoconf triplet --host=${MPG123_HOST}")
set(MPG123_OPTIONS
--host=${MPG123_HOST}
${MPG123_OPTIONS}
)
endif()
vcpkg_configure_make(
SOURCE_PATH ${SOURCE_PATH}
OPTIONS ${MPG123_OPTIONS}
)
vcpkg_install_make()
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
endif()
file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
message(STATUS "Installing done")