added readme and removed wasm stuff from flake and cmake
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
cmake_minimum_required(VERSION 3.20)
|
||||
project(gamejam LANGUAGES C CXX)
|
||||
project(rrmlui LANGUAGES C CXX)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
@@ -11,49 +11,32 @@ endif()
|
||||
find_package(raylib REQUIRED)
|
||||
find_package(RmlUi REQUIRED)
|
||||
|
||||
add_executable(gamejam
|
||||
src/main.cpp
|
||||
src/Game.cpp
|
||||
src/Application.cpp
|
||||
src/Creature.cpp
|
||||
src/Round.cpp
|
||||
add_library(rmlui_backend STATIC
|
||||
src/backend/RaylibSystemInterface.cpp
|
||||
src/backend/RaylibRenderInterface.cpp
|
||||
src/backend/RaylibInput.cpp
|
||||
)
|
||||
|
||||
target_link_libraries(gamejam PRIVATE
|
||||
add_executable(${PROJECT_NAME}
|
||||
src/main.cpp
|
||||
)
|
||||
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE
|
||||
raylib
|
||||
rmlui_backend
|
||||
RmlUi::Core
|
||||
RmlUi::Debugger
|
||||
)
|
||||
|
||||
target_include_directories(gamejam PRIVATE ${CMAKE_SOURCE_DIR}/src)
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/src)
|
||||
|
||||
set(ASSET_DIR ${CMAKE_SOURCE_DIR}/assets)
|
||||
|
||||
if(EMSCRIPTEN)
|
||||
set(CMAKE_EXECUTABLE_SUFFIX ".html")
|
||||
|
||||
target_link_options(gamejam PRIVATE
|
||||
"-sUSE_GLFW=3"
|
||||
"-sASYNCIFY"
|
||||
"-sALLOW_MEMORY_GROWTH=1"
|
||||
"-sFORCE_FILESYSTEM=1"
|
||||
"--preload-file=${ASSET_DIR}@assets"
|
||||
# "--shell-file=${CMAKE_SOURCE_DIR}/shell.html"
|
||||
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
${ASSET_DIR} $<TARGET_FILE_DIR:${PROJECT_NAME}>/assets
|
||||
COMMENT "Copying assets to build output"
|
||||
)
|
||||
|
||||
else()
|
||||
add_custom_command(TARGET gamejam POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
||||
${ASSET_DIR} $<TARGET_FILE_DIR:gamejam>/assets
|
||||
COMMENT "Copying assets to build output"
|
||||
)
|
||||
endif()
|
||||
|
||||
install(TARGETS gamejam RUNTIME DESTINATION bin)
|
||||
|
||||
if(NOT EMSCRIPTEN)
|
||||
install(DIRECTORY ${ASSET_DIR} DESTINATION bin)
|
||||
endif()
|
||||
install(TARGETS ${PROJECT_NAME} RUNTIME DESTINATION bin)
|
||||
install(DIRECTORY ${ASSET_DIR} DESTINATION bin)
|
||||
|
||||
61
flake.lock
generated
Normal file
61
flake.lock
generated
Normal file
@@ -0,0 +1,61 @@
|
||||
{
|
||||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1788039129,
|
||||
"narHash": "sha256-pa4Q0qErvCvzCaaUph7Sm37RhR4xvPrYI8Lgz6k85+A=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d2f67949798825fe853f7c5d0492b8bf016d3f88",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs",
|
||||
"utils": "utils"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
110
flake.nix
110
flake.nix
@@ -1,5 +1,5 @@
|
||||
{
|
||||
description = "Raylib + RmlUI (with android build support) dev shell";
|
||||
description = "Raylib + RmlUi dev shell";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
@@ -25,13 +25,6 @@
|
||||
"-DBUILD_TESTING=OFF"
|
||||
];
|
||||
|
||||
wasmFindOverrides = [
|
||||
"-DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH"
|
||||
"-DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=BOTH"
|
||||
"-DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=BOTH"
|
||||
];
|
||||
|
||||
# ---- native RmlUi (shared lib) --------------------------------------
|
||||
rmlui = pkgs.stdenv.mkDerivation {
|
||||
pname = "rmlui";
|
||||
version = "master";
|
||||
@@ -41,67 +34,6 @@
|
||||
cmakeFlags = rmluiCmakeFlags ++ [ "-DBUILD_SHARED_LIBS=ON" ];
|
||||
};
|
||||
|
||||
# ---- WASM Freetype (static, minimal deps) ---------------------------
|
||||
freetypeWasm = pkgs.stdenv.mkDerivation {
|
||||
pname = "freetype-wasm";
|
||||
version = pkgs.freetype.version;
|
||||
src = pkgs.freetype.src;
|
||||
nativeBuildInputs = [ pkgs.cmake pkgs.emscripten ];
|
||||
dontFixup = true;
|
||||
configurePhase = ''
|
||||
emcmake cmake -S . -B build \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DBUILD_SHARED_LIBS=OFF \
|
||||
-DFT_DISABLE_ZLIB=TRUE \
|
||||
-DFT_DISABLE_BZIP2=TRUE \
|
||||
-DFT_DISABLE_PNG=TRUE \
|
||||
-DFT_DISABLE_HARFBUZZ=TRUE \
|
||||
-DFT_DISABLE_BROTLI=TRUE \
|
||||
-DCMAKE_INSTALL_PREFIX=$out
|
||||
'';
|
||||
buildPhase = "emmake make -C build -j$NIX_BUILD_CORES";
|
||||
installPhase = "emmake make -C build install";
|
||||
};
|
||||
|
||||
# ---- WASM RmlUi (static) ---------------------------------------------
|
||||
rmluiWasm = pkgs.stdenv.mkDerivation {
|
||||
pname = "rmlui-wasm";
|
||||
version = "master";
|
||||
src = rmluiSrc;
|
||||
nativeBuildInputs = [ pkgs.cmake pkgs.emscripten ];
|
||||
dontFixup = true;
|
||||
configurePhase = ''
|
||||
emcmake cmake -S . -B build \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DBUILD_SHARED_LIBS=OFF \
|
||||
${pkgs.lib.concatStringsSep " " rmluiCmakeFlags} \
|
||||
${pkgs.lib.concatStringsSep " " wasmFindOverrides} \
|
||||
-DCMAKE_PREFIX_PATH="${freetypeWasm}" \
|
||||
-DCMAKE_INSTALL_PREFIX=$out
|
||||
'';
|
||||
buildPhase = "emmake make -C build -j$NIX_BUILD_CORES";
|
||||
installPhase = "emmake make -C build install";
|
||||
};
|
||||
|
||||
# ---- WASM raylib (PLATFORM=Web) ---------------------------------------
|
||||
raylibWasm = pkgs.stdenv.mkDerivation {
|
||||
pname = "raylib-wasm";
|
||||
version = pkgs.raylib.version;
|
||||
src = pkgs.raylib.src;
|
||||
nativeBuildInputs = [ pkgs.cmake pkgs.emscripten ];
|
||||
dontFixup = true;
|
||||
configurePhase = ''
|
||||
emcmake cmake -S . -B build \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DPLATFORM=Web \
|
||||
-DBUILD_EXAMPLES=OFF \
|
||||
-DCMAKE_INSTALL_PREFIX=$out
|
||||
'';
|
||||
buildPhase = "emmake make -C build -j$NIX_BUILD_CORES";
|
||||
installPhase = "emmake make -C build install";
|
||||
};
|
||||
|
||||
# ---- native toolchain / runtime ---------------------------------------
|
||||
nativeBuildTools = with pkgs; [
|
||||
cmake
|
||||
pkg-config
|
||||
@@ -135,22 +67,6 @@
|
||||
'';
|
||||
};
|
||||
|
||||
devShells.wasm = pkgs.mkShell {
|
||||
nativeBuildInputs = [ pkgs.cmake pkgs.emscripten pkgs.python3 ];
|
||||
shellHook = ''
|
||||
export RAYLIB_WASM="${raylibWasm}"
|
||||
export RMLUI_WASM="${rmluiWasm}"
|
||||
export FREETYPE_WASM="${freetypeWasm}"
|
||||
echo "wasm dev shell ready, configure with:"
|
||||
echo " emcmake cmake -B build-wasm -DPLATFORM=Web \\"
|
||||
echo " -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=BOTH \\"
|
||||
echo " -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=BOTH \\"
|
||||
echo " -DCMAKE_FIND_ROOT_PATH_MODE_PACKAGE=BOTH \\"
|
||||
echo " -DCMAKE_PREFIX_PATH=\"\$RAYLIB_WASM;\$RMLUI_WASM;\$FREETYPE_WASM\""
|
||||
echo " emmake make -C build-wasm"
|
||||
'';
|
||||
};
|
||||
|
||||
packages.default = pkgs.stdenv.mkDerivation {
|
||||
pname = "rrmlui";
|
||||
version = "0.1.0";
|
||||
@@ -159,32 +75,10 @@
|
||||
buildInputs = nativeRuntimeDeps;
|
||||
cmakeFlags = [ "-DCMAKE_BUILD_TYPE=Release" ];
|
||||
postInstall = ''
|
||||
wrapProgram $out/bin/gamejam \
|
||||
wrapProgram $out/bin/rrmlui \
|
||||
--prefix LD_LIBRARY_PATH : "${pkgs.lib.makeLibraryPath nativeRuntimeDeps}"
|
||||
'';
|
||||
};
|
||||
|
||||
packages.wasm = pkgs.stdenv.mkDerivation {
|
||||
pname = "rrmlui-wasm";
|
||||
version = "0.1.0";
|
||||
src = ./.;
|
||||
nativeBuildInputs = [ pkgs.cmake pkgs.emscripten ];
|
||||
dontFixup = true;
|
||||
configurePhase = ''
|
||||
emcmake cmake -S . -B build \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DPLATFORM=Web \
|
||||
${pkgs.lib.concatStringsSep " " wasmFindOverrides} \
|
||||
-DCMAKE_PREFIX_PATH="${raylibWasm};${rmluiWasm};${freetypeWasm}" \
|
||||
-DCMAKE_INSTALL_PREFIX=$out
|
||||
'';
|
||||
buildPhase = "emmake make -C build -j$NIX_BUILD_CORES";
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
cp -r build/*.html build/*.js build/*.wasm $out/ 2>/dev/null || true
|
||||
emmake make -C build install || true
|
||||
'';
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
19
readme.md
Normal file
19
readme.md
Normal file
@@ -0,0 +1,19 @@
|
||||
# RmlUi + Raylib
|
||||
|
||||
This project aims to create a fully featured Raylib backend and renderer for Rmlui projects.
|
||||
|
||||
I originally began creating this for a Game Jam project where I got the basic rendering implemented, but realized it would be nice to have as a seperate project to flesh out the rest of the features.
|
||||
|
||||
## Roadmap
|
||||
*Rendering features (from the RmlUi render interfface documentation https://mikke89.github.io/RmlUiDoc/pages/cpp_manual/interfaces/render.html#feature-table):*
|
||||
- [x] Basic rendering
|
||||
- [ ] Clip Mask
|
||||
- [ ] Transforms
|
||||
- [ ] Layers
|
||||
- [ ] Render textures
|
||||
- [ ] Mask images
|
||||
- [ ] Filters
|
||||
- [ ] Shaders
|
||||
|
||||
*Backend features:*
|
||||
- [x] Input handling
|
||||
Reference in New Issue
Block a user