hare

[hare] The Hare programming language
git clone https://git.torresjrjr.com/hare.git
Log | Files | Refs | README | LICENSE

arch.ha (1249B)


      1 // SPDX-License-Identifier: GPL-3.0-only
      2 // (c) Hare authors <https://harelang.org>
      3 
      4 use cmd::hare::build;
      5 
      6 // When building the bootstrap toolchain, these values will get overwritten to
      7 // equal the values in config.mk
      8 def AARCH64_AS = "as";
      9 def AARCH64_CC = "cc";
     10 def AARCH64_LD = "ld";
     11 def RISCV64_AS = "as";
     12 def RISCV64_CC = "cc";
     13 def RISCV64_LD = "ld";
     14 def X86_64_AS  = "as";
     15 def X86_64_CC  = "cc";
     16 def X86_64_LD  = "ld";
     17 
     18 // TODO: implement cross compiling to other kernels (e.g. linux => freebsd)
     19 // TODO: sysroots
     20 const arches: [_]build::arch = [
     21 	build::arch {
     22 		name = "aarch64",
     23 		qbe_name = "arm64",
     24 		as_cmd = AARCH64_AS,
     25 		cc_cmd = AARCH64_CC,
     26 		ld_cmd = AARCH64_LD,
     27 	},
     28 	build::arch {
     29 		name = "riscv64",
     30 		qbe_name = "rv64",
     31 		as_cmd = RISCV64_AS,
     32 		cc_cmd = RISCV64_CC,
     33 		ld_cmd = RISCV64_LD,
     34 	},
     35 	build::arch {
     36 		name = "x86_64",
     37 		qbe_name = "amd64_sysv",
     38 		as_cmd = X86_64_AS,
     39 		cc_cmd = X86_64_CC,
     40 		ld_cmd = X86_64_LD,
     41 	},
     42 ];
     43 
     44 fn set_arch_tags(tags: *[]str, a: *build::arch) void = {
     45 	merge_tags(tags, "-aarch64-riscv64-x86_64")!;
     46 	append(tags, a.name);
     47 };
     48 
     49 fn get_arch(name: str) (*build::arch | unknown_arch) = {
     50 	for (let arch &.. arches) {
     51 		if (arch.name == name) {
     52 			return arch;
     53 		};
     54 	};
     55 	return name: unknown_arch;
     56 };