Browse Source

Begin to make the -llvm-api more general

gingerBill 5 years ago
parent
commit
62dc99dbef
2 changed files with 10 additions and 5 deletions
  1. 8 3
      src/build_settings.cpp
  2. 2 2
      src/llvm_backend.cpp

+ 8 - 3
src/build_settings.cpp

@@ -65,6 +65,7 @@ struct TargetMetrics {
 	isize          word_size;
 	isize          max_align;
 	String         target_triplet;
+	String         target_data_layout;
 };
 
 
@@ -148,14 +149,15 @@ gb_global TargetMetrics target_windows_386 = {
 	TargetArch_386,
 	4,
 	8,
-	str_lit("i686-pc-windows"),
+	str_lit("i386-pc-windows-msvc"),
 };
 gb_global TargetMetrics target_windows_amd64 = {
 	TargetOs_windows,
 	TargetArch_amd64,
 	8,
 	16,
-	str_lit("x86_64-pc-windows-gnu"),
+	str_lit("x86_64-pc-windows-msvc"),
+	str_lit("e-m:w-i64:64-f80:128-n8:16:32:64-S128"),
 };
 
 gb_global TargetMetrics target_linux_386 = {
@@ -163,7 +165,8 @@ gb_global TargetMetrics target_linux_386 = {
 	TargetArch_386,
 	4,
 	8,
-	str_lit("i686-pc-linux-gnu"),
+	str_lit("i386-pc-linux-gnu"),
+
 };
 gb_global TargetMetrics target_linux_amd64 = {
 	TargetOs_linux,
@@ -171,6 +174,7 @@ gb_global TargetMetrics target_linux_amd64 = {
 	8,
 	16,
 	str_lit("x86_64-pc-linux-gnu"),
+	str_lit("e-m:w-i64:64-f80:128-n8:16:32:64-S128"),
 };
 
 gb_global TargetMetrics target_darwin_amd64 = {
@@ -179,6 +183,7 @@ gb_global TargetMetrics target_darwin_amd64 = {
 	8,
 	16,
 	str_lit("x86_64-apple-darwin"),
+	str_lit("e-m:o-i64:64-f80:128-n8:16:32:64-S128"),
 };
 
 gb_global TargetMetrics target_essence_amd64 = {

+ 2 - 2
src/llvm_backend.cpp

@@ -10985,8 +10985,8 @@ void lb_generate_code(lbGenerator *gen) {
 	LLVMInitializeNativeTarget();
 
 
-	char const *target_triple = "x86_64-pc-windows-msvc";
-	char const *target_data_layout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128";
+	char const *target_triple = alloc_cstring(heap_allocator(), build_context.metrics.target_triplet);
+	char const *target_data_layout = alloc_cstring(heap_allocator(), build_context.metrics.target_data_layout);
 	LLVMSetTarget(mod, target_triple);
 
 	LLVMTargetRef target = {};