Split up source and added basic support for different targets.
This commit is contained in:
32
targets/x86_64/SConscript
Normal file
32
targets/x86_64/SConscript
Normal file
@@ -0,0 +1,32 @@
|
||||
Import('env')
|
||||
|
||||
env['AS'] = 'x86_64-elf-as'
|
||||
env['CC'] = 'x86_64-elf-gcc'
|
||||
env['CXX'] = 'x86_64-elf-g++'
|
||||
env['LD'] = 'x86_64-elf-g++'
|
||||
|
||||
def get_crt_object(name: str) -> str:
|
||||
import subprocess
|
||||
|
||||
cmd = [env['CXX']]
|
||||
cmd.extend(env['CXXFLAGS'])
|
||||
cmd.append(f'-print-file-name={name}')
|
||||
result = subprocess.run(cmd, stdout=subprocess.PIPE)
|
||||
return result.stdout.decode('utf-8').strip()
|
||||
crtbegin_o = get_crt_object('crtbegin.o')
|
||||
crtend_o = get_crt_object('crtend.o')
|
||||
crti_o = env.Object('src/crt/crti.s')
|
||||
crtn_o = env.Object('src/crt/crtn.s')
|
||||
|
||||
i686_sources = Split('''
|
||||
src/kernel/boot.s
|
||||
src/kernel/startup.cpp
|
||||
''')
|
||||
|
||||
env['LINKCOM'] = env['LINKCOM'].replace('$_LIBFLAGS', f'{crti_o[0].abspath} {crtbegin_o} $_LIBFLAGS {crtend_o} {crtn_o[0].abspath}')
|
||||
|
||||
env.Append(KERNEL_SOURCES = [env.File(f) for f in i686_sources])
|
||||
env.Append(KERNEL_DEPENDENCIES = [crti_o, crtn_o])
|
||||
env.Append(LINKFLAGS = ['-mcmodel=large', '-mno-red-zone', '-mno-mmx', '-mno-sse', '-mno-sse2'])
|
||||
|
||||
Return('env')
|
||||
Reference in New Issue
Block a user