![]() |
![]() |
#781 | |
bye
Join Date: Jun 2016
Location: Some / Where
Posts: 681
|
Quote:
Code:
_geta4: lea ___a4_init,a4 rts You'll only have to provide that function if there are functions using __saveds, but you still have to load a4 once. Also the option -fno-toplevel-reorder may come handy to keep the code order. |
|
![]() |
![]() |
#782 |
Registered User
Join Date: Jul 2017
Location: San Jose
Posts: 677
|
This is a cross development platform, i.e. you code and compile on PC and transfer the executable to the Amiga.
The way I do it is as follows: my native host system is a Windows box. On it I run a Ubuntu Linux VM. On that Linux I downloaded and compiled the toolchain. I do Amiga code development on there as well. On the windows Machine I also run WinUAE. This is my tested system. Both, the Linux VM and WinUAE map a Windows directory to be visible in the guest system. This way I can share the executable to the emulated Amiga by just doing a simple file copy from within Linux. |
![]() |
![]() |
#783 | |
Amigan
![]() Join Date: Feb 2012
Location: London
Posts: 1,317
|
Quote:
I did try to compile on a PI and with a bit of hacking it did work (not well tested) but I would not recommend it. It took hours and ran out of memory a few times ![]() Compiling GCC needs a lot of resources. I'd also recommend an I7 with SSD. If you run Win10 I think somebody got it working in Win10 Bash. |
|
![]() |
![]() |
#784 |
Join Date: Jul 2008
Location: Sweden
Posts: 2,269
|
Mount a RAM-drive and clone and build in there, it will speed things up a lot. And turn Windows Defender real-time protection off temporarily, or it will scan every single file produced during the build.
|
![]() |
![]() |
#785 | |
Registered User
Join Date: May 2001
Location: ?
Posts: 19,658
|
Quote:
![]() I have WIndows 7 so VM it is |
|
![]() |
![]() |
#786 |
Registered User
Join Date: Jul 2017
Location: San Jose
Posts: 677
|
One workflow I’d like to use would be the Linux Subsystem on Windows. I.e. do the cross compilation in the Ubuntu-on-Windows shell.
(Eventually, a native windows gcc would be the icing on the cake) But to my knowledge the current gcc toolchain does not produce a 64Bit gcc Compiler, so that’s not going to fly as of now ![]() |
![]() |
![]() |
#787 | |
Registered User
Join Date: Mar 2016
Location: Australia
Posts: 882
|
Quote:
It runs fine on cygwin. |
|
![]() |
![]() |
#788 |
Registered User
Join Date: Jul 2017
Location: San Jose
Posts: 677
|
AFAIK it doesn’t run 32bit executables. The gcc that the toolchain currently produces is 32bit.
|
![]() |
![]() |
#789 |
Registered User
Join Date: Mar 2016
Location: Australia
Posts: 882
|
|
![]() |
![]() |
#790 | |
bye
Join Date: Jun 2016
Location: Some / Where
Posts: 681
|
Quote:
On a 32bit OS amiga-gcc creates 32bit gcc and 32bit binutils. On a 64bit OS amiga-gcc creates 64bit gcc and 64bit binutils. On Linux ... Linux gcc and Linux binutils ... Windows ... Windows ... Windows. |
|
![]() |
![]() |
#791 |
Registered User
Join Date: Jul 2017
Location: San Jose
Posts: 677
|
I just gave it a shot and tried compiling the toolchain in WSL... no cigar:
make all -j8 PREFIX=/home/matze/amiga-gcc-out Code:
Making all in po make[4]: Entering directory `/home/matze/amiga-gcc/build/binutils/bfd/po' ( if test 'x/home/matze/amiga-gcc/projects/binutils/bfd/po' != 'x.'; then \ posrcprefix='/home/matze/amiga-gcc/projects/binutils/bfd/'; \ else \ posrcprefix="../"; \ fi; \ rm -f SRC-POTFILES-t SRC-POTFILES \ && (sed -e '/^#/d' \ -e '/^[ ]*$/d' \ -e "s@.*@ $posrcprefix& \\\\@" < /home/matze/amiga-gcc/projects/binutils/bfd/po/SRC-POTFILES.in \ | sed -e '$s/\\$//') > SRC-POTFILES-t \ && chmod a-w SRC-POTFILES-t \ && mv SRC-POTFILES-t SRC-POTFILES ) ( rm -f BLD-POTFILES-t BLD-POTFILES \ && (sed -e '/^#/d' \ -e '/^[ ]*$/d' \ -e "s@.*@ ../& \\\\@" < /home/matze/amiga-gcc/projects/binutils/bfd/po/BLD-POTFILES.in \ | sed -e '$s/\\$//') > BLD-POTFILES-t \ && chmod a-w BLD-POTFILES-t \ && mv BLD-POTFILES-t BLD-POTFILES ) cd .. \ && CONFIG_FILES=po/Makefile.in:po/Make-in \ CONFIG_HEADERS= /bin/sh ./config.status config.status: creating po/Makefile.in config.status: executing depfiles commands config.status: executing default commands make[4]: Leaving directory `/home/matze/amiga-gcc/build/binutils/bfd/po' make[4]: Entering directory `/home/matze/amiga-gcc/build/binutils/bfd/po' file=/home/matze/amiga-gcc/projects/binutils/bfd/po/`echo fr | sed 's,.*/,,'`.gmo \ && rm -f $file && PATH=../src:$PATH no -o $file /home/matze/amiga-gcc/projects/binutils/bfd/po/fr.po /bin/sh: 2: no: not found make[4]: *** [fr.gmo] Error 127 make[4]: Leaving directory `/home/matze/amiga-gcc/build/binutils/bfd/po' make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory `/home/matze/amiga-gcc/build/binutils/bfd' make[2]: *** [all] Error 2 make[2]: Leaving directory `/home/matze/amiga-gcc/build/binutils/bfd' make[1]: *** [all-bfd] Error 2 make[1]: Leaving directory `/home/matze/amiga-gcc/build/binutils' make: *** [build/binutils/_done] Error 2 |
![]() |
![]() |
#792 |
AmigaDev.com
Join Date: Mar 2016
Location: Stockholm, Sweden
Age: 35
Posts: 625
|
|
![]() |
![]() |
#793 |
bye
Join Date: Jun 2016
Location: Some / Where
Posts: 681
|
|
![]() |
![]() |
#794 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,573
|
WSL build worked for me except libdebug (but I use Windows 10 insider version which includes multiple WSL updates. Which may make a difference.):
Code:
mkdir -p build/libdebug cd build/libdebug && CFLAGS="-Os -g -fomit-frame-pointer" /home/twilen/amiga-gcc/projects/libdebug/configure --prefix=/opt/amiga --target=m68k-amigaos --host=m68k-amigaos checking build system type... x86_64-unknown-linux-gnu checking host system type... m68k-unknown-amigaos checking target system type... m68k-unknown-amigaos checking whether make sets $(MAKE)... yes checking for SFDC... SFDC checking for m68k-amigaos-gcc... m68k-amigaos-gcc checking for m68k-amigaos-ar... m68k-amigaos-ar checking for m68k-amigaos-ranlib... m68k-amigaos-ranlib checking for m68k-amigaos-gcc... (cached) m68k-amigaos-gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... yes checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether m68k-amigaos-gcc accepts -g... yes checking for m68k-amigaos-gcc option to accept ISO C89... none needed checking for m68k-amigaos-ranlib... (cached) m68k-amigaos-ranlib checking for a BSD-compatible install... /usr/bin/install -c /home/twilen/amiga-gcc/projects/libdebug/configure: line 3243: AC_ARFLAGS: command not found checking for an ANSI C-conforming const... yes checking for inline... inline configure: creating ./config.status config.status: creating Makefile config.status: creating config.h config.status: executing exec_dbg_inline.h commands Processing SFD file 'exec_dbg_lib.sfd'. Writing to 'exec_dbg_inline.h' All done. cd build/libdebug && make make[1]: Entering directory '/home/twilen/amiga-gcc/build/libdebug' m68k-amigaos-gcc -W -Wall -Wstrict-prototypes -Os -g -fomit-frame-pointer -DUSE_SERIAL -c /home/twilen/amiga-gcc/projects/libdebug/debug.c -o kdebug.o /home/twilen/amiga-gcc/projects/libdebug/debug.c: In function 'KDoFmt': /home/twilen/amiga-gcc/projects/libdebug/debug.c:117:3: warning: function declaration isn't a prototype [-Wstrict-prototypes] RawDoFmt(formatString, dataStream, ^~~~~~~~ m68k-amigaos-ar @ARFLAGS@ libdebug.a kdebug.o m68k-amigaos-ar: illegal option -- @ Usage: m68k-amigaos-ar [emulation options] [-]{dmpqrstx}[abcfilNoPsSuvV] [member-name] [count] archive-file file... m68k-amigaos-ar -M [<mri-script] commands: d - delete file(s) from the archive m[ab] - move file(s) in the archive p - print file(s) found in the archive q[f] - quick append file(s) to the archive r[ab][f][u] - replace existing or insert new file(s) into the archive t - display contents of archive x[o] - extract file(s) from the archive command specific modifiers: [a] - put file(s) after [member-name] [b] - put file(s) before [member-name] (same as [i]) [N] - use instance [count] of name [f] - truncate inserted file names [P] - use full path names when matching [o] - preserve original dates [u] - only replace files that are newer than current archive contents generic modifiers: [c] - do not warn if the library had to be created [s] - create an archive index (cf. ranlib) [S] - do not build a symbol table [v] - be verbose [V] - display the version number emulation options: No emulation specific options m68k-amigaos-ar: supported targets: amiga a.out-amiga srec symbolsrec tekhex binary ihex Makefile:53: recipe for target 'libdebug.a' failed make[1]: *** [libdebug.a] Error 1 make[1]: Leaving directory '/home/twilen/amiga-gcc/build/libdebug' Makefile:601: recipe for target 'build/libdebug/_done' failed make: *** [build/libdebug/_done] Error 2 Also is ixemul supposed to work? (Not that I need it) make ixemul -> "make: Nothing to be done for 'ixemul'" Previously I used cygwin but it got annoying because tool chain building takes forever in cygwin environment compared to WSL. EDIT: when I tried previously (1-2 weeks ago), I got errors if I used prefix, I think there was some path that pointed to /opt/amiga even when prefix was set. |
![]() |
![]() |
#795 | |
bye
Join Date: Jun 2016
Location: Some / Where
Posts: 681
|
Quote:
2. ixemul is not yet done and thus not provided. 3. if a wrong prefix is still used then you forgot to clean. |
|
![]() |
![]() |
#796 |
Registered User
Join Date: Jul 2017
Location: San Jose
Posts: 677
|
The log I gave was produced by omitting -j8.
Not sure what to make of the error “no not found”. I don’t know of any tool called ‘no’ ![]() |
![]() |
![]() |
#797 |
bye
Join Date: Jun 2016
Location: Some / Where
Posts: 681
|
|
![]() |
![]() |
#798 |
WinUAE developer
Join Date: Aug 2001
Location: Hämeenlinna/Finland
Age: 49
Posts: 26,573
|
|
![]() |
![]() |
#799 | |
Join Date: Jul 2008
Location: Sweden
Posts: 2,269
|
Quote:
Code:
sudo apt-get update sudo apt-get upgrade sudo apt-get install build-essential autoconf git lhasa libgmp-dev libmpfr-dev libmpc-dev flex gettext git clone ... cd amiga-gcc make update all make allseveral times, but eventually it does finish. @bebbo Small bug-report: whenever I enable -fbaserelit reloads the library base for each call, even when they are in succession and to the same library. |
|
![]() |
![]() |
#800 | |
bye
Join Date: Jun 2016
Location: Some / Where
Posts: 681
|
Quote:
Code:
make update make all |
|
![]() |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
New GCC based dev toolchain for AmigaOS 3.x | cla | Coders. Releases | 8 | 24 December 2017 10:18 |
Issue with photon/xxxx WinUAE Toolchain | arpz | Coders. Asm / Hardware | 2 | 26 September 2015 22:33 |
New 68k gcc toolchain | arti | Coders. C/C++ | 17 | 31 July 2015 03:59 |
Hannibal's WinUAE Demo Toolchain 5 | Bobic | Amiga scene | 1 | 23 July 2015 21:04 |
From gcc to vbcc. | Cowcat | Coders. General | 9 | 06 June 2014 14:45 |
|
|