xmake-io/xmake-repo

libtorch build failing on Windows - error C3861: 'pthread_atfork': identifier not found

Opened this issue · 0 comments

Xmake Version

xmake v2.9.1+master.61498e219

Operating System Version and Architecture

Windows 11 Pro 23H2

Describe Bug

When trying to add libtorch to my project with the following line, the build fails.

add_requires("libtorch ~2.2.2")
FAILED: caffe2/CMakeFiles/torch_cpu.dir/utils/threadpool/pthreadpool-cpp.cc.obj 
"C:\PROGRA~2\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.39.33519\bin\Hostx64\x64\cl.exe"  /nologo /TP -DAT_PER_OPERATOR_HEADERS -DCAFFE2_BUILD_MAIN_LIB -DCPUINFO_SUPPORTED_PLATFORM=1 -DFMT_HEADER_ONLY=1 -DMINIZ_DISABLE_ZIP_READER_CRC32_CHECKS -DNOMINMAX -DONNXIFI_ENABLE_EXT=1 -DONNX_ML=1 -DONNX_NAMESPACE=onnx_torch -DUSE_EXTERNAL_MZCRC -DUSE_MIMALLOC -DWIN32_LEAN_AND_MEAN -D_CRT_SECURE_NO_DEPRECATE=1 -D_UCRT_LEGACY_INFINITY -Dtorch_cpu_EXPORTS -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\build_25315093\aten\src -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\aten\src -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\build_25315093 -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\third_party\onnx -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\build_25315093\third_party\onnx -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\third_party\foxi -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\build_25315093\third_party\foxi -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\third_party\mimalloc\include -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\torch\csrc\api -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\torch\csrc\api\include -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\caffe2\aten\src\TH -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\build_25315093\caffe2\aten\src\TH -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\build_25315093\caffe2\aten\src -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\build_25315093\caffe2\..\aten\src -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\torch\csrc -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\third_party\miniz-2.1.0 -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\third_party\kineto\libkineto\include -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\third_party\kineto\libkineto\src -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\aten\src\ATen\.. -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\c10\.. -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\third_party\pthreadpool\include -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\third_party\cpuinfo\include -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\third_party\fbgemm\include -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\third_party\fbgemm -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\third_party\fbgemm\third_party\asmjit\src -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\third_party\ittapi\src\ittnotify -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\third_party\FP16\include -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\third_party\fmt\include -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\build_25315093\third_party\ideep\mkl-dnn\include -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\third_party\ideep\mkl-dnn\src\..\include -IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\third_party\flatbuffers\include -external:IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\third_party\protobuf\src -external:IC:\Users\Isaac\AppData\Local\.xmake\packages\o\openblas\0.3.26\f9489786aa854875b480dc6a42b880e3\include -external:IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\third_party\XNNPACK\include -external:IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\third_party\ittapi\include -external:IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\cmake\..\third_party\eigen -external:IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\third_party\ideep\mkl-dnn\include\oneapi\dnnl -external:IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\third_party\ideep\include -external:IC:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\caffe2 -external:W0 -MT /Zc:__cplusplus /bigobj /FS /utf-8 -DUSE_PTHREADPOOL -DNDEBUG -DUSE_KINETO -DLIBKINETO_NOCUPTI -DLIBKINETO_NOROCTRACER -DUSE_FBGEMM -DUSE_XNNPACK -DSYMBOLICATE_MOBILE_DEBUG_HANDLE /wd4624 /wd4068 /wd4067 /wd4267 /wd4661 /wd4717 /wd4244 /wd4804 /wd4273 -DHAVE_AVX512_CPU_DEFINITION -DHAVE_AVX2_CPU_DEFINITION /MT /O2 /Ob2 /DNDEBUG /bigobj -DNDEBUG -std:c++17 -MT /EHsc /bigobj -O2 -DONNX_BUILD_MAIN_LIB -openmp:experimental /showIncludes /Focaffe2\CMakeFiles\torch_cpu.dir\utils\threadpool\pthreadpool-cpp.cc.obj /Fdcaffe2\pdb\ /FS -c C:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\caffe2\utils\threadpool\pthreadpool-cpp.cc
C:\Users\Isaac\AppData\Local\Temp\.xmake\240507.dir\caffe2\utils\threadpool\pthreadpool-cpp.cc(94): error C3861: 'pthread_atfork': identifier not found

Expected Behavior

It should build and get included in my project

Project Configuration

add_rules("mode.debug", "mode.release")

-- happens even with these lines removed:
add_requires("imgui ~1.90.5", {configs = {glfw_opengl3 = true}})
add_requires("opencv ~4.9")

-- tried adding following line too, does not help:
add_syslinks("pthread", "dl", "m", "c")
add_requires("libtorch ~2.2.2")

target("yolo-fbt")
    set_kind("binary")
    add_files("src/*.cpp")
    add_packages("imgui", "opencv", "libtorch")
    set_languages("c++23")

Additional Information and Error Logs

libtorch failed build.log