Minor script updates.

This commit is contained in:
casey langen 2022-02-09 15:20:57 -08:00
parent e3f870efc6
commit 42782ee6ea
7 changed files with 197 additions and 69 deletions

View File

@ -7,4 +7,4 @@ if (NOT CMAKE_SYSTEM_NAME MATCHES "Darwin")
# note: macOS does not use $ORIGIN, and uses @executable_path/ instead. we
# add a custom post build step at the bottom of this file to add this value
# to macOS binaries.
endif()
endif()

View File

@ -13,7 +13,7 @@ if (${BUILD_STANDALONE} MATCHES "true")
"${CMAKE_CURRENT_SOURCE_DIR}/vendor/ffmpeg-bin/include"
"${CMAKE_CURRENT_SOURCE_DIR}/vendor/lame-bin/include"
"${CMAKE_CURRENT_SOURCE_DIR}/vendor/libmicrohttpd-bin/include"
"${CMAKE_CURRENT_SOURCE_DIR}/vendor/zlib-bin/include"
"${CMAKE_CURRENT_SOURCE_DIR}/vendor/openssl-bin/include"
"${CMAKE_CURRENT_SOURCE_DIR}/vendor/curl-bin/include")
list(
@ -22,7 +22,7 @@ if (${BUILD_STANDALONE} MATCHES "true")
"${CMAKE_CURRENT_SOURCE_DIR}/vendor/ffmpeg-bin/lib"
"${CMAKE_CURRENT_SOURCE_DIR}/vendor/lame-bin/lib"
"${CMAKE_CURRENT_SOURCE_DIR}/vendor/libmicrohttpd-bin/lib"
"${CMAKE_CURRENT_SOURCE_DIR}/vendor/zlib-bin/lib"
"${CMAKE_CURRENT_SOURCE_DIR}/vendor/openssl-bin/lib"
"${CMAKE_CURRENT_SOURCE_DIR}/vendor/curl-bin/lib")
else()
message(STATUS "[standalone-build] *NOT* enabled!")

View File

@ -45,8 +45,12 @@ message(STATUS "[boost] includes: " ${Boost_INCLUDE_DIRS})
if (${BUILD_STANDALONE} MATCHES "true")
find_library(LIBCURL NAMES curl PATHS ${VENDOR_LINK_DIRECTORIES} NO_DEFAULT_PATH)
find_library(LIBSSL NAMES ssl PATHS ${VENDOR_LINK_DIRECTORIES} NO_DEFAULT_PATH)
find_library(LIBCRYPTO NAMES crypto PATHS ${VENDOR_LINK_DIRECTORIES} NO_DEFAULT_PATH)
else()
find_library(LIBCURL NAMES curl)
find_library(LIBSSL NAMES ssl)
find_library(LIBCRYPTO NAMES crypto)
endif()
find_library(LIBSSL NAMES ssl PATHS ${VENDOR_LINK_DIRECTORIES})

View File

