Without the change archimedes fails to build with latest toolchains as:
ld: archimedes.c:(.text+0xdac7): undefined reference to `rnd'
ld: archimedes.c:(.text+0xdeab): undefined reference to `rnd'
ld: archimedes.c:(.text+0xdf13): undefined reference to `rnd'
ld: archimedes.c:(.text+0xe3ef): undefined reference to `rnd'
ld: archimedes.o:archimedes.c:(.text+0xe456): more undefined references to `rnd' follow
ld: archimedes.o: in function `EMC':
archimedes.c:(.text+0xf11b): undefined reference to `creation'
ld: archimedes.c:(.text+0xf5f5): undefined reference to `creation'
ld: archimedes.c:(.text+0xf826): undefined reference to `creation'
ld: archimedes.c:(.text+0xf9ce): undefined reference to `creation'
The change happens to fix build against clang as well.
Workaround build failure on -fno-common toolchains like upstream
gcc-10. Otherwise build fails as:
ld: postscript.o:postscript.h:29: multiple definition of
`postscript_params'; fped.o:postscript.h:29: first defined here
Without the change builda fails on upstream gcc-10 as:
ld: gattrib/src/../include/globals.h:97:
multiple definition of `window'; gattrib/src/../include/globals.h:97: first defined here
Without the change build fails on upstream gcc-10 as:
ld: interface.o:/build/gerbv/src/callbacks.h:50: multiple definition of
`toggle_layer'; callbacks.o:/build/gerbv/src/callbacks.h:50: first defined here
ld: interface.o:/build/gerbv/src/callbacks.h:44: multiple definition of
`CALLBACKS_SAVE_FILE_TYPE'; callbacks.o:/build/gerbv/src/callbacks.h:44: first defined here
ld: render.o:/build/gerbv/src/callbacks.h:44: multiple definition of
`CALLBACKS_SAVE_FILE_TYPE'; callbacks.o:/build/gerbv/src/callbacks.h:44: first defined here
The testing scheme for vhd2vl is sensitive to subtle shifts in
iverilog's parenthesization choices, meaning that the golden test
outputs require constant maintenance.
The patch previously applied in order to deal with this situation is
no longer sufficient, so a patch which is sufficient has been added.
Also, the `buildTargets` and `checkTarget` attributes have been set,
so future benign failures of this sort can be dealt with through
`doCheck=false` in a pinch.