separate builds

This commit is contained in:
2025-03-31 14:14:37 -05:00
parent 121fba5930
commit 8669d4fe7c
5 changed files with 308 additions and 295 deletions

72
ExampleApps.nix Normal file
View File

@@ -0,0 +1,72 @@
{ inputs, pkgs, ... }: {
MinimalApp = pkgs.stdenvNoCC.mkDerivation {
name = "Archimedes";
src = ./.;
nativeBuildInputs = with pkgs; [
clang
];
/*buildInputs = with pkgs; [
];*/
buildPhase = ''
clang++ \
src/example_apps/MinimalApp/MinimalApp.cpp \
-I src -I include \
-Wall \
-o $name
'';
installPhase = ''
mkdir -p $out/bin
cp $name $out/bin
'';
};
ImguiEmbed = pkgs.stdenvNoCC.mkDerivation {
name = "Archimedes";
src = ./.;
imgui = inputs.imgui;
nativeBuildInputs = with pkgs; [
clang
];
buildInputs = with pkgs; [
glfw
glew
];
buildPhase = ''
clang++ \
src/example_apps/ImguiEmbed/*.cpp \
modules/GUImodules/TestImgui/src/*.cpp \
$imgui/backends/imgui_impl_glfw.cpp \
$imgui/backends/imgui_impl_opengl3.cpp \
$imgui/*.cpp \
-DRENDERER_OPENGL \
-DWINDOW_GLFW \
-DGUIMODULE \
-DTESTIMGUI_STATIC \
-I src -I include -I $imgui -I . \
-lGL -lglfw -lGLEW \
-Wall \
-o $name
'';
installPhase = ''
mkdir -p $out/bin
cp $name $out/bin
'';
};
}

177
ExampleModules.nix Normal file
View File

@@ -0,0 +1,177 @@
{ inputs, pkgs, ... }: {
TestMenu = pkgs.stdenvNoCC.mkDerivation {
name = "TestMenu";
src = ./.;
nativeBuildInputs = with pkgs; [
clang
];
buildPhase = ''
clang++ \
modules/TestMenu/src/*.cpp \
-fpic -shared \
-I src \
-Wall \
-o $name
'';
installPhase = ''
mkdir -p $out/bin
cp $name $out/bin
'';
};
Print = pkgs.stdenvNoCC.mkDerivation {
name = "Print";
src = ./.;
nativeBuildInputs = with pkgs; [
clang
];
buildPhase = ''
clang++ \
modules/Print/src/*.cpp \
-fpic -shared \
-I src -I include \
-Wall \
-o $name
'';
installPhase = ''
mkdir -p $out/bin
cp $name $out/bin
'';
};
DependsOnPrint = pkgs.stdenvNoCC.mkDerivation {
name = "DependsOnPrint";
src = ./.;
nativeBuildInputs = with pkgs; [
clang
];
buildPhase = ''
clang++ \
modules/DependsOnPrint/src/*.cpp \
-fpic -shared \
-I src -I include \
-Wall \
-o $name
'';
installPhase = ''
mkdir -p $out/bin
cp $name $out/bin
'';
};
DependsOnPrintStatic = pkgs.stdenvNoCC.mkDerivation {
name = "DependsOnPrintStatic";
src = ./.;
nativeBuildInputs = with pkgs; [
clang
];
buildPhase = ''
clang++ \
modules/DependsOnPrintStatic/src/*.cpp \
modules/Print/src/*.cpp \
-fpic -shared \
-I src -I include -I . \
-DPRINT_STATIC \
-Wall \
-o $name
'';
installPhase = ''
mkdir -p $out/bin
cp $name $out/bin
'';
};
TestImgui = pkgs.stdenvNoCC.mkDerivation {
name = "TestImgui";
src = ./.;
imgui = inputs.imgui;
nativeBuildInputs = with pkgs; [
clang
];
buildInputs = with pkgs; [
glfw
glew
];
buildPhase = ''
clang++ \
modules/GUImodules/TestImgui/src/*.cpp \
$imgui/backends/imgui_impl_glfw.cpp \
$imgui/backends/imgui_impl_opengl3.cpp \
$imgui/*.cpp \
-DRENDERER_OPENGL \
-DWINDOW_GLFW \
-fpic -shared \
-I src -I include -I $imgui \
-lGL -lglfw -lGLEW \
-Wall \
-o $name
'';
installPhase = ''
mkdir -p $out/bin
cp $name $out/bin
'';
};
TestClay = pkgs.stdenvNoCC.mkDerivation {
name = "TestClay";
src = ./.;
clay = inputs.clay;
nativeBuildInputs = with pkgs; [
clang
];
buildPhase = ''
clang++ \
modules/TestClay/src/*.cpp \
-fpic -shared \
-I src -I include \
-DRENDERER_OPENGL \
-DWINDOW_GLFW \
-Wall \
-o $name
'';
installPhase = ''
mkdir -p $out/bin
cp $name $out/bin
'';
};
}

349
flake.nix
View File

@@ -13,320 +13,81 @@
}; };
}; };
outputs = { self, nixpkgs, imgui, clay }: let outputs = { self, nixpkgs, imgui, clay }@inputs: let
system = "x86_64-linux"; system = "x86_64-linux";
pkgs = import nixpkgs { inherit system; }; pkgs = import nixpkgs { inherit system; };
in { in {
Archimedes = { Archimedes = {
examples = { examples = import ./ExampleApps.nix { inherit inputs; inherit pkgs; };
MinimalApp = pkgs.stdenvNoCC.mkDerivation { };
name = "Archimedes"; Modules = {
examples = import ./ExampleModules.nix { inherit inputs; inherit pkgs; };
src = ./.; WindowModule = pkgs.stdenvNoCC.mkDerivation {
nativeBuildInputs = with pkgs; [ name = "WindowModule";
clang
];
/*buildInputs = with pkgs; [ src = ./.;
];*/
buildPhase = '' nativeBuildInputs = with pkgs; [
clang++ \ clang
src/example_apps/MinimalApp/MinimalApp.cpp \ ];
-I src -I include \
-Wall \
-o $name
'';
installPhase = '' buildInputs = with pkgs; [
mkdir -p $out/bin glfw
cp $name $out/bin
'';
};
ImguiEmbed = pkgs.stdenvNoCC.mkDerivation {
name = "Archimedes";
src = ./.;
inherit imgui;
nativeBuildInputs = with pkgs; [
clang
];
buildInputs = with pkgs; [
glfw
glew glew
]; ];
buildPhase = '' buildPhase = ''
clang++ \ clang++ \
src/example_apps/ImguiEmbed/*.cpp \ modules/Window/src/*.cpp \
modules/GUImodules/TestImgui/src/*.cpp \ -fpic -shared \
$imgui/backends/imgui_impl_glfw.cpp \ -I src -I include \
$imgui/backends/imgui_impl_opengl3.cpp \ -DRENDERER_OPENGL \
$imgui/*.cpp \ -DWINDOW_GLFW \
-DRENDERER_OPENGL \ -lGL -lglfw -lGLEW \
-DWINDOW_GLFW \ -Wall \
-DGUIMODULE \ -o $name
-DTESTIMGUI_STATIC \
-I src -I include -I $imgui -I . \
-lGL -lglfw -lGLEW \
-Wall \
-o $name
''; '';
installPhase = '' installPhase = ''
mkdir -p $out/bin mkdir -p $out/bin
cp $name $out/bin cp $name $out/bin
''; '';
};
MainGUI = pkgs.stdenvNoCC.mkDerivation {
name = "MainGUI";
src = ./.;
inherit imgui;
nativeBuildInputs = with pkgs; [
clang
];
buildPhase = ''
clang++ \
modules/MainGUI/src/*.cpp \
-fpic -shared \
-I src -I include \
-Wall \
-o $name
'';
installPhase = ''
mkdir -p $out/bin
cp $name $out/bin
'';
};
}; };
}; };
TestMenu = pkgs.stdenvNoCC.mkDerivation {
name = "TestMenu";
src = ./.;
nativeBuildInputs = with pkgs; [
clang
];
buildPhase = ''
clang++ \
modules/TestMenu/src/*.cpp \
-fpic -shared \
-I src \
-Wall \
-o $name
'';
installPhase = ''
mkdir -p $out/bin
cp $name $out/bin
'';
};
Print = pkgs.stdenvNoCC.mkDerivation {
name = "Print";
src = ./.;
nativeBuildInputs = with pkgs; [
clang
];
buildPhase = ''
clang++ \
modules/Print/src/*.cpp \
-fpic -shared \
-I src -I include \
-Wall \
-o $name
'';
installPhase = ''
mkdir -p $out/bin
cp $name $out/bin
'';
};
DependsOnPrint = pkgs.stdenvNoCC.mkDerivation {
name = "DependsOnPrint";
src = ./.;
nativeBuildInputs = with pkgs; [
clang
];
buildPhase = ''
clang++ \
modules/DependsOnPrint/src/*.cpp \
-fpic -shared \
-I src -I include \
-Wall \
-o $name
'';
installPhase = ''
mkdir -p $out/bin
cp $name $out/bin
'';
};
DependsOnPrintStatic = pkgs.stdenvNoCC.mkDerivation {
name = "DependsOnPrintStatic";
src = ./.;
nativeBuildInputs = with pkgs; [
clang
];
buildPhase = ''
clang++ \
modules/DependsOnPrintStatic/src/*.cpp \
modules/Print/src/*.cpp \
-fpic -shared \
-I src -I include -I . \
-DPRINT_STATIC \
-Wall \
-o $name
'';
installPhase = ''
mkdir -p $out/bin
cp $name $out/bin
'';
};
WindowModule = pkgs.stdenvNoCC.mkDerivation {
name = "WindowModule";
src = ./.;
nativeBuildInputs = with pkgs; [
clang
];
buildInputs = with pkgs; [
glfw
glew
];
buildPhase = ''
clang++ \
modules/Window/src/*.cpp \
-fpic -shared \
-I src -I include \
-DRENDERER_OPENGL \
-DWINDOW_GLFW \
-lGL -lglfw -lGLEW \
-Wall \
-o $name
'';
installPhase = ''
mkdir -p $out/bin
cp $name $out/bin
'';
};
TestImgui = pkgs.stdenvNoCC.mkDerivation {
name = "TestImgui";
src = ./.;
inherit imgui;
nativeBuildInputs = with pkgs; [
clang
];
buildInputs = with pkgs; [
glfw
glew
];
buildPhase = ''
clang++ \
modules/GUImodules/TestImgui/src/*.cpp \
$imgui/backends/imgui_impl_glfw.cpp \
$imgui/backends/imgui_impl_opengl3.cpp \
$imgui/*.cpp \
-DRENDERER_OPENGL \
-DWINDOW_GLFW \
-fpic -shared \
-I src -I include -I $imgui \
-lGL -lglfw -lGLEW \
-Wall \
-o $name
'';
installPhase = ''
mkdir -p $out/bin
cp $name $out/bin
'';
};
TestClay = pkgs.stdenvNoCC.mkDerivation {
name = "TestClay";
src = ./.;
inherit clay;
nativeBuildInputs = with pkgs; [
clang
];
buildPhase = ''
clang++ \
modules/TestClay/src/*.cpp \
-fpic -shared \
-I src -I include \
-DRENDERER_OPENGL \
-DWINDOW_GLFW \
-Wall \
-o $name
'';
installPhase = ''
mkdir -p $out/bin
cp $name $out/bin
'';
};
MainGUI = pkgs.stdenvNoCC.mkDerivation {
name = "MainGUI";
src = ./.;
inherit imgui;
nativeBuildInputs = with pkgs; [
clang
];
buildPhase = ''
clang++ \
modules/MainGUI/src/*.cpp \
-fpic -shared \
-I src -I include \
-Wall \
-o $name
'';
installPhase = ''
mkdir -p $out/bin
cp $name $out/bin
'';
};
packages.${system}.default = self.Archimedes; packages.${system}.default = self.Archimedes;

View File

@@ -2,7 +2,10 @@
#undef GUIMODULE #undef GUIMODULE
#include "utils/Module/Module.h" #include "utils/Module/Module.h"
#define WINDOWMODULE_STATIC
#include "modules/WindowModule/src/WindowModule.h" #include "modules/WindowModule/src/WindowModule.h"
#include "modules/WindowModule/src/WindowModule.cpp"
namespace Archimedes { namespace Archimedes {

View File

@@ -31,7 +31,7 @@ class WindowModule : public Archimedes::Module {
}; };
#ifndef WINDOW_STATIC #ifndef WINDOWMODULE_STATIC
#define MODULE_TYPE WindowModule #define MODULE_TYPE WindowModule
#include "endModule.h" #include "endModule.h"
#endif #endif