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:
@ -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)
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user