diff --git a/examples/Makefile b/examples/Makefile index 93c2834..8166e41 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -1,43 +1,46 @@ -CC = m68k-amigaos-gcc -noixemul -s -CXX = m68k-amigaos-g++ -noixemul -s +CC = m68k-amigaos-gcc -s +CXX = m68k-amigaos-g++ -s CFLAGS = -Os -Wall -fomit-frame-pointer CXXFLAGS = -Os -Wall -fomit-frame-pointer -BINS = hello-ks13 hello-ks20 hello-stdio hello-iostream hello-mui test-mmu \ +BINS = hello-ks13 hello-ks20 hello-ks20.clib2 hello-stdio hello-stdio.clib2 \ + hello-iostream hello-mui test-mmu \ simple.library simple.library_r simple.device all: $(BINS) $(OBJS) -hello-ks13: CC += -fbaserel -hello-ks13: CFLAGS += -m68000 -msmall-code -hello-ks13: LDLIBS = -lnix13 hello-ks13: hello-ks13.c + $(CC) -noixemul -fbaserel -m68000 -msmall-code $(CFLAGS) -o $@ $< -lnix13 -hello-ks20: CC += -fbaserel32 -hello-ks20: CFLAGS += -m68020 -msmall-code hello-ks20: hello-ks20.c + $(CC) -noixemul -fbaserel32 -m68020 -msmall-code $(CFLAGS) -o $@ $< + +hello-ks20.clib2: hello-ks20.c + $(CC) -mcrt=clib2 -fbaserel32 -m68020 -msmall-code $(CFLAGS) -o $@ $< -hello-stdio: CFLAGS += -m68020 hello-stdio: hello-stdio.c + $(CC) -noixemul -m68020 $(CFLAGS) -o $@ $< + +hello-stdio.clib2: hello-stdio.c + $(CC) -mcrt=clib2 -m68020 $(CFLAGS) -o $@ $< -hello-iostream: CXXFLAGS += -m68020 hello-iostream: hello-iostream.cpp + $(CXX) -noixemul -m68020 $(CXXFLAGS) -o $@ $< -hello-mui: CFLAGS += -m68020 -msmall-code -hello-mui: LDLIBS = -lmui hello-mui: hello-mui.c + $(CC) -noixemul -m68020 -msmall-code $(CFLAGS) -o $@ $< -lmui -test-mmu: CFLAGS += -m68060 -msmall-code test-mmu: test-mmu.c + $(CC) -noixemul -m68060 -msmall-code $(CFLAGS) -o $@ $< simple.library: simple-library.c - $(CC) -ramiga-lib -fbaserel $(CFLAGS) -o $@ $^ + $(CC) -noixemul -ramiga-lib -fbaserel $(CFLAGS) -o $@ $< simple.library_r: simple-library.c - $(CC) -ramiga-libr -resident $(CFLAGS) -o $@ $^ + $(CC) -noixemul -ramiga-libr -resident $(CFLAGS) -o $@ $< simple.device: simple-device.c - $(CC) -ramiga-dev -fbaserel $(CFLAGS) -o $@ $^ + $(CC) -noixemul -ramiga-dev -fbaserel $(CFLAGS) -o $@ $< clean: rm -f $(BINS) diff --git a/toolchain-m68k b/toolchain-m68k index 1d9dee8..882e8bd 100755 --- a/toolchain-m68k +++ b/toolchain-m68k @@ -93,8 +93,7 @@ def install_ndk(): def headers_install(): info('installing ixemul header files') - copytree('{sources}/{ixemul}/include', '{target}/m68k-amigaos/include') - symlink('{target}/m68k-amigaos/include', '{target}/m68k-amigaos/sys-include') + copytree('{sources}/{ixemul}/include', '{target}/m68k-amigaos/libnix/include') @recipe('tools-install') @@ -108,14 +107,14 @@ def install_tools(): def install_libamiga(): info('installing libamiga') - copytree('{sources}/libamiga/lib', '{target}/m68k-amigaos/lib') + copytree('{sources}/libamiga/lib', '{target}/m68k-amigaos/libnix/lib') @recipe('clib2-install') def install_clib2(): info('installing clib2') - with cwd('{target}/clib2'): + with cwd('{target}/m68k-amigaos/clib2'): copytree('{build}/clib2/lib', 'lib') copytree('{build}/clib2/include', 'include') @@ -354,7 +353,6 @@ def build(): unpack('{ixemul}', top_dir='ixemul') patch('{ixemul}') - headers_install() unpack('{gcc}') with env(CC=environ['CC'] + ' -std=gnu11', @@ -366,19 +364,23 @@ def build(): '--host=i686-linux-gnu', '--build=i686-linux-gnu', '--target=m68k-amigaos', - '--enable-languages=c,c++') + '--enable-languages=c,c++', + '--enable-version-specific-runtime-libs', + '--with-headers={sources}/{ixemul}/include') touch('{sources}/{gcc}/gcc/c-parse.in') make('{gcc}', 'all-gcc', MAKEINFO='makeinfo', CFLAGS_FOR_TARGET='-noixemul') make('{gcc}', 'install-gcc', MAKEINFO='makeinfo', CFLAGS_FOR_TARGET='-noixemul') + headers_install() + unpack('libamiga', top_dir='.') install_libamiga() unpack('libnix') configure('libnix', - '--prefix={target}/m68k-amigaos', + '--prefix={target}/m68k-amigaos/libnix', '--host=i686-linux-gnu', '--target=m68k-amigaos') make('libnix', @@ -390,19 +392,15 @@ def build(): LD='m68k-amigaos-ld') make('libnix', 'install') - unpack('clib2', work_dir='{build}', top_dir='library') - make('clib2', makefile='GNUmakefile.68k') - install_clib2() - copy('{sources}/libnix/sources/headers/stabs.h', - '{target}/m68k-amigaos/include') + '{target}/m68k-amigaos/libnix/include') unpack('{libm}', top_dir='contrib/libm') with env(CC='m68k-amigaos-gcc -noixemul', AR='m68k-amigaos-ar', RANLIB='m68k-amigaos-ranlib'): configure('{libm}', - '--prefix={target}/m68k-amigaos', + '--prefix={target}/m68k-amigaos/libnix', '--host=i686-linux-gnu', '--target=m68k-amigaos') make('{libm}') @@ -413,11 +411,15 @@ def build(): AR='m68k-amigaos-ar', RANLIB='m68k-amigaos-ranlib'): configure('{libdebug}', - '--prefix={target}/m68k-amigaos', + '--prefix={target}/m68k-amigaos/libnix', '--host=m68k-amigaos') make('{libdebug}') make('{libdebug}', 'install') + unpack('clib2', work_dir='{build}', top_dir='library') + make('clib2', makefile='GNUmakefile.68k') + install_clib2() + make('{gcc}', MAKEINFO='makeinfo', CFLAGS_FOR_TARGET='-noixemul') make('{gcc}', 'install', MAKEINFO='makeinfo', CFLAGS_FOR_TARGET='-noixemul') @@ -476,7 +478,8 @@ def add_stubs(src): obj = re.sub(r'\.c$', r'.o', src) for libdir, cflags in MULTILIB: - lib = path.join('{target}/m68k-amigaos/lib', libdir, 'libnix/libstubs.a') + lib = path.join('{target}/m68k-amigaos/libnix/lib', + libdir, 'libnix/libstubs.a') info('stubs: "%s" -> "%s"', obj, lib) cflags = list(cflags) + ['-noixemul', '-c', '-o', obj, src] execute('m68k-amigaos-gcc', '-Wall', '-O3', '-fomit-frame-pointer', *cflags) @@ -488,7 +491,7 @@ def add_lib(src, libname): obj = re.sub(r'\.a$', r'.o', libname) for libdir, cflags in MULTILIB: - lib = path.join('{target}/m68k-amigaos/lib', libdir, libname) + lib = path.join('{target}/m68k-amigaos/libnix/lib', libdir, libname) info('lib: "%s" -> "%s"', obj, lib) cflags = list(cflags) + ['-noixemul', '-c', '-o', obj, src] execute('m68k-amigaos-gcc', '-Wall', '-O3', '-fomit-frame-pointer', *cflags)