Open pfhgil opened 6 months ago
The title states "with debug-only triplet", but the post says "VCPKG_BUILD_TYPE=release". The log shows both types are built.
The triplet has an unusual combination: dynamic linrary linkage, static CRT linkage. Is this intentional?
The toolchain customizes cmake root path settings. Maybe this has undesired side effects
What should I do?
Check logs from buildtrees/boost-stacktrace.
FTR boost-stacktrace:x64-mingw-dynamic builds successfully, on a linux host.
boost-build/boost-modular-build.cmake
Also means older boost version
Sorry for the confusion about build types. Now it's definitely equals to "release" and builds for release (checked in the log). I also modified the cmake file of my toolchain and triplet. Now my triplet differs from the standard x64-mingw-dynamic triplet only in setting the build type and installing the toolchain.
My triplet (sg-x64-mingw-dynamic-release.cmake):
set(VCPKG_CHAINLOAD_TOOLCHAIN_FILE "/home/ilya/pixelfield/test-windows/cmake/mingw.cmake")
set(VCPKG_TARGET_ARCHITECTURE x64)
set(VCPKG_CRT_LINKAGE dynamic)
set(VCPKG_LIBRARY_LINKAGE dynamic)
set(VCPKG_ENV_PASSTHROUGH PATH)
set(VCPKG_CMAKE_SYSTEM_NAME MinGW)
set(VCPKG_POLICY_DLLS_WITHOUT_LIBS enabled)
set(VCPKG_BUILD_TYPE release)
My toolchain (mingw.cmake):
set(CMAKE_C_COMPILER "$ENV{SUNGEAR_LLVM_MINGW_PATH}/bin/x86_64-w64-mingw32-clang")
set(CMAKE_CXX_COMPILER "$ENV{SUNGEAR_LLVM_MINGW_PATH}/bin/x86_64-w64-mingw32-clang++")
set(CMAKE_ASM_COMPILER "$ENV{SUNGEAR_LLVM_MINGW_PATH}/bin/x86_64-w64-mingw32-clang")
set(CMAKE_RC_COMPILER "$ENV{SUNGEAR_LLVM_MINGW_PATH}/bin/llvm-rc")
I also indicate a preset for the build, which I did not indicate earlier:
{
"binaryDir": "cmake-build-release-mingw-x86-64",
"generator": "Ninja",
"name": "x86-64-mingw-release",
"cacheVariables": {
"CMAKE_SYSTEM_NAME" : "MinGW",
"CMAKE_SYSTEM_PROCESSOR": "x64",
"CMAKE_BUILD_TYPE": "Release",
"SG_BUILD_PRESET": "x86-64-mingw-release",
"VCPKG_OVERLAY_TRIPLETS" : "/home/ilya/pixelfield/test-windows/vcpkg-triplets",
"VCPKG_TARGET_TRIPLET" : "sg-x64-mingw-dynamic-release",
"CMAKE_TOOLCHAIN_FILE" : "$env{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake"
}
Now I get the following errors (it seems like the package is being built in the wrong C++ standard location):
[1] clang-linux-18/release/address-model-32/architecture-x86/threading-multi/visibility-hidden
[2] clang-linux-18/release/address-model-32/architecture-x86/link-static/threading-multi/visibility-hidden
[3] clang-linux-18/release/address-model-32/architecture-x86/build-no/threading-multi/visibility-hidden
common.mkdir /home/ilya/.vcpkg-clion/vcpkg/buildtrees/boost-stacktrace/sg-x64-mingw-dynamic-release-rel/stage
mkdir -p "/home/ilya/.vcpkg-clion/vcpkg/buildtrees/boost-stacktrace/sg-x64-mingw-dynamic-release-rel/stage"
common.mkdir /home/ilya/.vcpkg-clion/vcpkg/buildtrees/boost-stacktrace/sg-x64-mingw-dynamic-release-rel/stage/lib
mkdir -p "/home/ilya/.vcpkg-clion/vcpkg/buildtrees/boost-stacktrace/sg-x64-mingw-dynamic-release-rel/stage/lib"
clang-linux.compile.c++ /home/ilya/.vcpkg-clion/vcpkg/buildtrees/boost-stacktrace/sg-x64-mingw-dynamic-release-rel/boost/build/70897e26c84a6083e2cb225079200245/noop.o
"/home/ilya/pixelfield/llvm-mingw-20240502-msvcrt-ubuntu-20.04-x86_64/bin/x86_64-w64-mingw32-clang++" -fvisibility-inlines-hidden -O3 -DNDEBUG -fPIC -m32 -pthread -O3 -Wall -g -fvisibility=hidden -Wno-inline -march=i686 --target=i386-pc-linux -DBOOST_ALL_NO_LIB=1 -DBOOST_STACKTRACE_DYN_LINK=1 -DNDEBUG -I"../include" -I"/home/ilya/pixelfield/test-windows/cmake-build-release-mingw-x86-64/vcpkg_installed/sg-x64-mingw-dynamic-release/include" -c -o "/home/ilya/.vcpkg-clion/vcpkg/buildtrees/boost-stacktrace/sg-x64-mingw-dynamic-release-rel/boost/build/70897e26c84a6083e2cb225079200245/noop.o" "../build/../src/noop.cpp"
In file included from ../build/../src/noop.cpp:10:
In file included from ../include/boost/stacktrace/detail/frame_noop.ipp:15:
In file included from ../include/boost/stacktrace/frame.hpp:16:
In file included from /usr/include/c++/v1/string:549:
In file included from /usr/include/c++/v1/memory:860:
In file included from /usr/include/c++/v1/__memory/shared_ptr.h:39:
In file included from /usr/include/c++/v1/atomic:526:
In file included from /usr/include/c++/v1/__thread/timed_backoff_policy.h:17:
In file included from /usr/include/c++/v1/__threading_support:18:
In file included from /usr/include/c++/v1/errno.h:31:
In file included from /usr/include/errno.h:28:
In file included from /usr/include/bits/errno.h:26:
/usr/include/linux/errno.h:1:10: fatal error: 'asm/errno.h' file not found
1 | #include <asm/errno.h>
| ^~~~~~~~~~~~~
1 error generated.
I also attach the vcpkg install log:
Installing 18/30 boost-stacktrace:sg-x64-mingw-dynamic-release@1.84.0...
Building boost-stacktrace:sg-x64-mingw-dynamic-release@1.84.0...
-- [OVERLAY] Loading triplet configuration from: /home/ilya/pixelfield/test-windows/vcpkg-triplets/sg-x64-mingw-dynamic-release.cmake
-- Installing port from location: /home/ilya/.vcpkg-clion/vcpkg/buildtrees/versioning_/versions/boost-stacktrace/e4bcf4968926d3320effea3f1e0389783fa6d073
-- Using cached boostorg-stacktrace-boost-1.84.0.tar.gz.
-- Cleaning sources at /home/ilya/.vcpkg-clion/vcpkg/buildtrees/boost-stacktrace/src/ost-1.84.0-5afa539495.clean. Use --editable to skip cleaning for the packages you specify.
-- Extracting source /home/ilya/.vcpkg-clion/vcpkg/downloads/boostorg-stacktrace-boost-1.84.0.tar.gz
-- Using source at /home/ilya/.vcpkg-clion/vcpkg/buildtrees/boost-stacktrace/src/ost-1.84.0-5afa539495.clean
-- Getting CMake variables for sg-x64-mingw-dynamic-release
-- Configuring sg-x64-mingw-dynamic-release
-- Building sg-x64-mingw-dynamic-release-rel
CMake Error at scripts/cmake/vcpkg_execute_build_process.cmake:134 (message):
Command failed: /home/ilya/.vcpkg-clion/vcpkg/downloads/tools/cmake-3.27.1-linux/cmake-3.27.1-linux-x86_64/bin/cmake --build . --config Release --target install -- -v -j17
Working Directory: /home/ilya/.vcpkg-clion/vcpkg/buildtrees/boost-stacktrace/sg-x64-mingw-dynamic-release-rel
See logs for more information:
/home/ilya/.vcpkg-clion/vcpkg/buildtrees/boost-stacktrace/install-sg-x64-mingw-dynamic-release-rel-out.log
Call Stack (most recent call first):
/home/ilya/pixelfield/test-windows/cmake-build-release-mingw-x86-64/vcpkg_installed/x64-linux/share/vcpkg-cmake/vcpkg_cmake_build.cmake:74 (vcpkg_execute_build_process)
/home/ilya/pixelfield/test-windows/cmake-build-release-mingw-x86-64/vcpkg_installed/x64-linux/share/vcpkg-cmake/vcpkg_cmake_install.cmake:16 (vcpkg_cmake_build)
/home/ilya/pixelfield/test-windows/cmake-build-release-mingw-x86-64/vcpkg_installed/x64-linux/share/boost-build/boost-modular-build.cmake:139 (vcpkg_cmake_install)
buildtrees/versioning_/versions/boost-stacktrace/e4bcf4968926d3320effea3f1e0389783fa6d073/portfile.cmake:17 (boost_modular_build)
scripts/ports.cmake:175 (include)
Sorry for the possibly stupid questions, I'm still new to cross-compiling projects
It is pullling wrong headers, indeed.
And the compiler is called with -march=i686 --target=i386-pc-linux
which might be less mingw than expected.
Maybe it is better to make yourself familiar with cross-compiling and mingw in more usual setups? You could create your chainloaded toolchain file from the standard mingw.cmake. And there was the hint that you should pull the latest vcpkg changes. The vcpkg boost ports use CMake now.
I updated vcpkg, but the cause of the error seems to remain the same. I can’t use the standard x64-mingw-dynamic triplet because spdlog will not be build, which apparently requires the posix multithreading model (it doesn’t find std::thread, std::mutex, etc.), and when using the x64-mingw-dynamic triplet, it seems that a toolchain with a win32 model is used.
My triplet, toolchain and CMakePresets remain unchanged.
install-x64-mingw-dynamic-dbg-out.log:
Change Dir: '/home/ilya/.vcpkg/vcpkg/buildtrees/boost-stacktrace/sg-x64-mingw-dynamic-release-rel'
Run Build Command(s): /home/ilya/.vcpkg/vcpkg/downloads/tools/ninja/1.10.2-linux/ninja -v -v -j17 install
[1/11] /home/ilya/pixelfield/llvm-mingw-20240502-msvcrt-ubuntu-20.04-x86_64/bin/x86_64-w64-mingw32-clang++ -DBOOST_STACKTRACE_DYN_LINK -DBOOST_STACKTRACE_NO_LIB -DBOOST_STACKTRACE_SOURCE -Dboost_stacktrace_noop_EXPORTS -I/home/ilya/.vcpkg/vcpkg/buildtrees/boost-stacktrace/src/ost-1.84.0-702c4b29d6.clean/libs/stacktrace/include -isystem /home/ilya/pixelfield/test-windows/cmake-build-release-mingw-x86-64/vcpkg_installed/sg-x64-mingw-dynamic-release/include -O3 -DNDEBUG -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -fcolor-diagnostics -MD -MT libs/stacktrace/CMakeFiles/boost_stacktrace_noop.dir/src/noop.cpp.obj -MF libs/stacktrace/CMakeFiles/boost_stacktrace_noop.dir/src/noop.cpp.obj.d -o libs/stacktrace/CMakeFiles/boost_stacktrace_noop.dir/src/noop.cpp.obj -c /home/ilya/.vcpkg/vcpkg/buildtrees/boost-stacktrace/src/ost-1.84.0-702c4b29d6.clean/libs/stacktrace/src/noop.cpp
[2/11] : && /home/ilya/pixelfield/llvm-mingw-20240502-msvcrt-ubuntu-20.04-x86_64/bin/x86_64-w64-mingw32-clang++ -fPIC -O3 -DNDEBUG -shared -o stage/lib/libboost_stacktrace_noop.so libs/stacktrace/CMakeFiles/boost_stacktrace_noop.dir/src/noop.cpp.obj && :
[3/11] /home/ilya/pixelfield/llvm-mingw-20240502-msvcrt-ubuntu-20.04-x86_64/bin/x86_64-w64-mingw32-clang++ -DBOOST_STACKTRACE_DYN_LINK -DBOOST_STACKTRACE_NO_LIB -DBOOST_STACKTRACE_SOURCE -Dboost_stacktrace_basic_EXPORTS -I/home/ilya/.vcpkg/vcpkg/buildtrees/boost-stacktrace/src/ost-1.84.0-702c4b29d6.clean/libs/stacktrace/include -isystem /home/ilya/pixelfield/test-windows/cmake-build-release-mingw-x86-64/vcpkg_installed/sg-x64-mingw-dynamic-release/include -O3 -DNDEBUG -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -fcolor-diagnostics -MD -MT libs/stacktrace/CMakeFiles/boost_stacktrace_basic.dir/src/basic.cpp.obj -MF libs/stacktrace/CMakeFiles/boost_stacktrace_basic.dir/src/basic.cpp.obj.d -o libs/stacktrace/CMakeFiles/boost_stacktrace_basic.dir/src/basic.cpp.obj -c /home/ilya/.vcpkg/vcpkg/buildtrees/boost-stacktrace/src/ost-1.84.0-702c4b29d6.clean/libs/stacktrace/src/basic.cpp
[4/11] : && /home/ilya/pixelfield/llvm-mingw-20240502-msvcrt-ubuntu-20.04-x86_64/bin/x86_64-w64-mingw32-clang++ -fPIC -O3 -DNDEBUG -shared -o stage/lib/libboost_stacktrace_basic.so libs/stacktrace/CMakeFiles/boost_stacktrace_basic.dir/src/basic.cpp.obj && :
[5/11] /home/ilya/pixelfield/llvm-mingw-20240502-msvcrt-ubuntu-20.04-x86_64/bin/x86_64-w64-mingw32-clang++ -DBOOST_STACKTRACE_DYN_LINK -DBOOST_STACKTRACE_NO_LIB -DBOOST_STACKTRACE_SOURCE -Dboost_stacktrace_addr2line_EXPORTS -I/home/ilya/.vcpkg/vcpkg/buildtrees/boost-stacktrace/src/ost-1.84.0-702c4b29d6.clean/libs/stacktrace/include -isystem /home/ilya/pixelfield/test-windows/cmake-build-release-mingw-x86-64/vcpkg_installed/sg-x64-mingw-dynamic-release/include -O3 -DNDEBUG -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -fcolor-diagnostics -MD -MT libs/stacktrace/CMakeFiles/boost_stacktrace_addr2line.dir/src/addr2line.cpp.obj -MF libs/stacktrace/CMakeFiles/boost_stacktrace_addr2line.dir/src/addr2line.cpp.obj.d -o libs/stacktrace/CMakeFiles/boost_stacktrace_addr2line.dir/src/addr2line.cpp.obj -c /home/ilya/.vcpkg/vcpkg/buildtrees/boost-stacktrace/src/ost-1.84.0-702c4b29d6.clean/libs/stacktrace/src/addr2line.cpp
FAILED: libs/stacktrace/CMakeFiles/boost_stacktrace_addr2line.dir/src/addr2line.cpp.obj
/home/ilya/pixelfield/llvm-mingw-20240502-msvcrt-ubuntu-20.04-x86_64/bin/x86_64-w64-mingw32-clang++ -DBOOST_STACKTRACE_DYN_LINK -DBOOST_STACKTRACE_NO_LIB -DBOOST_STACKTRACE_SOURCE -Dboost_stacktrace_addr2line_EXPORTS -I/home/ilya/.vcpkg/vcpkg/buildtrees/boost-stacktrace/src/ost-1.84.0-702c4b29d6.clean/libs/stacktrace/include -isystem /home/ilya/pixelfield/test-windows/cmake-build-release-mingw-x86-64/vcpkg_installed/sg-x64-mingw-dynamic-release/include -O3 -DNDEBUG -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -fcolor-diagnostics -MD -MT libs/stacktrace/CMakeFiles/boost_stacktrace_addr2line.dir/src/addr2line.cpp.obj -MF libs/stacktrace/CMakeFiles/boost_stacktrace_addr2line.dir/src/addr2line.cpp.obj.d -o libs/stacktrace/CMakeFiles/boost_stacktrace_addr2line.dir/src/addr2line.cpp.obj -c /home/ilya/.vcpkg/vcpkg/buildtrees/boost-stacktrace/src/ost-1.84.0-702c4b29d6.clean/libs/stacktrace/src/addr2line.cpp
In file included from /home/ilya/.vcpkg/vcpkg/buildtrees/boost-stacktrace/src/ost-1.84.0-702c4b29d6.clean/libs/stacktrace/src/addr2line.cpp:15:
In file included from /home/ilya/.vcpkg/vcpkg/buildtrees/boost-stacktrace/src/ost-1.84.0-702c4b29d6.clean/libs/stacktrace/include/boost/stacktrace/detail/frame_unwind.ipp:27:
/home/ilya/.vcpkg/vcpkg/buildtrees/boost-stacktrace/src/ost-1.84.0-702c4b29d6.clean/libs/stacktrace/include/boost/stacktrace/detail/addr2line_impls.hpp:23:10: fatal error: 'sys/wait.h' file not found
23 | #include <sys/wait.h>
| ^~~~~~~~~~~~
1 error generated.
vcpkg install:
Installing 17/26 boost-stacktrace:sg-x64-mingw-dynamic-release@1.84.0#1...
Building boost-stacktrace:sg-x64-mingw-dynamic-release@1.84.0#1...
/home/ilya/pixelfield/test-windows/vcpkg-triplets/sg-x64-mingw-dynamic-release.cmake: info: loaded overlay triplet from here
/home/ilya/.vcpkg/vcpkg/buildtrees/versioning_/versions/boost-stacktrace/dc0dd3025ddedcd693d91de5e97cb942733c247a: info: installing overlay port from here
-- Using cached boostorg-stacktrace-boost-1.84.0.tar.gz.
-- Cleaning sources at /home/ilya/.vcpkg/vcpkg/buildtrees/boost-stacktrace/src/ost-1.84.0-702c4b29d6.clean. Use --editable to skip cleaning for the packages you specify.
-- Extracting source /home/ilya/.vcpkg/vcpkg/downloads/boostorg-stacktrace-boost-1.84.0.tar.gz
-- Applying patch fix_config-check.diff
-- Using source at /home/ilya/.vcpkg/vcpkg/buildtrees/boost-stacktrace/src/ost-1.84.0-702c4b29d6.clean
-- Configuring sg-x64-mingw-dynamic-release
-- Building sg-x64-mingw-dynamic-release-rel
CMake Error at scripts/cmake/vcpkg_execute_build_process.cmake:134 (message):
Command failed: /home/ilya/.vcpkg/vcpkg/downloads/tools/cmake-3.29.2-linux/cmake-3.29.2-linux-x86_64/bin/cmake --build . --config Release --target install -- -v -j17
Working Directory: /home/ilya/.vcpkg/vcpkg/buildtrees/boost-stacktrace/sg-x64-mingw-dynamic-release-rel
See logs for more information:
/home/ilya/.vcpkg/vcpkg/buildtrees/boost-stacktrace/install-sg-x64-mingw-dynamic-release-rel-out.log
Call Stack (most recent call first):
/home/ilya/pixelfield/test-windows/cmake-build-release-mingw-x86-64/vcpkg_installed/sg-x64-mingw-dynamic-release/share/vcpkg-cmake/vcpkg_cmake_build.cmake:74 (vcpkg_execute_build_process)
/home/ilya/pixelfield/test-windows/cmake-build-release-mingw-x86-64/vcpkg_installed/sg-x64-mingw-dynamic-release/share/vcpkg-cmake/vcpkg_cmake_install.cmake:16 (vcpkg_cmake_build)
/home/ilya/pixelfield/test-windows/cmake-build-release-mingw-x86-64/vcpkg_installed/sg-x64-mingw-dynamic-release/share/vcpkg-boost/boost-install.cmake:65 (vcpkg_cmake_install)
buildtrees/versioning_/versions/boost-stacktrace/dc0dd3025ddedcd693d91de5e97cb942733c247a/portfile.cmake:15 (boost_configure_and_install)
scripts/ports.cmake:175 (include)
The mingw triplets don't enforce a particular multithreading model. It is up to your mingw installation. But many packages simply require C++ features which are only provided with the posix model.
Sorry, but this does not solve my problem with llvm-mingw and the reason for the error remains unclear. You're just advising me to use the standard x64-mingw-dynamic. Or did I misunderstand you?
my problem with llvm-mingw and the reason for the error remains unclear.
There is still -march=i686 --target=i386-pc-linux
. I don't know where it comes from, but I would really expect mingw
or win32
instead of linux
there.
This is an automated message. Per our repo policy, stale issues get closed if there has been no activity in the past 180 days. The issue will be automatically closed in 14 days. If you wish to keep this issue open, please add a new comment.
Operating system
Host: Linux. Target: MinGW x86_64
Compiler
llvm-mingw
Steps to reproduce the behavior
Target triplet:
Using toolchaing:
Vcpkg version: 2024-02-07-8a83681f921b10d86ae626fd833c253f4f8c355b Build type: release
Failure logs
Additional context
Hi, I know this is a duplicate of #35500, but in this case my VCPKG_BUILD_TYPE=release. What should I do?