diff --git a/.vscode/launch.json b/.vscode/launch.json index 5d855e1..ea127f6 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -7,24 +7,14 @@ "request": "launch", "program": "", "linux": { - "program": "make", - "args": [ - "run" - ], - "env": { - "ARCH": "linux-x86_64", - "DEBUG": "1", - }, + "preLaunchTask": "(dbg) compile linux-x86_64", + "program": "bin/linux-x86_64/${workspaceFolderBasename}", + "cwd": "bin/linux-x86_64/" }, "windows": { - "program": "make", - "args": [ - "run" - ], - "env": { - "ARCH": "win-x86_64", - "DEBUG": "1", - }, + "preLaunchTask": "(dbg) compile win-x86_64", + "program": "bin/win-x86_64/${workspaceFolderBasename}.exe", + "cwd": "bin/win-x86_64/" }, } ] diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..21aff10 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,15 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "(dbg) compile linux-x86_64", + "type": "shell", + "command": "DEBUG=1 make linux-x86_64", + }, + { + "label": "(dbg) compile win-x86_64", + "type": "shell", + "command": "DEBUG=1 make win-x86_64", + } + ] +} diff --git a/makefile b/makefile index 3f2eb6f..e2c7f00 100644 --- a/makefile +++ b/makefile @@ -1,4 +1,4 @@ -NAME := sdl_template +NAME := $(shell basename $(PWD)) # compiler settings CC := clang @@ -8,7 +8,7 @@ CFLAGS := $(shell pkg-config --cflags sdl2) -Wall -Wextra -Wpedantic -Wno-pointe LDFLAGS := $(shell pkg-config --libs sdl2) -lm ifeq ($(DEBUG),1) -CFLAGS += -Og -g +CFLAGS += -DDEBUG -Og -g else REL_FLAGS += -O3 endif @@ -29,6 +29,9 @@ DEP := $(OBJ:.o=.d) ASSETS := $(patsubst assets/%,$(DIR_BUILD)/%,$(SRC_ASSETS)) TARGET := $(DIR_BUILD)/$(NAME)$(EXT) +define wr_colour + @echo -e "\033[$(2)m$(1)\033[0m" +endef # sets the variables for the different targets linux-x86_64: @@ -38,18 +41,14 @@ win-x86_64: web: @$(MAKE) _build ARCH=web CC=emcc EXT=".html" -# execute the binary -run: $(ARCH) - cd $(DIR_BUILD) && ./$(NAME)$(EXT) - all: linux-x86_64 win-x86_64 web -_build: $(DIR) $(TARGET) $(ASSETS) compile_commands.json +_build: compile_commands.json $(DIR) $(TARGET) $(ASSETS) clean: - rm -rf $(DIR_BIN) $(DIR_OBJ) + rm -rf $(DIR_BIN) $(DIR_OBJ) compile_commands.json # create the binary $(TARGET): $(OBJ) - @echo "using arguments: $(CFLAGS) $(LDFLAGS)" + @$(call wr_colour,"using arguments: $(CFLAGS) $(LDFLAGS)",94) @$(CC) -o $(TARGET) $^ $(CFLAGS) $(LDFLAGS) # create .o and .d files @@ -69,11 +68,15 @@ $(DIR): # update compile commands if the makefile has been updated (for linting) ifeq ($(DEBUG),1) compile_commands.json: makefile + @$(call wr_colour,"compiling in debug mode",93) + $(MAKE) clean + @touch compile_commands.json + bear -- make else compile_commands.json: makefile - @touch compile_commands.json + @$(call wr_colour,"compiling in non-debug mode",93) $(MAKE) clean - bear -- make + @touch compile_commands.json endif # include the dependencies