BIN = manigraph OBJ = \ ext/glad/glad.o \ src/surface.o \ src/context.o \ src/texture.o \ src/window.o \ src/matrix.o \ src/shader.o \ src/input.o \ src/mesh.o \ src/main.o CFLAGS = \ -I./ext/cglm/include \ -I./ext/glfw/include \ -I./ext/glad \ -Wall -Wno-unused-function -std=c99 -D_GNU_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 help: @echo "Para compilar el proyecto a tu sistema operativo" @echo "porfavor usa uno de los siguientes comandos:" @echo " $(MAKE) windows" @echo " $(MAKE) linux-x11" @echo " $(MAKE) linux-wayland" @echo " $(MAKE) cocoa" @echo " $(MAKE) CC=emcc wasm" @echo "Para limpiar los archivos compilados se puede usar" @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 # WINDOWS windows: $(OBJ) glfw.dll $(CC) $(CFLAGS) $(OBJ) -o $(BIN) -L. -lglfw -lopengl32 -lglew32 glfw.dll: $(CC) -fPIC -shared -D_GLFW_WIN32 -D_GLFW_BUILD_DLL ./ext/glfw/src/*.c -o $@ -lgdi32 src/main.o: src/data/shaders.h src/data/axis.h # LINUX linux-wayland: $(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" libglfw.so $(CC) -o $(BIN) $(OBJ) -L. -lGLEW -lGL -lglfw -lm linux-x11: $(OBJ) $(MAKE) DFLAGS="-D_GLFW_X11" libglfw.so $(CC) -o $(BIN) $(OBJ) -L. -lGLEW -lGL -lglfw -lm run-linux: LD_LIBRARY_PATH=. ./$(BIN) # COCOA cocoa: $(OBJ) $(MAKE) DFLAGS="-D_GLFW_COCOA" libglfw.so $(CC) -framework OpenGL -o $(BIN) $(OBJ) -L. -lGLEW -lGL -lglfw wasm: $(OBJ) $(CC) -sUSE_WEBGL2=1 -sUSE_GLFW=3 -o $(BIN).js $(OBJ) chmod -x $(BIN).wasm libglfw.so: $(CC) -fPIC -shared $(DFLAGS) -D_GLFW_BUILD_DLL -Iext/glfw/deps/wayland ./ext/glfw/src/*.c -o $@ clean: rm $(OBJ) $(BIN) ext/glfw/deps/wayland/*.h .SUFFIXES: .c .o .c.o: src/main.h $(CC) $(CFLAGS) -c -o $@ $<