Closed seanbaxter closed 4 years ago
You need to add an entry for your compiler (similar to these): https://github.com/bloomberg/bde-tools/blob/master/cmake/bde_ufid.cmake#L629-L631
Then rerun configure with --clean ( to force compiler detection step).
Another location where you might want to extend the compiler entries are here: https://github.com/bloomberg/bde-tools/blob/master/cmake/bde_ufid.cmake#L573-L587
Most everything seems to compile and link, except tests relying on pthreads. bsls_splinlock.t is the first test to break the build.
The link.txt shows this: /usr/bin/circle -O2 -DNDEBUG CMakeFiles/bsls_spinlock.t.dir/groups/bsl/bsls/bsls_spinlock.t.cpp.o -o bsls_spinlock.t libbsls.
The terminal output complains about no pthread:
Scanning dependencies of target bsls_spinlock.t [ 23%] Building CXX object CMakeFiles/bsls_spinlock.t.dir/groups/bsl/bsls/bsls_spinlock.t.cpp.o [ 23%] Linking CXX executable bsls_spinlock.t CMakeFiles/bsls_spinlock.t.dir/groups/bsl/bsls/bsls_spinlock.t.cpp.o: In function
createThread(void* (*)(void*), void*)': bsls_spinlock.t.cpp:(.text+0x7f): undefined reference to
pthread_create' CMakeFiles/bsls_spinlock.t.dir/groups/bsl/bsls/bsls_spinlock.t.cpp.o: In functionjoinThread(unsigned long)': bsls_spinlock.t.cpp:(.text+0xb3): undefined reference to
pthread_join' error: linker failed with exit code 1CMakeFiles/bsls_spinlock.t.dir/build.make:104: recipe for target 'bsls_spinlock.t' failed make[3]: [bsls_spinlock.t] Error 1 CMakeFiles/Makefile2:6345: recipe for target 'CMakeFiles/bsls_spinlock.t.dir/all' failed make[2]: [CMakeFiles/bsls_spinlock.t.dir/all] Error 2 CMakeFiles/Makefile2:5637: recipe for target 'CMakeFiles/all.t.dir/rule' failed make[1]: *** [CMakeFiles/all.t.dir/rule] Error 2
I pasted the bsls_spinlock.t.dir/build.make here: https://gist.github.com/seanbaxter/3b73ebee7cb034c97d905675767d7a6d
The only thing I can find relevant to pthread is in {build-dir}/bsl.py where Cflags: -I${includedir} -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT Libs: -L${libdir} -lbsl -lpthread -lrt
but these options do not get incorporated by configure into the build files created for my compiler.
What do I need to do to get -lpthread to be included?