Tue, 28 Oct 2025 22:03:06 +0100
fix that dependencies for tools are always checked
| 106 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 1 | /* | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 2 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 3 | * Copyright 2025 Mike Becker. All rights reserved. | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 4 | * | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 5 | * Redistribution and use in source and binary forms, with or without | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 6 | * modification, are permitted provided that the following conditions are met: | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 7 | * | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 8 | * 1. Redistributions of source code must retain the above copyright | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 9 | * notice, this list of conditions and the following disclaimer. | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 10 | * | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 11 | * 2. Redistributions in binary form must reproduce the above copyright | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 12 | * notice, this list of conditions and the following disclaimer in the | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 13 | * documentation and/or other materials provided with the distribution. | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 14 | * | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 15 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 16 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 17 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 18 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 19 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 20 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 21 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 22 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 23 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 24 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 25 | * POSSIBILITY OF SUCH DAMAGE. | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 26 | */ | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 27 | |
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 28 | #include "ascension/context.h" | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 29 | #include "ascension/error.h" | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 30 | |
| 107 
a35b39abe2b2
remove stdio include from error.h
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 31 | #include <stdio.h> | 
| 
a35b39abe2b2
remove stdio include from error.h
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 32 | #include <stdarg.h> | 
| 106 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 33 | #include <cx/printf.h> | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 34 | |
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 35 | #include <GL/glew.h> | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 36 | |
| 107 
a35b39abe2b2
remove stdio include from error.h
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 37 | void asc_printf(const char *level, const char *file, unsigned line, const char *fmt, ...) { | 
| 
a35b39abe2b2
remove stdio include from error.h
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 38 | printf("[%s %s %u] ", level, file, line); | 
| 
a35b39abe2b2
remove stdio include from error.h
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 39 | va_list ap; | 
| 
a35b39abe2b2
remove stdio include from error.h
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 40 | va_start(ap, fmt); | 
| 
a35b39abe2b2
remove stdio include from error.h
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 41 | vprintf(fmt, ap); | 
| 
a35b39abe2b2
remove stdio include from error.h
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 42 | va_end(ap); | 
| 
a35b39abe2b2
remove stdio include from error.h
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 43 | putchar('\n'); | 
| 
a35b39abe2b2
remove stdio include from error.h
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 44 | } | 
| 106 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 45 | |
| 149 
560772519ff9
resolve east-west conflict
 Mike Becker <universe@uap-core.de> parents: 
111diff
changeset | 46 | void asc_error_(const char *file, unsigned line, const char *fmt, ...) { | 
| 106 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 47 | asc_set_flag(asc_context.flags, ASC_FLAG_HAS_ERROR); | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 48 | |
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 49 | // write to error buffer | 
| 149 
560772519ff9
resolve east-west conflict
 Mike Becker <universe@uap-core.de> parents: 
111diff
changeset | 50 | CxBuffer *buf = &asc_context.error_buffer; | 
| 107 
a35b39abe2b2
remove stdio include from error.h
 Mike Becker <universe@uap-core.de> parents: 
106diff
changeset | 51 | size_t bufpos = buf->pos; | 
| 106 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 52 | va_list args; | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 53 | va_start(args, fmt); | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 54 | int written = cx_vfprintf(buf, cxBufferWriteFunc, fmt, args); | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 55 | cxBufferPut(buf, '\n'); | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 56 | va_end(args); | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 57 | |
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 58 | // also print to stderr | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 59 | // avoid double-formatting, get it directly from the buffer | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 60 | fprintf(stderr, "[ERROR %s %u] %.*s\n", | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 61 | file, line, written, buf->space+bufpos); | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 62 | } | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 63 | |
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 64 | bool asc_has_error(void) { | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 65 | return asc_test_flag(asc_context.flags, ASC_FLAG_HAS_ERROR); | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 66 | } | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 67 | |
| 149 
560772519ff9
resolve east-west conflict
 Mike Becker <universe@uap-core.de> parents: 
111diff
changeset | 68 | const char *asc_get_error(void) { | 
| 106 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 69 | // we zero-terminate the current buffer contents before providing them | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 70 | cxBufferPut(&asc_context.error_buffer, 0); | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 71 | --asc_context.error_buffer.pos; | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 72 | --asc_context.error_buffer.size; | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 73 | return asc_context.error_buffer.space; | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 74 | } | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 75 | |
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 76 | void asc_clear_error(void) { | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 77 | cxBufferClear(&asc_context.error_buffer); | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 78 | asc_clear_flag(asc_context.flags, ASC_FLAG_HAS_ERROR); | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 79 | } | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 80 | |
| 261 
bfd15f5a3948
fix incorrect file/line information when catching GL errors
 Mike Becker <universe@uap-core.de> parents: 
221diff
changeset | 81 | void asc_error_gl_(const char *file, unsigned line, unsigned code, const char *message) { | 
| 106 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 82 | const char *glerr; | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 83 | switch(code) { | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 84 | case GL_NO_ERROR: | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 85 | return; | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 86 | case GL_INVALID_ENUM: | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 87 | glerr = "invalid enum"; | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 88 | break; | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 89 | case GL_INVALID_VALUE: | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 90 | glerr = "invalid value"; | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 91 | break; | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 92 | case GL_INVALID_OPERATION: | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 93 | glerr = "invalid operation"; | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 94 | break; | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 95 | case GL_INVALID_FRAMEBUFFER_OPERATION: | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 96 | glerr = "invalid framebuffer operation"; | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 97 | break; | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 98 | case GL_OUT_OF_MEMORY: | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 99 | glerr = "out of memory"; | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 100 | break; | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 101 | case GL_STACK_UNDERFLOW: | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 102 | glerr = "stack underflow"; | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 103 | break; | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 104 | case GL_STACK_OVERFLOW: | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 105 | glerr = "stack overflow"; | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 106 | break; | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 107 | default: | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 108 | glerr = "unknown GL error"; | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 109 | } | 
| 261 
bfd15f5a3948
fix incorrect file/line information when catching GL errors
 Mike Becker <universe@uap-core.de> parents: 
221diff
changeset | 110 | asc_error_(file, line, "%s - GL Error: %s", message, glerr); | 
| 106 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 111 | } | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 112 | |
| 261 
bfd15f5a3948
fix incorrect file/line information when catching GL errors
 Mike Becker <universe@uap-core.de> parents: 
221diff
changeset | 113 | int asc_error_catch_gl_(const char *file, unsigned line, const char *message) { | 
| 221 
14eddd43b3f7
slightly improve error handling
 Mike Becker <universe@uap-core.de> parents: 
208diff
changeset | 114 | // TODO: a printf-like signature does not hurt | 
| 106 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 115 | GLenum error; | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 116 | int ret = 0; | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 117 | while ((error = glGetError()) != GL_NO_ERROR) { | 
| 261 
bfd15f5a3948
fix incorrect file/line information when catching GL errors
 Mike Becker <universe@uap-core.de> parents: 
221diff
changeset | 118 | asc_error_gl_(file, line, error, message); | 
| 106 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 119 | ret = 1; | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 120 | } | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 121 | return ret; | 
| 
895f92cff6b8
bring back error.h to reduce compile dependencies
 Mike Becker <universe@uap-core.de> parents: diff
changeset | 122 | } |