Skip to content

Commit

Permalink
Project setup (#2)
Browse files Browse the repository at this point in the history
* Added git submodules

* Added basic project setup

* Added cmake configurations

* Added scripts for presets generation

* Added dummy example to `flux-playground` module
  • Loading branch information
akukh authored Apr 18, 2024
1 parent a59d8f1 commit de378f9
Show file tree
Hide file tree
Showing 25 changed files with 1,912 additions and 0 deletions.
30 changes: 30 additions & 0 deletions .clang-format
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@

---
BasedOnStyle: LLVM
AccessModifierOffset: -4
ColumnLimit: 100
ConstructorInitializerIndentWidth: 8
ContinuationIndentWidth: 8
IndentPPDirectives: AfterHash
IndentWidth: 4
PointerAlignment: Left
ReflowComments: true
Standard: c++20
UseTab: Never
AlignConsecutiveAssignments: Consecutive
AlignConsecutiveBitFields: true
AlignConsecutiveDeclarations: true
AlignConsecutiveMacros: true
AllowShortBlocksOnASingleLine: Empty
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: Empty
AllowShortIfStatementsOnASingleLine: Never
AllowShortLambdasOnASingleLine: Empty
AllowShortLoopsOnASingleLine: false
BreakConstructorInitializers: BeforeColon
FixNamespaceComments: true
---
Language: Cpp
---
Language: ObjC
ObjCSpaceBeforeProtocolList: false
125 changes: 125 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
#=======================================================================================================================

# The clangd compilation database. This is a soft link, it's generated automatically during the build.
compile_commands.json

# The build options used by VSCode (aka CMake Variants). This file is generated by scripts/generate-cmake-variants.sh.
cmake-variants.yaml

# The build options used by VSCode (aka CMake Presets). This file is generated by scripts/generate-cmake-presets.sh.
CMakePresets.json

# Build folder used by CI/CD tools.
build/
build-linux/
build-windows/
build-macos/

# The cache used by clangd.
.cache/

# NOTE: don't commit anything JetBrains IDE-related. We may revisit this in the future.
.idea/

# NOTE: not sure which library does this, but something creates the 'deps' folder in our project's root folder.
deps/

#=======================================================================================================================
# Visual Studio Code
#=======================================================================================================================

.vscode/*
# !.vscode/settings.json
# !.vscode/tasks.json
# !.vscode/launch.json
# !.vscode/extensions.json
*.code-workspace

# Local History for Visual Studio Code
.history/

#=======================================================================================================================
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
#=======================================================================================================================

# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf

# Generated files
.idea/**/contentModel.xml

# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml

# CMake
cmake-build-*/

# File-based project format
*.iws

# IntelliJ
out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Cursive Clojure plugin
.idea/replstate.xml

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties

# Editor-based Rest Client
.idea/httpRequests

# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser

# Prerequisites
*.d

# Compiled Object files
*.slo
*.lo
*.o
*.obj

# Precompiled Headers
*.gch
*.pch

# Compiled Dynamic libraries
*.so
*.dylib
*.dll

# Compiled Static libraries
*.lai
*.la
*.a
*.lib

# Executables
*.exe
*.out
*.app

# ImGui files
imgui.ini
23 changes: 23 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
[submodule "external/Catch2"]
path = external/Catch2
url = https://github.com/catchorg/Catch2
branch = v2.x
[submodule "external/imgui"]
path = external/imgui
url = https://github.com/ocornut/imgui.git
branch = docking
[submodule "external/glfw"]
path = external/glfw
url = https://github.com/glfw/glfw.git
[submodule "external/glad"]
path = external/glad
url = https://github.com/Dav1dde/glad.git
[submodule "external/glm"]
path = external/glm
url = https://github.com/g-truc/glm
[submodule "external/entt"]
path = external/entt
url = https://github.com/skypjack/entt.git
[submodule "external/fast_io"]
path = external/fast_io
url = https://github.com/cppfastio/fast_io.git
35 changes: 35 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
cmake_minimum_required(VERSION 3.23)

project(flux LANGUAGES CXX)

include("cmake/project_settings.cmake")
include("cmake/bootstrap.cmake")

#-----------------------------------------------------------------------------------------------------------------------
# Enable code coverage.
#-----------------------------------------------------------------------------------------------------------------------

option(FLUX_ENABLE_COVERAGE "Enable code coverage" OFF)

if(FLUX_ENABLE_COVERAGE)
if(CMAKE_CXX_COMPILER_ID MATCHES "^(Apple)?(C|c)?lang$")
string(APPEND CMAKE_C_FLAGS " -O0 -g -fprofile-instr-generate -fcoverage-mapping")
string(APPEND CMAKE_CXX_FLAGS " -O0 -g -fprofile-instr-generate -fcoverage-mapping")

message(STATUS "Code coverage: ON")
else()
message(ERROR "Code coverage for compiler ${CMAKE_CXX_COMPILER_ID} is unsupported")
endif()
endif()

#-----------------------------------------------------------------------------------------------------------------------
# Libraries.
#-----------------------------------------------------------------------------------------------------------------------

#-----------------------------------------------------------------------------------------------------------------------
# Applications.
#-----------------------------------------------------------------------------------------------------------------------

add_subdirectory("flux-playground")

# code: language="CMake" insertSpaces=true tabSize=4
Loading

0 comments on commit de378f9

Please sign in to comment.