You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.5 KiB
Plaintext
59 lines
1.5 KiB
Plaintext
# the set keyword sets a property of the current scope
|
|
# (i.e. the entire build script, a target, etc.)
|
|
set RUSTC_EXE = "rustc";
|
|
set ASM_EXE = "clang";
|
|
set CC_EXE = "clang";
|
|
set LINK_EXE = "ld.lld";
|
|
set BUILD_PREFIX = "build";
|
|
|
|
# regular function definitions work very much like they do in ECMAScript 5,
|
|
# except that the rather verbose "function" keyword is shortened to "fn".
|
|
fn hello(p1, p2) {
|
|
print("hello, world");
|
|
return p1 + p1;
|
|
}
|
|
|
|
# a target is a single component.
|
|
# targets can depend on other targets.
|
|
target kern {
|
|
if (2 > 3) {
|
|
print("2 > 3");
|
|
} else {
|
|
print("2 <= 3");
|
|
}
|
|
|
|
# functions are first-class citizens; they can be defined as inline
|
|
# anonymous functions that you can treat like any other value
|
|
fn_with_callback(fn(a, b) { return a + b; });
|
|
(fn(a, b) { return a + b; })(1, 2);
|
|
|
|
owo = 1 + 2 * 3 * 4 - 5;
|
|
|
|
# the type keyword defines whether the target is supposed to be
|
|
# compiled into an executable binary (exe) or a library (lib).
|
|
type exe;
|
|
# the depend keyword adds one or more dependencies to the target.
|
|
depend [
|
|
libk,
|
|
arch,
|
|
];
|
|
# the source keyword adds one or more source files to the target.
|
|
# the file extension determines what language/compiler to use.
|
|
source "kern/lib.rs";
|
|
}
|
|
|
|
target libk {
|
|
print("hello, world");
|
|
type lib;
|
|
depend arch;
|
|
source "libk/lib.rs";
|
|
}
|
|
|
|
target arch {
|
|
type lib;
|
|
source [
|
|
"arch/lib.rs",
|
|
"arch/**.nasm",
|
|
];
|
|
}
|