Files
jsix_import/src/libraries/libc/libc.module
Justin C. Miller ba6e8e1349 [libc] Pull crt0 out into its own module
Sorta. crt0 is a separate module as far as bonnibel is concerned, but it's
still part of the libc module file.
2024-02-13 22:41:40 -08:00

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",
])