Open jeremyd2019 opened 3 years ago
When using -fopenmp
GCC will pass -lgomp
even with -nostdlib
. Clang passes -lomp
only when there is no -nostdlib
.
yes it works :)
# clangs -fopenmp defaults to libgomp unless explicitly specified to link to libomp,
# it also disables omp use if -nostdlib is specified so we force it ugh...
if [ "${_compiler}" == "clang" ]; then
CFLAGS+=" -fopenmp"
CXXFLAGS+=" -fopenmp"
LDFLAGS+=" -fopenmp=libomp"
fi
no need for it in LIBS anymore.
Originally posted by @revelator in https://github.com/msys2/MINGW-packages/discussions/7589#discussioncomment-707495
In the above comment, I never did verify that that did work, I was just reposting the comment here where it was more relevant
libraw and adol-c use openmp, but seem to not link in -lomp for some reason. I believe it's due to libtool passing -nostdlib, and not -lomp.
Example:
/bin/sh ../libtool --tag=CXX --mode=link g++ -march=x86-64 -mtune=generic -O2 -pipe -version-info 4:0:2 -no-undefined -pipe -Wl,--dynamicbase -L/clang64/lib -lboost_system-mt -o libadolc.la -rpath /clang64/lib dummy.lo src/libadolcsrc.la src/drivers/libdrivers.la src/tapedoc/libtapedoc.la src/lie/liblie.la
libtool: link: g++ -shared -nostdlib C:/msys64/clang64/x86_64-w64-mingw32/lib/dllcrt2.o C:/msys64/clang64/x86_64-w64-mingw32/lib/crtbegin.o .libs/dummy.o -Wl,--whole-archive src/.libs/libadolcsrc.a src/drivers/.libs/libdrivers.a src/tapedoc/.libs/libtapedoc.a src/lie/.libs/liblie.a -Wl,--no-whole-archive -L/clang64/lib -lboost_system-mt -LC:/msys64/clang64/x86_64-w64-mingw32/lib -LC:/msys64/clang64/lib -LC:/msys64/clang64/x86_64-w64-mingw32/sys-root/mingw/lib -LC:/msys64/clang64/lib/clang/11.0.0/lib/windows -lc++ -lmingw32 C:/msys64/clang64/lib/clang/11.0.0/lib/windows/libclang_rt.builtins-x86_64.a -l:libunwind.dll.a -lmoldname -lmingwex -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 C:/msys64/clang64/lib/clang/11.0.0/lib/windows/libclang_rt.builtins-x86_64.a -l:libunwind.dll.a -lmoldname -lmingwex -lmsvcrt -lkernel32 C:/msys64/clang64/x86_64-w64-mingw32/lib/crtend.o -march=x86-64 -mtune=generic -O2 -Wl,--dynamicbase -fopenmp -o .libs/libadolc-2.dll -Wl,--enable-auto-image-base -Xlinker --out-implib -Xlinker .libs/libadolc.dll.a
lld-link: error: undefined symbol: omp_get_thread_num