commit 0c8a21ea27a0263bf4a2f8caf92413276e390176 Author: Ludovic 'Archivist' Lagouardette Date: Mon Aug 10 18:34:31 2020 +0200 Initial commit diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..e079fdc --- /dev/null +++ b/Makefile @@ -0,0 +1,151 @@ +CC := -clang +CFLAGS := --std=c11 -pedantic-errors -Wall -Wextra -Werror -Wno-unused-command-line-argument +CXX := $(CC) +CXXFLAGS := --std=c++17 -pedantic-errors -Wall -Wextra -Werror -Wno-unused-command-line-argument +LDFLAGS := -pthread -ldl +BUILD := ./build +OBJ_DIR := $(BUILD)/objects +APP_DIR := $(BUILD)/apps +DEPS_DIR := $(BUILD)/deps +INCLUDE_DEPS := ./include_deps +SOURCE_DEPS := ./src_deps +INCLUDE := -Iinclude/ -I$(INCLUDE_DEPS) + +#################### +# PROJECT LISTINGS # +#################### + +TARGET := program +SRC := \ + $(wildcard $(SOURCE_DEPS)/*.c) \ + $(wildcard $(SOURCE_DEPS)/*.cpp) \ + $(wildcard src/actions/*.cpp) \ + $(wildcard src/datastructures/*.cpp) \ + $(wildcard src/networking/*.cpp) \ + $(wildcard src/*.cpp) \ + +OBJECTS := $(SRC:%=$(OBJ_DIR)/%.o) + +DEPS := .deps/spdlog \ + .deps/spdlog_sqlite \ + .deps/sqlite3 \ + .deps/jinx + +############################# +# DEPENDENCIES DECLARATIONS # +############################# + +JINX_URL := https://raw.githubusercontent.com/JamesBoer/Jinx/master/Include/Jinx.hpp +SQLITE_SPDLOG_URL := https://raw.githubusercontent.com/PedroRod/sqlite_sink/master/sqlite_sink.h +SQLITE_VERSION_STR := sqlite-amalgamation-3320300 +SQLITE_URL := https://www.sqlite.org/2020/$(SQLITE_VERSION_STR).zip +SPDLOG_URL := https://github.com/gabime/spdlog + +deps: $(DEPS) + +.deps/jinx: $(INCLUDE_DEPS)/Jinx.hpp + @mkdir -p $(@D) + echo $(JINX_URL) > $@ + +.deps/sqlite3: + @mkdir -p $(@D) + @rm -rf /tmp/sqlite + @mkdir -p /tmp/sqlite + @mkdir -p $(SOURCE_DEPS) $(INCLUDE_DEPS) + cd /tmp/sqlite; wget --quiet --output-document=sqlite.zip $(SQLITE_URL) + cd /tmp/sqlite; unzip sqlite.zip + cp /tmp/sqlite/$(SQLITE_VERSION_STR)/sqlite3.h $(INCLUDE_DEPS)/sqlite3.h + cp /tmp/sqlite/$(SQLITE_VERSION_STR)/sqlite3.c $(SOURCE_DEPS)/sqlite3.c + echo $(SQLITE_VERSION_STR) > $@ + +.deps/spdlog: $(DEPS_DIR)/libspdlog.a + @mkdir -p $(@D) + echo $(SPDLOG_URL) > $@ + +.deps/spdlog_sqlite: $(INCLUDE_DEPS)/sqlite_sink.h + @mkdir -p $(@D) + echo $(SQLITE_SPDLOG_URL) > $@ + +################################ +# DEPENDENCIES IMPLEMENTATIONS # +################################ + +$(INCLUDE_DEPS)/Jinx.hpp: + @mkdir -p $(@D) + wget --quiet --output-document=$@ $(JINX_URL) + +$(INCLUDE_DEPS)/sqlite_sink.h: + @mkdir -p $(@D) + wget --quiet --output-document=$@ $(SQLITE_SPDLOG_URL) + +$(DEPS_DIR)/libspdlog.a: + @rm -rf /tmp/spdlog + @mkdir /tmp/spdlog + @mkdir -p $(@D) + cd /tmp/spdlog; git clone --quiet --depth=1 $(SPDLOG_URL) + cd /tmp/spdlog; mkdir build + cd /tmp/spdlog/build; cmake --log-level=ERROR ../spdlog/ + +cd /tmp/spdlog/build; make + cp -fr /tmp/spdlog/spdlog/include/spdlog $(INCLUDE_DEPS) + cp /tmp/spdlog/build/libspdlog.a $@ + +####################### +# PROJECT COMPILATION # +####################### + +all: + +make deps + +make executable + +debug: + +make deps + +make debug_executable + +release: + +make deps + +make release_executable + +executable: deps +executable: build $(APP_DIR)/$(TARGET) + +debug_executable: CFLAGS += -DDEBUG -g +debug_executable: CXXFLAGS += -DDEBUG -g +debug_executable: build $(APP_DIR)/$(TARGET) + gdb $(APP_DIR)/$(TARGET) + +release_executable: CFLAGS += -O3 -march=native +release_executable: CXXFLAGS += -O3 -march=native +release_executable: build $(APP_DIR)/$(TARGET) + +$(OBJ_DIR)/%.cpp.o: %.cpp + @mkdir -p $(@D) + $(CXX) $(CXXFLAGS) $(INCLUDE) -c $< -o $@ $(LDFLAGS) + +$(OBJ_DIR)/%.c.o: %.c + @mkdir -p $(@D) + $(CC) $(CFLAGS) $(INCLUDE) -c $< -o $@ $(LDFLAGS) + +$(APP_DIR)/$(TARGET): $(OBJECTS) + @mkdir -p $(@D) + $(CXX) $(CXXFLAGS) -o $(APP_DIR)/$(TARGET) $^ $(LDFLAGS) + +.PHONY: all build clean debug release + +print_objects: + @echo $(OBJECTS) + +build: + @mkdir -p $(APP_DIR) + @mkdir -p $(OBJ_DIR) + +clean_all: clean deps_clean + +clean: + -@rm -rvf $(OBJ_DIR)/* + -@rm -rvf $(APP_DIR)/* + +deps_clean: + -@rm -rvf include_deps/* + -@rm -rvf src_deps/* + -@rm -rvf $(DEPS_DIR)/* + -@rm -rvf .deps/* \ No newline at end of file diff --git a/include/empty.hpp b/include/empty.hpp new file mode 100644 index 0000000..7b9637e --- /dev/null +++ b/include/empty.hpp @@ -0,0 +1 @@ +#pragma once \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..dbbd85e --- /dev/null +++ b/src/main.cpp @@ -0,0 +1 @@ +int main(){} \ No newline at end of file