diff --git a/CMakeLists.txt b/CMakeLists.txt index 08d407e8..8343f20c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,6 +12,7 @@ endif() set(RE3_AUDIO "OAL" CACHE STRING "Audio") option(RE3_WITH_OPUS "Build re3 with opus support" ON) +option(RE3_WITH_LIBSNDFILE "Build re3 with libsndfile (instead of internal decoder)" OFF) set_property(CACHE RE3_AUDIO PROPERTY STRINGS ${RE3_AUDIOS}) message(STATUS "RE3_AUDIO = ${RE3_AUDIO} (choices=${RE3_AUDIOS})") diff --git a/conanfile.py b/conanfile.py index 8d738311..c3a2b3ba 100644 --- a/conanfile.py +++ b/conanfile.py @@ -13,25 +13,26 @@ class Re3Conan(ConanFile): generators = "cmake", "cmake_find_package" options = { "audio": ["openal", "miles"], + "with_libsndfile": [True, False], "with_opus": [True, False], } default_options = { "audio": "openal", + "with_libsndfile": False, "with_opus": True, - "libsndfile:with_external_libs": False, - "mpg123:flexible_resampling": False, - "mpg123:network": False, - "mpg123:icy": False, - "mpg123:id3v2": False, - "mpg123:ieeefloat": False, - "mpg123:layer1": False, - "mpg123:layer2": False, - "mpg123:layer3": False, - "mpg123:moreinfo": False, - "mpg123:seektable": False, - "sdl2:vulkan": False, - "sdl2:opengl": True, - "sdl2:sdl2main": True, + # "libsndfile:with_external_libs": False, + # "mpg123:flexible_resampling": False, + # "mpg123:network": False, + # "mpg123:icy": False, + # "mpg123:id3v2": False, + # "mpg123:ieeefloat": False, + # "mpg123:layer1": False, + # "mpg123:layer2": False, + # "mpg123:layer3": False, + # "mpg123:moreinfo": False, + # "sdl2:vulkan": False, + # "sdl2:opengl": True, + # "sdl2:sdl2main": True, } no_copy_source = True @@ -42,17 +43,21 @@ class Re3Conan(ConanFile): except ConanException: return False + def configure(self): + if self.options.audio != "openal": + self.options.with_libsndfile = False + def requirements(self): self.requires("librw/{}".format(self.version)) + self.requires("mpg123/1.26.4") if self.options.audio == "openal": self.requires("openal/1.21.0") + elif self.options.audio == "miles": + self.requires("miles-sdk/{}".format(self.version)) + if self.options.with_libsndfile: + self.requires("libsndfile/1.0.30") if self.options.with_opus: self.requires("opusfile/0.12") - else: - self.requires("mpg123/1.26.4") - self.requires("libsndfile/1.0.30") - if self.options.audio == "miles": - self.requires("miles-sdk/{}".format(self.version)) def export_sources(self): for d in ("cmake", "src"): diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a7c2a3d7..0460a353 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -55,19 +55,23 @@ elseif(RE3_AUDIO STREQUAL "MSS") target_link_libraries(re3 PRIVATE MilesSDK::MilesSDK) endif() +find_package(mpg123 REQUIRED) +target_link_libraries(re3 PRIVATE + MPG123::libmpg123 +) if(RE3_WITH_OPUS) find_package(opusfile REQUIRED) target_link_libraries(re3 PRIVATE opusfile::opusfile ) target_compile_definitions(re3 PRIVATE AUDIO_OPUS) -else() - find_package(mpg123 REQUIRED) +endif() +if(RE3_WITH_LIBSNDFILE) find_package(SndFile REQUIRED) target_link_libraries(re3 PRIVATE - MPG123::libmpg123 SndFile::SndFile ) + target_compile_definitions(re3 PRIVATE AUDIO_OAL_USE_SNDFILE) endif() target_compile_definitions(re3 PRIVATE )