From 7d2dee5a4d7b9f1dc3d4c9682bd67089918a5f7c Mon Sep 17 00:00:00 2001 From: "H. Utku Maden" Date: Sat, 8 Jul 2023 13:25:44 +0300 Subject: [PATCH] Create stbi redist. --- Quik.StbImage.redist/.gitignore | 2 ++ Quik.StbImage.redist/CMakeLists.txt | 12 ++++++++ .../Quik.StbImage.redist.nuspec | 19 ++++++++++++ Quik.StbImage.redist/quik_stbi.c | 17 +++++++++++ Quik.StbImage.redist/quik_stbi.h | 30 +++++++++++++++++++ 5 files changed, 80 insertions(+) create mode 100644 Quik.StbImage.redist/.gitignore create mode 100644 Quik.StbImage.redist/CMakeLists.txt create mode 100644 Quik.StbImage.redist/Quik.StbImage.redist.nuspec create mode 100644 Quik.StbImage.redist/quik_stbi.c create mode 100644 Quik.StbImage.redist/quik_stbi.h diff --git a/Quik.StbImage.redist/.gitignore b/Quik.StbImage.redist/.gitignore new file mode 100644 index 0000000..3cf806a --- /dev/null +++ b/Quik.StbImage.redist/.gitignore @@ -0,0 +1,2 @@ +out +runtimes diff --git a/Quik.StbImage.redist/CMakeLists.txt b/Quik.StbImage.redist/CMakeLists.txt new file mode 100644 index 0000000..ccc8501 --- /dev/null +++ b/Quik.StbImage.redist/CMakeLists.txt @@ -0,0 +1,12 @@ +cmake_minimum_required(VERSION 3.0) + +project(quik_stbi LANGUAGES C VERSION 1.0) + +add_compile_options(-static-libgcc) + +add_library(stbi SHARED "quik_stbi.c") +target_include_directories(stbi PRIVATE "../lib") +install( + TARGETS stbi + RUNTIME DESTINATION . + LIBRARY DESTINATION .) diff --git a/Quik.StbImage.redist/Quik.StbImage.redist.nuspec b/Quik.StbImage.redist/Quik.StbImage.redist.nuspec new file mode 100644 index 0000000..8e6f8b7 --- /dev/null +++ b/Quik.StbImage.redist/Quik.StbImage.redist.nuspec @@ -0,0 +1,19 @@ + + + + Quik.StbImage.redist + 1.0.0 + STBI Authors, H. Utku Maden + utkumaden + + This is a redistribution of STBI for use with the QUIK project. + + Compiled with `STBI_NO_STDIO` and a custom assert function. Call + `quik_stbi_failed_assert_store` to replace. + + native + + + + + \ No newline at end of file diff --git a/Quik.StbImage.redist/quik_stbi.c b/Quik.StbImage.redist/quik_stbi.c new file mode 100644 index 0000000..f5e332a --- /dev/null +++ b/Quik.StbImage.redist/quik_stbi.c @@ -0,0 +1,17 @@ +#include "quik_stbi.h" + +#define STB_IMAGE_IMPLEMENTATION 1 +#include "stb/stb_image.h" + +quik_failed_assert_cb_t quik_stbi_failed_assert = quik_stbi_failed_assert_default; + +void quik_stbi_failed_assert_store(quik_failed_assert_cb_t cb) +{ + quik_stbi_failed_assert = cb != NULL ? cb : quik_stbi_failed_assert_default; + +} + +void quik_stbi_failed_assert_default(const char *expr, const char *file, int line, const char *function) +{ + abort(); +} \ No newline at end of file diff --git a/Quik.StbImage.redist/quik_stbi.h b/Quik.StbImage.redist/quik_stbi.h new file mode 100644 index 0000000..128f12d --- /dev/null +++ b/Quik.StbImage.redist/quik_stbi.h @@ -0,0 +1,30 @@ +#ifndef _QUIK_STB_CONFIG_H_ +#define _QUIK_STB_CONFIG_H_ + +#include "stddef.h" + +#if __GNUC__ || __MSC_VER + #define __QUIK_FUNCTION__ __FUNCTION__ + #define QEXTERN extern +#else + #define __QUIK_FUNCTION__ NULL +#endif + +/* TODO: Change this declaration so we can export a DLL properly in windows. */ +#define STBIDEF QEXTERN +#define STBI_NO_STDIO 1 + +typedef void (*quik_failed_assert_cb_t)(const char *expr, const char *file, int line, const char* func); + +QEXTERN quik_failed_assert_cb_t quik_stbi_failed_assert; +QEXTERN void quik_stbi_failed_assert_store(quik_failed_assert_cb_t cb); +QEXTERN void quik_stbi_failed_assert_default(const char * expr, const char *file, int line, const char *function); + +/* Overwrite cstdlib functions so we can get as close as possible to freestanding environment. */ + +#define STBI_ASSERT(EXPR) do { \ + if (!(EXPR)) \ + quik_stbi_failed_assert(#EXPR, __FILE__, __LINE__ - 2, __QUIK_FUNCTION__); \ +} while(0) + +#endif