Boost logo

Boost :

From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2024-09-25 23:58:16


On 9/25/24 20:03, Martin Vejbora via Boost wrote:
>
> I wanted
> to ask, is the cross-testing of Boost library supported, are you aware of some
> examples where it's being used?

I don't think we test cross-compilation, and I'm not sure how
well-supported it is in Boost.Build. Low-level libraries like
Boost.Context may not support cross-compilation because they select
implementation based on the platform and toolset, and I'm not sure
Boost.Build provides separate features for the host and target systems
for these parameters.

For example, there are features like <architecture>, <address-model> and
<binary-format>, and I'm not sure if those describe the host or the
target system and whether there are the other counterparts.

> b) Process errors:
>
> gcc.compile.c++ bin.v2/libs/process/build/gcc-10/debug/x86_64/
> boost.process.fs-boost/link-static/target-os-windows/threadapi-win32/
> threading-multi/visibility-hidden/ext/exe.o
> /home/vejby/boost-build/libs/process/src/ext/exe.cpp: In function
> ‘boost::filesystem::path boost::process::v2::ext::exe
> (HANDLE, boost::system::error_code&)’:
> /home/vejby/boost-build/libs/process/src/ext/exe.cpp:78:9: error:
> ‘QueryFullProcessImageNameW’ was not declared in this scope
> 78 | if (QueryFullProcessImageNameW(proc, 0, buffer, &size))
> | ^~~~~~~~~~~~~~~~~~~~~~~~~~
>
> "x86_64-w64-mingw32-g++" -fvisibility-inlines-hidden -m64 -O0 -fno-inline
> -Wall -g -fvisibility=hidden -DBOOST_ALL_NO_LIB=1
> -DBOOST_ASIO_NO_DEPRECATED -DBOOST_ATOMIC_STATIC_LINK=1
> -DBOOST_FILESYSTEM_NO_LIB=1 -DBOOST_FILESYSTEM_STATIC_LINK=1
> -DBOOST_PROCESS_SOURCE=1 -DBOOST_REGEX_NO_LIB=1 -DBOOST_SYSTEM_NO_LIB=1
> -DBOOST_SYSTEM_STATIC_LINK=1 -DWIN32_LEAN_AND_MEAN -I"."
>
> -------------------------------------------------------------------------------
>
> gcc.compile.c++ bin.v2/libs/process/build/gcc-10/debug/x86_64/
> boost.process.fs-boost/link-static/target-os-windows/threadapi-win32/
> threading-multi/visibility-hidden/windows/default_launcher.o
> In file included from /home/vejby/boost-build/libs/process/src/windows/
> default_launcher.cpp:16:
> ./boost/process/v2/windows/default_launcher.hpp:220:3: error:
> ‘STARTUPINFOEXW’ does not name a type; did you mean ‘STARTUPINFOW’?
> 220 | STARTUPINFOEXW startup_info{{sizeof(STARTUPINFOEXW), nullptr, nullptr, nullptr,
> | ^~~~~~~~~~~~~~
> | STARTUPINFOW
>
> "x86_64-w64-mingw32-g++" -fvisibility-inlines-hidden -m64 -O0 -fno-inline
> -Wall -g -fvisibility=hidden -DBOOST_ALL_NO_LIB=1
> -DBOOST_ASIO_NO_DEPRECATED -DBOOST_ATOMIC_STATIC_LINK=1
> -DBOOST_FILESYSTEM_NO_LIB=1 -DBOOST_FILESYSTEM_STATIC_LINK=1
> -DBOOST_PROCESS_SOURCE=1 -DBOOST_REGEX_NO_LIB=1 -DBOOST_SYSTEM_NO_LIB=1
> -DBOOST_SYSTEM_STATIC_LINK=1 -DWIN32_LEAN_AND_MEAN -I"."

These and similar errors may be caused by the missing _WIN32_WINNT
define to a sufficiently high target Windows version. AFAIR, MinGW-w64
defaults to some low target Windows version and disables many
definitions that appeared in Windows Vista and later.

I'm not the maintainer and I don't know whether Boost.Process expects
the user to define the macro, but I think it would make sense to define
it in Boost.Process, since clearly there is a minimum supported Windows
version. You should probably create an issue for Boost.Process:

https://github.com/boostorg/process/issues


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk