bebbo / amiga-gcc

The GNU C-Compiler with Binutils and other useful tools for cross development for Amiga
GNU General Public License v2.0
312 stars 66 forks source link

Cannot find -lnix20, -lnixmain and -lnix on MacOS. Works fine on Linux #351

Closed TheFakeMontyOnTheRun closed 1 year ago

TheFakeMontyOnTheRun commented 1 year ago

First of all, @bebbo , thank you for all your effort and I'm hoping not to be overlooking anything.

I'm facing a problem just like in issue https://github.com/bebbo/amiga-gcc/issues/159, with the difference that rebooting didn't help.

I get the following errors when trying to link:

/opt/amiga/lib/gcc/m68k-amigaos/6.5.0b/../../../../m68k-amigaos/bin/ld: cannot find ncrt0.o: No such file or directory
/opt/amiga/lib/gcc/m68k-amigaos/6.5.0b/../../../../m68k-amigaos/bin/ld: cannot find -lnix20: No such file or directory
/opt/amiga/lib/gcc/m68k-amigaos/6.5.0b/../../../../m68k-amigaos/bin/ld: cannot find -lnixmain: No such file or directory
/opt/amiga/lib/gcc/m68k-amigaos/6.5.0b/../../../../m68k-amigaos/bin/ld: cannot find -lnix: No such file or directory

Those files are there and I have full permissions (in fact, I may have gone a bit overboard, with 777 for everything, just to be sure).

My Makefile has this at the top:

CXX = m68k-amigaos-g++
CC = m68k-amigaos-gcc
STRIP=m68k-amigaos-strip
AS = vasmm68k_mot
CFLAGS = -DAMIGA -Ibase3d/include -Imenu/include -ISoundSystem -c -m68000 -s -fno-keep-inline-functions -fexpensive-optimizations -fno-keep-inline-functions -fomit-frame-pointer -ffast-math -Ofast -DAGA5BPP -DNFILLED_POLYS -DTEXTURES
LDFLAGS =  -msmall-code -fexpensive-optimizations -O3 -s -fomit-frame-pointer -noixemul
ASFLAGS = -phxass -Fhunk -m68000 -chklabels -no-fpu -wfail -I/opt/amiga/m68k-amigaos/ndk-include

My .zshrc has the following PATH settings:

PATH=$PATH:/opt/amiga/bin/
PATH=$PATH:/opt/amiga/m68k-amigaos/bin/

This project used to build and run fine, using an older revision of this very toolchain, both on Mac and Linux. With the binaries tested on stock A500s and A1200s. A derivative from this source code also builds fine for the Sega Mega Drive.

Also tried building the toolchain from scratch on a Ubuntu 64-bit machine and it worked right out of the box.

My Mac: Macbook Air 2017 running Monterey 12.6.5 and Xcode 14.1 (14B47b). Darwin Daniels-Air.lan 21.6.0 Darwin Kernel Version 21.6.0: Thu Mar 9 20:08:59 PST 2023; root:xnu-8020.240.18.700.8~1/RELEASE_X86_64 x86_64

My Linux machine: Macbook 2008 running Ubuntu 20.04.6 LTS 64-bit. Linux daniel-MacBook08 5.15.0-73-generic #80~20.04.1-Ubuntu SMP Wed May 17 14:58:14 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux

The MacOS version was built following the README instructions:

% brew install bash wget make lhasa gmp mpfr libmpc flex gettext gnu-sed texinfo gcc@12 make autoconf bison
...
% export PATH=$(brew --prefix bison)/bin:$PATH
% CC=gcc-12 CXX=g++-12 gmake all SHELL=$(brew --prefix)/bin/bash

There were no reported errors during the build process.

I must also note that building a simple hello world works fine on MacOS (and runs fine FS-UAE). Building without the -noixemul at the CFLAGS won't produce any error, but running on FS-UAE will exit instantly.

Also tried replacing -noixemul with -mcrt=nix13 and -mcrt=nix20 and got similar results. Building with -mcrt=clib2 will only complain about ncrt0.

I've tried be as detailed as possible. Hope it's not too much information! Thank you.

TheFakeMontyOnTheRun commented 1 year ago

Adding -v to the LDFLAGS yields this:

Using built-in specs.
COLLECT_GCC=m68k-amigaos-gcc
COLLECT_LTO_WRAPPER=/opt/amiga/libexec/gcc/m68k-amigaos/6.5.0b/lto-wrapper
Target: m68k-amigaos
Configured with: /Users/monty/git/amiga-gcc/projects/gcc/configure --prefix=/opt/amiga --target=m68k-amigaos --enable-languages=c,c++,objc --enable-version-specific-runtime-libs --disable-libssp --disable-nls --with-headers=/Users/monty/git/amiga-gcc/projects/newlib-cygwin/newlib/libc/sys/amigaos/include/ --disable-shared --enable-threads=no --with-stage1-ldflags='-dynamic-libgcc -dynamic-libstdc++' --with-boot-ldflags='-dynamic-libgcc -dynamic-libstdc++' --with-gmp=/usr/local --with-mpfr=/usr/local --with-mpc=/usr/local
Thread model: single
gcc version 6.5.0b 221228103143 (GCC) 
COMPILER_PATH=/opt/amiga/libexec/gcc/m68k-amigaos/6.5.0b/:/opt/amiga/libexec/gcc/:/opt/amiga/lib/gcc/m68k-amigaos/6.5.0b/../../../../m68k-amigaos/bin/
LIBRARY_PATH=/opt/amiga/lib/gcc/m68k-amigaos/6.5.0b/:/opt/amiga/lib/gcc/:/opt/amiga/lib/gcc/m68k-amigaos/6.5.0b/../../../../m68k-amigaos/lib/
COLLECT_GCC_OPTIONS='-o' 'game12k' '-v' '-msmall-code' '-fexpensive-optimizations' '-O3' '-s' '-fomit-frame-pointer' '-noixemul' '-mcpu=68000' '-B' 'm68k-amigaos/libnix/lib/'
 /opt/amiga/libexec/gcc/m68k-amigaos/6.5.0b/collect2 -Lm68k-amigaos/../lib -Lm68k-amigaos/libnix/lib -o game12k -s ncrt0.o -L/opt/amiga/lib/gcc/m68k-amigaos/6.5.0b -L/opt/amiga/lib/gcc -Lm68k-amigaos/../lib/ menu/src/Main.o menu/src/Engine.o base3d/src/AmigaVersion/c2p1x1_4_c5_bm.o base3d/src/AmigaVersion/c2p1x1_8_c5_bm.o base3d/src/AmigaVersion/AmigaRenderer.o base3d/src/LoadBitmap.o base3d/src/CRenderer.o base3d/src/FixP.o base3d/src/CRenderer_Rasterization.o base3d/src/CPackedFileReader.o menu/src/Interrogation.o menu/src/UI.o base3d/src/Globals.o menu/src/HelpScreen.o menu/src/CreditsScreen.o menu/src/MainMenu.o -( -lnix20 -lnixmain -lnix -lstubs -lamiga -lgcc -)
/opt/amiga/lib/gcc/m68k-amigaos/6.5.0b/../../../../m68k-amigaos/bin/ld: cannot find ncrt0.o: No such file or directory
/opt/amiga/lib/gcc/m68k-amigaos/6.5.0b/../../../../m68k-amigaos/bin/ld: cannot find -lnix20: No such file or directory
/opt/amiga/lib/gcc/m68k-amigaos/6.5.0b/../../../../m68k-amigaos/bin/ld: cannot find -lnixmain: No such file or directory
/opt/amiga/lib/gcc/m68k-amigaos/6.5.0b/../../../../m68k-amigaos/bin/ld: cannot find -lnix: No such file or directory
collect2: error: ld returned 1 exit status
make: *** [game12k] Error 1
TheFakeMontyOnTheRun commented 1 year ago

Listing all files that contain libnix on the path in /opt/amiga reveals that the files do exist:

monty@Daniels-Air The-Mistral-Report-OCS % find /opt/amiga | grep libnix
/opt/amiga/m68k-amigaos/libnix
/opt/amiga/m68k-amigaos/libnix/include
/opt/amiga/m68k-amigaos/libnix/include/mconf.h
/opt/amiga/m68k-amigaos/libnix/include/stdlib.h
/opt/amiga/m68k-amigaos/libnix/include/strsup.h
/opt/amiga/m68k-amigaos/libnix/include/pool.h
/opt/amiga/m68k-amigaos/libnix/include/debuglib.h
/opt/amiga/m68k-amigaos/libnix/include/alignment.h
/opt/amiga/m68k-amigaos/libnix/include/regparm.h
/opt/amiga/m68k-amigaos/libnix/include/dirent.h
/opt/amiga/m68k-amigaos/libnix/include/fnmatch.h
/opt/amiga/m68k-amigaos/libnix/include/inline
/opt/amiga/m68k-amigaos/libnix/include/inline/as225.h
/opt/amiga/m68k-amigaos/libnix/include/inline/usergroup.h
/opt/amiga/m68k-amigaos/libnix/include/inline/amitcp.h
/opt/amiga/m68k-amigaos/libnix/include/sys
/opt/amiga/m68k-amigaos/libnix/include/sys/utime.h
/opt/amiga/m68k-amigaos/libnix/include/sys/reent.h
/opt/amiga/m68k-amigaos/libnix/include/sys/errno.h
/opt/amiga/m68k-amigaos/libnix/include/rand48.h
/opt/amiga/m68k-amigaos/libnix/include/ctype.h
/opt/amiga/m68k-amigaos/libnix/include/bases.h
/opt/amiga/m68k-amigaos/libnix/include/umath.h
/opt/amiga/m68k-amigaos/libnix/include/libinit.h
/opt/amiga/m68k-amigaos/libnix/include/libintl.h
/opt/amiga/m68k-amigaos/libnix/include/errno.h
/opt/amiga/m68k-amigaos/libnix/include/poll.h
/opt/amiga/m68k-amigaos/libnix/include/stdio.h
/opt/amiga/m68k-amigaos/libnix/include/socket.h
/opt/amiga/m68k-amigaos/libnix/include/_newlib_version.h
/opt/amiga/m68k-amigaos/libnix/include/string.h
/opt/amiga/m68k-amigaos/libnix/include/select.h
/opt/amiga/m68k-amigaos/libnix/lib
/opt/amiga/m68k-amigaos/libnix/lib/libinitr.o
/opt/amiga/m68k-amigaos/libnix/lib/libb
/opt/amiga/m68k-amigaos/libnix/lib/libb/libnixmain.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libnix.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libnix13.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/detach.o
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm060
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm060/libnixmain.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm060/libnix.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm060/libnix13.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm060/detach.o
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm060/libnix20.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm060/libsocket.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm060/libm.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm060/swapstack.o
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm060/libstack.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm060/libstubs.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libnix20.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libsocket.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm020
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm020/libnixmain.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm020/libnix.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm020/libnix13.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm020/libm881
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm020/libm881/libnixmain.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm020/libm881/libnix.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm020/libm881/libnix13.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm020/libm881/detach.o
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm020/libm881/libnix20.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm020/libm881/libsocket.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm020/libm881/libm.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm020/libm881/swapstack.o
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm020/libm881/libstack.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm020/libm881/libstubs.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm020/detach.o
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm020/libnix20.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm020/libsocket.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm020/libm.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm020/swapstack.o
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm020/libstack.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libm020/libstubs.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/swapstack.o
/opt/amiga/m68k-amigaos/libnix/lib/libb/libstack.a
/opt/amiga/m68k-amigaos/libnix/lib/libb/libstubs.a
/opt/amiga/m68k-amigaos/libnix/lib/libnixmain.a
/opt/amiga/m68k-amigaos/libnix/lib/nlbcrt0.o
/opt/amiga/m68k-amigaos/libnix/lib/libnix.a
/opt/amiga/m68k-amigaos/libnix/lib/devinit.o
/opt/amiga/m68k-amigaos/libnix/lib/libb32
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm060
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm060/libnixmain.a
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm060/libnix.a
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm060/libnix13.a
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm060/detach.o
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm060/libnix20.a
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm060/libsocket.a
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm060/libm.a
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm060/swapstack.o
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm060/libstack.a
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm060/libstubs.a
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm020
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm020/libnixmain.a
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm020/libnix.a
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm020/libnix13.a
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm020/libm881
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm020/libm881/libnixmain.a
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm020/libm881/libnix.a
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm020/libm881/libnix13.a
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm020/libm881/detach.o
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm020/libm881/libnix20.a
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm020/libm881/libsocket.a
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm020/libm881/libm.a
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm020/libm881/swapstack.o
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm020/libm881/libstack.a
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm020/libm881/libstubs.a
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm020/detach.o
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm020/libnix20.a
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm020/libsocket.a
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm020/libm.a
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm020/swapstack.o
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm020/libstack.a
/opt/amiga/m68k-amigaos/libnix/lib/libb32/libm020/libstubs.a
/opt/amiga/m68k-amigaos/libnix/lib/libnix13.a
/opt/amiga/m68k-amigaos/libnix/lib/xcrt0.o
/opt/amiga/m68k-amigaos/libnix/lib/libnix
/opt/amiga/m68k-amigaos/libnix/lib/detach.o
/opt/amiga/m68k-amigaos/libnix/lib/nbcrt0.o
/opt/amiga/m68k-amigaos/libnix/lib/libm060
/opt/amiga/m68k-amigaos/libnix/lib/libm060/libnixmain.a
/opt/amiga/m68k-amigaos/libnix/lib/libm060/libnix.a
/opt/amiga/m68k-amigaos/libnix/lib/libm060/libnix13.a
/opt/amiga/m68k-amigaos/libnix/lib/libm060/detach.o
/opt/amiga/m68k-amigaos/libnix/lib/libm060/libnix20.a
/opt/amiga/m68k-amigaos/libnix/lib/libm060/libsocket.a
/opt/amiga/m68k-amigaos/libnix/lib/libm060/libm.a
/opt/amiga/m68k-amigaos/libnix/lib/libm060/swapstack.o
/opt/amiga/m68k-amigaos/libnix/lib/libm060/libstack.a
/opt/amiga/m68k-amigaos/libnix/lib/libm060/libstubs.a
/opt/amiga/m68k-amigaos/libnix/lib/libnix20.a
/opt/amiga/m68k-amigaos/libnix/lib/libsocket.a
/opt/amiga/m68k-amigaos/libnix/lib/nlrcrt0.o
/opt/amiga/m68k-amigaos/libnix/lib/libinit.o
/opt/amiga/m68k-amigaos/libnix/lib/libm.a
/opt/amiga/m68k-amigaos/libnix/lib/ncrt0.o
/opt/amiga/m68k-amigaos/libnix/lib/libm020
/opt/amiga/m68k-amigaos/libnix/lib/libm020/libnixmain.a
/opt/amiga/m68k-amigaos/libnix/lib/libm020/libnix.a
/opt/amiga/m68k-amigaos/libnix/lib/libm020/libnix13.a
/opt/amiga/m68k-amigaos/libnix/lib/libm020/libm881
/opt/amiga/m68k-amigaos/libnix/lib/libm020/libm881/libnixmain.a
/opt/amiga/m68k-amigaos/libnix/lib/libm020/libm881/libnix.a
/opt/amiga/m68k-amigaos/libnix/lib/libm020/libm881/libnix13.a
/opt/amiga/m68k-amigaos/libnix/lib/libm020/libm881/detach.o
/opt/amiga/m68k-amigaos/libnix/lib/libm020/libm881/libnix20.a
/opt/amiga/m68k-amigaos/libnix/lib/libm020/libm881/libsocket.a
/opt/amiga/m68k-amigaos/libnix/lib/libm020/libm881/libm.a
/opt/amiga/m68k-amigaos/libnix/lib/libm020/libm881/swapstack.o
/opt/amiga/m68k-amigaos/libnix/lib/libm020/libm881/libstack.a
/opt/amiga/m68k-amigaos/libnix/lib/libm020/libm881/libstubs.a
/opt/amiga/m68k-amigaos/libnix/lib/libm020/detach.o
/opt/amiga/m68k-amigaos/libnix/lib/libm020/libnix20.a
/opt/amiga/m68k-amigaos/libnix/lib/libm020/libsocket.a
/opt/amiga/m68k-amigaos/libnix/lib/libm020/libm.a
/opt/amiga/m68k-amigaos/libnix/lib/libm020/swapstack.o
/opt/amiga/m68k-amigaos/libnix/lib/libm020/libstack.a
/opt/amiga/m68k-amigaos/libnix/lib/libm020/libstubs.a
/opt/amiga/m68k-amigaos/libnix/lib/nrcrt0.o
/opt/amiga/m68k-amigaos/libnix/lib/swapstack.o
/opt/amiga/m68k-amigaos/libnix/lib/libstack.a
bebbo commented 1 year ago

Thank you for your detailed infos. The first what I noticed is: gcc version 6.5.0b 221228103143 (GCC). This is not recent.

Please run:

git pull
make update clean

and then

make all

or use your preferred targets.

You should end up with gcc version 6.5.0b 230504192150 (GCC)

bebbo commented 1 year ago

beside that you might update your CLFAGS and LDFLAGS. Only provide the flags which are needed at the given stage.

see also https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html

I suggest:

CFLAGS = -Ibase3d/include -Imenu/include -ISoundSystem -c -m68000 -fno-keep-inline-functions -fexpensive-optimizations -fno-keep-inline-functions -fomit-frame-pointer -Ofast -DAGA5BPP -DNFILLED_POLYS -DTEXTURES -noixemul -msmall-code
LDFLAGS = -noixemul -s 

I prefer to keep the symbols since it helps with hunting bugz -> no -s in the LDFLAGS. You can still remove the symbols by applying m68k-amigaos-strip <infile> -o <outfile>

TheFakeMontyOnTheRun commented 1 year ago

Thank you for such prompt answer. I've updated GCC as you suggested, but the problem kept happening. Then, I've tried your (very clean) suggest for the CFLAGS and LDFLAGS, and that yielded some weird errors:

In file included from /opt/amiga/m68k-amigaos/sys-include/sys/reent.h:293:0,
                 from /opt/amiga/m68k-amigaos/sys-include/time.h:12,
                 from menu/src/Main.c:1:
/opt/amiga/m68k-amigaos/sys-include/stdio.h:66:9: error: unknown type name '__FILE'
 typedef __FILE FILE;
         ^~~~~~
In file included from /opt/amiga/m68k-amigaos/sys-include/sys/reent.h:293:0,
                 from /opt/amiga/m68k-amigaos/sys-include/time.h:12,
                 from menu/src/Main.c:1:
/opt/amiga/m68k-amigaos/sys-include/stdio.h: In function '__sputc_r':
/opt/amiga/m68k-amigaos/sys-include/stdio.h:692:10: error: request for member '_w' in something not a structure or union
  if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n'))
          ^~
/opt/amiga/m68k-amigaos/sys-include/stdio.h:692:26: error: request for member '_w' in something not a structure or union
  if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n'))
                          ^~
/opt/amiga/m68k-amigaos/sys-include/stdio.h:692:36: error: request for member '_lbfsize' in something not a structure or union
  if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n'))
                                    ^~
/opt/amiga/m68k-amigaos/sys-include/stdio.h:693:14: error: request for member '_p' in something not a structure or union
   return (*_p->_p++ = _c);
              ^~
/opt/amiga/m68k-amigaos/sys-include/stdio.h: In function '_getchar_unlocked':
/opt/amiga/m68k-amigaos/sys-include/stdio.h:746:9: error: '_REENT' undeclared (first use in this function)
  _ptr = _REENT;
         ^~~~~~
