diff --git a/torvalds/linux/linux_cmp.gox b/torvalds/linux/linux_cmp.gox new file mode 100644 index 0000000..315b29b --- /dev/null +++ b/torvalds/linux/linux_cmp.gox @@ -0,0 +1,12 @@ +import "strings" + +func linuxVersion(version string) string { + // GNU's '~' sorts before the end of a version: v7.2~rc7 < v7.2. + version = strings.ReplaceAll(version, "-rc", "~rc") + // Keep v5.12-rc1-dontuse below the normal v5.12-rc1 tag. + return strings.ReplaceAll(version, "-dontuse", "~dontuse") +} + +compareVer (a, b) => { + return gnu.compare(linuxVersion(a.Version), linuxVersion(b.Version)) +} diff --git a/torvalds/linux/v5.7/linuxHeaders_llar.gox b/torvalds/linux/v5.7/linuxHeaders_llar.gox new file mode 100644 index 0000000..f047cc8 --- /dev/null +++ b/torvalds/linux/v5.7/linuxHeaders_llar.gox @@ -0,0 +1,42 @@ +import ( + "os" + "path/filepath" +) + +id "torvalds/linux" + +// Linux 5.7 introduced LLVM=1 for both target tools and host Clang. +fromVer "v5.7" + +filter => { + return target.require["os"][0] == "linux" && + (target.require["arch"][0] == "amd64" || target.require["arch"][0] == "arm64") +} + +onBuild ctx => { + arch := "x86" + if target.require["arch"][0] == "arm64" { + arch = "arm64" + } + a := autotools.new(ctx.SourceDir, ctx.SourceDir, ctx.outputDir) + a.build "headers_install", "ARCH="+arch, "LLVM=1", "INSTALL_HDR_PATH="+ctx.outputDir+"/usr" +} + +onTest ctx => { + triple := "x86_64-linux-gnu" + readNumber := "0" + if target.require["arch"][0] == "arm64" { + triple = "aarch64-linux-gnu" + readNumber = "63" + } + source := filepath.join(ctx.SourceDir, "headers-consumer.c") + os.writeFile! source, []byte(`#include +#include +#include +_Static_assert(__NR_read == EXPECT_NR_READ, "wrong architecture headers"); +_Static_assert(sizeof(struct nlmsghdr) == 16, "invalid netlink ABI"); +_Static_assert(sizeof(__u64) == 8, "invalid UAPI integer size"); +`), 0o644 + clang! "--target="+triple, "-fsyntax-only", "-nostdinc", + "-I"+filepath.join(ctx.outputDir, "usr", "include"), "-DEXPECT_NR_READ="+readNumber, source +} diff --git a/torvalds/linux/versions.json b/torvalds/linux/versions.json new file mode 100644 index 0000000..4ef715d --- /dev/null +++ b/torvalds/linux/versions.json @@ -0,0 +1,4 @@ +{ + "path": "torvalds/linux", + "deps": {} +}