aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBrett R. Toomey <brto@nodes.dk>2018-06-03 17:13:11 +0200
committerBrett R. Toomey <brto@nodes.dk>2018-06-03 17:13:11 +0200
commit597c4591bce93edfd9c3740360c149f51941f6dc (patch)
tree8b97c4ddb689edea23cd73e05662472736b7b39c /src
parent80833ed703f81f6aa5bdfed42d5dbbacb77d06bf (diff)
parent106302189c3a49282a513d47f84d05ce6285af75 (diff)
Merge branch 'packages' of github.com:odin-lang/Odin into packages
Diffstat (limited to 'src')
-rw-r--r--src/build_settings.cpp33
-rw-r--r--src/main.cpp2
2 files changed, 18 insertions, 17 deletions
diff --git a/src/build_settings.cpp b/src/build_settings.cpp
index 36e59f1f3..09365c5b7 100644
--- a/src/build_settings.cpp
+++ b/src/build_settings.cpp
@@ -33,6 +33,11 @@ String target_arch_names[TargetArch_COUNT] = {
};
+String const ODIN_VERSION = str_lit("0.9.0");
+String cross_compile_target = str_lit("");
+String cross_compile_lib_dir = str_lit("");
+
+
// This stores the information for the specify architecture of this build
struct BuildContext {
// Constants
@@ -417,9 +422,6 @@ String get_fullpath_core(gbAllocator a, String path) {
}
-String const ODIN_VERSION = str_lit("0.9.0");
-String cross_compile_target = str_lit("");
-String cross_compile_lib_dir = str_lit("");
void init_build_context(void) {
BuildContext *bc = &build_context;
@@ -490,12 +492,18 @@ void init_build_context(void) {
#define LINK_FLAG_X86 "-arch x86"
#endif
+ gbString llc_flags = gb_string_make_reserve(heap_allocator(), 64);
+ gbString link_flags = gb_string_make_reserve(heap_allocator(), 64);
+ if (bc->ODIN_DEBUG) {
+ llc_flags = gb_string_appendc(llc_flags, "-debug-compile ");
+ }
if (bc->ODIN_ARCH == "amd64") {
bc->word_size = 8;
bc->max_align = 16;
- bc->llc_flags = str_lit("-march=x86-64 ");
+ llc_flags = gb_string_appendc(llc_flags, "-march=x86-64 ");
+
if (str_eq_ignore_case(cross_compile_target, str_lit("Essence"))) {
bc->link_flags = str_lit(" ");
} else {
@@ -504,27 +512,22 @@ void init_build_context(void) {
} else if (bc->ODIN_ARCH == "x86") {
bc->word_size = 4;
bc->max_align = 8;
- bc->llc_flags = str_lit("-march=x86 ");
+ llc_flags = gb_string_appendc(llc_flags, "-march=x86 ");
bc->link_flags = str_lit(LINK_FLAG_X86 " ");
} else {
gb_printf_err("This current architecture is not supported");
gb_exit(1);
}
+ bc->llc_flags = make_string_c(llc_flags);
- isize opt_max = 1023;
- char *opt_flags_string = gb_alloc_array(heap_allocator(), char, opt_max+1);
- isize opt_len = 0;
bc->optimization_level = gb_clamp(bc->optimization_level, 0, 3);
+
+ gbString opt_flags = gb_string_make_reserve(heap_allocator(), 16);
if (bc->optimization_level != 0) {
- opt_len = gb_snprintf(opt_flags_string, opt_max, "-O%d", bc->optimization_level);
- } else {
- opt_len = gb_snprintf(opt_flags_string, opt_max, "");
- }
- if (opt_len > 0) {
- opt_len--;
+ opt_flags = gb_string_append_fmt(opt_flags, "-O%d", bc->optimization_level);
}
- bc->opt_flags = make_string(cast(u8 *)opt_flags_string, opt_len);
+ bc->opt_flags = make_string_c(opt_flags);
#undef LINK_FLAG_X64
diff --git a/src/main.cpp b/src/main.cpp
index 8cf4b26b4..1f8be7b91 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -683,7 +683,6 @@ i32 exec_llvm_llc(String output_base) {
"\"%.*sbin/llc\" \"%.*s.bc\" -filetype=obj -O%d "
"-o \"%.*s.obj\" "
"%.*s "
- // "-debug-pass=Arguments "
"",
LIT(build_context.ODIN_ROOT),
LIT(output_base),
@@ -696,7 +695,6 @@ i32 exec_llvm_llc(String output_base) {
return system_exec_command_line_app("llc", false,
"llc \"%.*s.bc\" -filetype=obj -relocation-model=pic -O%d "
"%.*s "
- // "-debug-pass=Arguments "
"%s"
"",
LIT(output_base),