BIN = manigraph OBJ = \ ext/glad/glad.o \ src/context.o \ src/window.o \ src/shader.o \ src/klein.o \ src/input.o \ src/load.o \ src/mesh.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 \ -I./ext/glad \ -I./include \ -Wall -Wno-unused-function -std=c99 -D_GNU_SOURCE \ help: @echo "Usage:" @echo " $(MAKE) windows" @echo " $(MAKE) linux-x11" @echo " $(MAKE) linux-wayland" @echo " $(MAKE) cocoa" @echo " $(MAKE) CC=emcc wasm" @echo "Examples" @echo " $(MAKE) examples" @echo "Clean" @echo " $(MAKE) clean" src/main.o: src/data/shaders.h windows: $(OBJ) #cd ext; $(MAKE) -f glfw.mk windows; cd - $(CC) $(CFLAGS) $(OBJ) -o $(BIN) -L. -lglfw -lopengl32 -lgdi32 glfw.dll: $(CC) -fPIC -shared -D_GLFW_WIN32 -D_GLFW_BUILD_DLL ./ext/glfw/src/*.c -o $@ -lgdi32 # LINUX linux-wayland: $(OBJ) cd ext; $(MAKE) -f glfw.mk linux-wayland; cd - $(CC) -o $(BIN) $(OBJ) ext/libglfw.a -lm linux-x11: $(OBJ) cd ext; $(MAKE) -f glfw.mk linux-x11; cd - $(CC) -o $(BIN) $(OBJ) ext/libglfw.a -lm cocoa: $(OBJ) cd ext; $(MAKE) -f glfw.mk cocoa; cd - $(CC) -framework OpenGL -o $(BIN) $(OBJ) ext/glfw.a -lGL -lglfw wasm: $(OBJ) $(CC) -sUSE_WEBGL2=1 -sUSE_GLFW=3 -o $(BIN).html $(OBJ) chmod -x $(BIN).wasm clean: rm $(OBJ) $(BIN) $(EXAMPLES) cd ext; $(MAKE) -f glfw.mk clean; cd - examples: $(EXAMPLES) .SUFFIXES: .c .o .c.o: $(CC) -Wno-implicit-function-declaration $(CFLAGS) -c -o $@ $< .c: $(CC) -I include -o $@ $< -lm