diff --git a/.clwb/.bazelproject b/.clwb/.bazelproject new file mode 100644 index 0000000..cb6ab22 --- /dev/null +++ b/.clwb/.bazelproject @@ -0,0 +1,17 @@ +directories: + # Add the directories you want added as source here + # By default, we've added your entire workspace ('.') + . + +# Automatically includes all relevant targets under the 'directories' above +derive_targets_from_directories: true + +targets: + # If source code isn't resolving, add additional targets that compile it here + +additional_languages: + # Uncomment any additional languages you want supported + # dart + # javascript + # python + # typescript diff --git a/.clwb/.idea/.gitignore b/.clwb/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.clwb/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 91ddb87..b7964c0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,29 +16,29 @@ jobs: with: submodules: recursive + + - name: Install bazelisk + run: | + choco install bazelisk + - name: Add msbuild to PATH uses: microsoft/setup-msbuild@v1.1 - - name: setup nuget - uses: NuGet/setup-nuget@v1.0.6 - - - name: restore project packages - run: nuget restore umbra.sln - - - name: build - run: msbuild /m /p:Configuration=Debug umbra.sln + - name: Build + run: | + bazel build //... - name: use cache uses: actions/cache@v2 with: - path: "./bin/Debug" + path: "./bazel-bin/projs" key: ${{ runner.os }}-${{ github.run_id }} - name: Upload shadow-engine artifact uses: actions/upload-artifact@v3 with: name: ${{ needs.update.outputs.old_version_name }}-${{ needs.update.outputs.new_version_name }}-patch - path: './bin/Debug/shadow-engine/**/*' + path: './bazel-bin/projs/shadow-engine/**/*' test-sff: runs-on: windows-latest @@ -52,11 +52,11 @@ jobs: - name: use cache uses: actions/cache@v2 with: - path: "./bin/Debug" + path: "./bazel-bin/projs" key: ${{ runner.os }}-${{ github.run_id }} - name: Test shadow-file-format - run: ./bin/Debug/shadow-file-format-test/shadow-file-format-test.exe --gtest_output="xml:./test-results/shadow-file-format-test.xml" + run: ./bazel-bin/projs/shadow-file-format/test.exe --gtest_output="xml:./test-results/shadow-file-format-test.xml" - name: Publish Test Results uses: EnricoMi/publish-unit-test-result-action/composite@v1 @@ -64,4 +64,3 @@ jobs: with: files: "test-results/**/*.xml" - \ No newline at end of file diff --git a/WORKSPACE b/WORKSPACE new file mode 100644 index 0000000..26277c8 --- /dev/null +++ b/WORKSPACE @@ -0,0 +1,7 @@ +workspace( + name = "umbra", +) + +load("//vendor:deps.bzl", "deps") + +deps() \ No newline at end of file diff --git a/projs/shadow-file-format-test/packages.config b/projs/shadow-file-format-test/packages.config deleted file mode 100644 index 88f987c..0000000 --- a/projs/shadow-file-format-test/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/projs/shadow-file-format-test/shadow-file-format-test.vcxproj b/projs/shadow-file-format-test/shadow-file-format-test.vcxproj deleted file mode 100644 index 142a25d..0000000 --- a/projs/shadow-file-format-test/shadow-file-format-test.vcxproj +++ /dev/null @@ -1,119 +0,0 @@ - - - - - - - 15.0 - {3b7d6797-cc0c-43fa-8866-f438032e1c67} - Win32Proj - 10.0.19041.0 - Application - v143 - Unicode - shadow-file-format-test - - - - - - - - - - $(SolutionDir)\projs\shadow-file-format\src\; %(AdditionalIncludeDirectories) - - - - - - - - - - - Create - - - - - {b2e3515c-3fe0-44b9-9abe-8584a836230f} - - - - - - - - - - - - - Use - pch.h - Disabled - WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level3 - - - true - Console - - - - - Use - pch.h - Disabled - X64;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) - EnableFastChecks - MultiThreadedDebugDLL - Level3 - - - true - Console - - - - - Use - pch.h - WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - MultiThreadedDLL - Level3 - ProgramDatabase - - - true - Console - true - true - - - - - Use - pch.h - X64;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) - MultiThreadedDLL - Level3 - ProgramDatabase - - - true - Console - true - true - - - - - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - - - \ No newline at end of file diff --git a/projs/shadow-file-format-test/shadow-file-format-test.vcxproj.user b/projs/shadow-file-format-test/shadow-file-format-test.vcxproj.user deleted file mode 100644 index 88a5509..0000000 --- a/projs/shadow-file-format-test/shadow-file-format-test.vcxproj.user +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/projs/shadow-file-format/BUILD b/projs/shadow-file-format/BUILD new file mode 100644 index 0000000..d5185cf --- /dev/null +++ b/projs/shadow-file-format/BUILD @@ -0,0 +1,31 @@ +load("@rules_cc//cc:defs.bzl", "cc_library") +load("@rules_cc//cc:defs.bzl", "cc_binary") + +cc_library( + name = "shadow-file-format", + srcs = glob(["src/**/*.cpp", "src/**/*.h"]), + hdrs = glob(["src/**/*.h"]), + strip_include_prefix = "src/", + includes = [], + copts = [ + "/std:c++17" + ], + deps = [ + "//projs/shadow-utility" + ], + visibility = ["//visibility:public"], +) + +cc_test( + name = "test", + srcs = glob(["test/**/*.cpp", "test/**/*.h"]), + includes = [], + copts = [ + "/std:c++17" + ], + deps = [ + "//projs/shadow-file-format", + "@gtest//:gtest", + "@gtest//:gtest_main" + ], +) \ No newline at end of file diff --git a/projs/shadow-file-format-test/pch.cpp b/projs/shadow-file-format/test/pch.cpp similarity index 100% rename from projs/shadow-file-format-test/pch.cpp rename to projs/shadow-file-format/test/pch.cpp diff --git a/projs/shadow-file-format-test/pch.h b/projs/shadow-file-format/test/pch.h similarity index 100% rename from projs/shadow-file-format-test/pch.h rename to projs/shadow-file-format/test/pch.h diff --git a/projs/shadow-file-format-test/sff_writer_tests.cpp b/projs/shadow-file-format/test/sff_writer_tests.cpp similarity index 100% rename from projs/shadow-file-format-test/sff_writer_tests.cpp rename to projs/shadow-file-format/test/sff_writer_tests.cpp diff --git a/projs/shadow-file-format-test/test.cpp b/projs/shadow-file-format/test/test.cpp similarity index 98% rename from projs/shadow-file-format-test/test.cpp rename to projs/shadow-file-format/test/test.cpp index a6f6a72..fc17ede 100644 --- a/projs/shadow-file-format-test/test.cpp +++ b/projs/shadow-file-format/test/test.cpp @@ -1,5 +1,5 @@ #include "pch.h" -#include "../shadow-file-format/src/SFFParser.h" +#include "SFFParser.h" //import Shadow.FileFormat; @@ -32,16 +32,7 @@ Assets:{ \ }, \ "; -std::string example_multi_level_content = "ShadowFileFormat_1_0_0 \n\ -Assets:{ \ - a: { \ - 0: ContentContent0, \ - 1: ContentContent1, \ - 2: ContentContent2, \ - }, \ - b: ContentB, \ -}, \ -"; + std::stringstream streamFrom(std::string str) { std::stringstream ss; @@ -209,6 +200,16 @@ TEST(MultiRoot, RootsHaveCorrectName) { EXPECT_EQ(texture->name, "Texture"); } +std::string example_multi_level_content = "ShadowFileFormat_1_0_0 \n\ +Assets:{ \ + a: { \ + 0: ContentContent0, \ + 1: ContentContent1, \ + 2: ContentContent2, \ + }, \ + b: ContentB, \ +}, \ +"; TEST(MultiLevelContent, RootsHaveCorrectName) { @@ -220,6 +221,7 @@ TEST(MultiLevelContent, RootsHaveCorrectName) { EXPECT_NE(assets, nullptr); EXPECT_EQ(assets->name, "Assets"); + EXPECT_EQ(assets->isBlock, true); auto first = assets->GetChildByName("a"); diff --git a/projs/shadow-utility/BUILD b/projs/shadow-utility/BUILD new file mode 100644 index 0000000..e051055 --- /dev/null +++ b/projs/shadow-utility/BUILD @@ -0,0 +1,15 @@ +load("@rules_cc//cc:defs.bzl", "cc_library") + +cc_library( + name = "shadow-utility", + srcs = glob(["**/*.cpp", "**/*.h"]), + hdrs = glob(["**/*.h"]), + strip_include_prefix = "src/", + includes = [], + copts = [ + "/std:c++20" + ], + deps = [ + ], + visibility = ["//visibility:public"], +) \ No newline at end of file diff --git a/vendor/BUILD b/vendor/BUILD new file mode 100644 index 0000000..e69de29 diff --git a/vendor/deps.bzl b/vendor/deps.bzl new file mode 100644 index 0000000..1dcea32 --- /dev/null +++ b/vendor/deps.bzl @@ -0,0 +1,10 @@ +load("//vendor/sdl2:sdl2-dep.bzl", "sdl2_dep") +load("//vendor/gtest:gtest-dep.bzl", "gtest_dep") +#load("//vendor/imgui:imgui_lib.bzl", "imgui_lib") +load("//vendor/glm:glm-dep.bzl", "glm_dep") + +def deps(): + sdl2_dep() + gtest_dep() +# imgui_lib() + glm_dep() \ No newline at end of file diff --git a/vendor/glm/BUILD b/vendor/glm/BUILD new file mode 100644 index 0000000..e69de29 diff --git a/vendor/glm/glm-dep.bzl b/vendor/glm/glm-dep.bzl new file mode 100644 index 0000000..58cee7f --- /dev/null +++ b/vendor/glm/glm-dep.bzl @@ -0,0 +1,10 @@ +load("@bazel_tools//tools/build_defs/repo:git.bzl", "new_git_repository") + +def glm_dep(): + if "glm_lib" not in native.existing_rules(): + new_git_repository( + name = "glm_lib", + remote = "https://github.com/g-truc/glm.git", + commit = "658d8960d081e0c9c312d49758c7ef919371b428", + build_file = Label("//vendor/glm:glm.BUILD"), + ) \ No newline at end of file diff --git a/vendor/glm/glm.BUILD b/vendor/glm/glm.BUILD new file mode 100644 index 0000000..cebac58 --- /dev/null +++ b/vendor/glm/glm.BUILD @@ -0,0 +1,12 @@ +load("@rules_cc//cc:defs.bzl", "cc_library") + +cc_library( + name = "glm", + hdrs = glob([ + "glm/*.hpp", + "glm/**/*.hpp", + ]), + includes = ["glm"], + textual_hdrs = glob(["glm/**/*.inl"]), + visibility = ["//visibility:public"], +) \ No newline at end of file diff --git a/vendor/gtest/BUILD b/vendor/gtest/BUILD new file mode 100644 index 0000000..e69de29 diff --git a/vendor/gtest/gtest-dep.bzl b/vendor/gtest/gtest-dep.bzl new file mode 100644 index 0000000..2b7fc3a --- /dev/null +++ b/vendor/gtest/gtest-dep.bzl @@ -0,0 +1,10 @@ +load("@bazel_tools//tools/build_defs/repo:git.bzl", "git_repository") + + +def gtest_dep(): + if "gtest" not in native.existing_rules(): + git_repository( + name = "gtest", + remote = "https://github.com/google/googletest", + branch = "v1.10.x", + ) \ No newline at end of file diff --git a/vendor/gtest/gtest.BUILD b/vendor/gtest/gtest.BUILD new file mode 100644 index 0000000..ca475f7 --- /dev/null +++ b/vendor/gtest/gtest.BUILD @@ -0,0 +1,14 @@ +cc_library( + name = "gtest_main", + srcs = glob( + ["src/*.cc"], + exclude = ["src/gtest-all.cc"] + ), + hdrs = glob([ + "include/**/*.h", + "src/*.h" + ]), + copts = ["-Iexternal/gtest/include"], + linkopts = ["-pthread"], + visibility = ["//visibility:public"], +) \ No newline at end of file diff --git a/vendor/sdl2/BUILD b/vendor/sdl2/BUILD new file mode 100644 index 0000000..e69de29 diff --git a/vendor/sdl2/sdl2-dep.bzl b/vendor/sdl2/sdl2-dep.bzl new file mode 100644 index 0000000..0452457 --- /dev/null +++ b/vendor/sdl2/sdl2-dep.bzl @@ -0,0 +1,14 @@ +load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") + +VERSION = "2.0.22" +URL_TOOLCHAIN = "https://www.libsdl.org/release/SDL2-devel-2.0.22-mingw.zip" + +def sdl2_dep(): + if "sdl2" not in native.existing_rules(): + http_archive( + name = "sdl2", + build_file = Label("//vendor/sdl2:sdl2.BUILD"), + url = URL_TOOLCHAIN, + strip_prefix = "SDL2-2.0.22", + sha256 = "18b3da2b3b5f1e802e0abbe99004d7404848755bbfe5153cd9dfcfc0a9522632", + ) \ No newline at end of file diff --git a/vendor/sdl2/sdl2.BUILD b/vendor/sdl2/sdl2.BUILD new file mode 100644 index 0000000..69811ad --- /dev/null +++ b/vendor/sdl2/sdl2.BUILD @@ -0,0 +1,56 @@ +load("@rules_cc//cc:defs.bzl", "cc_library") + +alias( + name = "windows", + actual = "@bazel_tools//src/conditions:windows" +) + +alias( + name = "macos", + actual = "@bazel_tools//src/conditions:darwin_x86_64" +) + +alias( + name = "linux", + actual = "@bazel_tools//src/conditions:linux_x86_64" +) + + + +cc_library( + name = "sdl2_win", + srcs= [ + "x86_64-w64-mingw32/lib/libSDL2.a", + "x86_64-w64-mingw32/lib/libSDL2main.a" + ], + hdrs = glob(["x86_64-w64-mingw32/include/**/*.h"]), + includes = ["x86_64-w64-mingw32/include"], # Optional. + linkopts = [ + "-DEFAULTLIB:user32", + "-DEFAULTLIB:gdi32", + "-DEFAULTLIB:winmm", + "-DEFAULTLIB:imm32", + "-DEFAULTLIB:ole32", + "-DEFAULTLIB:oleaut32", + "-DEFAULTLIB:version", + "-DEFAULTLIB:uuid", + "-DEFAULTLIB:shell32", + "-DEFAULTLIB:advapi32", + "-DEFAULTLIB:hid", + "-DEFAULTLIB:setupapi", + "-DEFAULTLIB:opengl32", + "-DEFAULTLIB:kernel32", + "/ENTRY:WinMainCRTStartup" + ], + visibility = ["//visibility:public"], +) + + +alias( + name = "sdl2", + actual = select({ + "//:windows": "//:sdl2_win", + "//conditions:default": "//sdl2_win", + }), + visibility = ["//visibility:public"], +) \ No newline at end of file