@ -1,39 +1,161 @@
#!/bin/bash
set -x
rm -rf vendor
mkdir vendor
cd vendor
PLATFORM=$(uname)
if [[ "$PLATFORM" == 'Darwin' ]]; then
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:/opt/homebrew/opt/openssl/lib/pkgconfig/"
fi
#
# vars
#
export CFLAGS="-fPIC"
export CXXFLAGS="-fPIC"
ARCH=$(uname -m)
BOOST_VERSION="1_76_0"
OPENSSL_VERSION="1.1.1m"
OPENSSL_LIB_PATH="$(pwd)/openssl-${OPENSSL_VERSION}/output/lib"
CURL_VERSION="7.81.0"
LIBMICROHTTPD_VERSION="0.9.75"
FFMPEG_VERSION="5.0"
LAME_VERSION="3.100"
#
# download deps
#
wget https://boostorg.jfrog.io/artifactory/main/release/1.78.0/source/boost_${BOOST_VERSION}.tar.bz2
wget https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz
wget https://curl.se/download/${CURL_VERSION}.tar.gz
wget https://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-${LIBMICROHTTPD_VERSION}.tar.gz
wget https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2
wget https://downloads.sourceforge.net/project/lame/lame/3.100/lame-${LAME_VERSION}.tar.gz
#
# boost
#
wget https://boostorg.jfrog.io/artifactory/main/release/1.78.0/source/boost_1_76_0.tar.bz2
tar xvfj boost_1_76_0.tar.bz2
cd boost_1_76_0/
tar xvfj boost_${BOOST_VERSION}.tar.bz2
cd boost_${BOOST_VERSION}
./bootstrap.sh
./b2 headers
./b2 -d -j8 -sNO_LZMA=1 -sNO_ZSTD=1 threading=multi link=shared,static cxxflags="-fPIC -std=c++14 -stdlib=libc++" --prefix=../boost-bin/ install || exit $?
cd ..
#
# openssl
#
rm -rf openssl-bin
tar xvfz openssl-${OPENSSL_VERSION}.tar.gz
cd openssl-${OPENSSL_VERSION}
perl ./Configure --prefix=`pwd`/output no-ssl3 no-ssl3-method no-zlib "darwin64-${ARCH}-cc"
make
make install
mkdir ../openssl-bin
cp -rfp output/* ../openssl-bin
cd ..
if [ $OS == "Darwin" ]; then
cd openssl-bin/lib
install_name_tool -id "@rpath/libcrypto.1.1.dylib" libcrypto.1.1.dylib
install_name_tool -id "@rpath/libcrypto.dylib" libcrypto.dylib
install_name_tool -id "@rpath/libssl.1.1.dylib" libssl.1.1.dylib
install_name_tool -id "@rpath/libssl.dylib" libssl.dylib
install_name_tool -change "${OPENSSL_LIB_PATH}/libcrypto.1.1.dylib" "@rpath/libcrypto.1.1.dylib" libssl.1.1.dylib
install_name_tool -change "${OPENSSL_LIB_PATH}/libcrypto.1.1.dylib" "@rpath/libcrypto.dylib" libssl.dylib
cd ../../
fi
#
# curl
#
rm -rf curl-${CURL_VERSION}
rm -rf curl-bin
tar xvfz curl-${CURL_VERSION}.tar.gz
cd curl-${CURL_VERSION}
./configure --enable-shared \
--enable-static \
--with-pic \
--with-openssl="../openssl-bin/" \
--enable-optimize \
--enable-http \
--enable-proxy \
--enable-ipv6 \
--disable-rtsp \
--disable-ftp \
--disable-ftps \
--disable-gopher \
--disable-gophers \
--disable-pop3 \
--disable-pop3s \
--disable-smb \
--disable-smbs \
--disable-smtp \
--disable-telnet \
--disable-tftp \
--disable-hsts \
--disable-imap \
--disable-mqtt \
--disable-dict \
--disable-ldap \
--without-brotli \
--without-libidn2 \
--without-nghttp2 \
--prefix=`pwd`/output/
make -j8
make install
mkdir ../curl-bin
cp -rfp output/* ../curl-bin
cd ..
if [ $OS == "Darwin" ]; then
cd curl-bin/lib
install_name_tool -id "@rpath/libcurl.dylib" libcurl.dylib
install_name_tool -id "@rpath/libcurl.4.dylib" libcurl.4.dylib
install_name_tool -change "${OPENSSL_LIB_PATH}/libcrypto.1.1.dylib" "@rpath/libcrypto.1.1.dylib" libcurl.dylib
install_name_tool -change "${OPENSSL_LIB_PATH}/libcrypto.1.1.dylib" "@rpath/libcrypto.1.1.dylib" libcurl.4.dylib
install_name_tool -change "${OPENSSL_LIB_PATH}/libssl.1.1.dylib" "@rpath/libssl.1.1.dylib" libcurl.dylib
install_name_tool -change "${OPENSSL_LIB_PATH}/libssl.1.1.dylib" "@rpath/libssl.1.1.dylib" libcurl.4.dylib
cd ../../
fi
#
# libmicrohttpd
#
rm -rf libmicrohttpd-${LIBMICROHTTPD_VERSION}
rm -rf libmicrohttpd-bin
tar xvfz libmicrohttpd-${LIBMICROHTTPD_VERSION}.tar.gz
cd libmicrohttpd-${LIBMICROHTTPD_VERSION}
./configure --enable-shared --enable-static --with-pic --enable-https=no --disable-curl --prefix=`pwd`/output
make -j8 || exit $?
make install
mkdir ../libmicrohttpd-bin
cp -rfp output/* ../libmicrohttpd-bin/
cd ..
if [ $OS == "Darwin" ]; then
cd libmicrohttpd-bin/lib/
install_name_tool -id "@rpath/libmicrohttpd.dylib" libmicrohttpd.dylib
install_name_tool -id "@rpath/libmicrohttpd.12.dylib" libmicrohttpd.12.dylib
cd ../../
fi
#
# ffmpeg
#
wget https://ffmpeg.org/releases/ffmpeg-5.0.tar.bz2
tar xvfj ffmpeg-5.0.tar.bz2
cd ffmpeg-5.0
rm -rf ffmpeg-${FFMPEG_VERSION} ffmpeg-bin
tar xvfj ffmpeg-${FFMPEG_VERSION}.tar.bz2
cd ffmpeg-${FFMPEG_VERSION}
./configure \
--pkg-config-flags="--static" \
--prefix="../ffmpeg-bin/" \
--prefix="@rpath" \
--enable-rpath \
--disable-asm \
--enable-pic \
--enable-static \
@ -66,6 +188,14 @@ cd ffmpeg-5.0
--disable-videotoolbox \
--disable-audiotoolbox \
--disable-filters \
--disable-libxcb \
--disable-libxcb-shm \
--disable-libxcb-xfixes \
--disable-libxcb-shape \
--disable-sdl2 \
--disable-securetransport \
--disable-vaapi \
--disable-xlib \
--enable-demuxer=aac \
--enable-demuxer=ac3 \
--enable-demuxer=aiff \
@ -165,7 +295,6 @@ cd ffmpeg-5.0
--enable-decoder=pcm_u24le \
--enable-decoder=pcm_u32be \
--enable-decoder=pcm_u32le \
--enable-decoder=pcm_zork \
--enable-decoder=dsd_lsbf \
--enable-decoder=dsd_msbf \
--enable-decoder=dsd_lsbf_planar \
@ -195,62 +324,32 @@ cd ffmpeg-5.0
--enable-encoder=wmav1 \
--enable-encoder=wmav2 \
--disable-pthreads \
--build-suffix=-musikcube || exit $?
make -j8 || exit $?
--build-suffix=-musikcube
make -j8
make install
mkdir ../ffmpeg-bin
cp -rfp \@rpath/* ../ffmpeg-bin
cd ..
#
# libmicrohttpd
# lame
#
wget https://ftp.gnu.org/gnu/libmicrohttpd/libmicrohttpd-0.9.75.tar.gz
tar xvfz libmicrohttpd-0.9.75.tar.gz
cd libmicrohttpd-0.9.75
./configure --enable-shared --enable-static --with-pic --enable-https=no --disable-curl --prefix=`pwd`/output
make -j8 || exit $?
rm -rf lame-${LAME_VERSION} lame-bin
tar xvfz lame-${LAME_VERSION}.tar.gz
cd lame-${LAME_VERSION}
# https://sourceforge.net/p/lame/mailman/message/36081038/
perl -i.bak -0pe "s|lame_init_old\n||" include/libmp3lame.sym
./configure --disable-dependency-tracking --disable-debug --enable-nasm --prefix=$(pwd)/output
make -j8
make install
mv output ../libmicrohttpd-bin
mkdir ../lame-bin
cp -rfp output/* ../lame-bin
cd ..
#
# curl
#
wget https://curl.se/download/curl-7.81.0.tar.gz
tar xvfz curl-7.81.0.tar.gz
cd curl-7.81.0
./configure \
--enable-shared \
--enable-static \
--with-pic \
--with-openssl \
--enable-optimize \
--enable-http \
--enable-proxy \
--enable-ipv6 \
--disable-rtsp \
--disable-ftp \
--disable-ftps \
--disable-gopher \
--disable-gophers \
--disable-pop3 \
--disable-pop3s \
--disable-smb \
--disable-smbs \
--disable-smtp \
--disable-telnet \
--disable-tftp \
--disable-hsts \
--disable-imap \
--disable-mqtt \
--disable-dict \
--disable-ldap \
--without-brotli \
--without-libidn2 \
--without-nghttp2 \
--prefix=`pwd`/output
make -j8 || exit $?
make install
mv output ../curl-bin
cd ..
if [ $OS == "Darwin" ]; then
cd lame-bin/lib/
install_name_tool -id "@rpath/libmp3lame.dylib" libmp3lame.dylib
install_name_tool -id "@rpath/libmp3lame.0.dylib" libmp3lame.0.dylib
cd ../../
fi

View File

@ -9,16 +9,38 @@ popd
PLATFORM=$(uname)
if [[ "$PLATFORM" == 'Darwin' ]]; then
echo "[stage-static-vendor-libraries] no-op on darwin. not required."
exit 0
echo "[stage-static-vendor-libraries] staging macOS .dylib files..."
cp vendor/ffmpeg-bin/lib/libavcodec-musikcube.59.dylib ./bin/lib
cp vendor/ffmpeg-bin/lib/libavformat-musikcube.59.dylib ./bin/lib
cp vendor/ffmpeg-bin/lib/libavutil-musikcube.57.dylib ./bin/lib
cp vendor/ffmpeg-bin/lib/libswresample-musikcube.4.dylib ./bin/lib
cp vendor/boost-bin/lib/libboost_atomic.dylib ./bin/lib
cp vendor/boost-bin/lib/libboost_chrono.dylib ./bin/lib
cp vendor/boost-bin/lib/libboost_date_time.dylib ./bin/lib
cp vendor/boost-bin/lib/libboost_filesystem.dylib ./bin/lib
cp vendor/boost-bin/lib/libboost_system.dylib ./bin/lib
cp vendor/boost-bin/lib/libboost_thread.dylib ./bin/lib
cp vendor/openssl-bin/lib/libcrypto.dylib ./bin/lib
cp vendor/openssl-bin/lib/libssl.dylib ./bin/lib
cp vendor/curl-bin/lib/libcurl.dylib ./bin/lib
cp vendor/libmicrohttpd-bin/lib/libmicrohttpd.dylib ./bin/lib
elif [[ "$PLATFORM" == 'Linux' ]]; then
echo "[stage-static-vendor-libraries] staging linux libraries..."
echo "[stage-static-vendor-libraries] staging Linux .so files..."
cp vendor/boost-bin/lib/libboost_filesystem.so.1.78.0 ./bin/lib/
cp vendor/boost-bin/lib/libboost_thread.so.1.78.0 ./bin/lib/
cp vendor/ffmpeg-bin/lib/libavcodec-musikcube.so.59 ./bin/lib/
cp vendor/ffmpeg-bin/lib/libavformat-musikcube.so.59 ./bin/lib/
cp vendor/ffmpeg-bin/lib/libavutil-musikcube.so.57 ./bin/lib/
cp vendor/ffmpeg-bin/lib/libswresample-musikcube.so.4 ./bin/lib/
cp vendor/curl-bin/lib/libcurl.so.4 ./bin/lib/
cp /lib/x86_64-linux-gnu/libssl.so.1.1 ./bin/lib/

View File

@ -8,6 +8,9 @@ set (openmptdecoder_SOURCES
add_library(openmptdecoder SHARED ${openmptdecoder_SOURCES})
# ensure vendor'd headers take priority over our local ones.
target_include_directories(openmptdecoder BEFORE PRIVATE ${VENDOR_INCLUDE_DIRECTORIES})
find_library(OPENMPTLIB NAMES openmpt)
find_library(MPG123LIB NAMES mpg123)
find_library(ZLIB NAMES z)

View File

@ -14,7 +14,7 @@ target_include_directories(server BEFORE PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/3r
target_include_directories(server BEFORE PRIVATE ${VENDOR_INCLUDE_DIRECTORIES})
if (${BUILD_STANDALONE} MATCHES "true")
find_library(LIBMICROHTTPD NAMES libmicrohttpd.a PATHS ${VENDOR_LINK_DIRECTORIES} NO_DEFAULT_PATH NO_CACHE)
find_library(LIBMICROHTTPD NAMES microhttpd PATHS ${VENDOR_LINK_DIRECTORIES} NO_DEFAULT_PATH NO_CACHE)
else()
if (APPLE)
find_library(LIBGNUTLS NAMES gnutls)