Skip to content

Commit

Permalink
feat: enable x265 multilib
Browse files Browse the repository at this point in the history
  • Loading branch information
wangyoucao577 committed Dec 2, 2023
1 parent bfdd58c commit ee81c80
Showing 1 changed file with 51 additions and 8 deletions.
59 changes: 51 additions & 8 deletions buildtools/scripts/build-x265.sh
Expand Up @@ -14,16 +14,59 @@ PROJECT_ROOT_PATH=${CURRENT_DIR_PATH}/../../
source ${CURRENT_DIR_PATH}/options.sh

# enter build foler
cd ${PROJECT_ROOT_PATH}/third-party/x265/source
cd ${PROJECT_ROOT_PATH}/third-party/x265/build

# build
# build multilib, refer to x265/build/linux/multilib.sh
set -x
rm -rf ./build && mkdir -p build && cd build
cmake .. "${PREFERRED_CMAKE_GERERATOR}" \
-DCMAKE_INSTALL_PREFIX=${PROJECT_ROOT_PATH}/build \
-DENABLE_SHARED=off -DENABLE_CLI=OFF -DENABLE_LIBNUMA=OFF -DCMAKE_ASM_NASM_FLAGS=-w-macro-params-legacy
cmake --build . ${MAKE_PARALLEL} && cmake --install .
cd .. && rm -rf ./build

mkdir -p 8bit 10bit 12bit

cd 12bit
cmake ../../source "${PREFERRED_CMAKE_GERERATOR}" -DCMAKE_INSTALL_PREFIX=${PROJECT_ROOT_PATH}/build \
-DCMAKE_ASM_NASM_FLAGS=-w-macro-params-legacy \
-DHIGH_BIT_DEPTH=ON -DEXPORT_C_API=OFF -DENABLE_SHARED=OFF -DENABLE_CLI=OFF -DMAIN12=ON
cmake --build . ${MAKE_PARALLEL}

cd ../10bit
cmake ../../source "${PREFERRED_CMAKE_GERERATOR}" -DCMAKE_INSTALL_PREFIX=${PROJECT_ROOT_PATH}/build \
-DCMAKE_ASM_NASM_FLAGS=-w-macro-params-legacy \
-DHIGH_BIT_DEPTH=ON -DEXPORT_C_API=OFF -DENABLE_SHARED=OFF -DENABLE_CLI=OFF
cmake --build . ${MAKE_PARALLEL}

cd ../8bit
ln -sf ../10bit/libx265.a libx265_main10.a
ln -sf ../12bit/libx265.a libx265_main12.a
cmake ../../source "${PREFERRED_CMAKE_GERERATOR}" -DCMAKE_INSTALL_PREFIX=${PROJECT_ROOT_PATH}/build \
-DCMAKE_ASM_NASM_FLAGS=-w-macro-params-legacy \
-DENABLE_SHARED=OFF -DENABLE_CLI=OFF \
-DEXTRA_LIB="x265_main10.a;x265_main12.a" -DEXTRA_LINK_FLAGS=-L. -DLINKED_10BIT=ON -DLINKED_12BIT=ON
cmake --build . ${MAKE_PARALLEL}

# rename the 8bit library, then combine all three into libx265.a
mv libx265.a libx265_main.a

if [[ "$OSTYPE" == "darwin"* ]]; then

# Mac/BSD libtool
libtool -static -o libx265.a libx265_main.a libx265_main10.a libx265_main12.a 2>/dev/null

else

# On Linux, we use GNU ar to combine the static libraries together
ar -M <<EOF
CREATE libx265.a
ADDLIB libx265_main.a
ADDLIB libx265_main10.a
ADDLIB libx265_main12.a
SAVE
END
EOF

fi


cmake --install .
cd .. && rm -rf ./8bit 10bit 12bit

if [[ "$OSTYPE" == "linux"* ]]; then
# workaround to be able to fully static linking
Expand Down

0 comments on commit ee81c80

Please sign in to comment.