From d8cc4b78a73054ee56620450503c882fdbe1a5b7 Mon Sep 17 00:00:00 2001 From: Mineplay Date: Sat, 19 Apr 2025 11:15:18 -0500 Subject: [PATCH] feat(build): added basic build system with hallocy library --- .gitignore | 1 + CMakeLists.txt | 36 ++++++++++++++++++ Lib/Include/Hallocy/Core/Allocator.h | 38 ++++++++++++++++++ Lib/Include/Hallocy/Core/Memory.h | 36 ++++++++++++++++++ Lib/Include/Hallocy/Utils/Error.h | 34 +++++++++++++++++ Lib/Include/Hallocy/Utils/Simd.h | 55 +++++++++++++++++++++++++++ Lib/Linux/libHallocy.a | Bin 0 -> 19510 bytes Lib/Windows/Hallocy.lib | Bin 0 -> 16442 bytes Tests/Main.c | 27 +++++++++++++ 9 files changed, 227 insertions(+) create mode 100644 .gitignore create mode 100644 CMakeLists.txt create mode 100644 Lib/Include/Hallocy/Core/Allocator.h create mode 100644 Lib/Include/Hallocy/Core/Memory.h create mode 100644 Lib/Include/Hallocy/Utils/Error.h create mode 100644 Lib/Include/Hallocy/Utils/Simd.h create mode 100644 Lib/Linux/libHallocy.a create mode 100644 Lib/Windows/Hallocy.lib create mode 100644 Tests/Main.c diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2d82e85 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +Build \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..cadd5cb --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,36 @@ +cmake_minimum_required(VERSION 3.10) +project(Fledasty C) + +set(CMAKE_C_STANDARD 11) +set(CMAKE_C_STANDARD_REQUIRED ON) + +set(LIB_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/Lib/Include") + +if(WIN32) + set (HALLOCY_LIB_PATH "${CMAKE_SOURCE_DIR}/Lib/Windows/Hallocy.lib") +elseif(UNIX) + set (HALLOCY_LIB_PATH "${CMAKE_SOURCE_DIR}/Lib/Linux/libHallocy.a") +endif() + +include_directories(${PROJECT_SOURCE_DIR}/Include) +include_directories(${LIB_INCLUDE_DIR}) +file(GLOB_RECURSE SRC_FILES "${PROJECT_SOURCE_DIR}/Src/*.c") + +add_library(Fledasty STATIC ${SRC_FILES}) +add_executable(FledastyTest ${PROJECT_SOURCE_DIR}/Tests/Main.c) + +target_link_libraries(Fledasty PRIVATE ${HALLOCY_LIB_PATH}) +target_include_directories(FledastyTest PRIVATE ${PROJECT_SOURCE_DIR}/Tests) +target_link_libraries(FledastyTest Fledasty) + +if (MSVC) + target_compile_options(Fledasty PRIVATE /W4 /Zl) +else() + target_compile_options(Fledasty PRIVATE -mavx512f -mavx512vl) + target_compile_options(FledastyTest PRIVATE -mavx512f -mavx512vl) + + target_compile_options(Fledasty PRIVATE -march=native) + target_compile_options(FledastyTest PRIVATE -march=native) + + target_compile_options(Fledasty PRIVATE -Wall -Wextra -pedantic) +endif() \ No newline at end of file diff --git a/Lib/Include/Hallocy/Core/Allocator.h b/Lib/Include/Hallocy/Core/Allocator.h new file mode 100644 index 0000000..0720216 --- /dev/null +++ b/Lib/Include/Hallocy/Core/Allocator.h @@ -0,0 +1,38 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ----------------------------------------------------------------------------- + * File: Allocator.h + * Description: + * This file contains the functions for allocating, freeing and managing memory. + * It includes functions to allocate, reallocate, free, copy, move and set memory. + * + * Author: Mineplay + * ----------------------------------------------------------------------------- + */ +#ifndef HALLOCY_ALLOCATOR +#define HALLOCY_ALLOCATOR + +#include +#include + +#include "../Utils/Error.h" + +void *hallocy_allocate(const size_t size, const bool zero_memory); + +static inline void *hallocy_malloc(const size_t size) { return hallocy_allocate(size, false); } +static inline void *hallocy_calloc(const size_t size, size_t count) { return hallocy_allocate(size * count, true); } +void *hallocy_realloc(void *memory_pointer, const size_t size); +HallocyError hallocy_free(void *pointer); + +#endif \ No newline at end of file diff --git a/Lib/Include/Hallocy/Core/Memory.h b/Lib/Include/Hallocy/Core/Memory.h new file mode 100644 index 0000000..e284e5a --- /dev/null +++ b/Lib/Include/Hallocy/Core/Memory.h @@ -0,0 +1,36 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ----------------------------------------------------------------------------- + * File: Memory.h + * Description: + * This file implements the functions for managing memory. It includes functions + * to copy, move, compare and set memory. + * + * Author: Mineplay + * ----------------------------------------------------------------------------- + */ +#ifndef HALLOCY_MEMORY +#define HALLOCY_MEMORY + +#include +#include + +#include "../Utils/Error.h" + +HallocyError hallocy_set_memory(void *destination, int value, const size_t size); +HallocyError hallocy_copy_memory(void *destination, void *source, const size_t size); +HallocyError hallocy_move_memory(void *destination, void *source, const size_t size); +bool hallocy_compare_memory(void *left_side, void *right_side, const size_t size); + +#endif \ No newline at end of file diff --git a/Lib/Include/Hallocy/Utils/Error.h b/Lib/Include/Hallocy/Utils/Error.h new file mode 100644 index 0000000..af2ced6 --- /dev/null +++ b/Lib/Include/Hallocy/Utils/Error.h @@ -0,0 +1,34 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ----------------------------------------------------------------------------- + * File: Error.h + * Description: + * This file contains the ErrorCode enum that defines the error codes for the + * library. + * + * Author: Mineplay + * ----------------------------------------------------------------------------- + */ +#ifndef HALLOCY_ERROR +#define HALLOCY_ERROR + +typedef enum { + HALLOCY_ERROR_NONE = 0, + HALLOCY_ERROR_INVALID_POINTER = 1, + HALLOCY_ERROR_OUT_OF_MEMORY = 2, + HALLOCY_ERROR_UNKNOWN = 3, + HALLOCY_ERROR_INVALID_PARAM = 4 +} HallocyError; + +#endif \ No newline at end of file diff --git a/Lib/Include/Hallocy/Utils/Simd.h b/Lib/Include/Hallocy/Utils/Simd.h new file mode 100644 index 0000000..abbda76 --- /dev/null +++ b/Lib/Include/Hallocy/Utils/Simd.h @@ -0,0 +1,55 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ----------------------------------------------------------------------------- + * File: Simd.h + * Description: + * This file implements the functions for detecting SIMD support and defines the + * enum for specifing the SIMD type. + * + * Author: Mineplay + * ----------------------------------------------------------------------------- + */ +#ifndef HALLOCY_SIMD +#define HALLOCY_SIMD + +#if defined(_MSC_VER) + #if defined(_M_ARM64) + #include + #else + #include + #endif +#else + #if defined(__aarch64__) + #include + #elif defined(__arm__) + #include + #else + #include + #endif +#endif + +typedef enum { + HALLOCY_SIMD_UNDEFINED = 0, + HALLOCY_SIMD_NONE = 1, + HALLOCY_SIMD_SSE = 2, + HALLOCY_SIMD_SSE2 = 3, + HALLOCY_SIMD_AVX = 4, + HALLOCY_SIMD_AVX2 = 5, + HALLOCY_SIMD_AVX512 = 6, + HALLOCY_SIMD_NEON = 7 +} HallocySimdType; + +HallocySimdType hallocy_is_simd_supported(); + +#endif \ No newline at end of file diff --git a/Lib/Linux/libHallocy.a b/Lib/Linux/libHallocy.a new file mode 100644 index 0000000000000000000000000000000000000000..b0d7df1132acf0dc6ee37ac8dd602a823b092a67 GIT binary patch literal 19510 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 literal 0 HcmV?d00001 diff --git a/Lib/Windows/Hallocy.lib b/Lib/Windows/Hallocy.lib new file mode 100644 index 0000000000000000000000000000000000000000..64fbcac0d30bfa154268ac8c0dff81c445ff940c GIT binary patch literal 16442 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 literal 0 HcmV?d00001 diff --git a/Tests/Main.c b/Tests/Main.c new file mode 100644 index 0000000..cde1df7 --- /dev/null +++ b/Tests/Main.c @@ -0,0 +1,27 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * ----------------------------------------------------------------------------- + * File: Main.c + * Description: + * Executes all tests. + * + * Author: Mineplay + * ----------------------------------------------------------------------------- + */ +#include + +int main() { + printf("Test\n"); + return 0; +} \ No newline at end of file