diff --git a/CMakeLists.txt b/CMakeLists.txt index 5d79f52..6759ca3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,44 +1,64 @@ +# Copyright (c) 2025, Jayden Grubb +# SPDX-License-Identifier: BSD-3-Clause + cmake_minimum_required(VERSION 3.20) set(CMAKE_EXPORT_COMPILE_COMMANDS ON CACHE INTERNAL "") -project(Example) +project(nova) enable_language(CXX) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_VISIBILITY_PRESET hidden) -add_compile_options( - -Wall - -Wextra - -Wpedantic - -Wold-style-cast -) - -add_executable( - ${PROJECT_NAME} - src/main.cpp -) - -# find_package(Example REQUIRED) - -include_directories( - ${CMAKE_CURRENT_SOURCE_DIR}/include - # ${Example_INCLUDE_DIRS} -) - -target_link_libraries( - ${PROJECT_NAME} - # ${Example_LIBRARIES} -) - -if (CMAKE_IMPORT_LIBRARY_SUFFIX) - add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy $ $ - COMMAND_EXPAND_LISTS +if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC") + add_compile_options( + /W4 + /permissive- + /EHsc ) -endif () + add_compile_definitions( + NOVA_COMPILER_MSVC + ) +elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + add_compile_options( + -Wall + -Wextra + -Wpedantic + -Wshadow + -Wold-style-cast + ) + if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + add_compile_definitions( + NOVA_COMPILER_GCC + ) + else() + add_compile_definitions( + NOVA_COMPILER_CLANG + ) + endif() +else() + error("Unsupported compiler") +endif() -add_custom_target(run - COMMAND ${PROJECT_NAME} - DEPENDS ${PROJECT_NAME} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} -) +if (WIN32) + add_compile_definitions( + NOVA_PLATFORM_WINDOWS + NOMINMAX + WIN32_LEAN_AND_MEAN + _CRT_SECURE_NO_WARNINGS + _CRT_NONSTDC_NO_WARNINGS + ) +elseif (APPLE) + add_compile_definitions( + NOVA_PLATFORM_MACOS + ) +elseif (UNIX) + add_compile_definitions( + NOVA_PLATFORM_LINUX + ) +else() + error("Unsupported platform") +endif() + +add_subdirectory(engine) +add_subdirectory(editor) diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..5da9ff7 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,29 @@ +BSD 3-Clause License + +Copyright (c) 2025, Jayden Grubb + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + diff --git a/include/.gitkeep b/assets/.gitkeep similarity index 100% rename from include/.gitkeep rename to assets/.gitkeep diff --git a/docs/.gitkeep b/docs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/editor/CMakeLists.txt b/editor/CMakeLists.txt new file mode 100644 index 0000000..871584d --- /dev/null +++ b/editor/CMakeLists.txt @@ -0,0 +1,2 @@ +# Copyright (c) 2025, Jayden Grubb +# SPDX-License-Identifier: BSD-3-Clause diff --git a/editor/include/nova/editor/.gitkeep b/editor/include/nova/editor/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/editor/src/main.cpp b/editor/src/main.cpp new file mode 100644 index 0000000..4b0d373 --- /dev/null +++ b/editor/src/main.cpp @@ -0,0 +1,7 @@ +#include +#include + +int main(int argc, char *argv[]) { + std::print("Hello, World!\n"); + return EXIT_SUCCESS; +} diff --git a/engine/CMakeLists.txt b/engine/CMakeLists.txt new file mode 100644 index 0000000..871584d --- /dev/null +++ b/engine/CMakeLists.txt @@ -0,0 +1,2 @@ +# Copyright (c) 2025, Jayden Grubb +# SPDX-License-Identifier: BSD-3-Clause diff --git a/engine/include/nova/audio/.gitkeep b/engine/include/nova/audio/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/engine/include/nova/core/.gitkeep b/engine/include/nova/core/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/engine/include/nova/ecs/.gitkeep b/engine/include/nova/ecs/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/engine/include/nova/graphics/.gitkeep b/engine/include/nova/graphics/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/engine/include/nova/math/.gitkeep b/engine/include/nova/math/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/engine/include/nova/networking/.gitkeep b/engine/include/nova/networking/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/engine/include/nova/physics/.gitkeep b/engine/include/nova/physics/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/engine/include/nova/platform/.gitkeep b/engine/include/nova/platform/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/engine/include/nova/utils/.gitkeep b/engine/include/nova/utils/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/engine/src/core/.gitkeep b/engine/src/core/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/src/main.cpp b/src/main.cpp deleted file mode 100644 index 37f97e0..0000000 --- a/src/main.cpp +++ /dev/null @@ -1,12 +0,0 @@ -#include -#include - -int main(int argc, char** argv) { - std::println("Hello, World!"); - - for (int i = 0; i < argc; i++) { - std::println("argv[{}] = {}", i, argv[i]); - } - - return EXIT_SUCCESS; -} diff --git a/templates/.gitkeep b/templates/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/tests/.gitkeep b/tests/.gitkeep new file mode 100644 index 0000000..e69de29