diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9b6cb1c..400701c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,8 +19,7 @@ jobs: - uses: actions/checkout@v2 - name: Run the Makefile. run: | - cd build - make + make all - name: Run tests. run: | python3 tests/tests.py @@ -32,7 +31,6 @@ jobs: - uses: actions/checkout@v2 - name: Run build batch script. run: | - cd build cmd /c build.bat - name: Run tests. run: | @@ -45,8 +43,7 @@ jobs: - uses: actions/checkout@v2 - name: Run the Makefile. run: | - cd build - make + make all - name: Run tests. run: | python3 tests/tests.py diff --git a/.gitignore b/.gitignore index 7ab78ce..1fcc62b 100644 --- a/.gitignore +++ b/.gitignore @@ -2,8 +2,9 @@ # PocketLang ignore list .vs/ .vscode/ +build/ -# It's a convinent batch scrpit to run pyton script +# It's a convinent batch script to run pyton script # changing directory and run another script. # Which are compile wasm and generate pages. docs/build.bat diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..05ee0f4 --- /dev/null +++ b/Makefile @@ -0,0 +1,59 @@ + +# ## Copyright (c) 2020-2021 Thakee Nathees +# ## Distributed Under The MIT License + +CC = gcc +CFLAGS = -fPIC -Wno-int-to-pointer-cast +DEBUG_CFLAGS = -D DEBUG -g3 -Og +RELEASE_CFLAGS = -g -O3 +LDFLAGS = -lm + +TARGET_EXEC = pocket +BUILD_DIR = ./build + +SRC_DIRS = ./src ./cli +INC_DIRS = ./src/include + +SRCS := $(shell find $(SRC_DIRS) -maxdepth 1 -name *.c) +OBJS := $(SRCS:.c=.o) +DEPS := $(OBJS:.o=.d) + +INC_FLAGS := $(addprefix -I,$(INC_DIRS)) +DEP_FLAGS = -MMD -MP +CC_FLAGS = $(INC_FLAGS) $(DEP_FLAGS) $(CFLAGS) + +DEBUG_DIR = $(BUILD_DIR)/debug +DEBUG_TARGET = $(DEBUG_DIR)/$(TARGET_EXEC) +DEBUG_OBJS := $(addprefix $(DEBUG_DIR)/, $(OBJS)) + +RELEASE_DIR = $(BUILD_DIR)/release +RELEASE_TARGET = $(RELEASE_DIR)/$(TARGET_EXEC) +RELEASE_OBJS := $(addprefix $(RELEASE_DIR)/, $(OBJS)) + +.PHONY: debug release all clean + +# default; target if run as `make` +debug: $(DEBUG_TARGET) + +$(DEBUG_TARGET): $(DEBUG_OBJS) + $(CC) $^ -o $@ $(LDFLAGS) + +$(DEBUG_DIR)/%.o: %.c + @mkdir -p $(dir $@) + $(CC) $(CC_FLAGS) $(DEBUG_CFLAGS) -c $< -o $@ + +release: $(RELEASE_TARGET) + +$(RELEASE_TARGET): $(RELEASE_OBJS) + $(CC) $^ -o $@ $(LDFLAGS) + +$(RELEASE_DIR)/%.o: %.c + @mkdir -p $(dir $@) + $(CC) $(CC_FLAGS) $(RELEASE_CFLAGS) -c $< -o $@ + +all: debug release + +clean: + rm -rf $(BUILD_DIR) + +-include $(DEPS) diff --git a/build/SConstruct b/SConstruct similarity index 100% rename from build/SConstruct rename to SConstruct diff --git a/build/build.bat b/build.bat similarity index 98% rename from build/build.bat rename to build.bat index 2027891..a81529c 100644 --- a/build/build.bat +++ b/build.bat @@ -95,11 +95,11 @@ set root_dir=..\..\..\ if "%debug_build%"=="false" ( set cflags=%cflags% -O2 -MD - set target_dir=release\ + set target_dir=build\release\ ) else ( set cflags=%cflags% -MDd -ZI set addnl_cdefines=%addnl_cdefines% /DDEBUG - set target_dir=debug\ + set target_dir=build\debug\ ) if "%shared_lib%"=="true" ( diff --git a/build/.gitignore b/build/.gitignore deleted file mode 100644 index 00f78a2..0000000 --- a/build/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -* -!.gitignore -!SConstruct -!build.bat -!Makefile diff --git a/build/Makefile b/build/Makefile deleted file mode 100644 index 4de14f2..0000000 --- a/build/Makefile +++ /dev/null @@ -1,22 +0,0 @@ - -## Copyright (c) 2020-2021 Thakee Nathees -## Distributed Under The MIT License - -CC = gcc -CFLAGS = -lm -fPIC -Wno-int-to-pointer-cast -INCLUDE_DIR = -I../src/include -SOURCES = ../cli/*.c ../src/*.c - -all: debug - -debug: - @mkdir -p debug/ - $(CC) -o debug/pocket $(SOURCES) $(INCLUDE_DIR) $(CFLAGS) -D DEBUG -g3 -Og - -release: - @mkdir -p release/ - $(CC) -o release/pocket $(SOURCES) $(INCLUDE_DIR) $(CFLAGS) -g -O3 - -clean: - rm -rf debug/ - rm -rf release/