2
0
mirror of https://frontier.innolan.net/github/amigaos-cross-toolchain6.git synced 2024-10-19 10:29:55 +00:00

Support for clib2 standard library. Implements #32

This commit is contained in:
Krystian Bacławski
2016-05-19 00:07:12 +02:00
parent 119c97dba1
commit cb8c2ba33d
2 changed files with 38 additions and 32 deletions

View File

@ -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)

View File

@ -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)