Browse Source

Add support for running odin through a symlink. Use realpath when obtaining root dir.

castano 5 years ago
parent
commit
71d129a709
1 changed files with 5 additions and 2 deletions
  1. 5 2
      src/build_settings.cpp

+ 5 - 2
src/build_settings.cpp

@@ -357,6 +357,8 @@ String odin_root_dir(void) {
 
 
 #include <mach-o/dyld.h>
 #include <mach-o/dyld.h>
 
 
+String path_to_fullpath(gbAllocator a, String s);
+
 String odin_root_dir(void) {
 String odin_root_dir(void) {
 	String path = global_module_path;
 	String path = global_module_path;
 	isize len, i;
 	isize len, i;
@@ -390,7 +392,8 @@ String odin_root_dir(void) {
 	text = gb_alloc_array(string_buffer_allocator, u8, len + 1);
 	text = gb_alloc_array(string_buffer_allocator, u8, len + 1);
 	gb_memmove(text, &path_buf[0], len);
 	gb_memmove(text, &path_buf[0], len);
 
 
-	path = make_string(text, len);
+	path = path_to_fullpath(heap_allocator(), make_string(text, len));
+
 	for (i = path.len-1; i >= 0; i--) {
 	for (i = path.len-1; i >= 0; i--) {
 		u8 c = path[i];
 		u8 c = path[i];
 		if (c == '/' || c == '\\') {
 		if (c == '/' || c == '\\') {
@@ -451,7 +454,7 @@ String odin_root_dir(void) {
 
 
 	gb_memmove(text, &path_buf[0], len);
 	gb_memmove(text, &path_buf[0], len);
 
 
-	path = make_string(text, len);
+	path = path_to_fullpath(heap_allocator(), make_string(text, len));
 	for (i = path.len-1; i >= 0; i--) {
 	for (i = path.len-1; i >= 0; i--) {
 		u8 c = path[i];
 		u8 c = path[i];
 		if (c == '/' || c == '\\') {
 		if (c == '/' || c == '\\') {