Skip to content

Commit 2872545

Browse files
committed
optimize PKG_CONFIG_LIBDIR logic
1 parent 3fb14f6 commit 2872545

File tree

3 files changed

+80
-147
lines changed

3 files changed

+80
-147
lines changed

apple/do-compile/any.sh

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -161,10 +161,6 @@ function do_compile() {
161161
exit 1
162162
fi
163163

164-
# disabling pkg-config-path
165-
# https://gstreamer-devel.narkive.com/TeNagSKN/gst-devel-disabling-pkg-config-path
166-
export PKG_CONFIG_LIBDIR=./
167-
# export PKG_CONFIG_LIBDIR=${sysroot}/lib/pkgconfig
168164
mkdir -p "$XC_BUILD_PREFIX"
169165
./do-compile/$LIB_NAME.sh
170166
}
@@ -179,9 +175,19 @@ function resolve_dep() {
179175

180176
function do_clean() {
181177
init_arch_env $1
182-
echo "XC_BUILD_SOURCE:$XC_BUILD_SOURCE"
183-
[[ -f $XC_BUILD_SOURCE ]] && cd $XC_BUILD_SOURCE && git clean -xdf && cd - >/dev/null
184-
rm -rf $XC_BUILD_PREFIX >/dev/null
178+
179+
if [[ -d $XC_BUILD_SOURCE ]];then
180+
echo "git clean:$XC_BUILD_SOURCE"
181+
cd $XC_BUILD_SOURCE
182+
git clean -xdf >/dev/null
183+
cd - >/dev/null
184+
fi
185+
186+
if [[ -d $XC_BUILD_PREFIX ]];then
187+
echo "rm:$XC_BUILD_PREFIX"
188+
rm -rf $XC_BUILD_PREFIX >/dev/null
189+
fi
190+
185191
}
186192

187193
function main() {
@@ -212,7 +218,7 @@ function main() {
212218
'rebuild')
213219
echo '---clean for rebuild-----------------'
214220
XC_CMD='clean'
215-
main >/dev/null
221+
main #>/dev/null
216222
echo '---build for rebuild-----------------'
217223
XC_CMD='build'
218224
main

apple/do-compile/ffmpeg.sh

Lines changed: 40 additions & 139 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ env_assert "XC_BUILD_SOURCE"
3333
env_assert "XC_BUILD_PREFIX"
3434
env_assert "XCRUN_SDK_PATH"
3535
env_assert "XC_THREAD"
36+
env_assert "PKG_CONFIG_LIBDIR"
3637
echo "XC_DEBUG:$XC_DEBUG"
3738
echo "===check env end==="
3839

@@ -87,214 +88,114 @@ CFG_FLAGS="$CFG_FLAGS --pkg-config-flags=--static"
8788
LDFLAGS="$C_FLAGS"
8889
FFMPEG_DEP_LIBS=
8990

90-
echo "----------------------"
91-
echo "[*] check OpenSSL"
92-
9391
# https://ffmpeg.org/doxygen/4.1/md_LICENSE.html
9492
# https://www.openssl.org/source/license.html
9593

96-
MY_PKG_CONFIG_LIBDIR=''
97-
# with openssl
98-
# use pkg-config fix ff4.0--ijk0.8.8--20210426--001 use openssl 1_1_1m occur can't find openssl error.
99-
if [[ -f "${XC_PRODUCT_ROOT}/openssl-$_XC_ARCH/lib/pkgconfig/openssl.pc" ]]; then
100-
CFG_FLAGS="$CFG_FLAGS --enable-nonfree --enable-openssl"
101-
if [[ -n "$MY_PKG_CONFIG_LIBDIR" ]]; then
102-
MY_PKG_CONFIG_LIBDIR="$MY_PKG_CONFIG_LIBDIR:"
103-
fi
104-
MY_PKG_CONFIG_LIBDIR="${MY_PKG_CONFIG_LIBDIR}${XC_PRODUCT_ROOT}/openssl-$_XC_ARCH/lib/pkgconfig"
105-
106-
echo "[*] --enable-openssl"
107-
elif [[ -f "${XC_PRODUCT_ROOT}/universal/openssl/lib/pkgconfig/openssl.pc" ]]; then
108-
CFG_FLAGS="$CFG_FLAGS --enable-nonfree --enable-openssl"
109-
if [[ -n "$MY_PKG_CONFIG_LIBDIR" ]]; then
110-
MY_PKG_CONFIG_LIBDIR="$MY_PKG_CONFIG_LIBDIR:"
111-
fi
112-
MY_PKG_CONFIG_LIBDIR="${MY_PKG_CONFIG_LIBDIR}${XC_PRODUCT_ROOT}/universal/openssl/lib/pkgconfig"
113-
114-
echo "[*] --enable-openssl"
115-
else
116-
echo "[*] --disable-openssl"
117-
fi
94+
# pkg-config --variable pc_path pkg-config
95+
# pkg-config --libs dav1d
96+
# pkg-config --cflags --libs libbluray
11897

11998
echo "----------------------"
12099
echo "[*] check x264"
121100

122-
# with x264
123-
if [[ -f "${XC_PRODUCT_ROOT}/x264-$_XC_ARCH/lib/pkgconfig/x264.pc" ]]; then
124-
# libx264 is gpl and --enable-gpl is not specified.
125-
CFG_FLAGS="$CFG_FLAGS --enable-gpl --enable-libx264"
126-
127-
if [[ -n "$MY_PKG_CONFIG_LIBDIR" ]]; then
128-
MY_PKG_CONFIG_LIBDIR="$MY_PKG_CONFIG_LIBDIR:"
129-
fi
130-
MY_PKG_CONFIG_LIBDIR="${MY_PKG_CONFIG_LIBDIR}${XC_PRODUCT_ROOT}/x264-$_XC_ARCH/lib/pkgconfig"
101+
pkg-config --libs x264 --silence-errors >/dev/null && enable_x264=1
131102

103+
if [[ $enable_x264 ]];then
132104
echo "[*] --enable-libx264"
105+
CFG_FLAGS="$CFG_FLAGS --enable-gpl --enable-libx264"
133106
else
134107
echo "[*] --disable-libx264"
135108
fi
136109

137110
echo "----------------------"
138111
echo "[*] check fdk-aac"
139112

140-
# with fdk-aac
141-
if [[ -f "${XC_PRODUCT_ROOT}/fdk-aac-$_XC_ARCH/lib/pkgconfig/fdk-aac.pc" ]]; then
142-
143-
CFG_FLAGS="$CFG_FLAGS --enable-nonfree --enable-libfdk-aac"
144-
145-
if [[ -n "$MY_PKG_CONFIG_LIBDIR" ]]; then
146-
MY_PKG_CONFIG_LIBDIR="$MY_PKG_CONFIG_LIBDIR:"
147-
fi
148-
MY_PKG_CONFIG_LIBDIR="${MY_PKG_CONFIG_LIBDIR}${XC_PRODUCT_ROOT}/fdk-aac-$_XC_ARCH/lib/pkgconfig"
113+
pkg-config --libs fdk-aac --silence-errors >/dev/null && enable_aac=1
149114

115+
if [[ $enable_aac ]];then
150116
echo "[*] --enable-libfdk-aac"
117+
CFG_FLAGS="$CFG_FLAGS --enable-nonfree --enable-libfdk-aac"
151118
else
152119
echo "[*] --disable-libfdk-aac"
153120
fi
154121

155122
echo "----------------------"
156123
echo "[*] check mp3lame"
157124

158-
# with lame
159-
if [[ -f "${XC_PRODUCT_ROOT}/lame-$_XC_ARCH/lib/libmp3lame.a" ]]; then
160-
# libmp3lame is gpl and --enable-gpl is not specified.
161-
CFG_FLAGS="$CFG_FLAGS --enable-gpl --enable-libmp3lame"
125+
pkg-config --libs mp3lame --silence-errors >/dev/null && enable_lame=1
162126

163-
FDKAAC_C_FLAGS="-I${XC_PRODUCT_ROOT}/lame-$_XC_ARCH/include"
164-
FDKAAC_LD_FLAGS="-L${XC_PRODUCT_ROOT}/lame-$_XC_ARCH/lib -lmp3lame"
165-
166-
C_FLAGS="$C_FLAGS $FDKAAC_C_FLAGS"
167-
FFMPEG_DEP_LIBS="$FFMPEG_DEP_LIBS $FDKAAC_LD_FLAGS"
127+
if [[ $enable_lame ]];then
168128
echo "[*] --enable-libmp3lame"
129+
CFG_FLAGS="$CFG_FLAGS --enable-gpl --enable-libmp3lame"
169130
else
170131
echo "[*] --disable-libmp3lame"
171132
fi
172133

173134
echo "----------------------"
174-
echo "[*] check opus"
135+
echo "[*] check openssl"
136+
# use pkg-config fix ff4.0--ijk0.8.8--20210426--001 use openssl 1_1_1m occur can't find openssl error.
175137

176-
# with opus
177-
if [[ -f "${XC_PRODUCT_ROOT}/opus-$_XC_ARCH/lib/pkgconfig/opus.pc" ]]; then
138+
pkg-config --libs openssl --silence-errors >/dev/null && enable_openssl=1
178139

179-
CFG_FLAGS="$CFG_FLAGS --enable-libopus --enable-decoder=opus"
140+
if [[ $enable_openssl ]];then
141+
echo "[*] --enable-openssl"
142+
CFG_FLAGS="$CFG_FLAGS --enable-nonfree --enable-openssl"
143+
else
144+
echo "[*] --disable-openssl"
145+
fi
180146

181-
if [[ -n "$MY_PKG_CONFIG_LIBDIR" ]]; then
182-
MY_PKG_CONFIG_LIBDIR="$MY_PKG_CONFIG_LIBDIR:"
183-
fi
184-
MY_PKG_CONFIG_LIBDIR="${MY_PKG_CONFIG_LIBDIR}${XC_PRODUCT_ROOT}/opus-$_XC_ARCH/lib/pkgconfig"
147+
echo "----------------------"
148+
echo "[*] check opus"
185149

186-
echo "[*] --enable-libopus --enable-decoder=opus"
187-
elif [[ -f "${XC_PRODUCT_ROOT}/universal/opus/lib/pkgconfig/opus.pc" ]]; then
150+
pkg-config --libs opus --silence-errors >/dev/null && enable_opus=1
188151

152+
if [[ $enable_opus ]];then
153+
echo "[*] --enable-libopus"
189154
CFG_FLAGS="$CFG_FLAGS --enable-libopus --enable-decoder=opus"
190-
191-
if [[ -n "$MY_PKG_CONFIG_LIBDIR" ]]; then
192-
MY_PKG_CONFIG_LIBDIR="$MY_PKG_CONFIG_LIBDIR:"
193-
fi
194-
MY_PKG_CONFIG_LIBDIR="${MY_PKG_CONFIG_LIBDIR}${XC_PRODUCT_ROOT}/universal/opus/lib/pkgconfig"
195-
196-
echo "[*] --enable-libopus --enable-decoder=opus"
197155
else
198156
echo "[*] --disable-libopus"
199157
fi
200158

201159
echo "----------------------"
202160
echo "[*] check dav1d"
203-
204161
# FFmpeg 4.2 支持AV1、AVS2等格式
205162
# dav1d由VideoLAN,VLC和FFmpeg联合开发,项目由AOM联盟赞助,和libaom相比,dav1d性能普遍提升100%,最高提升400%
206-
if [[ -f "${XC_PRODUCT_ROOT}/dav1d-$_XC_ARCH/lib/pkgconfig/dav1d.pc" ]]; then
207-
208-
CFG_FLAGS="$CFG_FLAGS --enable-libdav1d --enable-decoder=libdav1d"
209-
210-
if [[ -n "$MY_PKG_CONFIG_LIBDIR" ]]; then
211-
MY_PKG_CONFIG_LIBDIR="$MY_PKG_CONFIG_LIBDIR:"
212-
fi
213-
MY_PKG_CONFIG_LIBDIR="${MY_PKG_CONFIG_LIBDIR}${XC_PRODUCT_ROOT}/dav1d-$_XC_ARCH/lib/pkgconfig"
163+
#just wait videotoolbox support decode av1
164+
# CFG_FLAGS="$CFG_FLAGS --enable-decoder=av1"
214165

215-
echo "[*] --enable-libdav1d --enable-decoder=libdav1d"
216-
elif [[ -f "${XC_PRODUCT_ROOT}/universal/dav1d/lib/pkgconfig/dav1d.pc" ]]; then
166+
pkg-config --libs dav1d --silence-errors >/dev/null && enable_dav1d=1
217167

168+
if [[ $enable_dav1d ]];then
169+
echo "[*] --enable-libdav1d"
218170
CFG_FLAGS="$CFG_FLAGS --enable-libdav1d --enable-decoder=libdav1d"
219-
220-
if [[ -n "$MY_PKG_CONFIG_LIBDIR" ]]; then
221-
MY_PKG_CONFIG_LIBDIR="$MY_PKG_CONFIG_LIBDIR:"
222-
fi
223-
MY_PKG_CONFIG_LIBDIR="${MY_PKG_CONFIG_LIBDIR}${XC_PRODUCT_ROOT}/universal/dav1d/lib/pkgconfig"
224-
225-
echo "[*] --enable-libdav1d --enable-decoder=libdav1d"
226171
else
227-
echo "[*] --disable-libdav1d --disable-decoder=libdav1d"
172+
echo "[*] --disable-libdav1d"
228173
fi
229174

230-
#just wait videotoolbox support decode av1
231-
# CFG_FLAGS="$CFG_FLAGS --enable-decoder=av1"
232-
233175
echo "----------------------"
234176
echo "[*] check bluray"
235177

236-
# with bluray
237-
if [[ -f "${XC_PRODUCT_ROOT}/bluray-$_XC_ARCH/lib/pkgconfig/libbluray.pc" ]]; then
178+
pkg-config --libs libbluray --silence-errors >/dev/null && enable_bluray=1
238179

239-
# --enable-libxml2
180+
if [[ $enable_bluray ]];then
181+
echo "[*] --enable-libbluray"
240182
CFG_FLAGS="$CFG_FLAGS --enable-libbluray --enable-protocol=bluray"
241-
242-
if [[ -n "$MY_PKG_CONFIG_LIBDIR" ]]; then
243-
MY_PKG_CONFIG_LIBDIR="$MY_PKG_CONFIG_LIBDIR:"
244-
fi
245-
MY_PKG_CONFIG_LIBDIR="${MY_PKG_CONFIG_LIBDIR}${XC_PRODUCT_ROOT}/bluray-$_XC_ARCH/lib/pkgconfig"
246-
247-
echo "[*] --enable-libbluray --enable-protocol=bluray"
248-
elif [[ -f "${XC_PRODUCT_ROOT}/universal/bluray/lib/pkgconfig/libbluray.pc" ]]; then
249-
# --enable-libxml2
250-
CFG_FLAGS="$CFG_FLAGS --enable-libbluray --enable-protocol=bluray"
251-
252-
if [[ -n "$MY_PKG_CONFIG_LIBDIR" ]]; then
253-
MY_PKG_CONFIG_LIBDIR="$MY_PKG_CONFIG_LIBDIR:"
254-
fi
255-
MY_PKG_CONFIG_LIBDIR="${MY_PKG_CONFIG_LIBDIR}${XC_PRODUCT_ROOT}/universal/bluray/lib/pkgconfig"
256-
257-
echo "[*] --enable-libbluray --enable-protocol=bluray"
258183
else
259-
echo "[*] --disable-libbluray --disable-protocol=bluray"
184+
echo "[*] --disable-libbluray"
260185
fi
261186

262187
echo "----------------------"
263188
echo "[*] check dvdread"
264189

265-
if [[ -f "${XC_PRODUCT_ROOT}/dvdread-$_XC_ARCH/lib/pkgconfig/dvdread.pc" || -f "${XC_PRODUCT_ROOT}/universal/dvdread/lib/pkgconfig/dvdread.pc" ]]; then
266-
267-
CFG_FLAGS="$CFG_FLAGS --enable-libdvdread"
268-
269-
if [[ -n "$MY_PKG_CONFIG_LIBDIR" ]]; then
270-
MY_PKG_CONFIG_LIBDIR="$MY_PKG_CONFIG_LIBDIR:"
271-
fi
272-
273-
if [[ -f "${XC_PRODUCT_ROOT}/dvdread-$_XC_ARCH/lib/pkgconfig/dvdread.pc" ]]; then
274-
MY_PKG_CONFIG_LIBDIR="${MY_PKG_CONFIG_LIBDIR}${XC_PRODUCT_ROOT}/dvdread-$_XC_ARCH/lib/pkgconfig"
275-
else
276-
MY_PKG_CONFIG_LIBDIR="${MY_PKG_CONFIG_LIBDIR}${XC_PRODUCT_ROOT}/universal/dvdread/lib/pkgconfig"
277-
fi
190+
pkg-config --libs dvdread --silence-errors >/dev/null && enable_dvdread=1
278191

192+
if [[ $enable_dvdread ]];then
279193
echo "[*] --enable-libdvdread"
194+
CFG_FLAGS="$CFG_FLAGS --enable-libdvdread"
280195
else
281196
echo "[*] --disable-libdvdread"
282197
fi
283198

284-
285-
echo "----------------------"
286-
echo "[*] PKG_CONFIG_LIBDIR"
287-
288-
if [[ -n "$MY_PKG_CONFIG_LIBDIR" ]]; then
289-
export PKG_CONFIG_LIBDIR="$MY_PKG_CONFIG_LIBDIR"
290-
fi
291-
292-
echo "export PKG_CONFIG_LIBDIR=${PKG_CONFIG_LIBDIR}"
293-
294-
# pkg-config --variable pc_path pkg-config
295-
# pkg-config --libs dav1d
296-
# pkg-config --cflags --libs libbluray
297-
298199
echo "----------------------"
299200
echo "[*] configure"
300201

apple/init-env.sh

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,30 @@ function init_plat_env() {
104104
export DEBUG_INFORMATION_FORMAT=dwarf-with-dsym
105105
}
106106

107+
function init_libs_pkg_config_path() {
108+
109+
universal_dir=
110+
if [[ "$XC_IS_SIMULATOR" ]];then
111+
universal_dir="${XC_UNI_SIM_PROD_DIR}"
112+
else
113+
universal_dir="${XC_UNI_PROD_DIR}"
114+
fi
115+
116+
pkg_cfg_dir=
117+
for lib in $(ls "$universal_dir"); do
118+
if [[ $pkg_cfg_dir ]];then
119+
pkg_cfg_dir="${pkg_cfg_dir}:${universal_dir}/${lib}/lib/pkgconfig"
120+
else
121+
pkg_cfg_dir="${universal_dir}/${lib}/lib/pkgconfig"
122+
fi
123+
done
124+
125+
# disabling pkg-config-path
126+
# https://gstreamer-devel.narkive.com/TeNagSKN/gst-devel-disabling-pkg-config-path
127+
# export PKG_CONFIG_LIBDIR=${sysroot}/lib/pkgconfig
128+
export PKG_CONFIG_LIBDIR="$pkg_cfg_dir"
129+
}
130+
107131
function init_arch_env () {
108132

109133
if [[ -z "$XC_PLAT" ]]; then
@@ -163,8 +187,10 @@ function init_arch_env () {
163187
export XC_BUILD_SOURCE="${XC_SRC_ROOT}/${XC_BUILD_NAME}"
164188
# ios/ffmpeg-x86_64
165189
export XC_BUILD_PREFIX="${XC_PRODUCT_ROOT}/${XC_BUILD_NAME}"
190+
init_libs_pkg_config_path
166191
}
167192

193+
export -f init_libs_pkg_config_path
168194
export -f install_depends
169195
export -f init_plat_env
170196
export -f init_arch_env

0 commit comments

Comments
 (0)