### ### ### Using 'gcc' toolset. ### ### g++ (GCC) 10.2.0 Copyright (C) 2020 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. ### ### > g++ -x c++ -std=c++11 -O2 -s -DNDEBUG builtins.cpp class.cpp command.cpp compile.cpp constants.cpp cwd.cpp debug.cpp debugger.cpp execcmd.cpp execnt.cpp execunix.cpp filesys.cpp filent.cpp fileunix.cpp frames.cpp function.cpp glob.cpp hash.cpp hcache.cpp hdrmacro.cpp headers.cpp jam_strings.cpp jam.cpp jamgram.cpp lists.cpp make.cpp make1.cpp md5.cpp mem.cpp modules.cpp native.cpp object.cpp option.cpp output.cpp parse.cpp pathnt.cpp pathsys.cpp pathunix.cpp regexp.cpp rules.cpp scan.cpp search.cpp startup.cpp subst.cpp sysinfo.cpp timestamp.cpp variable.cpp w32_getreg.cpp modules/order.cpp modules/path.cpp modules/property-set.cpp modules/regex.cpp modules/sequence.cpp modules/set.cpp -o b2 builtins.cpp: In function ‘LIST* builtin_readlink(FRAME*, int)’: builtins.cpp:1893:23: error: ‘readlink’ was not declared in this scope 1893 | ssize_t len = readlink( path, buf, bufsize ); | ^~~~~~~~ builtins.cpp: In function ‘LIST* builtin_shell(FRAME*, int)’: builtins.cpp:2433:9: error: ‘popen’ was not declared in this scope; did you mean ‘fopen’? 2433 | p = popen( object_str( list_front( command ) ), "r" ); | ^~~~~ | fopen builtins.cpp:2455:19: error: ‘pclose’ was not declared in this scope; did you mean ‘close’? 2455 | exit_status = pclose( p ); | ^~~~~~ | close debugger.cpp: In function ‘char* debug_string_read(FILE*)’: debugger.cpp:110:14: error: ‘strdup’ was not declared in this scope; did you mean ‘strcmp’? 110 | result = strdup( buf->value ); | ^~~~~~ | strcmp debugger.cpp: In function ‘void debug_start_child(int, const char**)’: debugger.cpp:1234:25: error: ‘fdopen’ was not declared in this scope; did you mean ‘fopen’? 1234 | command_input = fdopen( read_fd, "r" ); | ^~~~~~ | fopen debugger.cpp:1245:26: error: ‘fdopen’ was not declared in this scope; did you mean ‘fopen’? 1245 | command_output = fdopen( write_fd, "w" ); | ^~~~~~ | fopen execunix.cpp: In function ‘void exec_cmd(const string*, int, ExecCmdCallback, void*, LIST*)’: execunix.cpp:182:22: error: aggregate ‘exec_cmd(const string*, int, ExecCmdCallback, void*, LIST*)::sigaction ignore’ has incomplete type and cannot be defined 182 | struct sigaction ignore, saveintr, savequit; | ^~~~~~ execunix.cpp:182:30: error: aggregate ‘exec_cmd(const string*, int, ExecCmdCallback, void*, LIST*)::sigaction saveintr’ has incomplete type and cannot be defined 182 | struct sigaction ignore, saveintr, savequit; | ^~~~~~~~ execunix.cpp:182:40: error: aggregate ‘exec_cmd(const string*, int, ExecCmdCallback, void*, LIST*)::sigaction savequit’ has incomplete type and cannot be defined 182 | struct sigaction ignore, saveintr, savequit; | ^~~~~~~~ execunix.cpp:245:5: error: ‘sigemptyset’ was not declared in this scope 245 | sigemptyset(&ignore.sa_mask); | ^~~~~~~~~~~ execunix.cpp:247:45: error: invalid use of incomplete type ‘struct exec_cmd(const string*, int, ExecCmdCallback, void*, LIST*)::sigaction’ 247 | if (sigaction(SIGINT, &ignore, &saveintr) < 0) | ^ execunix.cpp:182:12: note: forward declaration of ‘struct exec_cmd(const string*, int, ExecCmdCallback, void*, LIST*)::sigaction’ 182 | struct sigaction ignore, saveintr, savequit; | ^~~~~~~~~ execunix.cpp:249:46: error: invalid use of incomplete type ‘struct exec_cmd(const string*, int, ExecCmdCallback, void*, LIST*)::sigaction’ 249 | if (sigaction(SIGQUIT, &ignore, &savequit) < 0) | ^ execunix.cpp:182:12: note: forward declaration of ‘struct exec_cmd(const string*, int, ExecCmdCallback, void*, LIST*)::sigaction’ 182 | struct sigaction ignore, saveintr, savequit; | ^~~~~~~~~ execunix.cpp:254:5: error: ‘sigaddset’ was not declared in this scope 254 | sigaddset(&chldmask, SIGCHLD); | ^~~~~~~~~ execunix.cpp:255:21: error: ‘SIG_BLOCK’ was not declared in this scope 255 | if (sigprocmask(SIG_BLOCK, &chldmask, &savemask) < 0) | ^~~~~~~~~ execunix.cpp:255:9: error: ‘sigprocmask’ was not declared in this scope 255 | if (sigprocmask(SIG_BLOCK, &chldmask, &savemask) < 0) | ^~~~~~~~~~~ execunix.cpp:258:33: error: ‘vfork’ was not declared in this scope; did you mean ‘fork’? 258 | if ( ( cmdtab[ slot ].pid = vfork() ) == -1 ) | ^~~~~ | fork execunix.cpp:272:42: error: invalid use of incomplete type ‘struct exec_cmd(const string*, int, ExecCmdCallback, void*, LIST*)::sigaction’ 272 | sigaction(SIGINT, &saveintr, NULL); | ^ execunix.cpp:182:12: note: forward declaration of ‘struct exec_cmd(const string*, int, ExecCmdCallback, void*, LIST*)::sigaction’ 182 | struct sigaction ignore, saveintr, savequit; | ^~~~~~~~~ execunix.cpp:273:43: error: invalid use of incomplete type ‘struct exec_cmd(const string*, int, ExecCmdCallback, void*, LIST*)::sigaction’ 273 | sigaction(SIGQUIT, &savequit, NULL); | ^ execunix.cpp:182:12: note: forward declaration of ‘struct exec_cmd(const string*, int, ExecCmdCallback, void*, LIST*)::sigaction’ 182 | struct sigaction ignore, saveintr, savequit; | ^~~~~~~~~ execunix.cpp:274:21: error: ‘SIG_SETMASK’ was not declared in this scope 274 | sigprocmask(SIG_SETMASK, &savemask, NULL); | ^~~~~~~~~~~ execunix.cpp:274:9: error: ‘sigprocmask’ was not declared in this scope 274 | sigprocmask(SIG_SETMASK, &savemask, NULL); | ^~~~~~~~~~~ execunix.cpp:324:36: error: ‘fdopen’ was not declared in this scope; did you mean ‘fopen’? 324 | cmdtab[ slot ].stream[ OUT ] = fdopen( cmdtab[ slot ].fd[ OUT ], "rb" ); | ^~~~~~ | fopen execunix.cpp:354:38: error: invalid use of incomplete type ‘struct exec_cmd(const string*, int, ExecCmdCallback, void*, LIST*)::sigaction’ 354 | sigaction(SIGINT, &saveintr, NULL); | ^ execunix.cpp:182:12: note: forward declaration of ‘struct exec_cmd(const string*, int, ExecCmdCallback, void*, LIST*)::sigaction’ 182 | struct sigaction ignore, saveintr, savequit; | ^~~~~~~~~ execunix.cpp:355:39: error: invalid use of incomplete type ‘struct exec_cmd(const string*, int, ExecCmdCallback, void*, LIST*)::sigaction’ 355 | sigaction(SIGQUIT, &savequit, NULL); | ^ execunix.cpp:182:12: note: forward declaration of ‘struct exec_cmd(const string*, int, ExecCmdCallback, void*, LIST*)::sigaction’ 182 | struct sigaction ignore, saveintr, savequit; | ^~~~~~~~~ execunix.cpp:356:17: error: ‘SIG_SETMASK’ was not declared in this scope 356 | sigprocmask(SIG_SETMASK, &savemask, NULL); | ^~~~~~~~~~~ execunix.cpp:356:5: error: ‘sigprocmask’ was not declared in this scope 356 | sigprocmask(SIG_SETMASK, &savemask, NULL); | ^~~~~~~~~~~ execunix.cpp: In function ‘void exec_wait()’: execunix.cpp:480:25: error: ‘killpg’ was not declared in this scope 480 | killpg( cmdtab[ i ].pid, SIGKILL ); | ^~~~~~ execunix.cpp:494:13: error: ‘sigemptyset’ was not declared in this scope 494 | sigemptyset(&sigmask); | ^~~~~~~~~~~ execunix.cpp:495:13: error: ‘sigaddset’ was not declared in this scope 495 | sigaddset(&sigmask, SIGCHLD); | ^~~~~~~~~ execunix.cpp:496:25: error: ‘SIG_BLOCK’ was not declared in this scope 496 | sigprocmask(SIG_BLOCK, &sigmask, NULL); | ^~~~~~~~~ execunix.cpp:496:13: error: ‘sigprocmask’ was not declared in this scope; did you mean ‘sigmask’? 496 | sigprocmask(SIG_BLOCK, &sigmask, NULL); | ^~~~~~~~~~~ | sigmask execunix.cpp:506:25: error: ‘SIG_UNBLOCK’ was not declared in this scope 506 | sigprocmask(SIG_UNBLOCK, &sigmask, NULL); | ^~~~~~~~~~~ fileunix.cpp: In function ‘int file_collect_dir_content_(file_info_t*)’: fileunix.cpp:132:56: error: ‘alphasort’ was not declared in this scope 132 | if ( -1 == ( n = scandir( dirstr, &namelist, NULL, alphasort ) ) ) | ^~~~~~~~~ fileunix.cpp:132:22: error: ‘scandir’ was not declared in this scope 132 | if ( -1 == ( n = scandir( dirstr, &namelist, NULL, alphasort ) ) ) | ^~~~~~~ pathsys.cpp: In function ‘char* executable_path(const char*)’: pathsys.cpp:413:25: error: ‘readlink’ was not declared in this scope 413 | ssize_t const ret = readlink( "/proc/self/exe", buf, sizeof( buf ) ); | ^~~~~~~~ pathsys.cpp:414:54: error: ‘strndup’ was not declared in this scope; did you mean ‘strncmp’? 414 | return ( !ret || ret == sizeof( buf ) ) ? NULL : strndup( buf, ret ); | ^~~~~~~ | strncmp > cp b2 bjam cp: cannot stat 'b2': No such file or directory