Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions tools/ci_build/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,8 @@ def version_to_tuple(version: str) -> tuple:
import util.android as android # noqa: E402
from util import ( # noqa: E402
generate_android_triplets,
generate_posix_triplets,
generate_linux_triplets,
generate_macos_triplets,
generate_vcpkg_triplets_for_emscripten,
generate_windows_triplets,
get_logger,
Expand Down Expand Up @@ -1115,7 +1116,6 @@ def generate_build_tree(
cmake_extra_args,
):
log.info("Generating CMake build tree")

cmake_dir = os.path.join(source_dir, "cmake")
cmake_args = [cmake_path, cmake_dir]
if not use_dev_mode(args):
Expand Down Expand Up @@ -1330,8 +1330,16 @@ def generate_build_tree(
generate_android_triplets(build_dir, args.android_cpp_shared, args.android_api)
elif is_windows():
generate_windows_triplets(build_dir)
elif is_macOS():
osx_target = args.apple_deploy_target
if args.apple_deploy_target is None:
osx_target = os.environ.get("MACOSX_DEPLOYMENT_TARGET")
if osx_target is not None:
log.info(f"Setting VCPKG_OSX_DEPLOYMENT_TARGET to {osx_target}")
generate_macos_triplets(build_dir, osx_target)
else:
generate_posix_triplets(build_dir)
# Linux, *BSD, AIX or other platforms
generate_linux_triplets(build_dir)
add_default_definition(cmake_extra_defines, "CMAKE_TOOLCHAIN_FILE", str(vcpkg_toolchain_path))

vcpkg_install_options = generate_vcpkg_install_options(build_dir, args)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ stages:
--skip_submodule_sync
--cmake_generator "Visual Studio 17 2022"
--enable_pybind
--enable_onnx_tests
--enable_onnx_tests --use_vcpkg --use_vcpkg_ms_internal_asset_cache
${{ parameters.build_py_parameters }}
--parallel --use_binskim_compliant_compile_flags --update --build
$(TelemetryOption)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ jobs:
# must call vsdevcmd first to add cmake to PATH
- script: |
python --version
python "$(Build.SourcesDirectory)\tools\ci_build\build.py" --build_dir $(Build.BinariesDirectory) --parallel --use_binskim_compliant_compile_flags --build_shared_lib --enable_onnx_tests --ms_experimental --use_dml --use_winml --cmake_generator "Visual Studio 17 2022" --update --config RelWithDebInfo --enable_lto --use_telemetry --disable_rtti --enable_wcos --windows_sdk_version "10.0.22621.0" $(BuildFlags) --cmake_extra_defines "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO=/PROFILE" "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO=/PROFILE"
python "$(Build.SourcesDirectory)\tools\ci_build\build.py" --build_dir $(Build.BinariesDirectory) --parallel --use_binskim_compliant_compile_flags --build_shared_lib --enable_onnx_tests --ms_experimental --use_dml --use_winml --cmake_generator "Visual Studio 17 2022" --update --config RelWithDebInfo --enable_lto --use_telemetry --disable_rtti --enable_wcos --use_vcpkg --use_vcpkg_ms_internal_asset_cache --windows_sdk_version "10.0.22621.0" $(BuildFlags) --cmake_extra_defines "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO=/PROFILE" "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO=/PROFILE"
workingDirectory: '$(Build.BinariesDirectory)'
displayName: 'Generate cmake config'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ jobs:
--config $(BuildConfig)
--build_dir $(Build.BinariesDirectory)
--cmake_generator "Visual Studio 17 2022"
--build_shared_lib
--build_shared_lib --use_vcpkg --use_vcpkg_ms_internal_asset_cache
--use_qnn $(QnnLibKind)
--qnn_home $(QnnSDKRootDir)
--update --build --parallel
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ jobs:
--build_dir $(Build.BinariesDirectory)
--cmake_generator "Visual Studio 17 2022"
--build_java
--build_shared_lib
--build_shared_lib --use_vcpkg --use_vcpkg_ms_internal_asset_cache
--use_qnn $(QnnLibKind)
--qnn_home $(QnnSDKRootDir)
--use_binskim_compliant_compile_flags
Expand Down
3 changes: 2 additions & 1 deletion tools/python/util/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@
from .run import run # noqa: F401
from .vcpkg_helpers import ( # noqa: F401
generate_android_triplets,
generate_posix_triplets,
generate_linux_triplets,
generate_macos_triplets,
generate_vcpkg_triplets_for_emscripten,
generate_windows_triplets,
)
Expand Down
78 changes: 54 additions & 24 deletions tools/python/util/vcpkg_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -222,6 +222,7 @@ def generate_triplet_for_posix_platform(
enable_asan: bool,
crt_linkage: str,
target_abi: str,
osx_deployment_target: str,
) -> None:
"""
Generate triplet file for POSIX platforms (Linux, macOS).
Expand All @@ -235,6 +236,7 @@ def generate_triplet_for_posix_platform(
enable_asan (bool): Flag indicating if AddressSanitizer is enabled.
crt_linkage (str): The CRT linkage type ("static" or "dynamic").
target_abi (str): The target ABI, which maps to the VCPKG_TARGET_ARCHITECTURE variable. Valid options include x86, x64, arm, arm64, arm64ec, s390x, ppc64le, riscv32, riscv64, loongarch32, loongarch64, mips64.
osx_deployment_target (str, optional): The macOS deployment target version. The parameter sets the minimum macOS version for compiled binaries. It also changes what versions of the macOS platform SDK CMake will search for. See the CMake documentation for CMAKE_OSX_DEPLOYMENT_TARGET for more information.
"""
folder_name_parts = []
if enable_asan:
Expand Down Expand Up @@ -341,6 +343,8 @@ def generate_triplet_for_posix_platform(
else:
osx_abi = target_abi
f.write(f'set(VCPKG_OSX_ARCHITECTURES "{osx_abi}")\n')
if osx_deployment_target:
f.write(f'set(VCPKG_OSX_DEPLOYMENT_TARGET "{osx_deployment_target}")\n')
f.write("set(CMAKE_POSITION_INDEPENDENT_CODE ON)\n")
f.write(
"list(APPEND VCPKG_CMAKE_CONFIGURE_OPTIONS --compile-no-warning-as-error -DBENCHMARK_ENABLE_WERROR=OFF)\n"
Expand Down Expand Up @@ -501,32 +505,58 @@ def generate_windows_triplets(build_dir: str) -> None:
add_port_configs(f, enable_exception, False)


def generate_posix_triplets(build_dir: str) -> None:
def generate_linux_triplets(build_dir: str) -> None:
"""
Generate triplet files for POSIX platforms (Linux, macOS).
Generate triplet files for Linux platforms.

Args:
build_dir (str): The directory to save the generated triplet files.
"""
for os_name in ["linux", "osx"]:
if os_name == "linux":
target_abis = ["x86", "x64", "arm", "arm64", "s390x", "ppc64le", "riscv64", "loongarch64", "mips64"]
else:
target_abis = ["x64", "arm64", "universal2"]
for enable_rtti in [True, False]:
for enable_exception in [True, False]:
for enable_binskim in [True, False]:
for enable_asan in [True, False]:
if enable_asan and enable_binskim:
continue
for target_abi in target_abis:
generate_triplet_for_posix_platform(
build_dir,
os_name,
enable_rtti,
enable_exception,
enable_binskim,
enable_asan,
"dynamic",
target_abi,
)
target_abis = ["x86", "x64", "arm", "arm64", "s390x", "ppc64le", "riscv64", "loongarch64", "mips64"]
for enable_rtti in [True, False]:
for enable_exception in [True, False]:
for enable_binskim in [True, False]:
for enable_asan in [True, False]:
if enable_asan and enable_binskim:
continue
for target_abi in target_abis:
generate_triplet_for_posix_platform(
build_dir,
"linux",
enable_rtti,
enable_exception,
enable_binskim,
enable_asan,
"dynamic",
target_abi,
None,
)


def generate_macos_triplets(build_dir: str, osx_deployment_target: str) -> None:
"""
Generate triplet files for macOS platforms.

Args:
build_dir (str): The directory to save the generated triplet files.
osx_deployment_target (str, optional): The macOS deployment target version.
"""
target_abis = ["x64", "arm64", "universal2"]
for enable_rtti in [True, False]:
for enable_exception in [True, False]:
for enable_binskim in [True, False]:
for enable_asan in [True, False]:
if enable_asan and enable_binskim:
continue
for target_abi in target_abis:
generate_triplet_for_posix_platform(
build_dir,
"osx",
enable_rtti,
enable_exception,
enable_binskim,
enable_asan,
"dynamic",
target_abi,
osx_deployment_target,
)
Loading