mirror of
https://github.com/vgmstream/vgmstream.git
synced 2024-11-12 01:30:49 +01:00
Cmake: Fixes for dependencies
- Sets dependencies for targets - Fixes not being able to build single targets, like `make vgmstream_cli` - Fixes not being able to build with multiple jobs, like `make -j 5` - Compiles dependencies out of the source directory - Fixes double lib suffix, renaming liblibvgmstream.a to libvgmstream.a - Removes zlib dependency from static builds, previously required by ffmpeg - If ARCHIVE_EXTRACT is not available in cmake, mpg123 will be downloaded through svn, then fall back to git if that is not available either
This commit is contained in:
parent
fe316bb24c
commit
bf89c3503d
@ -70,9 +70,6 @@ if(NOT WIN32)
|
||||
set(ATRAC9_PATH CACHE PATH "Path to LibAtrac9")
|
||||
set(SPEEX_PATH CACHE PATH "Path to SPEEX")
|
||||
set(LIBAO_PATH CACHE PATH "Path to libao")
|
||||
if(EMSCRIPTEN)
|
||||
set(ZLIB_PATH CACHE PATH "Path to zlib")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Build choices
|
||||
|
@ -1,17 +1,36 @@
|
||||
if(NOT WIN32)
|
||||
find_package(Git QUIET)
|
||||
if(Git_FOUND)
|
||||
find_package(Subversion QUIET)
|
||||
if(Git_FOUND OR Subversion_FOUND)
|
||||
include(FetchContent)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
function(FetchDependency name)
|
||||
set(value_args DIR GIT_REPOSITORY GIT_TAG DOWNLOAD SUBDIR)
|
||||
cmake_parse_arguments(ARGS "" "${value_args}" "" ${ARGN})
|
||||
set(value_args
|
||||
DIR
|
||||
|
||||
GIT_REPOSITORY
|
||||
GIT_TAG
|
||||
GIT_UNSHALLOW
|
||||
|
||||
SVN_REPOSITORY
|
||||
SVN_REVISION
|
||||
|
||||
FILE_DOWNLOAD
|
||||
FILE_SUBDIR
|
||||
)
|
||||
set(multi_value_args
|
||||
FETCH_PRIORITY
|
||||
)
|
||||
cmake_parse_arguments(ARGS "" "${value_args}" "${multi_value_args}" ${ARGN})
|
||||
|
||||
if(NOT ARGS_DIR)
|
||||
set(ARGS_DIR ${name})
|
||||
endif()
|
||||
if(NOT ARGS_FETCH_PRIORITY)
|
||||
set(ARGS_FETCH_PRIORITY git svn file)
|
||||
endif()
|
||||
|
||||
set(${name}_BIN ${VGM_BINARY_DIR}/dependencies/${ARGS_DIR})
|
||||
set(${name}_BIN ${${name}_BIN} PARENT_SCOPE)
|
||||
@ -22,42 +41,68 @@ function(FetchDependency name)
|
||||
else()
|
||||
message(FATAL_ERROR "The provided path to ${ARGS_DIR} does not exist (Use ${name}_PATH)")
|
||||
endif()
|
||||
elseif(Git_FOUND AND ARGS_GIT_REPOSITORY OR ARGS_DOWNLOAD)
|
||||
elseif((Subversion_FOUND AND ARGS_SVN_REPOSITORY) OR (Git_FOUND AND ARGS_GIT_REPOSITORY) OR (${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.18.0" AND ARGS_FILE_DOWNLOAD))
|
||||
set(${name}_PATH ${VGM_SOURCE_DIR}/dependencies/${ARGS_DIR})
|
||||
set(${name}_PATH ${${name}_PATH} PARENT_SCOPE)
|
||||
set(${name}_SOURCE "(download)" PARENT_SCOPE)
|
||||
|
||||
if(Git_FOUND AND ARGS_GIT_REPOSITORY)
|
||||
FetchContent_Declare(${name}_FETCH
|
||||
GIT_REPOSITORY ${ARGS_GIT_REPOSITORY}
|
||||
SOURCE_DIR ${${name}_PATH}
|
||||
BINARY_DIR ${${name}_BIN}
|
||||
SUBBUILD_DIR ${${name}_BIN}-sub
|
||||
GIT_TAG ${ARGS_GIT_TAG}
|
||||
GIT_SHALLOW ON
|
||||
)
|
||||
FetchContent_GetProperties(${name}_FETCH)
|
||||
if(NOT ${name}_FETCH_POPULATED)
|
||||
message("Downloading ${ARGS_DIR}...")
|
||||
FetchContent_Populate(${name}_FETCH)
|
||||
endif()
|
||||
else()
|
||||
string(REGEX REPLACE ".*/" "" FILE ${ARGS_DOWNLOAD})
|
||||
if(NOT EXISTS ${${name}_PATH}/${FILE})
|
||||
message("Downloading ${ARGS_DIR}...")
|
||||
file(DOWNLOAD
|
||||
${ARGS_DOWNLOAD}
|
||||
${${name}_PATH}/${FILE}
|
||||
foreach(CURRENT_FETCH ${ARGS_FETCH_PRIORITY})
|
||||
if(CURRENT_FETCH STREQUAL "git" AND Git_FOUND AND ARGS_GIT_REPOSITORY)
|
||||
if(ARGS_GIT_UNSHALLOW)
|
||||
set(shallow OFF)
|
||||
else()
|
||||
set(shallow ON)
|
||||
endif()
|
||||
FetchContent_Declare(${name}_FETCH
|
||||
GIT_REPOSITORY ${ARGS_GIT_REPOSITORY}
|
||||
SOURCE_DIR ${${name}_PATH}
|
||||
BINARY_DIR ${${name}_BIN}
|
||||
SUBBUILD_DIR ${${name}_BIN}-sub
|
||||
GIT_TAG ${ARGS_GIT_TAG}
|
||||
GIT_SHALLOW ${shallow}
|
||||
)
|
||||
file(ARCHIVE_EXTRACT
|
||||
INPUT ${${name}_PATH}/${FILE}
|
||||
DESTINATION ${${name}_PATH}
|
||||
FetchContent_GetProperties(${name}_FETCH)
|
||||
if(NOT ${name}_FETCH_POPULATED)
|
||||
message("Downloading ${ARGS_DIR} (git)...")
|
||||
FetchContent_Populate(${name}_FETCH)
|
||||
endif()
|
||||
break()
|
||||
|
||||
elseif(CURRENT_FETCH STREQUAL "svn" AND Subversion_FOUND AND ARGS_SVN_REPOSITORY)
|
||||
FetchContent_Declare(${name}_FETCH
|
||||
SVN_REPOSITORY ${ARGS_SVN_REPOSITORY}
|
||||
SOURCE_DIR ${${name}_PATH}
|
||||
BINARY_DIR ${${name}_BIN}
|
||||
SUBBUILD_DIR ${${name}_BIN}-sub
|
||||
SVN_REVISION ${ARGS_SVN_REVISION}
|
||||
)
|
||||
FetchContent_GetProperties(${name}_FETCH)
|
||||
if(NOT ${name}_FETCH_POPULATED)
|
||||
message("Downloading ${ARGS_DIR} (svn)...")
|
||||
FetchContent_Populate(${name}_FETCH)
|
||||
endif()
|
||||
break()
|
||||
|
||||
elseif(CURRENT_FETCH STREQUAL "file" AND ${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.18.0" AND ARGS_FILE_DOWNLOAD)
|
||||
# no ARCHIVE_EXTRACT until 3.18
|
||||
string(REGEX REPLACE ".*/" "" FILE ${ARGS_FILE_DOWNLOAD})
|
||||
if(NOT EXISTS ${${name}_PATH}/${FILE})
|
||||
message("Downloading ${ARGS_DIR} (file)...")
|
||||
file(DOWNLOAD
|
||||
${ARGS_FILE_DOWNLOAD}
|
||||
${${name}_PATH}/${FILE}
|
||||
)
|
||||
file(ARCHIVE_EXTRACT
|
||||
INPUT ${${name}_PATH}/${FILE}
|
||||
DESTINATION ${${name}_PATH}
|
||||
)
|
||||
endif()
|
||||
if(ARGS_FILE_SUBDIR)
|
||||
set(${name}_PATH ${${name}_PATH}/${ARGS_FILE_SUBDIR} PARENT_SCOPE)
|
||||
endif()
|
||||
break()
|
||||
endif()
|
||||
if(ARGS_SUBDIR)
|
||||
set(${name}_PATH ${${name}_PATH}/${ARGS_SUBDIR} PARENT_SCOPE)
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
else()
|
||||
set(${name}_PATH "" PARENT_SCOPE)
|
||||
set(USE_${name} OFF PARENT_SCOPE)
|
||||
|
@ -6,26 +6,18 @@ if(NOT WIN32 AND USE_ATRAC9)
|
||||
)
|
||||
|
||||
if(ATRAC9_PATH)
|
||||
if(EMSCRIPTEN)
|
||||
set(ATRAC9_LINK_PATH ${ATRAC9_BIN}/embin/libatrac9.a)
|
||||
else()
|
||||
set(ATRAC9_LINK_PATH ${ATRAC9_BIN}/bin/libatrac9.a)
|
||||
endif()
|
||||
if(NOT EXISTS ${ATRAC9_LINK_PATH})
|
||||
if(EMSCRIPTEN)
|
||||
add_custom_target(ATRAC9_MAKE ALL
|
||||
COMMAND emmake make static CFLAGS="-fPIC" CC=emcc AR=emar BINDIR="${ATRAC9_BIN}/embin" && make clean
|
||||
WORKING_DIRECTORY ${ATRAC9_PATH}/C
|
||||
)
|
||||
else()
|
||||
add_custom_target(ATRAC9_MAKE ALL
|
||||
COMMAND make static CFLAGS="-fPIC" BINDIR="${ATRAC9_BIN}/bin" && make clean
|
||||
WORKING_DIRECTORY ${ATRAC9_PATH}/C
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
set(ATRAC9_LINK_PATH ${ATRAC9_BIN}/bin/libatrac9.a)
|
||||
|
||||
add_custom_target(ATRAC9_MAKE
|
||||
COMMAND make static CFLAGS="-fPIC" OBJDIR="${ATRAC9_BIN}/obj" BINDIR="${ATRAC9_BIN}/bin" CC="${CMAKE_C_COMPILER}" AR="${CMAKE_AR}"
|
||||
WORKING_DIRECTORY ${ATRAC9_PATH}/C
|
||||
BYPRODUCTS ${ATRAC9_LINK_PATH} ${ATRAC9_BIN}
|
||||
)
|
||||
|
||||
add_library(atrac9 STATIC IMPORTED)
|
||||
if(NOT EXISTS ${ATRAC9_LINK_PATH})
|
||||
add_dependencies(atrac9 ATRAC9_MAKE)
|
||||
endif()
|
||||
set_target_properties(atrac9 PROPERTIES
|
||||
IMPORTED_LOCATION ${ATRAC9_LINK_PATH}
|
||||
)
|
||||
|
@ -1,6 +1,7 @@
|
||||
if(NOT WIN32 AND BUILD_AUDACIOUS)
|
||||
set(AUDACIOUS_SOURCE "(system)")
|
||||
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_search_module(AUDACIOUS REQUIRED audacious>=3.6)
|
||||
pkg_get_variable(AUDACIOUS_PLUGIN_DIR audacious plugin_dir)
|
||||
pkg_search_module(GTK REQUIRED gtk+-3.0 gtk+-2.0)
|
||||
|
@ -59,6 +59,8 @@ if(USE_FFMPEG)
|
||||
)
|
||||
|
||||
if(FFMPEG_PATH)
|
||||
set(FFMPEG_COMPILE YES)
|
||||
|
||||
set(FFMPEG_CONF_PARSER
|
||||
ac3 mpegaudio xma vorbis opus
|
||||
)
|
||||
@ -119,6 +121,7 @@ if(USE_FFMPEG)
|
||||
--disable-decoder=${FFMPEG_CONF_DISABLE_DECODER}
|
||||
--disable-cuvid
|
||||
--disable-version3
|
||||
--disable-zlib
|
||||
--extra-libs=-static
|
||||
--extra-cflags=--static
|
||||
--pkg-config-flags=--static
|
||||
@ -130,8 +133,8 @@ if(USE_FFMPEG)
|
||||
endif()
|
||||
if(EMSCRIPTEN)
|
||||
list(APPEND FFMPEG_CONF_ARGS
|
||||
--cc=emcc
|
||||
--ranlib=emranlib
|
||||
--cc=${CMAKE_C_COMPILER}
|
||||
--ranlib=${CMAKE_RANLIB}
|
||||
--enable-cross-compile
|
||||
--target-os=none
|
||||
--arch=x86
|
||||
@ -150,47 +153,28 @@ if(USE_FFMPEG)
|
||||
set(FFMPEG_LINK_PATH ${FFMPEG_BIN}/bin/usr/local/lib)
|
||||
set(FFMPEG_INCLUDE_DIRS ${FFMPEG_BIN}/bin/usr/local/include)
|
||||
|
||||
if(NOT EXISTS ${FFMPEG_LINK_PATH}/libavutil.a)
|
||||
if(EMSCRIPTEN)
|
||||
add_custom_target(FFMPEG_MAKE ALL
|
||||
COMMAND emconfigure ./configure ${FFMPEG_CONF_ARGS} && emmake make && make install DESTDIR="${FFMPEG_BIN}/bin" && make clean
|
||||
WORKING_DIRECTORY ${FFMPEG_PATH}
|
||||
)
|
||||
else()
|
||||
add_custom_target(FFMPEG_MAKE ALL
|
||||
COMMAND ./configure ${FFMPEG_CONF_ARGS} && make && make install DESTDIR="${FFMPEG_BIN}/bin" && make clean
|
||||
WORKING_DIRECTORY ${FFMPEG_PATH}
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
file(MAKE_DIRECTORY ${FFMPEG_BIN})
|
||||
add_custom_target(FFMPEG_CONFIGURE
|
||||
COMMAND "${FFMPEG_PATH}/configure" ${FFMPEG_CONF_ARGS}
|
||||
BYPRODUCTS ${FFMPEG_BIN}/Makefile
|
||||
WORKING_DIRECTORY ${FFMPEG_BIN}
|
||||
)
|
||||
add_custom_target(FFMPEG_MAKE
|
||||
COMMAND make && make install DESTDIR="${FFMPEG_BIN}/bin"
|
||||
DEPENDS ${FFMPEG_BIN}/Makefile
|
||||
BYPRODUCTS ${FFMPEG_BIN}
|
||||
WORKING_DIRECTORY ${FFMPEG_BIN}
|
||||
)
|
||||
|
||||
foreach(LIB avutil avformat swresample avcodec)
|
||||
add_library(${LIB} STATIC IMPORTED)
|
||||
if(NOT EXISTS ${FFMPEG_LINK_PATH}/lib${LIB}.a)
|
||||
add_dependencies(${LIB} FFMPEG_MAKE)
|
||||
endif()
|
||||
set_target_properties(${LIB} PROPERTIES
|
||||
IMPORTED_LOCATION ${FFMPEG_LINK_PATH}/lib${LIB}.a
|
||||
)
|
||||
endforeach()
|
||||
|
||||
if(EMSCRIPTEN)
|
||||
FetchDependency(ZLIB
|
||||
DIR zlib
|
||||
DOWNLOAD https://zlib.net/zlib-1.2.11.tar.xz
|
||||
SUBDIR zlib-1.2.11
|
||||
)
|
||||
|
||||
if(ZLIB_PATH)
|
||||
add_subdirectory(${ZLIB_PATH} ${ZLIB_BIN})
|
||||
set_target_properties(zlib example minigzip example64 minigzip64 PROPERTIES
|
||||
EXCLUDE_FROM_ALL TRUE
|
||||
EXCLUDE_FROM_DEFAULT_BUILD TRUE
|
||||
)
|
||||
|
||||
add_library(z STATIC IMPORTED)
|
||||
set_target_properties(z PROPERTIES
|
||||
IMPORTED_LOCATION ${ZLIB_BIN}/libz.a
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
@ -15,32 +15,50 @@ if(NOT WIN32 AND BUILD_V123)
|
||||
|
||||
if(LIBAO_PATH)
|
||||
if(BUILD_STATIC)
|
||||
set(LIBAO_CONF_ARGS --enable-static=yes --enable-shared=no)
|
||||
set(LIBAO_CONF_ARGS --enable-static --disable-shared)
|
||||
set(LINK_EXT .a)
|
||||
else()
|
||||
set(LIBAO_CONF_ARGS --enable-static=no --enable-shared=yes)
|
||||
set(LIBAO_CONF_ARGS --disable-static --enable-shared)
|
||||
set(LINK_EXT .so)
|
||||
endif()
|
||||
set(LIBAO_LINK_PATH ${LIBAO_BIN}/bin/usr/local/lib/libao${LINK_EXT})
|
||||
set(LIBAO_INCLUDE ${LIBAO_BIN}/bin/usr/local/include)
|
||||
|
||||
if(NOT EXISTS ${LIBAO_LINK_PATH})
|
||||
add_custom_target(LIBAO_MAKE ALL
|
||||
COMMAND ./autogen.sh && ./configure ${LIBAO_CONF_ARGS} && make clean && make && make install DESTDIR=${LIBAO_BIN}/bin
|
||||
if(NOT EXISTS ${LIBAO_PATH}/configure)
|
||||
add_custom_target(LIBAO_AUTORECONF
|
||||
COMMAND ./autogen.sh
|
||||
BYPRODUCTS ${LIBAO_PATH}/configure
|
||||
WORKING_DIRECTORY ${LIBAO_PATH}
|
||||
)
|
||||
endif()
|
||||
|
||||
file(MAKE_DIRECTORY ${LIBAO_BIN})
|
||||
add_custom_target(LIBAO_CONFIGURE
|
||||
COMMAND "${LIBAO_PATH}/configure" ${LIBAO_CONF_ARGS} CC="${CMAKE_C_COMPILER}" AR="${CMAKE_AR}"
|
||||
DEPENDS ${LIBAO_PATH}/configure
|
||||
BYPRODUCTS ${LIBAO_BIN}/Makefile
|
||||
WORKING_DIRECTORY ${LIBAO_BIN}
|
||||
)
|
||||
add_custom_target(LIBAO_MAKE
|
||||
COMMAND make && make install DESTDIR=${LIBAO_BIN}/bin
|
||||
DEPENDS ${LIBAO_BIN}/Makefile
|
||||
BYPRODUCTS ${LIBAO_LINK_PATH} ${LIBAO_BIN}
|
||||
WORKING_DIRECTORY ${LIBAO_BIN}
|
||||
)
|
||||
|
||||
if(BUILD_STATIC)
|
||||
add_library(ao STATIC IMPORTED)
|
||||
else()
|
||||
add_library(ao SHARED IMPORTED)
|
||||
endif()
|
||||
if(NOT EXISTS ${LIBAO_LINK_PATH})
|
||||
add_dependencies(ao LIBAO_MAKE)
|
||||
endif()
|
||||
set_target_properties(ao PROPERTIES
|
||||
IMPORTED_LOCATION ${LIBAO_LINK_PATH}
|
||||
)
|
||||
elseif(BUILD_STATIC)
|
||||
message(FATAL_ERROR "Path to libao must be set. (Use LIBAO_PATH)")
|
||||
message(FATAL_ERROR "Path to libao must be set. (Use LIBAO_PATH or turn off BUILD_V123)")
|
||||
else()
|
||||
set(BUILD_V123 OFF)
|
||||
endif()
|
||||
|
@ -7,39 +7,53 @@ if(NOT WIN32 AND USE_MPEG)
|
||||
endif()
|
||||
endif()
|
||||
if(MPEG_PATH OR BUILD_STATIC OR NOT MPG123_FOUND)
|
||||
if(${CMAKE_VERSION} VERSION_LESS "3.18.0")
|
||||
# no ARCHIVE_EXTRACT until 3.18
|
||||
FetchDependency(MPEG
|
||||
DIR mpg123
|
||||
# "official" git repo: https://www.mpg123.de/trunk/.git/ but *very* slow (HTTP emulation)
|
||||
# (original is svn://scm.orgis.org/mpg123/trunk, FetchDependency would need SVN_REPOSITORY and stuff)
|
||||
# "official" git mirror (default branch is not master), works too
|
||||
# not sure how to set branch + commit fedb989a4d300199f09757815409d3a89b8bc63 (v1.28.2)
|
||||
GIT_REPOSITORY https://github.com/madebr/mpg123
|
||||
GIT_TAG master
|
||||
)
|
||||
set(MPEG_BUILD_COMMAND autoreconf -iv && ./configure --enable-static=yes --enable-shared=no && make && make install DESTDIR="${MPEG_BIN}/bin" && make clean)
|
||||
else()
|
||||
FetchDependency(MPEG
|
||||
DIR mpg123
|
||||
DOWNLOAD https://downloads.sourceforge.net/mpg123/mpg123-1.28.2.tar.bz2
|
||||
SUBDIR mpg123-1.28.2
|
||||
)
|
||||
set(MPEG_BUILD_COMMAND ./configure --enable-static=yes --enable-shared=no && make && make install DESTDIR="${MPEG_BIN}/bin" && make clean)
|
||||
endif()
|
||||
|
||||
if(MPEG_PATH)
|
||||
set(MPEG_LINK_PATH ${MPEG_BIN}/bin/usr/local/lib/libmpg123.a)
|
||||
set(MPG123_INCLUDE_DIR ${MPEG_BIN}/bin/usr/local/include)
|
||||
FetchDependency(MPEG
|
||||
DIR mpg123
|
||||
FETCH_PRIORITY file svn git
|
||||
|
||||
if(NOT EXISTS ${MPEG_LINK_PATH})
|
||||
add_custom_target(MPEG_MAKE ALL
|
||||
COMMAND ${MPEG_BUILD_COMMAND}
|
||||
FILE_DOWNLOAD https://downloads.sourceforge.net/mpg123/mpg123-1.28.2.tar.bz2
|
||||
FILE_SUBDIR mpg123-1.28.2
|
||||
|
||||
SVN_REPOSITORY svn://scm.orgis.org/mpg123/trunk
|
||||
SVN_REVISION -r4968
|
||||
|
||||
# "official" git repo: https://www.mpg123.de/trunk/.git/ but *very* slow (HTTP emulation)
|
||||
# "official" git mirror (default branch is not master), works too
|
||||
GIT_REPOSITORY https://github.com/madebr/mpg123
|
||||
GIT_TAG efedb989a4d300199f09757815409d3a89b8bc63
|
||||
GIT_UNSHALLOW ON
|
||||
)
|
||||
|
||||
if(MPEG_PATH)
|
||||
set(MPEG_LINK_PATH ${MPEG_BIN}/src/libmpg123/.libs/libmpg123.a)
|
||||
set(MPG123_INCLUDE_DIR ${MPEG_PATH}/src)
|
||||
|
||||
if(NOT EXISTS ${MPEG_PATH}/configure)
|
||||
add_custom_target(MPEG_AUTORECONF
|
||||
COMMAND autoreconf -iv
|
||||
BYPRODUCTS ${MPEG_PATH}/configure
|
||||
WORKING_DIRECTORY ${MPEG_PATH}
|
||||
)
|
||||
endif()
|
||||
|
||||
file(MAKE_DIRECTORY ${MPEG_BIN})
|
||||
add_custom_target(MPEG_CONFIGURE
|
||||
COMMAND "${MPEG_PATH}/configure" --enable-static --disable-shared CC="${CMAKE_C_COMPILER}" AR="${CMAKE_AR}"
|
||||
DEPENDS ${MPEG_PATH}/configure
|
||||
BYPRODUCTS ${MPEG_BIN}/Makefile
|
||||
WORKING_DIRECTORY ${MPEG_BIN}
|
||||
)
|
||||
add_custom_target(MPEG_MAKE
|
||||
COMMAND make src/libmpg123/libmpg123.la
|
||||
DEPENDS ${MPEG_BIN}/Makefile
|
||||
BYPRODUCTS ${MPEG_LINK_PATH} ${MPEG_BIN}
|
||||
WORKING_DIRECTORY ${MPEG_BIN}
|
||||
)
|
||||
|
||||
add_library(mpg123 STATIC IMPORTED)
|
||||
if(NOT EXISTS ${MPEG_LINK_PATH})
|
||||
add_dependencies(mpg123 MPEG_MAKE)
|
||||
endif()
|
||||
set_target_properties(mpg123 PROPERTIES
|
||||
IMPORTED_LOCATION ${MPEG_LINK_PATH}
|
||||
)
|
||||
|
@ -14,26 +14,34 @@ if(NOT WIN32 AND USE_SPEEX)
|
||||
)
|
||||
|
||||
if(SPEEX_PATH)
|
||||
if(EMSCRIPTEN)
|
||||
set(SPEEX_LINK_PATH ${SPEEX_BIN}/embin/usr/local/lib/libspeex.a)
|
||||
else()
|
||||
set(SPEEX_LINK_PATH ${SPEEX_BIN}/bin/usr/local/lib/libspeex.a)
|
||||
endif()
|
||||
if(NOT EXISTS ${SPEEX_LINK_PATH})
|
||||
if(EMSCRIPTEN)
|
||||
add_custom_target(SPEEX_MAKE ALL
|
||||
COMMAND emconfigure ./autogen.sh && emconfigure ./configure --enable-static=yes --enable-shared=no && emmake make && make install DESTDIR="${SPEEX_BIN}/embin" && make clean
|
||||
WORKING_DIRECTORY ${SPEEX_PATH}
|
||||
)
|
||||
else()
|
||||
add_custom_target(SPEEX_MAKE ALL
|
||||
COMMAND ./autogen.sh && ./configure --enable-static=yes --enable-shared=no && make && make install DESTDIR="${SPEEX_BIN}/bin" && make clean
|
||||
WORKING_DIRECTORY ${SPEEX_PATH}
|
||||
)
|
||||
endif()
|
||||
set(SPEEX_LINK_PATH ${SPEEX_BIN}/libspeex/.libs/libspeex.a)
|
||||
|
||||
if(NOT EXISTS ${SPEEX_PATH}/configure)
|
||||
add_custom_target(SPEEX_AUTORECONF
|
||||
COMMAND ./autogen.sh
|
||||
BYPRODUCTS ${SPEEX_PATH}/configure
|
||||
WORKING_DIRECTORY ${SPEEX_PATH}
|
||||
)
|
||||
endif()
|
||||
|
||||
file(MAKE_DIRECTORY ${SPEEX_BIN})
|
||||
add_custom_target(SPEEX_CONFIGURE
|
||||
COMMAND "${SPEEX_PATH}/configure" --enable-static --disable-shared --disable-binaries CC="${CMAKE_C_COMPILER}" AR="${CMAKE_AR}"
|
||||
DEPENDS ${SPEEX_PATH}/configure
|
||||
BYPRODUCTS ${SPEEX_BIN}/Makefile
|
||||
WORKING_DIRECTORY ${SPEEX_BIN}
|
||||
)
|
||||
add_custom_target(SPEEX_MAKE
|
||||
COMMAND make
|
||||
DEPENDS ${SPEEX_BIN}/Makefile
|
||||
BYPRODUCTS ${SPEEX_LINK_PATH} ${SPEEX_BIN}
|
||||
WORKING_DIRECTORY ${SPEEX_BIN}
|
||||
)
|
||||
|
||||
add_library(speex STATIC IMPORTED)
|
||||
if(NOT EXISTS ${SPEEX_LINK_PATH})
|
||||
add_dependencies(speex SPEEX_MAKE)
|
||||
endif()
|
||||
set_target_properties(speex PROPERTIES
|
||||
IMPORTED_LOCATION ${SPEEX_LINK_PATH}
|
||||
)
|
||||
|
@ -72,11 +72,11 @@ macro(setup_target TARGET)
|
||||
else()
|
||||
target_include_directories(${TARGET} PRIVATE ${FFMPEG_INCLUDE_DIRS})
|
||||
if(LINK)
|
||||
if(BUILD_STATIC)
|
||||
if(FFMPEG_COMPILE)
|
||||
if(USE_FFMPEG_LIBOPUS)
|
||||
target_link_libraries(${TARGET} avformat avcodec avutil swresample opus pthread m z)
|
||||
target_link_libraries(${TARGET} avformat avcodec avutil swresample opus pthread m)
|
||||
else()
|
||||
target_link_libraries(${TARGET} avformat avcodec avutil swresample pthread m z)
|
||||
target_link_libraries(${TARGET} avformat avcodec avutil swresample pthread m)
|
||||
endif()
|
||||
else()
|
||||
target_link_libraries(${TARGET} ${FFMPEG_LIBRARIES})
|
||||
@ -115,7 +115,7 @@ macro(setup_target TARGET)
|
||||
target_link_libraries(${TARGET} ${VGM_BINARY_DIR}/ext_libs/libatrac9.lib)
|
||||
endif()
|
||||
if(NOT WIN32 AND LINK)
|
||||
target_link_libraries(${TARGET} atrac9)
|
||||
target_link_libraries(${TARGET} atrac9 m)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
@ -37,6 +37,11 @@ add_library(libvgmstream STATIC
|
||||
${EXT_HEADERS}
|
||||
${MAIN_HEADERS}
|
||||
${MAIN_SOURCES})
|
||||
set_target_properties(libvgmstream PROPERTIES PREFIX "")
|
||||
|
||||
if(USE_FFMPEG)
|
||||
add_dependencies(libvgmstream avcodec)
|
||||
endif()
|
||||
|
||||
setup_target(libvgmstream)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user