aboutsummaryrefslogtreecommitdiff
path: root/cmake/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'cmake/CMakeLists.txt')
-rw-r--r--cmake/CMakeLists.txt67
1 files changed, 67 insertions, 0 deletions
diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
new file mode 100644
index 0000000..e37f355
--- /dev/null
+++ b/cmake/CMakeLists.txt
@@ -0,0 +1,67 @@
+cmake_minimum_required(VERSION 3.20)
+
+
+
+project(fsarcade)
+
+
+set(CMAKE_CXX_COMPILER clang++)
+set(CMAKE_CXX_STANDARD 20)
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_CXX_EXTENSIONS OFF)
+set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
+
+
+# set binary directory
+set(FSARCADE_ROOT_DIR "${CMAKE_CURRENT_LIST_DIR}/..")
+set(FSARCADE_SRC_DIR "${FSARCADE_ROOT_DIR}/src")
+set(IMGUI_SRC_DIR "${FSARCADE_ROOT_DIR}/external/imgui")
+set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${FSARCADE_ROOT_DIR}/runtree)
+
+
+add_executable(fsarcade)
+if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
+ target_compile_options(fsarcade PRIVATE -pedantic-errors -Wall -Weffc++ -Wconversion -Wsign-conversion -Wshadow)
+endif ()
+
+target_sources(fsarcade PUBLIC
+ ${FSARCADE_SRC_DIR}/main.cpp
+ ${FSARCADE_SRC_DIR}/basic/math.cpp
+ ${FSARCADE_SRC_DIR}/renderer/Renderer.cpp
+ ${FSARCADE_SRC_DIR}/renderer/RenderGroup.cpp
+ ${FSARCADE_SRC_DIR}/renderer/opengl/GlRenderer.cpp
+ ${FSARCADE_SRC_DIR}/renderer/opengl/GlVertexBuffer.cpp
+ ${FSARCADE_SRC_DIR}/renderer/opengl/GlIndexBuffer.cpp
+ ${FSARCADE_SRC_DIR}/renderer/opengl/GlShader.cpp
+ ${FSARCADE_SRC_DIR}/games/Game.cpp
+ ${FSARCADE_SRC_DIR}/games/tetris/Tetris.cpp
+ ${FSARCADE_SRC_DIR}/games/tetris/Tetromino.cpp
+ ${FSARCADE_SRC_DIR}/games/tetris/Board.cpp
+ ${FSARCADE_SRC_DIR}/games/snake/Snake.cpp
+ ${FSARCADE_SRC_DIR}/games/minesweeper/Minesweeper.cpp
+ ${IMGUI_SRC_DIR}/imgui.cpp
+ ${IMGUI_SRC_DIR}/imgui_draw.cpp
+ ${IMGUI_SRC_DIR}/imgui_tables.cpp
+ ${IMGUI_SRC_DIR}/imgui_widgets.cpp
+ ${IMGUI_SRC_DIR}/backends/imgui_impl_sdl3.cpp
+ ${IMGUI_SRC_DIR}/backends/imgui_impl_opengl3.cpp
+)
+target_include_directories(fsarcade PUBLIC
+ ${FSARCADE_SRC_DIR}
+ ${IMGUI_SRC_DIR}
+ ${IMGUI_SRC_DIR}/backends
+ ${FSARCADE_ROOT_DIR}/external/stb
+)
+
+add_library(stb_truetype STATIC ${FSARCADE_SRC_DIR}/common/stb_truetype.cpp)
+if (CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
+ target_compile_options(stb_truetype PRIVATE -w) # -w suppresses all warnings
+elseif (CMAKE_CXX_COMPILER_ID MATCHES "MSVC")
+ target_compile_options(stb_truetype PRIVATE /W0) # /W0 suppresses all warnings
+endif()
+target_include_directories(stb_truetype PUBLIC
+ ${FSARCADE_ROOT_DIR}/external/stb
+)
+
+target_link_libraries(fsarcade GL GLEW SDL3 dl stb_truetype)
+