Jelajahi Sumber

few llvm 20 changes

Laytan Laats 5 bulan lalu
induk
melakukan
f80e73e036
5 mengubah file dengan 52 tambahan dan 18 penghapusan
  1. 8 5
      build_odin.sh
  2. 6 6
      src/build_settings.cpp
  3. 30 0
      src/build_settings_microarch.cpp
  4. 8 0
      src/llvm_backend.cpp
  5. 0 7
      src/main.cpp

+ 8 - 5
build_odin.sh

@@ -25,7 +25,8 @@ error() {
 
 # Brew advises people not to add llvm to their $PATH, so try and use brew to find it.
 if [ -z "$LLVM_CONFIG" ] &&  [ -n "$(command -v brew)" ]; then
-    if   [ -n "$(command -v $(brew --prefix llvm@19)/bin/llvm-config)" ]; then LLVM_CONFIG="$(brew --prefix llvm@19)/bin/llvm-config"
+    if   [ -n "$(command -v $(brew --prefix llvm)/bin/llvm-config)"    ]; then LLVM_CONFIG="$(brew --prefix llvm)/bin/llvm-config"
+    elif [ -n "$(command -v $(brew --prefix llvm@19)/bin/llvm-config)" ]; then LLVM_CONFIG="$(brew --prefix llvm@19)/bin/llvm-config"
     elif [ -n "$(command -v $(brew --prefix llvm@18)/bin/llvm-config)" ]; then LLVM_CONFIG="$(brew --prefix llvm@18)/bin/llvm-config"
     elif [ -n "$(command -v $(brew --prefix llvm@17)/bin/llvm-config)" ]; then LLVM_CONFIG="$(brew --prefix llvm@17)/bin/llvm-config"
     elif [ -n "$(command -v $(brew --prefix llvm@14)/bin/llvm-config)" ]; then LLVM_CONFIG="$(brew --prefix llvm@14)/bin/llvm-config"
@@ -34,7 +35,8 @@ fi
 
 if [ -z "$LLVM_CONFIG" ]; then
 	# darwin, linux, openbsd
-	if   [ -n "$(command -v llvm-config-19)" ]; then LLVM_CONFIG="llvm-config-19"
+	if   [ -n "$(command -v llvm-config-20)" ]; then LLVM_CONFIG="llvm-config-20"
+	elif [ -n "$(command -v llvm-config-19)" ]; then LLVM_CONFIG="llvm-config-19"
 	elif [ -n "$(command -v llvm-config-18)" ]; then LLVM_CONFIG="llvm-config-18"
 	elif [ -n "$(command -v llvm-config-17)" ]; then LLVM_CONFIG="llvm-config-17"
 	elif [ -n "$(command -v llvm-config-14)" ]; then LLVM_CONFIG="llvm-config-14"
@@ -42,6 +44,7 @@ if [ -z "$LLVM_CONFIG" ]; then
 	elif [ -n "$(command -v llvm-config-12)" ]; then LLVM_CONFIG="llvm-config-12"
 	elif [ -n "$(command -v llvm-config-11)" ]; then LLVM_CONFIG="llvm-config-11"
 	# freebsd
+	elif [ -n "$(command -v llvm-config20)" ]; then  LLVM_CONFIG="llvm-config20"
 	elif [ -n "$(command -v llvm-config19)" ]; then  LLVM_CONFIG="llvm-config19"
 	elif [ -n "$(command -v llvm-config18)" ]; then  LLVM_CONFIG="llvm-config18"
 	elif [ -n "$(command -v llvm-config17)" ]; then  LLVM_CONFIG="llvm-config17"
@@ -69,15 +72,15 @@ LLVM_VERSION_MAJOR="$(echo $LLVM_VERSION | awk -F. '{print $1}')"
 LLVM_VERSION_MINOR="$(echo $LLVM_VERSION | awk -F. '{print $2}')"
 LLVM_VERSION_PATCH="$(echo $LLVM_VERSION | awk -F. '{print $3}')"
 
-if [ $LLVM_VERSION_MAJOR -lt 11 ] || ([ $LLVM_VERSION_MAJOR -gt 14 ] && [ $LLVM_VERSION_MAJOR -lt 17 ]) || [ $LLVM_VERSION_MAJOR -gt 19 ]; then
-	error "Invalid LLVM version $LLVM_VERSION: must be 11, 12, 13, 14, 17, 18 or 19"
+if [ $LLVM_VERSION_MAJOR -lt 11 ] || ([ $LLVM_VERSION_MAJOR -gt 14 ] && [ $LLVM_VERSION_MAJOR -lt 17 ]) || [ $LLVM_VERSION_MAJOR -gt 20 ]; then
+	error "Invalid LLVM version $LLVM_VERSION: must be 11, 12, 13, 14, 17, 18, 19 or 20"
 fi
 
 case "$OS_NAME" in
 Darwin)
 	if [ "$OS_ARCH" = "arm64" ]; then
 		if [ $LLVM_VERSION_MAJOR -lt 13 ]; then
-			error "Invalid LLVM version $LLVM_VERSION: Darwin Arm64 requires LLVM 13, 14, 17, 18 or 19"
+			error "Invalid LLVM version $LLVM_VERSION: Darwin Arm64 requires LLVM 13, 14, 17, 18, 19 or 20"
 		fi
 	fi
 

+ 6 - 6
src/build_settings.cpp

@@ -109,6 +109,12 @@ gb_global String target_arch_names[TargetArch_COUNT] = {
 	str_lit("riscv64"),
 };
 
+#if defined(GB_SYSTEM_WINDOWS)
+	#include <llvm-c/Config/llvm-config.h>
+#else
+	#include <llvm/Config/llvm-config.h>
+#endif
+
 #include "build_settings_microarch.cpp"
 
 gb_global String target_endian_names[TargetEndian_COUNT] = {
@@ -544,12 +550,6 @@ gb_internal isize MAX_ERROR_COLLECTOR_COUNT(void) {
 	return build_context.max_error_count;
 }
 
-#if defined(GB_SYSTEM_WINDOWS)
-	#include <llvm-c/Config/llvm-config.h>
-#else
-	#include <llvm/Config/llvm-config.h>
-#endif
-
 // NOTE: AMD64 targets had their alignment on 128 bit ints bumped from 8 to 16 (undocumented of course).
 #if LLVM_VERSION_MAJOR >= 18
 	#define AMD64_MAX_ALIGNMENT 16

File diff ditekan karena terlalu besar
+ 30 - 0
src/build_settings_microarch.cpp


+ 8 - 0
src/llvm_backend.cpp

@@ -2176,6 +2176,14 @@ gb_internal bool lb_generate_code(lbGenerator *gen) {
 		LLVMInitializeRISCVAsmParser();
 		LLVMInitializeRISCVDisassembler();
 		break;
+	case TargetArch_arm32:
+		LLVMInitializeARMTargetInfo();
+		LLVMInitializeARMTarget();
+		LLVMInitializeARMTargetMC();
+		LLVMInitializeARMAsmPrinter();
+		LLVMInitializeARMAsmParser();
+		LLVMInitializeARMDisassembler();
+		break;
 	default:
 		GB_PANIC("Unimplemented LLVM target initialization");
 		break;

+ 0 - 7
src/main.cpp

@@ -87,13 +87,6 @@ gb_global Timings global_timings = {0};
 
 #include "llvm_backend.cpp"
 
-#if defined(GB_SYSTEM_OSX)
-	#include <llvm/Config/llvm-config.h>
-	#if LLVM_VERSION_MAJOR < 11 || (LLVM_VERSION_MAJOR > 14 && LLVM_VERSION_MAJOR < 17) || LLVM_VERSION_MAJOR > 19
-	#error LLVM Version 11..=14 or 17..=19 is required => "brew install llvm@14"
-	#endif
-#endif
-
 #include "bug_report.cpp"
 
 // NOTE(bill): 'name' is used in debugging and profiling modes

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini