forked from obsproject/obs-studio
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathbootstrap-osx.sh
More file actions
executable file
·166 lines (141 loc) · 4.61 KB
/
bootstrap-osx.sh
File metadata and controls
executable file
·166 lines (141 loc) · 4.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
#!/usr/bin/env bash
set -e
VLC_VERSION=3.0.8
SPARKLE_VERSION=1.23.0
LIBCAFFEINE_VERSION=0.6.1
QT_VERSION=5.14.1
CEF_BUILD_VERSION=75.1.14+gc81164e+chromium-75.0.3770.100
OBSDEPS_VERSION=2020-04-24
if ! which brew >> /dev/null
then
echo Installing homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
fi
echo Installing dependencies from homebrew
brew update --preinstall
brew bundle --file ./CI/scripts/macos/Brewfile
echo Checking for VLC
VLC_PATH=$PWD/vlc-${VLC_VERSION}
if [ ! -d $VLC_PATH ]
then
[ -e ./vlc-${VLC_VERSION}.tar.xz ] || \
curl -L -O https://downloads.videolan.org/vlc/${VLC_VERSION}/vlc-${VLC_VERSION}.tar.xz
echo Uncompressing VLC
tar xf vlc-${VLC_VERSION}.tar.xz
rm vlc-${VLC_VERSION}.tar.xz
fi
echo Checking for Sparkle
if [ ! -d cmbuild/sparkle/Sparkle.framework ]
then
mkdir -p cmbuild/sparkle
[ -e ./sparkle.tar.bz2 ] || \
curl -L -o sparkle.tar.bz2 https://github.com/sparkle-project/Sparkle/releases/download/${SPARKLE_VERSION}/Sparkle-${SPARKLE_VERSION}.tar.bz2
echo Uncompressing sparkle
tar xf ./sparkle.tar.bz2 -C cmbuild/sparkle
rm ./sparkle.tar.bz2
fi
[ -d /Library/Frameworks/Sparkle.framework ] || \
sudo cp -R cmbuild/sparkle/Sparkle.framework /Library/Frameworks/Sparkle.framework
echo Checking for OBS Project Dependencies
OBSDEPS_DIR=$PWD/cmbuild/obsdeps
if [ ! -d $OBSDEPS_DIR ]
then
pushd cmbuild
[ -e ./osx-deps-${OBSDEPS_VERSION}.tar.gz ] || \
curl -L -O https://github.com/obsproject/obs-deps/releases/download/$OBSDEPS_VERSION/osx-deps-${OBSDEPS_VERSION}.tar.gz
echo Uncompressing OBS dependencies
tar xf ./osx-deps-${OBSDEPS_VERSION}.tar.gz
rm ./osx-deps-${OBSDEPS_VERSION}.tar.gz
popd
fi
[ -e /tmp/obsdeps ] || ln -s $OBSDEPS_DIR /tmp/obsdeps
echo Checking for libcaffeine
LIBCAFFEINE_DIR=$PWD/libcaffeine-v${LIBCAFFEINE_VERSION}-macos
if [ ! -d $LIBCAFFEINE_DIR ]
then
[ -e ./libcaffeine-v${LIBCAFFEINE_VERSION}-macos.7z ] || \
curl -L -O https://github.com/caffeinetv/libcaffeine/releases/download/v${LIBCAFFEINE_VERSION}/libcaffeine-v${LIBCAFFEINE_VERSION}-macos.7z
which 7z >> /dev/null || brew install p7zip
echo Uncompressing libcaffeine
7z x libcaffeine-v${LIBCAFFEINE_VERSION}-macos.7z
rm libcaffeine-v${LIBCAFFEINE_VERSION}-macos.7z
fi
CEF_BASENAME=cef_binary_${CEF_BUILD_VERSION}_macosx64
CEF_BASENAME_MINIMAL=${CEF_BASENAME}_minimal
if [ -z "${CEF_ROOT_DIR}" ]
then
CEF_ROOT_DIR=$PWD/cmbuild/${CEF_BASENAME_MINIMAL}
echo "export CEF_ROOT_DIR=$CEF_ROOT_DIR" >> $HOME/.zshrc
fi
which cmake >> /dev/null || brew install cmake
if [ ! -e ./cmbuild/${CEF_BASENAME} ]
then
if [ ! -e ${CEF_ROOT_DIR} ]
then
echo "Downloading and building CEF (this will take a while)"
pushd cmbuild
CEF_TARFILE=`echo ${CEF_BASENAME_MINIMAL}.tar.bz2 | sed 's/+/%2B/g'`
if [ ! -e ./${CEF_TARFILE} ]
then
echo Getting http://opensource.spotify.com/cefbuilds/$CEF_TARFILE
curl -L -O http://opensource.spotify.com/cefbuilds/$CEF_TARFILE
fi
echo "Uncompressing CEF"
tar xf ./${CEF_TARFILE}
rm ${CEF_TARFILE}
mkdir ${CEF_BASENAME_MINIMAL}/build
cd ${CEF_BASENAME_MINIMAL}/build
echo "Building CEF"
cmake -DCMAKE_CXX_FLAGS="-std=c++11 -stdlib=libc++" -DCMAKE_EXE_LINKER_FLAGS="-std=c++11 -stdlib=libc++" -DCMAKE_OSX_DEPLOYMENT_TARGET=10.11 ..
make -j
popd
fi
ln -s ${CEF_ROOT_DIR} ./cmbuild/${CEF_BASENAME}
fi
echo Checking for QT
QT_DIR=/usr/local/Cellar/qt/$QT_VERSION
if [ ! -e $QT_DIR ]
then
pushd /tmp
curl -O https://gist.githubusercontent.com/DDRBoxman/9c7a2b08933166f4b61ed9a44b242609/raw/ef4de6c587c6bd7f50210eccd5bd51ff08e6de13/qt.rb
brew install ./qt.rb
popd
fi
echo Checking for SWIG
if [ ! -e /usr/local/Cellar/swig/ ]
then
pushd /tmp
curl -O https://gist.githubusercontent.com/DDRBoxman/4cada55c51803a2f963fa40ce55c9d3e/raw/572c67e908bfbc1bcb8c476ea77ea3935133f5b5/swig.rb
brew install ./swig.rb
popd
fi
echo Configuring and building
mkdir -p build
pushd build
cmake \
-DENABLE_SPARKLE_UPDATER=ON \
-DDISABLE_PYTHON=ON \
-DCMAKE_OSX_DEPLOYMENT_TARGET=10.11 \
-DQTDIR="$QT_DIR" \
-DDepsPath="$OBSDEPS_DIR" \
-DVLCPath="$VLC_PATH" \
-DENABLE_VLC=ON \
-DBUILD_BROWSER=ON \
-DBROWSER_DEPLOY=ON \
-DBUILD_CAPTIONS=ON \
-DWITH_RTMPS=ON \
-DCEF_ROOT_DIR="$CEF_ROOT_DIR" \
-DLIBCAFFEINE_DIR="$LIBCAFFEINE_DIR" \
..
make -j
popd
cat <<EOT
============================================================
All done!
You may need to \`source ~/.zshrc\` to pick up new environment
variables before proceeding.
To start a new build:
cd $PWD/build && make -j
Start the app with:
cd $PWD/build/rundir/RelWithDebInfo/bin && ./obs
EOT