/opt/amiga/m68k-amigaos/sys-include/stdio.h:746:9: note: each undeclared identifier is reported only once for each function it appears in
/opt/amiga/m68k-amigaos/sys-include/stdio.h:747:26: error: dereferencing pointer to incomplete type 'struct _reent'
  return (__sgetc_r(_ptr, _stdin_r(_ptr)));
                          ^
/opt/amiga/m68k-amigaos/sys-include/stdio.h: In function '_putchar_unlocked':
/opt/amiga/m68k-amigaos/sys-include/stdio.h:755:9: error: '_REENT' undeclared (first use in this function)
  _ptr = _REENT;
         ^~~~~~
In file included from /opt/amiga/m68k-amigaos/sys-include/time.h:12:0,
                 from menu/src/Main.c:1:
/opt/amiga/m68k-amigaos/sys-include/sys/reent.h: At top level:
/opt/amiga/m68k-amigaos/sys-include/sys/reent.h:304:3: error: unknown type name '__FILE'
   __FILE *_iobs;
   ^~~~~~
/opt/amiga/m68k-amigaos/sys-include/sys/reent.h:390:3: error: unknown type name '__FILE'
   __FILE *_stdin, *_stdout, *_stderr; /* XXX */
   ^~~~~~
/opt/amiga/m68k-amigaos/sys-include/sys/reent.h:425:3: error: unknown type name '__FILE'
   __FILE *__sf;           /* file descriptors */
   ^~~~~~
make: *** [menu/src/Main.o] Error 1

Do I need some extra include before using other C standard includes?

bebbo commented 1 year ago

Could you provide a sample or the full project you are trying to compile? If you don't want to attach it here, you may mail it to me.

and on more note: This is not necessary

PATH=$PATH:/opt/amiga/m68k-amigaos/bin/
TheFakeMontyOnTheRun commented 1 year ago

Sorry I couldn't answer you before. The repo was private because it's kind of sloppy and I was a bit ashamed of it. Switched to public now.

Source code: https://github.com/TheFakeMontyOnTheRun/The-Mistral-Report-OCS

The makefile is the .bax (saw this in one sample and kept using. Not sure where it comes from). Some of this was lifted with permission and help from Lantus's (a.k.a. Modern Vintage Gamer) Strife port.

The menu system was originally written for VGA DOS machines and the game engine for the Amstrad CPC. This is just a hack put together before Dread came and raised the bar on texture mapped 3D games.

Expected result when building with -D5BPP: https://www.youtube.com/watch?v=1z2yKXUQBOM Expected result when building with -D8BPP (earlier version): https://www.youtube.com/watch?v=VwrJaZmMdMQ When I build now, on the Linux machine, both versions show errors with the colours, but I suppose this is some misuse on my side that would slide by in previous versions of the toolchain and that, now, are handled much more rigorously.

bebbo commented 1 year ago

Thank you for sharing. It compiles out of the box and I can't reproduce the error you reported before. If the data files are not present, it fails badly^^

have fun.

TheFakeMontyOnTheRun commented 1 year ago

Thank you for the assistance. I might go the Docker route for now...or perhaps try the CMake template that was discussed in another issue.

TheFakeMontyOnTheRun commented 1 year ago

Mystery solved! I needed to invoke gmake rather than make with my Makefile. The default Make in MacOS is GNU Make 3.81 and the one installed from brew is GNU Make 4.4.1.

Want me to open a PR, to include a note about this on the README?

bebbo commented 1 year ago

Mystery solved! I needed to invoke gmake rather than make with my Makefile. The default Make in MacOS is GNU Make 3.81 and the one installed from brew is GNU Make 4.4.1.

Want me to open a PR, to include a note about this on the README?

You are welcome to do so, since I don't use/support that operating system.