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 CC = m68k-amigaos-gcc -s
CXX = m68k-amigaos-g++ -noixemul -s CXX = m68k-amigaos-g++ -s
CFLAGS = -Os -Wall -fomit-frame-pointer CFLAGS = -Os -Wall -fomit-frame-pointer
CXXFLAGS = -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 simple.library simple.library_r simple.device
all: $(BINS) $(OBJS) all: $(BINS) $(OBJS)
hello-ks13: CC += -fbaserel
hello-ks13: CFLAGS += -m68000 -msmall-code
hello-ks13: LDLIBS = -lnix13
hello-ks13: hello-ks13.c 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 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 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 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 hello-mui: hello-mui.c
$(CC) -noixemul -m68020 -msmall-code $(CFLAGS) -o $@ $< -lmui
test-mmu: CFLAGS += -m68060 -msmall-code
test-mmu: test-mmu.c test-mmu: test-mmu.c
$(CC) -noixemul -m68060 -msmall-code $(CFLAGS) -o $@ $<
simple.library: simple-library.c simple.library: simple-library.c
$(CC) -ramiga-lib -fbaserel $(CFLAGS) -o $@ $^ $(CC) -noixemul -ramiga-lib -fbaserel $(CFLAGS) -o $@ $<
simple.library_r: simple-library.c simple.library_r: simple-library.c
$(CC) -ramiga-libr -resident $(CFLAGS) -o $@ $^ $(CC) -noixemul -ramiga-libr -resident $(CFLAGS) -o $@ $<
simple.device: simple-device.c simple.device: simple-device.c
$(CC) -ramiga-dev -fbaserel $(CFLAGS) -o $@ $^ $(CC) -noixemul -ramiga-dev -fbaserel $(CFLAGS) -o $@ $<
clean: clean:
rm -f $(BINS) rm -f $(BINS)

View File

@ -93,8 +93,7 @@ def install_ndk():
def headers_install(): def headers_install():
info('installing ixemul header files') info('installing ixemul header files')
copytree('{sources}/{ixemul}/include', '{target}/m68k-amigaos/include') copytree('{sources}/{ixemul}/include', '{target}/m68k-amigaos/libnix/include')
symlink('{target}/m68k-amigaos/include', '{target}/m68k-amigaos/sys-include')
@recipe('tools-install') @recipe('tools-install')
@ -108,14 +107,14 @@ def install_tools():
def install_libamiga(): def install_libamiga():
info('installing libamiga') info('installing libamiga')
copytree('{sources}/libamiga/lib', '{target}/m68k-amigaos/lib') copytree('{sources}/libamiga/lib', '{target}/m68k-amigaos/libnix/lib')
@recipe('clib2-install') @recipe('clib2-install')
def install_clib2(): def install_clib2():
info('installing clib2') info('installing clib2')
with cwd('{target}/clib2'): with cwd('{target}/m68k-amigaos/clib2'):
copytree('{build}/clib2/lib', 'lib') copytree('{build}/clib2/lib', 'lib')
copytree('{build}/clib2/include', 'include') copytree('{build}/clib2/include', 'include')
@ -354,7 +353,6 @@ def build():
unpack('{ixemul}', top_dir='ixemul') unpack('{ixemul}', top_dir='ixemul')
patch('{ixemul}') patch('{ixemul}')
headers_install()
unpack('{gcc}') unpack('{gcc}')
with env(CC=environ['CC'] + ' -std=gnu11', with env(CC=environ['CC'] + ' -std=gnu11',
@ -366,19 +364,23 @@ def build():
'--host=i686-linux-gnu', '--host=i686-linux-gnu',
'--build=i686-linux-gnu', '--build=i686-linux-gnu',
'--target=m68k-amigaos', '--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') touch('{sources}/{gcc}/gcc/c-parse.in')
make('{gcc}', 'all-gcc', make('{gcc}', 'all-gcc',
MAKEINFO='makeinfo', CFLAGS_FOR_TARGET='-noixemul') MAKEINFO='makeinfo', CFLAGS_FOR_TARGET='-noixemul')
make('{gcc}', 'install-gcc', make('{gcc}', 'install-gcc',
MAKEINFO='makeinfo', CFLAGS_FOR_TARGET='-noixemul') MAKEINFO='makeinfo', CFLAGS_FOR_TARGET='-noixemul')
headers_install()
unpack('libamiga', top_dir='.') unpack('libamiga', top_dir='.')
install_libamiga() install_libamiga()
unpack('libnix') unpack('libnix')
configure('libnix', configure('libnix',
'--prefix={target}/m68k-amigaos', '--prefix={target}/m68k-amigaos/libnix',
'--host=i686-linux-gnu', '--host=i686-linux-gnu',
'--target=m68k-amigaos') '--target=m68k-amigaos')
make('libnix', make('libnix',
@ -390,19 +392,15 @@ def build():
LD='m68k-amigaos-ld') LD='m68k-amigaos-ld')
make('libnix', 'install') 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', copy('{sources}/libnix/sources/headers/stabs.h',
'{target}/m68k-amigaos/include') '{target}/m68k-amigaos/libnix/include')
unpack('{libm}', top_dir='contrib/libm') unpack('{libm}', top_dir='contrib/libm')
with env(CC='m68k-amigaos-gcc -noixemul', with env(CC='m68k-amigaos-gcc -noixemul',
AR='m68k-amigaos-ar', AR='m68k-amigaos-ar',
RANLIB='m68k-amigaos-ranlib'): RANLIB='m68k-amigaos-ranlib'):
configure('{libm}', configure('{libm}',
'--prefix={target}/m68k-amigaos', '--prefix={target}/m68k-amigaos/libnix',
'--host=i686-linux-gnu', '--host=i686-linux-gnu',
'--target=m68k-amigaos') '--target=m68k-amigaos')
make('{libm}') make('{libm}')
@ -413,11 +411,15 @@ def build():
AR='m68k-amigaos-ar', AR='m68k-amigaos-ar',
RANLIB='m68k-amigaos-ranlib'): RANLIB='m68k-amigaos-ranlib'):
configure('{libdebug}', configure('{libdebug}',
'--prefix={target}/m68k-amigaos', '--prefix={target}/m68k-amigaos/libnix',
'--host=m68k-amigaos') '--host=m68k-amigaos')
make('{libdebug}') make('{libdebug}')
make('{libdebug}', 'install') 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}', MAKEINFO='makeinfo', CFLAGS_FOR_TARGET='-noixemul')
make('{gcc}', 'install', 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) obj = re.sub(r'\.c$', r'.o', src)
for libdir, cflags in MULTILIB: 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) info('stubs: "%s" -> "%s"', obj, lib)
cflags = list(cflags) + ['-noixemul', '-c', '-o', obj, src] cflags = list(cflags) + ['-noixemul', '-c', '-o', obj, src]
execute('m68k-amigaos-gcc', '-Wall', '-O3', '-fomit-frame-pointer', *cflags) 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) obj = re.sub(r'\.a$', r'.o', libname)
for libdir, cflags in MULTILIB: 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) info('lib: "%s" -> "%s"', obj, lib)
cflags = list(cflags) + ['-noixemul', '-c', '-o', obj, src] cflags = list(cflags) + ['-noixemul', '-c', '-o', obj, src]
execute('m68k-amigaos-gcc', '-Wall', '-O3', '-fomit-frame-pointer', *cflags) execute('m68k-amigaos-gcc', '-Wall', '-O3', '-fomit-frame-pointer', *cflags)