Merge main, change compile.bat, add struct gui

This commit is contained in:
PedroEdiaz
2025-02-04 10:16:09 -06:00
36 changed files with 6399 additions and 935 deletions

View File

@@ -1,77 +1,81 @@
BIN = manigraph
OBJ = \
src/surface.o \
ext/glad/glad.o \
src/context.o \
src/texture.o \
src/window.o \
src/matrix.o \
src/shader.o \
src/klein.o \
src/input.o \
src/load.o \
src/mesh.o \
src/gui.o \
src/main.o
EXAMPLES = \
example/basic \
example/riemman \
example/n-cube \
example/n-hilbert-cube \
example/lens
CFLAGS = \
-I./ext/cglm/include \
-I./ext/glfw/include \
-Wall -Wno-unused-function -std=c99 -D_POSIX_C_SOURCE \
WAYLAND-LIB = \
xdg-shell \
relative-pointer-unstable-v1 \
xdg-decoration-unstable-v1 \
pointer-constraints-unstable-v1 \
viewporter \
idle-inhibit-unstable-v1 \
fractional-scale-v1 \
xdg-activation-v1 \
wayland
-I./ext/glad \
-I./ext/nuklear \
-I./include \
-Wall -Wno-unused-function -std=c99 -D_GNU_SOURCE \
help:
@echo "Para compilar el proyecto a tu sistema operativo"
@echo "porfavor usa uno de los siguientes comandos:"
@echo "Usage:"
@echo " $(MAKE) windows"
@echo " $(MAKE) linux"
@echo " $(MAKE) linux-x11"
@echo " $(MAKE) linux-wayland"
@echo " $(MAKE) cocoa"
@echo "Para limpiar los archivos compilados se puede usar"
@echo " $(MAKE) CC=emcc wasm"
@echo "Examples"
@echo " $(MAKE) examples"
@echo "Clean"
@echo " $(MAKE) clean"
@echo "Para ejecturar el programa sin instalarlos se puede usar:"
@echo " $(MAKE) run-linux"
src/main.o: src/data/axis.h src/data/shaders.h
src/main.o: src/data/shaders.h
# WINDOWS
windows: $(OBJ) glfw.dll
$(CC) $(CFLAGS) $(OBJ) -o $(BIN) -L. -lglfw -lopengl32 -lglew32
windows: $(OBJ)
cd ext; $(MAKE) -f glfw.mk windows; cd -
$(CC) $(CFLAGS) $(OBJ) -o $(BIN) -L. -lglfw -lopengl32
glfw.dll:
$(CC) -fPIC -shared -D_GLFW_WIN32 -D_GLFW_BUILD_DLL ./ext/glfw/src/*.c -o $@ -lgdi32
# LINUX
linux: $(OBJ)
for i in $(WAYLAND-LIB); \
do \
wayland-scanner client-header ext/glfw/deps/wayland/$$i.xml ext/glfw/deps/wayland/$$i-client-protocol.h; \
wayland-scanner private-code ext/glfw/deps/wayland/$$i.xml ext/glfw/deps/wayland/$$i-client-protocol-code.h; \
done
$(MAKE) DFLAGS="-D_GLFW_WAYLAND -D_GLFW_X11" libglfw.so
$(CC) -o $(BIN) $(OBJ) -L. -lGLEW -lGL -lglfw -lm
linux-wayland: $(OBJ)
cd ext; $(MAKE) -f glfw.mk linux-wayland; cd -
$(CC) -o $(BIN) $(OBJ) ext/libglfw.a -lm
run-linux:
LD_LIBRARY_PATH=. ./$(BIN)
linux-x11: $(OBJ)
cd ext; $(MAKE) -f glfw.mk linux-x11; cd -
$(CC) -o $(BIN) $(OBJ) ext/libglfw.a -lm
# COCOA
cocoa: $(OBJ)
$(MAKE) DFLAGS="-D_GLFW_COCOA" libglfw.so
$(CC) -framework OpenGL -o $(BIN) $(OBJ) -L. -lGLEW -lGL -lglfw
cd ext; $(MAKE) -f glfw.mk cocoa; cd -
$(CC) -framework OpenGL -o $(BIN) $(OBJ) ext/glfw.a -lGL -lglfw
libglfw.so:
$(CC) -fPIC -shared $(DFLAGS)-D_GLFW_BUILD_DLL -Iext/glfw/deps/wayland ./ext/glfw/src/*.c -o $@
wasm: $(OBJ)
$(CC) -sUSE_WEBGL2=1 -sUSE_GLFW=3 -o $(BIN).html $(OBJ)
chmod -x $(BIN).wasm
clean:
rm $(OBJ) $(BIN) ext/glfw/deps/wayland/*.h
rm $(OBJ) $(BIN) $(EXAMPLES)
cd ext; $(MAKE) -f glfw.mk clean; cd -
examples: $(EXAMPLES)
.SUFFIXES: .c .o
.c.o:
$(CC) $(CFLAGS) -c -o $@ $<
$(CC) -Wno-implicit-function-declaration $(CFLAGS) -c -o $@ $<
.c:
$(CC) -I include -o $@ $< -lm