[build2] build2 g++ -std=c++1y problem

Feiyun Wang feiyunw at yahoo.com
Mon May 21 08:58:33 UTC 2018


Hi,




I got some error when building build2-toolchain on cygwin64:
````
Administrator at ND9999999 /cygdrive/g/prj/odb/build2-build/build2-toolchain-0.6.2/build2
$ ./bootstrap.sh g++
+ g++ -I../libbutl -I. '-DBUILD2_HOST_TRIPLET="x86_64-unknown-cygwin"' -std=c++1y -o build2/b-boot build2/algorithm.cxx build2/b.cxx build2/b-options.cxx build2/context.cxx build2/depdb.cxx build2/diagnostics.cxx build2/dump.cxx build2/file.cxx build2/filesystem.cxx build2/function.cxx build2/functions-builtin.cxx build2/functions-filesystem.cxx build2/functions-path.cxx build2/functions-process-path.cxx build2/functions-regex.cxx build2/functions-string.cxx build2/functions-target-triplet.cxx build2/lexer.cxx build2/module.cxx build2/name.cxx build2/operation.cxx build2/parser.cxx build2/prerequisite.cxx build2/rule.cxx build2/scheduler.cxx build2/scope.cxx build2/search.cxx build2/spec.cxx build2/target.cxx build2/token.cxx build2/types-parsers.cxx build2/utility.cxx build2/variable.cxx build2/config/init.cxx build2/config/module.cxx build2/config/operation.cxx build2/config/utility.cxx build2/dist/init.cxx build2/dist/module.cxx build2/dist/operation.cxx build2/dist/rule.cxx build2/bin/guess.cxx build2/bin/init.cxx build2/bin/rule.cxx build2/bin/target.cxx build2/c/init.cxx build2/cc/common.cxx build2/cc/compile.cxx build2/cc/gcc.cxx build2/cc/guess.cxx build2/cc/init.cxx build2/cc/install.cxx build2/cc/lexer.cxx build2/cc/link.cxx build2/cc/module.cxx build2/cc/msvc.cxx build2/cc/parser.cxx build2/cc/pkgconfig.cxx build2/cc/target.cxx build2/cc/utility.cxx build2/cc/windows-manifest.cxx build2/cc/windows-rpath.cxx build2/cxx/init.cxx build2/cxx/target.cxx build2/cli/init.cxx build2/cli/rule.cxx build2/cli/target.cxx build2/test/common.cxx build2/test/init.cxx build2/test/operation.cxx build2/test/rule.cxx build2/test/target.cxx build2/test/script/builtin.cxx build2/test/script/lexer.cxx build2/test/script/parser.cxx build2/test/script/regex.cxx build2/test/script/runner.cxx build2/test/script/script.cxx build2/test/script/token.cxx build2/version/init.cxx build2/version/module.cxx build2/version/rule.cxx build2/version/snapshot.cxx build2/version/snapshot-git.cxx build2/install/init.cxx build2/install/operation.cxx build2/install/rule.cxx build2/pkgconfig/init.cxx build2/pkgconfig/target.cxx ../libbutl/libbutl/base64.cxx ../libbutl/libbutl/char-scanner.cxx ../libbutl/libbutl/curl.cxx ../libbutl/libbutl/diagnostics.cxx ../libbutl/libbutl/fdstream.cxx ../libbutl/libbutl/filesystem.cxx ../libbutl/libbutl/manifest-parser.cxx ../libbutl/libbutl/manifest-serializer.cxx ../libbutl/libbutl/openssl.cxx ../libbutl/libbutl/pager.cxx ../libbutl/libbutl/path.cxx ../libbutl/libbutl/process.cxx ../libbutl/libbutl/process-run.cxx ../libbutl/libbutl/regex.cxx ../libbutl/libbutl/sendmail.cxx ../libbutl/libbutl/sha256.cxx ../libbutl/libbutl/standard-version.cxx ../libbutl/libbutl/string-parser.cxx ../libbutl/libbutl/tab-parser.cxx ../libbutl/libbutl/target-triplet.cxx ../libbutl/libbutl/timestamp.cxx ../libbutl/libbutl/utility.cxx ../libbutl/libbutl/win32-utility.cxx -lpthread
In file included from ../libbutl/libbutl/ft/shared_mutex.hxx:9:0,
                 from ./build2/types.hxx:26,
                 from ./build2/algorithm.hxx:8,
                 from build2/algorithm.cxx:5:
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/include/c++/shared_mutex: In member function ‘void std::__shared_mutex_pthread::lock()’:
/usr/lib/gcc/x86_64-pc-cygwin/6.4.0/include/c++/shared_mutex:105:51: error: ‘pthread_rwlock_wrlock’ was not declared in this scope
       int __ret = pthread_rwlock_wrlock(&_M_rwlock);
````

I suggest to change "-std=c++1y" to "-std=gnu++14" for g++ options. BTW, "-std=c++14" doesn't work either.
See the attached patch file.

FYI:
__POSIX_VISIBLE is ruining my pthreading on cygwin


| 
| 
| 
|  |  |

 |

 |
| 
|  | 
__POSIX_VISIBLE is ruining my pthreading on cygwin

I'm compiling a project that uses pthreads with gcc (g++ exactly) on cygwin. Seeing as how I have always develop...
 |

 |

 |


My g++ version:

````



Administrator at ND9999999 /cygdrive/g/prj/odb/build2-build/build2-toolchain-0.6.2/build2
$ which g++
/usr/bin/g++

Administrator at ND9999999 /cygdrive/g/prj/odb/build2-build/build2-toolchain-0.6.2/build2
$ g++ --version
g++ (GCC) 6.4.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

````


Sincerely,
Feiyun Wang






-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.build2.org/archives/users/attachments/20180521/89a1855e/attachment.html>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: 0001-Change-std-c-1y-to-std-gnu-14-for-g-options.patch
URL: <https://lists.build2.org/archives/users/attachments/20180521/89a1855e/attachment.ksh>


More information about the users mailing list