emersion / mrsh

A minimal POSIX shell
MIT License
489 stars 35 forks source link

Build failure on Mac OS X 10.13.2 (Unable to specify soname (is Darwin supported?)) #181

Open joshnatis opened 3 years ago

joshnatis commented 3 years ago

Hi,

Running ./configure works with no errors at first, but running make afterwards yields:

Makefile:4: .build/config.mk: No such file or directory
Makefile:35: .build/cppcache: No such file or directory
make: *** No rule to make target `.build/cppcache'.  Stop.

(and indeed .build only contains check.c)

So I went searching in the configure script for what's going wrong --

201 for flag in -fPIC -Wl,--no-undefined -Wl,--as-needed
202 do
203         test_ldflags "$flag"
204 done

We never make it past line 204: test_ldflags goes through with argument -fPIC, but the next argument, -Wl,--no-undefined fails and the script exits (I'm not entirely sure if the arguments are being passed correctly to the function, but this is what's being passed).

So I removed the line that causes the script to exit on failure, 178:

170 test_ldflags() {
171         [ ! -e "$outdir"/check.c ] && cat <<-EOF > "$outdir"/check.c
172         int main(void) { return 0; }
173         EOF
174         if $CC "$@" -o /dev/null "$outdir"/check.c >/dev/null 2>&1
175         then
176                 append_ldflags "$@"
177         else
- 178                 return 1
+ 178                 :
179         fi
180 }

And now I get stuck at this error:

Checking for specifying soname for shared lib... no
Unable to specify soname (is Darwin supported?)

Do you have any idea of what's going wrong? Thanks


GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin17) but I also tried to sh it

eli-schwartz commented 3 years ago

Running ./configure works with no errors at first

So I removed the line that causes the script to exit on failure, 178:

Which one is it? :p

I somehow suspect making required flags unrequired isn't the solution though.

emersion commented 3 years ago

Have you tried the Meson build?

eli-schwartz commented 3 years ago

Which compiler are you using, anyway, that doesn't support -Wl,--no-undefined and doesn't support Darwin's -install_name

joshnatis commented 3 years ago

Which one is it? :p

Lol sorry I can see that's ambiguous now, it was late. Running the script produces no visible errors, most of the printed checks pass and there's no indication that it did not succeed.

Checking for -g... no
Checking for -std=c99... yes
Checking for -pedantic... yes
Checking for -Werror... yes
Checking for -Wundef... yes
Checking for -Wlogical-op... no
Checking for -Wmissing-include-dirs... yes
Checking for -Wold-style-definition... yes
Checking for -Wpointer-arith... yes
Checking for -Winit-self... yes
Checking for -Wfloat-equal... yes
Checking for -Wstrict-prototypes... yes
Checking for -Wredundant-decls... yes
Checking for -Wimplicit-fallthrough=2... no
Checking for -Wendif-labels... yes
Checking for -Wstrict-aliasing=2... yes
Checking for -Woverflow... yes
Checking for -Wformat=2... yes
Checking for -Wno-missing-braces... yes
Checking for -Wno-missing-field-initializers... yes
Checking for -Wno-unused-parameter... yes
Checking for -Wno-unused-result... yes

But, as mentioned, it doesn't produce the necessary files in .build, so after some debugging I figured out it was silently exiting on line 178.

I somehow suspect making required flags unrequired isn't the solution though.

I don't suspect that either, but I figured that my environment is supposed to be sufficient formrsh given that it's not heavily modified (essentially a stock Mac OS X with command-line tools installed), and that I saw no previous similar issues listed regarding Mac OS.

Which compiler are you using, anyway

The script asks for cc, which on my system is:

Apple LLVM version 9.1.0 (clang-902.0.39.1)
Target: x86_64-apple-darwin17.3.0
Thread model: posix

I also tried CC=gcc, but the same thing happens edit: just remembered that gcc is just a symlink (or alias, etc) for clang here, so of course it made no difference


Have you tried the Meson build?

I just tried it (after installing meson and ninja) and it worked. Could there be a bug in the configure script?

If it's useful, here's the output of Meson:

The Meson build system
Version: 0.58.0
Source dir: /Users/Josh/mrsh
Build dir: /Users/Josh/mrsh/build
Build type: native build
Project name: mrsh
Project version: 0.0.0
C compiler for the host machine: cc (clang 9.1.0 "Apple LLVM version 9.1.0 (clang-902.0.39.1)")
C linker for the host machine: cc ld64 351.8
Host machine cpu family: x86_64
Host machine cpu: x86_64
Compiler for C supports arguments -Wundef: YES 
Compiler for C supports arguments -Wlogical-op: NO 
Compiler for C supports arguments -Wmissing-include-dirs: YES 
Compiler for C supports arguments -Wold-style-definition: YES 
Compiler for C supports arguments -Wpointer-arith: YES 
Compiler for C supports arguments -Winit-self: YES 
Compiler for C supports arguments -Wfloat-equal: YES 
Compiler for C supports arguments -Wstrict-prototypes: YES 
Compiler for C supports arguments -Wredundant-decls: YES 
Compiler for C supports arguments -Wimplicit-fallthrough=2: NO 
Compiler for C supports arguments -Wendif-labels: YES 
Compiler for C supports arguments -Wstrict-aliasing=2: YES 
Compiler for C supports arguments -Woverflow: YES 
Compiler for C supports arguments -Wformat=2: YES 
Compiler for C supports arguments -Wmissing-prototypes: YES 
Compiler for C supports arguments -Wno-missing-braces: YES 
Compiler for C supports arguments -Wno-missing-field-initializers: YES 
Compiler for C supports arguments -Wno-unused-parameter: YES 
Compiler for C supports arguments -Wno-unused-result: YES 
Compiler for C supports arguments -Wno-format-overflow: NO 
Library readline found: YES
Checking for function "rl_replace_line" with dependency -lreadline: NO 
Checking if "-Wl,--version-script" links: NO 
Compiler for C supports link arguments -Wl,-exported_symbols_list /Users/Josh/mrsh/libmrsh.darwin.sym: YES 
Program ./harness.sh found: YES (/Users/Josh/mrsh/test/./harness.sh)
Program sh found: YES (/bin/sh)
Program ./harness.sh found: YES (/bin/sh /Users/Josh/mrsh/test/conformance/./harness.sh)
Message: 
Features:
  readline: true
  examples: true
Build targets in project: 3
LambdaP commented 2 years ago

This hasn’t moved for a while. To go further, here’s what both meson and ninja produce on my machine:

$ meson setup --wipe build
The Meson build system
Version: 0.59.1
Source dir: /Users/lambdap/mrsh
Build dir: /Users/lambdap/mrsh/build
Build type: native build
Project name: mrsh
Project version: 0.0.0
C compiler for the host machine: cc (clang 13.0.0 "Apple clang version 13.0.0 (clang-1300.0.29.3)")
C linker for the host machine: cc ld64 711
Host machine cpu family: x86_64
Host machine cpu: x86_64
Compiler for C supports arguments -Wundef: YES 
Compiler for C supports arguments -Wlogical-op: NO 
Compiler for C supports arguments -Wmissing-include-dirs: YES 
Compiler for C supports arguments -Wold-style-definition: YES 
Compiler for C supports arguments -Wpointer-arith: YES 
Compiler for C supports arguments -Winit-self: YES 
Compiler for C supports arguments -Wfloat-equal: YES 
Compiler for C supports arguments -Wstrict-prototypes: YES 
Compiler for C supports arguments -Wredundant-decls: YES 
Compiler for C supports arguments -Wimplicit-fallthrough=2: NO 
Compiler for C supports arguments -Wendif-labels: YES 
Compiler for C supports arguments -Wstrict-aliasing=2: YES 
Compiler for C supports arguments -Woverflow: YES 
Compiler for C supports arguments -Wformat=2: YES 
Compiler for C supports arguments -Wmissing-prototypes: YES 
Compiler for C supports arguments -Wno-missing-braces: YES 
Compiler for C supports arguments -Wno-missing-field-initializers: YES 
Compiler for C supports arguments -Wno-unused-parameter: YES 
Compiler for C supports arguments -Wno-unused-result: YES 
Compiler for C supports arguments -Wno-format-overflow: NO 
Library readline found: YES
Checking for function "rl_replace_line" with dependency -lreadline: NO 
Checking if "-Wl,--version-script" links: NO 
Compiler for C supports link arguments -Wl,-exported_symbols_list /Users/lambdap/mrsh/libmrsh.darwin.sym: YES 
Program ./harness.sh found: YES (/Users/lambdap/mrsh/test/./harness.sh)
Program sh found: YES (/bin/sh)
Program ./harness.sh found: YES (/bin/sh /Users/lambdap/mrsh/test/conformance/./harness.sh)
Message: 
Features:
  readline: true
  examples: true
Build targets in project: 3

Found ninja-1.10.2 at /usr/local/bin/ninja

and here’s ninja:

$ ninja --verbose -C build
ninja: Entering directory `build'
[1/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/array.c.o -MF libmrsh.0.dylib.p/array.c.o.d -o libmrsh.0.dylib.p/array.c.o -c ../array.c
[2/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/buffer.c.o -MF libmrsh.0.dylib.p/buffer.c.o.d -o libmrsh.0.dylib.p/buffer.c.o -c ../buffer.c
[3/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/arithm.c.o -MF libmrsh.0.dylib.p/arithm.c.o.d -o libmrsh.0.dylib.p/arithm.c.o -c ../arithm.c
[4/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/ast_print.c.o -MF libmrsh.0.dylib.p/ast_print.c.o.d -o libmrsh.0.dylib.p/ast_print.c.o -c ../ast_print.c
[5/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_alias.c.o -MF libmrsh.0.dylib.p/builtin_alias.c.o.d -o libmrsh.0.dylib.p/builtin_alias.c.o -c ../builtin/alias.c
[6/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_break.c.o -MF libmrsh.0.dylib.p/builtin_break.c.o.d -o libmrsh.0.dylib.p/builtin_break.c.o -c ../builtin/break.c
[7/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_bg.c.o -MF libmrsh.0.dylib.p/builtin_bg.c.o.d -o libmrsh.0.dylib.p/builtin_bg.c.o -c ../builtin/bg.c
[8/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_builtin.c.o -MF libmrsh.0.dylib.p/builtin_builtin.c.o.d -o libmrsh.0.dylib.p/builtin_builtin.c.o -c ../builtin/builtin.c
[9/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_command.c.o -MF libmrsh.0.dylib.p/builtin_command.c.o.d -o libmrsh.0.dylib.p/builtin_command.c.o -c ../builtin/command.c
[10/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_colon.c.o -MF libmrsh.0.dylib.p/builtin_colon.c.o.d -o libmrsh.0.dylib.p/builtin_colon.c.o -c ../builtin/colon.c
[11/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_cd.c.o -MF libmrsh.0.dylib.p/builtin_cd.c.o.d -o libmrsh.0.dylib.p/builtin_cd.c.o -c ../builtin/cd.c
[12/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_eval.c.o -MF libmrsh.0.dylib.p/builtin_eval.c.o.d -o libmrsh.0.dylib.p/builtin_eval.c.o -c ../builtin/eval.c
[13/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_exec.c.o -MF libmrsh.0.dylib.p/builtin_exec.c.o.d -o libmrsh.0.dylib.p/builtin_exec.c.o -c ../builtin/exec.c
[14/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_export.c.o -MF libmrsh.0.dylib.p/builtin_export.c.o.d -o libmrsh.0.dylib.p/builtin_export.c.o -c ../builtin/export.c
[15/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_dot.c.o -MF libmrsh.0.dylib.p/builtin_dot.c.o.d -o libmrsh.0.dylib.p/builtin_dot.c.o -c ../builtin/dot.c
[16/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_fg.c.o -MF libmrsh.0.dylib.p/builtin_fg.c.o.d -o libmrsh.0.dylib.p/builtin_fg.c.o -c ../builtin/fg.c
[17/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_exit.c.o -MF libmrsh.0.dylib.p/builtin_exit.c.o.d -o libmrsh.0.dylib.p/builtin_exit.c.o -c ../builtin/exit.c
[18/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_pwd.c.o -MF libmrsh.0.dylib.p/builtin_pwd.c.o.d -o libmrsh.0.dylib.p/builtin_pwd.c.o -c ../builtin/pwd.c
[19/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_false.c.o -MF libmrsh.0.dylib.p/builtin_false.c.o.d -o libmrsh.0.dylib.p/builtin_false.c.o -c ../builtin/false.c
[20/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_getopts.c.o -MF libmrsh.0.dylib.p/builtin_getopts.c.o.d -o libmrsh.0.dylib.p/builtin_getopts.c.o -c ../builtin/getopts.c
[21/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/ast.c.o -MF libmrsh.0.dylib.p/ast.c.o.d -o libmrsh.0.dylib.p/ast.c.o -c ../ast.c
[22/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_jobs.c.o -MF libmrsh.0.dylib.p/builtin_jobs.c.o.d -o libmrsh.0.dylib.p/builtin_jobs.c.o -c ../builtin/jobs.c
[23/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_hash.c.o -MF libmrsh.0.dylib.p/builtin_hash.c.o.d -o libmrsh.0.dylib.p/builtin_hash.c.o -c ../builtin/hash.c
[24/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_shift.c.o -MF libmrsh.0.dylib.p/builtin_shift.c.o.d -o libmrsh.0.dylib.p/builtin_shift.c.o -c ../builtin/shift.c
[25/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_return.c.o -MF libmrsh.0.dylib.p/builtin_return.c.o.d -o libmrsh.0.dylib.p/builtin_return.c.o -c ../builtin/return.c
[26/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_read.c.o -MF libmrsh.0.dylib.p/builtin_read.c.o.d -o libmrsh.0.dylib.p/builtin_read.c.o -c ../builtin/read.c
[27/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_set.c.o -MF libmrsh.0.dylib.p/builtin_set.c.o.d -o libmrsh.0.dylib.p/builtin_set.c.o -c ../builtin/set.c
[28/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_true.c.o -MF libmrsh.0.dylib.p/builtin_true.c.o.d -o libmrsh.0.dylib.p/builtin_true.c.o -c ../builtin/true.c
[29/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_ulimit.c.o -MF libmrsh.0.dylib.p/builtin_ulimit.c.o.d -o libmrsh.0.dylib.p/builtin_ulimit.c.o -c ../builtin/ulimit.c
[30/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_type.c.o -MF libmrsh.0.dylib.p/builtin_type.c.o.d -o libmrsh.0.dylib.p/builtin_type.c.o -c ../builtin/type.c
[31/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_times.c.o -MF libmrsh.0.dylib.p/builtin_times.c.o.d -o libmrsh.0.dylib.p/builtin_times.c.o -c ../builtin/times.c
[32/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_unalias.c.o -MF libmrsh.0.dylib.p/builtin_unalias.c.o.d -o libmrsh.0.dylib.p/builtin_unalias.c.o -c ../builtin/unalias.c
[33/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_unspecified.c.o -MF libmrsh.0.dylib.p/builtin_unspecified.c.o.d -o libmrsh.0.dylib.p/builtin_unspecified.c.o -c ../builtin/unspecified.c
[34/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_unset.c.o -MF libmrsh.0.dylib.p/builtin_unset.c.o.d -o libmrsh.0.dylib.p/builtin_unset.c.o -c ../builtin/unset.c
[35/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_wait.c.o -MF libmrsh.0.dylib.p/builtin_wait.c.o.d -o libmrsh.0.dylib.p/builtin_wait.c.o -c ../builtin/wait.c
[36/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_trap.c.o -MF libmrsh.0.dylib.p/builtin_trap.c.o.d -o libmrsh.0.dylib.p/builtin_trap.c.o -c ../builtin/trap.c
[37/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/getopt.c.o -MF libmrsh.0.dylib.p/getopt.c.o.d -o libmrsh.0.dylib.p/getopt.c.o -c ../getopt.c
[38/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/hashtable.c.o -MF libmrsh.0.dylib.p/hashtable.c.o.d -o libmrsh.0.dylib.p/hashtable.c.o -c ../hashtable.c
[39/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/builtin_umask.c.o -MF libmrsh.0.dylib.p/builtin_umask.c.o.d -o libmrsh.0.dylib.p/builtin_umask.c.o -c ../builtin/umask.c
[40/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/parser_parser.c.o -MF libmrsh.0.dylib.p/parser_parser.c.o.d -o libmrsh.0.dylib.p/parser_parser.c.o -c ../parser/parser.c
[41/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/parser_arithm.c.o -MF libmrsh.0.dylib.p/parser_arithm.c.o.d -o libmrsh.0.dylib.p/parser_arithm.c.o -c ../parser/arithm.c
[42/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/shell_arithm.c.o -MF libmrsh.0.dylib.p/shell_arithm.c.o.d -o libmrsh.0.dylib.p/shell_arithm.c.o -c ../shell/arithm.c
[43/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/shell_entry.c.o -MF libmrsh.0.dylib.p/shell_entry.c.o.d -o libmrsh.0.dylib.p/shell_entry.c.o -c ../shell/entry.c
[44/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/shell_path.c.o -MF libmrsh.0.dylib.p/shell_path.c.o.d -o libmrsh.0.dylib.p/shell_path.c.o -c ../shell/path.c
[45/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/shell_process.c.o -MF libmrsh.0.dylib.p/shell_process.c.o.d -o libmrsh.0.dylib.p/shell_process.c.o -c ../shell/process.c
[46/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/parser_word.c.o -MF libmrsh.0.dylib.p/parser_word.c.o.d -o libmrsh.0.dylib.p/parser_word.c.o -c ../parser/word.c
[47/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/shell_redir.c.o -MF libmrsh.0.dylib.p/shell_redir.c.o.d -o libmrsh.0.dylib.p/shell_redir.c.o -c ../shell/redir.c
[48/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/shell_job.c.o -MF libmrsh.0.dylib.p/shell_job.c.o.d -o libmrsh.0.dylib.p/shell_job.c.o -c ../shell/job.c
[49/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/shell_shell.c.o -MF libmrsh.0.dylib.p/shell_shell.c.o.d -o libmrsh.0.dylib.p/shell_shell.c.o -c ../shell/shell.c
[50/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/shell_task_pipeline.c.o -MF libmrsh.0.dylib.p/shell_task_pipeline.c.o.d -o libmrsh.0.dylib.p/shell_task_pipeline.c.o -c ../shell/task/pipeline.c
[51/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/parser_program.c.o -MF libmrsh.0.dylib.p/parser_program.c.o.d -o libmrsh.0.dylib.p/parser_program.c.o -c ../parser/program.c
[52/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/shell_task_task.c.o -MF libmrsh.0.dylib.p/shell_task_task.c.o.d -o libmrsh.0.dylib.p/shell_task_task.c.o -c ../shell/task/task.c
[53/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/shell_trap.c.o -MF libmrsh.0.dylib.p/shell_trap.c.o.d -o libmrsh.0.dylib.p/shell_trap.c.o -c ../shell/trap.c
[54/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/shell_task_simple_command.c.o -MF libmrsh.0.dylib.p/shell_task_simple_command.c.o.d -o libmrsh.0.dylib.p/shell_task_simple_command.c.o -c ../shell/task/simple_command.c
[55/63] cc -Imrsh.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ mrsh.p/frontend_readline.c.o -MF mrsh.p/frontend_readline.c.o.d -o mrsh.p/frontend_readline.c.o -c ../frontend/readline.c
[56/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/shell_word.c.o -MF libmrsh.0.dylib.p/shell_word.c.o.d -o libmrsh.0.dylib.p/shell_word.c.o -c ../shell/word.c
[57/63] cc -Imrsh.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ mrsh.p/main.c.o -MF mrsh.p/main.c.o.d -o mrsh.p/main.c.o -c ../main.c
[58/63] cc -Ilibmrsh.0.dylib.p -I. -I.. -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ libmrsh.0.dylib.p/shell_task_word.c.o -MF libmrsh.0.dylib.p/shell_task_word.c.o.d -o libmrsh.0.dylib.p/shell_task_word.c.o -c ../shell/task/word.c
[59/63] cc  -o libmrsh.0.dylib libmrsh.0.dylib.p/arithm.c.o libmrsh.0.dylib.p/array.c.o libmrsh.0.dylib.p/ast_print.c.o libmrsh.0.dylib.p/ast.c.o libmrsh.0.dylib.p/buffer.c.o libmrsh.0.dylib.p/builtin_alias.c.o libmrsh.0.dylib.p/builtin_bg.c.o libmrsh.0.dylib.p/builtin_break.c.o libmrsh.0.dylib.p/builtin_builtin.c.o libmrsh.0.dylib.p/builtin_cd.c.o libmrsh.0.dylib.p/builtin_colon.c.o libmrsh.0.dylib.p/builtin_command.c.o libmrsh.0.dylib.p/builtin_dot.c.o libmrsh.0.dylib.p/builtin_eval.c.o libmrsh.0.dylib.p/builtin_exec.c.o libmrsh.0.dylib.p/builtin_exit.c.o libmrsh.0.dylib.p/builtin_export.c.o libmrsh.0.dylib.p/builtin_false.c.o libmrsh.0.dylib.p/builtin_fg.c.o libmrsh.0.dylib.p/builtin_getopts.c.o libmrsh.0.dylib.p/builtin_hash.c.o libmrsh.0.dylib.p/builtin_jobs.c.o libmrsh.0.dylib.p/builtin_pwd.c.o libmrsh.0.dylib.p/builtin_read.c.o libmrsh.0.dylib.p/builtin_return.c.o libmrsh.0.dylib.p/builtin_set.c.o libmrsh.0.dylib.p/builtin_shift.c.o libmrsh.0.dylib.p/builtin_times.c.o libmrsh.0.dylib.p/builtin_trap.c.o libmrsh.0.dylib.p/builtin_true.c.o libmrsh.0.dylib.p/builtin_type.c.o libmrsh.0.dylib.p/builtin_ulimit.c.o libmrsh.0.dylib.p/builtin_umask.c.o libmrsh.0.dylib.p/builtin_unalias.c.o libmrsh.0.dylib.p/builtin_unset.c.o libmrsh.0.dylib.p/builtin_unspecified.c.o libmrsh.0.dylib.p/builtin_wait.c.o libmrsh.0.dylib.p/getopt.c.o libmrsh.0.dylib.p/hashtable.c.o libmrsh.0.dylib.p/parser_arithm.c.o libmrsh.0.dylib.p/parser_parser.c.o libmrsh.0.dylib.p/parser_program.c.o libmrsh.0.dylib.p/parser_word.c.o libmrsh.0.dylib.p/shell_arithm.c.o libmrsh.0.dylib.p/shell_entry.c.o libmrsh.0.dylib.p/shell_job.c.o libmrsh.0.dylib.p/shell_path.c.o libmrsh.0.dylib.p/shell_process.c.o libmrsh.0.dylib.p/shell_redir.c.o libmrsh.0.dylib.p/shell_shell.c.o libmrsh.0.dylib.p/shell_task_pipeline.c.o libmrsh.0.dylib.p/shell_task_simple_command.c.o libmrsh.0.dylib.p/shell_task_task.c.o libmrsh.0.dylib.p/shell_task_word.c.o libmrsh.0.dylib.p/shell_trap.c.o libmrsh.0.dylib.p/shell_word.c.o -Wl,-dead_strip_dylibs -Wl,-headerpad_max_install_names -Wl,-undefined,error -shared -install_name @rpath/libmrsh.0.dylib -compatibility_version 0 -current_version 0 -Wl,-exported_symbols_list /Users/lambdap/mrsh/libmrsh.darwin.sym
[60/63] cc -Iexample/highlight.p -Iexample -I../example -I../include -fcolor-diagnostics -Wall -Winvalid-pch -Wextra -Wpedantic -Werror -std=c99 -O0 -g -Wundef -Wmissing-include-dirs -Wold-style-definition -Wpointer-arith -Winit-self -Wfloat-equal -Wstrict-prototypes -Wredundant-decls -Wendif-labels -Wstrict-aliasing=2 -Woverflow -Wformat=2 -Wmissing-prototypes -Wno-missing-braces -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-result -DHAVE_READLINE -MD -MQ example/highlight.p/highlight.c.o -MF example/highlight.p/highlight.c.o.d -o example/highlight.p/highlight.c.o -c ../example/highlight.c
[61/63] /usr/local/Cellar/meson/0.59.1/libexec/bin/meson --internal symbolextractor /Users/lambdap/mrsh/build libmrsh.0.dylib libmrsh.0.dylib libmrsh.0.dylib.p/libmrsh.0.dylib.symbols
[62/63] cc  -o mrsh mrsh.p/main.c.o mrsh.p/frontend_readline.c.o -Wl,-dead_strip_dylibs -Wl,-headerpad_max_install_names -Wl,-undefined,error -Wl,-rpath,@loader_path/ libmrsh.0.dylib -lreadline
[63/63] cc  -o example/highlight example/highlight.p/highlight.c.o -Wl,-dead_strip_dylibs -Wl,-headerpad_max_install_names -Wl,-undefined,error -Wl,-rpath,@loader_path/.. libmrsh.0.dylib

So the culprit linker options are never actually called, because meson never outputs them. I don’t know much about linking, especially on macOS, but it seems like my linker wants me to use -undefined error rather than the --no-undefined that’s in the ./configure script (I confirmed that by running ld with various options). So that’s easy. I’m not sure what to do about --as-needed, --version-script and -soname, which also risk causing errors.

eli-schwartz commented 2 years ago

It is to be expected that meson works -- meson internally knows how to handle such options as -Db_asneeded=true -Db_lundef=true and abstract them into the correct options for a specific compiler.

Seems like the handwritten configure script could be updated to support Darwin better though... I know little to nothing about that toolchain, but: