diff --git a/build_odin.sh b/build_odin.sh index b8cd09c54..62d8a0f59 100755 --- a/build_odin.sh +++ b/build_odin.sh @@ -50,7 +50,19 @@ config_darwin() { } config_freebsd() { - : ${LLVM_CONFIG=/usr/local/bin/llvm-config11} + : ${LLVM_CONFIG=} + + if [ ! "$LLVM_CONFIG" ]; then + if which llvm-config11 > /dev/null 2>&1; then + LLVM_CONFIG=llvm-config11 + elif which llvm-config12 > /dev/null 2>&1; then + LLVM_CONFIG=llvm-config12 + elif which llvm-config13 > /dev/null 2>&1; then + LLVM_CONFIG=llvm-config13 + else + panic "Unable to find LLVM-config" + fi + fi CXXFLAGS="$CXXFLAGS $($LLVM_CONFIG --cxxflags --ldflags)" LDFLAGS="$LDFLAGS $($LLVM_CONFIG --libs core native --system-libs)" diff --git a/core/os/os_darwin.odin b/core/os/os_darwin.odin index b5e67558c..5c2cf8ec2 100644 --- a/core/os/os_darwin.odin +++ b/core/os/os_darwin.odin @@ -596,7 +596,7 @@ absolute_path_from_handle :: proc(fd: Handle) -> (string, Errno) { return "", Errno(get_last_error()) } - path := strings.clone_from_cstring(cstring(&buf[0]), context.temp_allocator) + path := strings.clone_from_cstring(cstring(&buf[0])) return path, ERROR_NONE } diff --git a/src/check_stmt.cpp b/src/check_stmt.cpp index d741ceabf..9e4504dc1 100644 --- a/src/check_stmt.cpp +++ b/src/check_stmt.cpp @@ -1400,7 +1400,7 @@ bool check_expr_is_stack_variable(Ast *expr) { expr = unparen_expr(expr); Entity *e = entity_of_node(expr); if (e && e->kind == Entity_Variable) { - if (e->flags & (EntityFlag_Static|EntityFlag_Using)) { + if (e->flags & (EntityFlag_Static|EntityFlag_Using|EntityFlag_ImplicitReference|EntityFlag_ForValue)) { // okay } else if (e->Variable.thread_local_model.len != 0) { // okay @@ -1941,13 +1941,10 @@ void check_stmt_internal(CheckerContext *ctx, Ast *node, u32 flags) { } if (found == nullptr) { entity = alloc_entity_variable(ctx->scope, token, type, EntityState_Resolved); + entity->flags |= EntityFlag_ForValue; entity->flags |= EntityFlag_Value; - if (i == addressable_index) { - if (use_by_reference_for_value) { - entity->flags &= ~EntityFlag_Value; - } else { - entity->flags |= EntityFlag_ForValue; - } + if (i == addressable_index && use_by_reference_for_value) { + entity->flags &= ~EntityFlag_Value; } if (is_soa) { if (i == 0) { diff --git a/vendor/OpenGL/constants.odin b/vendor/OpenGL/constants.odin index 28c923903..c7d8b9542 100644 --- a/vendor/OpenGL/constants.odin +++ b/vendor/OpenGL/constants.odin @@ -1,5 +1,7 @@ package odin_gl +GL_DEBUG :: #config(GL_DEBUG, ODIN_DEBUG) + FALSE :: false TRUE :: true diff --git a/vendor/OpenGL/helpers.odin b/vendor/OpenGL/helpers.odin index 927129130..61c68ace5 100644 --- a/vendor/OpenGL/helpers.odin +++ b/vendor/OpenGL/helpers.odin @@ -46,7 +46,7 @@ get_last_error_message :: proc() -> (compile_message: string, compile_type: Shad // Shader checking and linking checking are identical // except for calling differently named GL functions // it's a bit ugly looking, but meh -when ODIN_DEBUG { +when GL_DEBUG { import "core:runtime" @private diff --git a/vendor/OpenGL/wrappers.odin b/vendor/OpenGL/wrappers.odin index b62ed216b..ba6ff369c 100644 --- a/vendor/OpenGL/wrappers.odin +++ b/vendor/OpenGL/wrappers.odin @@ -2,7 +2,7 @@ package odin_gl #assert(size_of(bool) == size_of(u8)) -when !ODIN_DEBUG { +when !GL_DEBUG { // VERSION_1_0 CullFace :: proc "c" (mode: u32) { impl_CullFace(mode) } FrontFace :: proc "c" (mode: u32) { impl_FrontFace(mode) }