Browse Source

Fix compilation error #272

gingerBill 6 years ago
parent
commit
307c58d908
2 changed files with 21 additions and 5 deletions
  1. 2 2
      core/os/os_linux.odin
  2. 19 3
      src/build_settings.cpp

+ 2 - 2
core/os/os_linux.odin

@@ -139,9 +139,9 @@ foreign libc {
 	@(link_name="calloc")  _unix_calloc  :: proc(num, size: int) -> rawptr ---;
 	@(link_name="calloc")  _unix_calloc  :: proc(num, size: int) -> rawptr ---;
 	@(link_name="free")    _unix_free    :: proc(ptr: rawptr) ---;
 	@(link_name="free")    _unix_free    :: proc(ptr: rawptr) ---;
 	@(link_name="realloc") _unix_realloc :: proc(ptr: rawptr, size: int) -> rawptr ---;
 	@(link_name="realloc") _unix_realloc :: proc(ptr: rawptr, size: int) -> rawptr ---;
-	@(link_name="getenv")  _unix_getenv  :: proc(cstring) -> cstring --- -> !;
+	@(link_name="getenv")  _unix_getenv  :: proc(cstring) -> cstring ---;
 
 
-	@(link_name="exit")    _unix_exit    :: proc(status: int) ---;
+	@(link_name="exit")    _unix_exit    :: proc(status: int) -> ! ---;
 }
 }
 foreign dl {
 foreign dl {
 	@(link_name="dlopen")  _unix_dlopen  :: proc(filename: cstring, flags: int) -> rawptr ---;
 	@(link_name="dlopen")  _unix_dlopen  :: proc(filename: cstring, flags: int) -> rawptr ---;

+ 19 - 3
src/build_settings.cpp

@@ -18,6 +18,15 @@ enum TargetArchKind {
 	TargetArch_COUNT,
 	TargetArch_COUNT,
 };
 };
 
 
+enum TargetEndianKind {
+	TargetEndian_Invalid,
+
+	TargetEndian_Little,
+	TargetEndian_Big,
+
+	TargetEndian_COUNT,
+};
+
 String target_os_names[TargetOs_COUNT] = {
 String target_os_names[TargetOs_COUNT] = {
 	str_lit(""),
 	str_lit(""),
 	str_lit("windows"),
 	str_lit("windows"),
@@ -32,13 +41,20 @@ String target_arch_names[TargetArch_COUNT] = {
 	str_lit("386"),
 	str_lit("386"),
 };
 };
 
 
-String target_arch_endian[TargetArch_COUNT] = {
+String target_endian_names[TargetEndian_COUNT] = {
 	str_lit(""),
 	str_lit(""),
 	str_lit("little"),
 	str_lit("little"),
-	str_lit("little"),
+	str_lit("big"),
+};
+
+TargetEndianKind target_endians[TargetArch_COUNT] = {
+	TargetEndian_Invalid,
+	TargetEndian_Little,
+	TargetEndian_Little,
 };
 };
 
 
 
 
+
 String const ODIN_VERSION = str_lit("0.9.0");
 String const ODIN_VERSION = str_lit("0.9.0");
 String cross_compile_target = str_lit("");
 String cross_compile_target = str_lit("");
 String cross_compile_lib_dir = str_lit("");
 String cross_compile_lib_dir = str_lit("");
@@ -521,7 +537,7 @@ void init_build_context(void) {
 	bc->metrics = metrics;
 	bc->metrics = metrics;
 	bc->ODIN_OS     = target_os_names[metrics.os];
 	bc->ODIN_OS     = target_os_names[metrics.os];
 	bc->ODIN_ARCH   = target_arch_names[metrics.arch];
 	bc->ODIN_ARCH   = target_arch_names[metrics.arch];
-	bc->ODIN_ENDIAN = target_arch_endian[metrics.arch];
+	bc->ODIN_ENDIAN = target_endian_names[target_endians[metrics.arch]];
 	bc->word_size   = metrics.word_size;
 	bc->word_size   = metrics.word_size;
 	bc->max_align   = metrics.max_align;
 	bc->max_align   = metrics.max_align;
 	bc->link_flags  = str_lit(" ");
 	bc->link_flags  = str_lit(" ");