# =====CONFIG===== BUILD_DIR := ./build SRC_DIR := ./src INCLUDE_DIR := ./include TEST_DIR := test CORES != nproc SRCS := $(shell find '$(SRC_DIR)' '$(INCLUDE_DIR)' \( -iname '*.cpp' -or -iname '*.c' -or -iname '*.h' \)) # =====RECIPES===== all: build .PHONY: cmake cmake: $(BUILD_DIR)/Debug/Makefile $(BUILD_DIR)/Debug/Makefile: CMakeLists.txt @ cmake -B'$(BUILD_DIR)/Debug' -DCMAKE_EXPORT_COMPILE_COMMANDS=1 . @ ln -sf '$(BUILD_DIR)/Debug/compile_commands.json' compile_commands.json .PHONY: build build: cmake @ make -C '$(BUILD_DIR)/Debug' .PHONY: cmake-release cmake-release: $(BUILD_DIR)/Release/Makefile $(BUILD_DIR)/Release/Makefile: CMakeLists.txt @ cmake -B'$(BUILD_DIR)/Release' -DCMAKE_BUILD_TYPE=Release . .PHONY: prod prod: cmake-release @ make -C '$(BUILD_DIR)/Release' .PHONY: run run: build @ LANDER_DATA_DIR=data LANDER_BASE_URL=http://localhost:18080/ LANDER_API_KEY=test ./build/Debug/lander .PHONY: gdb gdb: build @ LANDER_DATA_DIR=data LANDER_BASE_URL=http://localhost:18080/ LANDER_API_KEY=test gdb --args ./build/Debug/lander .PHONY: clean clean: @ rm -rf '$(BUILD_DIR)' compile_commands.json .PHONY: lint lint: @ clang-format --Werror -n $(SRCS) .PHONY: format format: @ clang-format -i $(SRCS)