Sorta. crt0 is a separate module as far as bonnibel is concerned, but it's still part of the libc module file.
48 lines
1.2 KiB
Python
48 lines
1.2 KiB
Python
# vim: ft=python
|
|
|
|
# Normally I prefer listing every source file so that ninja can pick
|
|
# up on added files and regenerate appropriately, but libc has _so_
|
|
# many files that it's unweildy. So if a file is added or removed in
|
|
# libc, remember to run configure again.
|
|
|
|
def glob(ext, root=''):
|
|
from glob import glob
|
|
from pathlib import Path
|
|
|
|
base = Path(module_root) / root
|
|
|
|
def resolve(path):
|
|
return str(Path(path).relative_to(base))
|
|
|
|
return list(map(resolve, glob(f"{base}/**/*.{ext}", recursive=True)))
|
|
|
|
sources = []
|
|
for ext in ("c", "cpp", "s", "inc"):
|
|
sources += [f for f in glob(ext) + glob(ext + ".cog") if not "crt" in f]
|
|
|
|
headers = []
|
|
for ext in ("h",):
|
|
headers += glob(ext, "include") + glob(ext + ".cog", "include")
|
|
|
|
libc = module("libc",
|
|
kind = "lib",
|
|
deps = [ "j6", "crt0.o" ],
|
|
basename = "libc",
|
|
include_phase = "late",
|
|
sources = sources,
|
|
public_headers = headers,
|
|
)
|
|
|
|
libc.variables["ccflags"] = [
|
|
"${ccflags}",
|
|
"-fvisibility=default",
|
|
"-DPRINTF_SUPPORT_DECIMAL_SPECIFIERS=0",
|
|
"-DPRINTF_SUPPORT_EXPONENTIAL_SPECIFIERS=0",
|
|
]
|
|
|
|
crt = module("crt0.o",
|
|
kind = "cp",
|
|
sources = [
|
|
"arch/amd64/crt/crt0.s",
|
|
])
|