From b5775454f88fa986ef43ba0f780c9c581835380d Mon Sep 17 00:00:00 2001 From: Casey Langen Date: Thu, 9 Jan 2020 15:59:48 -0800 Subject: [PATCH] Fixed static macOS compiles. --- CMakeLists.txt | 8 ++++---- archive-macos.sh | 4 ++-- src/plugins/server/CMakeLists.txt | 2 +- src/plugins/server/HttpServer.h | 5 ++++- src/plugins/stockencoders/CMakeLists.txt | 19 ++++++++++++------- src/plugins/stockencoders/FfmpegEncoder.cpp | 7 ++++++- src/plugins/stockencoders/FfmpegEncoder.h | 12 +++++++++++- src/plugins/stockencoders/main.cpp | 4 ++++ src/plugins/taglib_plugin/CMakeLists.txt | 8 ++++---- .../taglib_plugin/TaglibMetadataReader.cpp | 4 ++-- 10 files changed, 50 insertions(+), 23 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d49343120..40e9062e9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -103,15 +103,15 @@ add_subdirectory(src/plugins/stockencoders) add_subdirectory(src/plugins/supereqdsp) add_subdirectory(src/plugins/gmedecoder) -if (${FFMPEG_DECODER} MATCHES "false") - message(STATUS "[ffmpeg] decoder enabled = false") +if (${FFMPEG_ENABLED} MATCHES "false") + message(STATUS "[ffmpeg] enabled = false") add_subdirectory(src/plugins/m4adecoder) add_subdirectory(src/plugins/oggdecoder) add_subdirectory(src/plugins/nomaddecoder) add_subdirectory(src/plugins/flacdecoder) add_dependencies(musikcube m4adecoder oggdecoder nomaddecoder flacdecoder) else() - message(STATUS "[ffmpeg] decoder enabled = true") + message(STATUS "[ffmpeg] enabled = true") add_subdirectory(src/plugins/ffmpegdecoder) add_dependencies(musikcube ffmpegdecoder) endif() @@ -309,7 +309,7 @@ if (GENERATE_DEB MATCHES "1") set(DEPENDENCIES "libboost-thread${DEB_BOOST_VERSION}, libboost-system${DEB_BOOST_VERSION}, libboost-chrono${DEB_BOOST_VERSION}, libboost-filesystem${DEB_BOOST_VERSION}, libboost-date-time${DEB_BOOST_VERSION}, libmicrohttpd${DEB_MICROHTTPD_VERSION}, libcurl${DEB_LIBCURL_VERSION}, libogg0, libvorbis0a, libvorbisfile3, libncursesw5, libasound2, libpulse0, pulseaudio, libmp3lame0, libev4") - if (${FFMPEG_DECODER} MATCHES "false") + if (${FFMPEG_ENABLED} MATCHES "false") set(DEPENDENCIES "${DEPENDENCIES}, libflac8, libfaad2") else() set(DEPENDENCIES "${DEPENDENCIES}, libavcodec-extra, libavutil${DEB_AVUTIL_VERSION}, libavformat${DEB_AVFORMAT_VERSION}, libswresample${DEB_SWRESAMPLE_VERSION}") diff --git a/archive-macos.sh b/archive-macos.sh index cc39db9b8..070cfff01 100755 --- a/archive-macos.sh +++ b/archive-macos.sh @@ -10,7 +10,7 @@ fi rm -rf bin/ ./clean-nix.sh -cmake -DCMAKE_BUILD_TYPE=Release -DLINK_STATICALLY=true -DFFMPEG_DECODER=false . +cmake -DCMAKE_BUILD_TYPE=Release -DLINK_STATICALLY=true -DFFMPEG_ENABLED=false . make -j4 DIRNAME="musikcube_macos_$VERSION" @@ -33,7 +33,7 @@ strip bin/musikcubed strip bin/libmusikcore.dylib strip bin/plugins/*.dylib -pushd bin/dist +pushd bin/dist tar cvf musikcube_macos_$VERSION.tar $DIRNAME bzip2 musikcube_macos_$VERSION.tar popd diff --git a/src/plugins/server/CMakeLists.txt b/src/plugins/server/CMakeLists.txt index d6fc85d0c..520285eb0 100644 --- a/src/plugins/server/CMakeLists.txt +++ b/src/plugins/server/CMakeLists.txt @@ -40,7 +40,7 @@ if (${LINK_STATICALLY} MATCHES "true") add_dependencies(server libmicrohttpd) include_directories ("${CMAKE_CURRENT_SOURCE_DIR}/microhttpd/include") - file(GLOB EXTRA_OBJS "${CMAKE_CURRENT_SOURCE_DIR}/libmicrohttpd-prefix/src/libmicrohttpd/src/microhttpd/.libs/*.o") + file(GLOB EXTRA_OBJS "${CMAKE_CURRENT_SOURCE_DIR}/libmicrohttpd-prefix/src/libmicrohttpd/src/microhttpd/*.o") target_link_libraries(server ${server_LINK_LIBS} z crypto ${EXTRA_OBJS}) else() find_library(MICROHTTPDLIB NAMES libmicrohttpd.a microhttpd) diff --git a/src/plugins/server/HttpServer.h b/src/plugins/server/HttpServer.h index 1a997ca47..012c7da2a 100644 --- a/src/plugins/server/HttpServer.h +++ b/src/plugins/server/HttpServer.h @@ -34,7 +34,10 @@ #pragma once -#include +extern "C" { + #include +} + #include "Context.h" #include #include diff --git a/src/plugins/stockencoders/CMakeLists.txt b/src/plugins/stockencoders/CMakeLists.txt index 8a5466400..bb505aa2f 100644 --- a/src/plugins/stockencoders/CMakeLists.txt +++ b/src/plugins/stockencoders/CMakeLists.txt @@ -6,6 +6,18 @@ set (stockencoders_SOURCES add_library(stockencoders SHARED ${stockencoders_SOURCES}) +if (${FFMPEG_ENABLED} MATCHES "false") + message(STATUS "[stockencoders] *not* defining FFMPEG_ENABLED") +else() + message(STATUS "[stockencoders] defining FFMPEG_ENABLED") + add_definitions(-FFMPEG_ENABLED) + # fedora (and probably other RPM-based distros) put ffmpeg includes here... + include_directories("/usr/include/ffmpeg") + include_directories("/usr/local/include/ffmpeg") + # note: static linking is a no-go (too many dependencies). sorry macOS. + target_link_libraries(stockencoders avcodec avutil avformat swresample) +endif() + # prefer static libraries on mac to make redist easier if (${LINK_STATICALLY} MATCHES "true") find_library(MP3LAMELIB NAMES libmp3lame.a mp3lame) @@ -13,10 +25,3 @@ if (${LINK_STATICALLY} MATCHES "true") else() target_link_libraries(stockencoders ${musikcube_LINK_LIBS} mp3lame) endif() - -# fedora (and probably other RPM-based distros) put ffmpeg includes here... -include_directories("/usr/include/ffmpeg") -include_directories("/usr/local/include/ffmpeg") - -# note: static linking is a no-go (too many dependencies). sorry macOS. -target_link_libraries(stockencoders avcodec avutil avformat swresample) diff --git a/src/plugins/stockencoders/FfmpegEncoder.cpp b/src/plugins/stockencoders/FfmpegEncoder.cpp index 2d57dd05c..e8cfdc2b8 100644 --- a/src/plugins/stockencoders/FfmpegEncoder.cpp +++ b/src/plugins/stockencoders/FfmpegEncoder.cpp @@ -33,6 +33,9 @@ ////////////////////////////////////////////////////////////////////////////// #include "FfmpegEncoder.h" + +#ifdef FFMPEG_ENABLED + #include "shared.h" #include #include @@ -628,4 +631,6 @@ AVFrame* FfmpegEncoder::ReallocFrame( } } return original; -} \ No newline at end of file +} + +#endif // FFMPEG_ENABLED \ No newline at end of file diff --git a/src/plugins/stockencoders/FfmpegEncoder.h b/src/plugins/stockencoders/FfmpegEncoder.h index ef2ee3ab0..2de8102d4 100644 --- a/src/plugins/stockencoders/FfmpegEncoder.h +++ b/src/plugins/stockencoders/FfmpegEncoder.h @@ -32,6 +32,14 @@ // ////////////////////////////////////////////////////////////////////////////// +#pragma once + +#ifdef WIN32 +#define FFMPEG_ENABLED +#endif + +#ifdef FFMPEG_ENABLED + #include #include #include @@ -86,4 +94,6 @@ class FfmpegEncoder : public musik::core::sdk::IBlockingEncoder { std::string format; int inputChannelCount; int inputSampleRate; -}; \ No newline at end of file +}; + +#endif // FFMPEG_ENABLED \ No newline at end of file diff --git a/src/plugins/stockencoders/main.cpp b/src/plugins/stockencoders/main.cpp index 80e2a2721..c213001d6 100644 --- a/src/plugins/stockencoders/main.cpp +++ b/src/plugins/stockencoders/main.cpp @@ -62,6 +62,7 @@ static IEnvironment* environment = nullptr; static std::set supportedFormats = { ".mp3", +#ifdef FFMPEG_ENABLED "audio/mpeg", ".ogg", "audio/ogg", @@ -76,6 +77,7 @@ static std::set supportedFormats = { ".wma", "audio/x-ms-wma", ".wv" +#endif }; static class Plugin : public IPlugin { @@ -110,9 +112,11 @@ static class EncoderFactory: public IEncoderFactory { if (isMp3(lowerType)) { return new LameEncoder(); } +#ifdef FFMPEG_ENABLED else if (supportedFormats.find(lowerType) != supportedFormats.end()) { return new FfmpegEncoder(lowerType); } +#endif return nullptr; } diff --git a/src/plugins/taglib_plugin/CMakeLists.txt b/src/plugins/taglib_plugin/CMakeLists.txt index 0ddce51a5..39ea08bec 100644 --- a/src/plugins/taglib_plugin/CMakeLists.txt +++ b/src/plugins/taglib_plugin/CMakeLists.txt @@ -4,11 +4,11 @@ set (taglibreader_SOURCES TaglibMetadataReader.cpp ) -if (${FFMPEG_DECODER} MATCHES "false") - message(STATUS "[taglibmetadatareader] *not* defining FFMPEG_DECODER") +if (${FFMPEG_ENABLED} MATCHES "false") + message(STATUS "[taglibmetadatareader] *not* defining FFMPEG_ENABLED") else() - message(STATUS "[taglibmetadatareader] defining FFMPEG_DECODER") - add_definitions(-DFFMPEG_DECODER) + message(STATUS "[taglibmetadatareader] defining FFMPEG_ENABLED") + add_definitions(-FFMPEG_ENABLED) endif() add_library(taglibreader SHARED ${taglibreader_SOURCES}) diff --git a/src/plugins/taglib_plugin/TaglibMetadataReader.cpp b/src/plugins/taglib_plugin/TaglibMetadataReader.cpp index edd645f82..cf1622669 100644 --- a/src/plugins/taglib_plugin/TaglibMetadataReader.cpp +++ b/src/plugins/taglib_plugin/TaglibMetadataReader.cpp @@ -92,7 +92,7 @@ #include #ifdef WIN32 -#define FFMPEG_DECODER +#define FFMPEG_ENABLED #endif using namespace musik::core::sdk; @@ -223,7 +223,7 @@ bool TaglibMetadataReader::CanRead(const char *extension) { if (extension) { std::string ext(str::lower(extension)); return -#ifdef FFMPEG_DECODER +#ifdef FFMPEG_ENABLED ext.compare("opus") == 0 || ext.compare("wv") == 0 || ext.compare("wma") == 0 ||