From 73041e994da3c515cdd0701fa34c4c52a384fcae Mon Sep 17 00:00:00 2001 From: Medusa Slockbower Date: Sun, 17 Aug 2025 09:51:08 -0400 Subject: [PATCH] - Added Debian dependencies to README.md and fixed some issues that I ran into on a clean machine --- README.md | 7 +++++++ cmake/opengl.cmake | 1 + include/fennec/containers/multiset.h | 4 ++-- include/fennec/memory/detail/_string.h | 8 +++++++- planning/LANGUAGE_PROCESSING.md | 9 ++++----- 5 files changed, 21 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 5f52448..b834499 100644 --- a/README.md +++ b/README.md @@ -125,6 +125,7 @@ is also a viable IDE but involves some extra setup. |-------------------|----------------------------------------------------------------------------------------------------------| | C/C++ Compiler | GCC/G++ is the compiler that fennec is designed around, however, Clang, MSVC, and MinGW may also be used | | CMake | The build manager used by the engine | +| glew | OpenGL Extension Wrangler, necessary for modern OpenGL | | A build system | Any build system will work, however, `build.sh` uses Ninja by default. | | A memory debugger | Any memory debugger will work, however, `test.sh` uses Valgrind by default. | | Doxygen | Doxygen is required for building the documentation for fennec. This is an optional dependency | @@ -141,6 +142,12 @@ for more info.   By default, the CMake generator used is Ninja, which requires Ninja to be installed. You can modify the build scripts to use another build manager, see the [CMake documentation for available generators](https://cmake.org/cmake/help/latest/manual/cmake-generators.7.html). +On Debian-based distributions, you can install dependencies using the following command: +```shell +sudo apt install build-essential cmake ninja-build libglew-dev valgrind +git submodule update --init --recursive +``` +   I will at no point provide official cross-compilation toolchains for fennec. However, I will provide tools for using specific toolchains for specific platforms that necessitate this. The primary examples would be Android and iOS. diff --git a/cmake/opengl.cmake b/cmake/opengl.cmake index c7f7b42..f83a625 100644 --- a/cmake/opengl.cmake +++ b/cmake/opengl.cmake @@ -22,6 +22,7 @@ if(FENNEC_GRAPHICS_WANT_EGL) message(STATUS "EGL Requested") else() find_package(OpenGL) + find_package(GLEW REQUIRED) endif() if(TARGET OpenGL::GL AND TARGET GLEW::GLEW) diff --git a/include/fennec/containers/multiset.h b/include/fennec/containers/multiset.h index 456dcb3..7d65b96 100644 --- a/include/fennec/containers/multiset.h +++ b/include/fennec/containers/multiset.h @@ -16,8 +16,8 @@ // along with this program. If not, see . // ===================================================================================================================== -#ifndef FENNEC_CONTAINERS_SET_H -#define FENNEC_CONTAINERS_SET_H +#ifndef FENNEC_CONTAINERS_MULTISET_H +#define FENNEC_CONTAINERS_MULTISET_H // https://programming.guide/robin-hood-hashing.html diff --git a/include/fennec/memory/detail/_string.h b/include/fennec/memory/detail/_string.h index 648d253..5574e26 100644 --- a/include/fennec/memory/detail/_string.h +++ b/include/fennec/memory/detail/_string.h @@ -24,14 +24,20 @@ // implementation #if FENNEC_COMPILER_GCC -#define __OPTIMIZE__ +#ifndef __OPTIMIZE__ +# define __OPTIMIZE__ +#else +# define FENNEC_OPTIMIZE_FOUND +#endif #endif #include #include #if FENNEC_COMPILER_GCC +#ifndef FENNEC_OPTIMIZE_FOUND #undef __OPTIMIZE__ #endif +#endif #endif // FENNEC_MEMORY_DETAIL_MEMORY_H diff --git a/planning/LANGUAGE_PROCESSING.md b/planning/LANGUAGE_PROCESSING.md index cff71b9..f68405e 100644 --- a/planning/LANGUAGE_PROCESSING.md +++ b/planning/LANGUAGE_PROCESSING.md @@ -59,12 +59,11 @@ is create C++ classes that handle file streams, directory streams, and file path -## Interpreter (`langproc/interpret`) +## Interpreter (`langproc/parse`) -  This submodule will contain classes for interpreting data, particularly -through parsers. We will need to be able to do the following things to achieve -support for files that adhere to a certain specification. Here are some concepts -that will need to be implemented as classes: +  This submodule will contain classes for parsing data. We will need to be +able to do the following things to achieve support for files that adhere to a +certain specification. Here are some concepts that will need to be implemented as classes: ### Reading