mirror of
https://github.com/vgmstream/vgmstream.git
synced 2025-02-17 11:18:31 +01:00
Add static building option in cmake
Not compatible: - mpeg - ffmpeg - speex - vgmstream123 - audacious plugin
This commit is contained in:
parent
3cf27332d9
commit
25d6b980dc
@ -62,6 +62,9 @@ if(WIN32)
|
||||
option(USE_CELT "Use libcelt for support of FSB CELT versions 0.6.1 and 0.11.0" ON)
|
||||
endif()
|
||||
option(USE_SPEEX "Use libspeex for support of SPEEX" ON)
|
||||
if(NOT WIN32)
|
||||
option(USE_JANSSON "Use jansson for JSON dumping" ON)
|
||||
endif()
|
||||
|
||||
# Build choices
|
||||
option(BUILD_CLI "Build vgmstream CLI" ON)
|
||||
@ -77,7 +80,22 @@ if(WIN32)
|
||||
option(BUILD_XMPLAY "Build XMPlay plugin" ON)
|
||||
set(XMPLAY_INSTALL_PREFIX CACHE PATH "Path to XMPlay installation directory")
|
||||
else()
|
||||
option(BUILD_V123 "Build vgmstream123 player" ON)
|
||||
option(BUILD_AUDACIOUS "Build Audacious plugin" ON)
|
||||
option(BUILD_STATIC "Build statically linked binary" OFF)
|
||||
endif()
|
||||
|
||||
# Static builds will link all libraries statically
|
||||
if(BUILD_STATIC)
|
||||
set(BUILD_SHARED_LIBS OFF)
|
||||
set(CMAKE_EXE_LINKER_FLAGS "-static-libgcc -static-libstdc++ -static")
|
||||
|
||||
# Libraries that are incompatible with static builds
|
||||
set(USE_MPEG OFF)
|
||||
set(USE_FFMPEG OFF)
|
||||
set(USE_SPEEX OFF)
|
||||
set(BUILD_V123 OFF)
|
||||
set(BUILD_AUDACIOUS OFF)
|
||||
endif()
|
||||
|
||||
# Autodetect some paths
|
||||
@ -149,7 +167,7 @@ else()
|
||||
endif()
|
||||
|
||||
# If building the CLI, we need to include AO as well
|
||||
if(BUILD_CLI)
|
||||
if(BUILD_V123)
|
||||
find_package(AO)
|
||||
if(AO_FOUND)
|
||||
set(USE_V123 ON)
|
||||
@ -157,20 +175,23 @@ else()
|
||||
#TODO: add proper separate option
|
||||
set(USE_V123 OFF)
|
||||
endif()
|
||||
else()
|
||||
set(USE_V123 OFF)
|
||||
endif()
|
||||
|
||||
find_package(PkgConfig REQUIRED)
|
||||
|
||||
# Only build JSON dumping capabilities on Linux
|
||||
pkg_check_modules(JANSSON jansson>=2.3)
|
||||
if (JANSSON_FOUND)
|
||||
set(USE_JANSSON ON)
|
||||
set(JANSSON_PKG libjansson)
|
||||
include_directories(${JANSSON_INCLUDE_DIRS})
|
||||
link_directories(${JANSSON_LIBRARY_DIRS})
|
||||
else (JANSSON_FOUND)
|
||||
set(USE_JANSSON OFF)
|
||||
endif (JANSSON_FOUND)
|
||||
if(USE_JANSSON)
|
||||
pkg_check_modules(JANSSON jansson>=2.3)
|
||||
if(JANSSON_FOUND)
|
||||
set(JANSSON_PKG libjansson)
|
||||
include_directories(${JANSSON_INCLUDE_DIRS})
|
||||
link_directories(${JANSSON_LIBRARY_DIRS})
|
||||
else()
|
||||
set(USE_JANSSON OFF)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# If building Audacious, we need to make sure we can find its pkg-config module as well as GTK's
|
||||
if(BUILD_AUDACIOUS)
|
||||
@ -351,7 +372,6 @@ message(STATUS " Building")
|
||||
message(STATUS "=========================")
|
||||
if(WIN32)
|
||||
message(STATUS " CLI: ${BUILD_CLI}")
|
||||
message(STATUS " JSON dumping: ${USE_JANSSON}")
|
||||
message(STATUS "foobar2000 component: ${BUILD_FB2K}")
|
||||
message(STATUS " Winamp plugin: ${BUILD_WINAMP}")
|
||||
message(STATUS " XMPlay plugin: ${BUILD_XMPLAY}")
|
||||
@ -360,6 +380,7 @@ else()
|
||||
message(STATUS " vgmstream123: ${USE_V123}")
|
||||
message(STATUS " JSON dumping: ${USE_JANSSON}")
|
||||
message(STATUS "Audacious plugin: ${BUILD_AUDACIOUS}")
|
||||
message(STATUS " Static linking: ${BUILD_STATIC}")
|
||||
endif()
|
||||
message(STATUS "")
|
||||
|
||||
|
@ -17,8 +17,10 @@ macro(setup_target TARGET)
|
||||
target_include_directories(${TARGET} PRIVATE ${VGM_SOURCE_DIR}/src)
|
||||
target_include_directories(${TARGET} PRIVATE ${VGM_SOURCE_DIR}/ext_includes)
|
||||
# Set up position-independent code for all targets
|
||||
set_target_properties(${TARGET} PROPERTIES
|
||||
POSITION_INDEPENDENT_CODE TRUE)
|
||||
set_target_properties(${TARGET} PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
|
||||
if(BUILD_STATIC)
|
||||
set_target_properties(${TARGET} PROPERTIES LINK_SEARCH_END_STATIC 1)
|
||||
endif()
|
||||
if(NOT WIN32 AND LINK)
|
||||
# Include libm on non-Windows systems
|
||||
target_link_libraries(${TARGET} m)
|
||||
@ -51,7 +53,7 @@ macro(setup_target TARGET)
|
||||
else()
|
||||
target_include_directories(${TARGET} PRIVATE ${VORBISFILE_INCLUDE_DIRS})
|
||||
if(LINK)
|
||||
target_link_libraries(${TARGET} Vorbis::VorbisFile)
|
||||
target_link_libraries(${TARGET} vorbisfile vorbis ogg m)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
@ -71,6 +73,7 @@ macro(setup_target TARGET)
|
||||
target_include_directories(${TARGET} PRIVATE ${FFMPEG_INCLUDE_DIRS})
|
||||
if(LINK)
|
||||
target_link_libraries(${TARGET} ${FFMPEG_LIBRARIES})
|
||||
#target_link_libraries(${TARGET} swresample avcodec avformat avutil pthread m soxr)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
Loading…
x
Reference in New Issue
Block a user