55# This source code is licensed under the BSD-style license found in the
66# LICENSE file in the root directory of this source tree.
77
8+ set -euo pipefail
9+
810SCRIPT_DIR_PATH=" $(
911 cd -- " $( dirname " $0 " ) " > /dev/null 2>&1
1012 pwd -P
1113) "
1214
1315# TODO(jathu): remove the need to fetch coremltools to build deps for coreml_executor_runner.
1416# Keep this version in sync with: pyproject.toml
15- COREMLTOOLS_VERSION=" 9.0b1 "
17+ COREMLTOOLS_VERSION=" 9.0 "
1618
17- red=` tput setaf 1`
18- green=` tput setaf 2`
19+ # Safe colors (no TERM noise in CI)
20+ if command -v tput > /dev/null 2>&1 && [ -t 1 ] && [ -n " ${TERM:- } " ]; then
21+ red=" $( tput setaf 1) "
22+ green=" $( tput setaf 2) "
23+ reset=" $( tput sgr0) "
24+ else
25+ red=" " ; green=" " ; reset=" "
26+ fi
1927
2028EXECUTORCH_ROOT_PATH=$( realpath " $SCRIPT_DIR_PATH /../../../../" )
2129COREML_DIR_PATH=" $EXECUTORCH_ROOT_PATH /backends/apple/coreml"
@@ -25,30 +33,79 @@ PROTOBUF_FILES_DIR_PATH="$COREMLTOOLS_DIR_PATH/build/mlmodel/format/"
2533cd " $EXECUTORCH_ROOT_PATH "
2634
2735rm -rf " $COREML_DIR_PATH /third-party"
28- mkdir " $COREML_DIR_PATH /third-party"
36+ mkdir -p " $COREML_DIR_PATH /third-party"
2937
30- echo " ${green} ExecuTorch: Cloning coremltools."
31- git clone --depth 1 --branch " ${COREMLTOOLS_VERSION} " " https://github.com/apple/coremltools.git" $COREMLTOOLS_DIR_PATH
32- cd $COREMLTOOLS_DIR_PATH
38+ echo " ${green} ExecuTorch: Cloning coremltools.${reset} "
39+ git clone --depth 1 --branch " ${COREMLTOOLS_VERSION} " " https://github.com/apple/coremltools.git" " $COREMLTOOLS_DIR_PATH "
40+ cd " $COREMLTOOLS_DIR_PATH "
3341
3442STATUS=$?
3543if [ $STATUS -ne 0 ]; then
36- echo " ${red} ExecuTorch: Failed to clone coremltools."
44+ echo " ${red} ExecuTorch: Failed to clone coremltools.${reset} "
3745 exit 1
3846fi
3947
40- echo " ${green} ExecuTorch: Installing coremltools dependencies."
41- pip install -r " $COREMLTOOLS_DIR_PATH /reqs/build.pip"
48+ # ---------------------------------------------------------------------
49+ # Host toolchain / SDK setup JUST for coremltools build
50+ # ---------------------------------------------------------------------
51+ HOST_SDKROOT=" ${SDKROOT:- } "
52+ HOST_CC=" ${CC:- } "
53+ HOST_CXX=" ${CXX:- } "
54+ HOST_CFLAGS=" ${CFLAGS:- } "
55+ HOST_CXXFLAGS=" ${CXXFLAGS:- } "
56+
57+ if [[ " $( uname) " == " Darwin" ]]; then
58+ # Only pick macOS SDK if nothing else is specified
59+ if [[ -z " $HOST_SDKROOT " ]]; then
60+ HOST_SDKROOT=" $( xcrun --sdk macosx --show-sdk-path) "
61+ fi
62+ if [[ -z " $HOST_CC " ]]; then
63+ HOST_CC=" $( xcrun --find clang) "
64+ fi
65+ if [[ -z " $HOST_CXX " ]]; then
66+ HOST_CXX=" $( xcrun --find clang++) "
67+ fi
68+ # Only add -isysroot if caller didn't already set CFLAGS/CXXFLAGS
69+ if [[ -z " $HOST_CFLAGS " && -n " $HOST_SDKROOT " ]]; then
70+ HOST_CFLAGS=" -isysroot ${HOST_SDKROOT} "
71+ fi
72+ if [[ -z " $HOST_CXXFLAGS " && -n " $HOST_SDKROOT " ]]; then
73+ HOST_CXXFLAGS=" -isysroot ${HOST_SDKROOT} "
74+ fi
75+ fi
76+
77+ echo " ${green} ExecuTorch: Installing coremltools dependencies.${reset} "
78+ SDKROOT=" $HOST_SDKROOT " \
79+ CC=" $HOST_CC " \
80+ CXX=" $HOST_CXX " \
81+ CFLAGS=" $HOST_CFLAGS " \
82+ CXXFLAGS=" $HOST_CXXFLAGS " \
83+ python -m pip install -r " $COREMLTOOLS_DIR_PATH /reqs/build.pip"
4284STATUS=$?
4385if [ $STATUS -ne 0 ]; then
44- echo " ${red} ExecuTorch: Failed to install coremltools dependencies."
86+ echo " ${red} ExecuTorch: Failed to install coremltools dependencies.${reset} "
4587 exit 1
4688fi
4789
48- mkdir " $COREMLTOOLS_DIR_PATH /build"
90+ mkdir -p " $COREMLTOOLS_DIR_PATH /build"
91+
92+ echo " ${green} ExecuTorch: Configuring coremltools CMake build.${reset} "
93+ SDKROOT=" $HOST_SDKROOT " \
94+ CC=" $HOST_CC " \
95+ CXX=" $HOST_CXX " \
96+ CFLAGS=" $HOST_CFLAGS " \
97+ CXXFLAGS=" $HOST_CXXFLAGS " \
4998cmake -S " $COREMLTOOLS_DIR_PATH " -B " $COREMLTOOLS_DIR_PATH /build"
99+
100+ echo " ${green} ExecuTorch: Building mlmodel target.${reset} "
101+ SDKROOT=" $HOST_SDKROOT " \
102+ CC=" $HOST_CC " \
103+ CXX=" $HOST_CXX " \
104+ CFLAGS=" $HOST_CFLAGS " \
105+ CXXFLAGS=" $HOST_CXXFLAGS " \
50106cmake --build " $COREMLTOOLS_DIR_PATH /build" --parallel --target mlmodel
51107
52- echo " ${green} ExecuTorch: Copying protobuf files."
108+ echo " ${green} ExecuTorch: Copying protobuf files.${reset} "
109+ rm -rf " $COREML_DIR_PATH /runtime/sdk/format/"
53110mkdir -p " $COREML_DIR_PATH /runtime/sdk/format/"
54111cp -rf " $PROTOBUF_FILES_DIR_PATH " " $COREML_DIR_PATH /runtime/sdk/format/"
0 commit comments