aboutsummaryrefslogtreecommitdiff
path: root/makefile
diff options
context:
space:
mode:
authorflu0r1ne <flu0r1ne@flu0r1ne.net>2023-08-27 20:11:39 -0500
committerflu0r1ne <flu0r1ne@flu0r1ne.net>2023-08-27 20:11:39 -0500
commitca592cb6e6a9aeee619d3fd7311030ab34844c2f (patch)
tree11f669e706938416c6139de7650efa05a243fac9 /makefile
downloadwg2nd-web-ca592cb6e6a9aeee619d3fd7311030ab34844c2f.tar.xz
wg2nd-web-ca592cb6e6a9aeee619d3fd7311030ab34844c2f.zip
Add wg2nd-web sourceHEADmain
Diffstat (limited to 'makefile')
-rw-r--r--makefile84
1 files changed, 84 insertions, 0 deletions
diff --git a/makefile b/makefile
new file mode 100644
index 0000000..babe492
--- /dev/null
+++ b/makefile
@@ -0,0 +1,84 @@
+EMCC = emcc
+EMCPP = em++
+
+CFLAGS += -Wall -Wextra -Wno-unused-function -g
+CFLAGS += -Isrc
+
+EMSCRIPT_FLAGS := $(CFLAGS) -lembind
+EMSCRIPT_FLAGS += -static --bind
+EMSCRIPT_FLAGS += -fwasm-exceptions
+
+CXXFLAGS = $(CFLAGS) -std=c++20 -fwasm-exceptions
+
+TEST_FLAGS = $(CXXFLAGS) -Itest/include -DTEST
+
+
+SRC_VIEW = src/view
+SRC_CONTROLLERS = src/controllers
+SRC_MODELS = src/models
+
+OBJS := src/models/wg2nd.o
+
+C_OBJS := src/models/crypto/halfsiphash.o
+C_OBJS += src/models/crypto/curve25519.o
+C_OBJS += src/models/crypto/encoding.o
+C_OBJS += src/models/crypto/pubkey.o
+
+TEST_DIR=test
+TEST_BUILD_DIR=$(TEST_DIR)/build
+TESTS=timer_test
+TEST_TARGETS := $(patsubst %, $(TEST_BUILD_DIR)/%, $(TESTS))
+
+DIST_DIR = dist
+DIST_BUILD_DIR = $(DIST_DIR)/build
+
+# DIST_OBJS := $(patsubst %, $(DIST_BUILD_DIR)/%, $(OBJS))
+# DIST_C_OBJS := $(patsubst %, $(DIST_BUILD_DIR)/%, $(C_OBJS))
+
+CONTROLLERS := $(wildcard $(SRC_CONTROLLERS)/*.cpp)
+CONTROLLER_HARNESSES := $(patsubst $(SRC_CONTROLLERS)/%.cpp, $(DIST_BUILD_DIR)/%.js, $(CONTROLLERS))
+
+VIEW_DIRECTORIES=$(patsubst $(SRC_VIEW)/%, $(DIST_DIR)/%, $(shell find $(SRC_VIEW) -type d))
+VIEW_FILES=$(patsubst $(SRC_VIEW)/%, $(DIST_DIR)/%, $(shell find $(SRC_VIEW) -type f))
+
+.PHONY: all clean run test
+
+all: $(DIST_DIR) $(VIEW_DIRECTORIES) $(VIEW_FILES) $(CONTROLLER_HARNESSES)
+
+test: $(TEST_TARGETS)
+
+$(OBJS): %.o: %.cpp
+ $(EMCPP) $(CXXFLAGS) -c -o $@ $<
+
+$(C_OBJS): %.o: %.c
+ $(EMCC) $(CFLAGS) -c -o $@ $<
+
+$(DIST_BUILD_DIR)/%.js: src/controllers/browser.cpp $(OBJS) $(C_OBJS) $(DIST_BUILD_DIR)
+ $(EMCPP) -o $@ $(EMSCRIPT_FLAGS) $(filter %.cpp %.o %.a, $^)
+
+$(VIEW_DIRECTORIES):
+ mkdir -p $@
+
+$(DIST_DIR)/%: $(SRC_VIEW)/%
+ cp $^ $@
+
+$(DIST_DIR):
+ mkdir -p $(DIST_DIR)
+
+$(DIST_BUILD_DIR): $(DIST_DIR)
+ mkdir -p $(DIST_BUILD_DIR)
+
+$(TEST_BUILD_DIR):
+ mkdir -p $(TEST_BUILD_DIR)
+
+$(TEST_BUILD_DIR)/%: $(TEST_BUILD_DIR) $(TEST_DIR)/%.cpp $(SRC_MODELS)/*.cpp
+ $(CPP) $(TEST_FLAGS) -o $@ $(filter %.cpp, $^)
+
+run: # requires flask
+ python serve.py
+
+watch: # requires nodemon
+ nodemon -w "./src" --exec "make" -e "js,html,css,cpp,hpp"
+
+clean:
+ rm -rf $(DIST_DIR) $(OBJS) $(C_OBJS) $(TEST_BUILD_DIR)