Skip to content

Commit

Permalink
[Refactor] : refactor entire my and link lib; refactor main makefile;…
Browse files Browse the repository at this point in the history
… add newcommit name norme
  • Loading branch information
MasterLaplace committed Jun 19, 2023
1 parent 57fa15b commit 8aa3de9
Show file tree
Hide file tree
Showing 60 changed files with 1,546 additions and 296 deletions.
5 changes: 3 additions & 2 deletions .env
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ GREEN = "\e[32m"
LIGHT_BLUE = "\e[94m"
WHITE = "\e[1;37m"

RM = rm -f
RM = rm -rf
NO_PRINT = --no-print-directory
FLAGS = -Wall -Wextra
FLAGS = -Wall -Wextra -Wpedantic
OS = $(shell uname -s | tr '[:upper:]' '[:lower:]')
VERSION = $(shell cat VERSION)
32 changes: 32 additions & 0 deletions .github/workflows/commit_norm_check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
name: Commit Name Checker

on:
push:
branches:
- '*'
pull_request:
branches:
- '*'

jobs:
verify-commit-name:
runs-on: ubuntu-latest

steps:
- name: Set up Git repository
uses: actions/checkout@v3

- name: Commit Name Checker
run: |
commit_msg=$(git log --format=%B -n 1 ${{ github.sha }})
keyword_regex="^\[[A-Z][@_A-Za-z, ]+\] : "
if [[ ! $commit_msg =~ $keyword_regex ]]; then
if [[ $commit_msg =~ ^Merge\ .* ]]; then
echo "Skipping merge commit"
else
echo $commit_msg
echo "Commit message does not match expected format. Please use the following format:\"[Keyword] : comment\""
exit 1
fi
fi
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -64,4 +64,4 @@ vosk*
*.gcda
perso
vgcore.*
*.data
*.datlayer_*
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

External libraries/API's used by ENGINE-3D
External libraries/API's used by Engine-3D

CSFML is under the zlib/png license
vosk-api is under the Apache License
153 changes: 101 additions & 52 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -32,109 +32,158 @@ SRC = $(SRC_DIR)init.c \

TEST = $(TEST_DIR)test.c

builder:
ifeq ($(OS), linux)
CC := gcc
NAME := $(BIN)engine.out
else
CC := x86_64-w64-mingw32-gcc
NAME := $(BIN)engine.exe
endif

MAIN = $(SRC_DIR)core.c

OBJ = $(SRC:.c=.o) $(MAIN:.c=.o)

TEST_OBJ = $(SRC:.c=.o) $(TEST:.c=.o)

SHARE_NAME = $(BIN)libengine.so

TEST_NAME = $(BIN)test_engine.out
INCLUDES = -I ./includes -I ./libs/my/include -I ./libs/link/include

INCLUDE = ./includes
LIB_NAME = -L ./libs -lmy -llink

LIB_FOLDER = ./lib
OPTI = -Ofast -march=native -flto -fuse-linker-plugin -pipe \
-fomit-frame-pointer -fopenmp -fprefetch-loop-arrays \
-fno-stack-protector -fno-ident -fno-asynchronous-unwind-tables

LIB_NAME = my
IGNORE = -fno-strict-aliasing -Wno-strict-aliasing

LDFLAGS = -L $(LIB_FOLDER) -l $(LIB_NAME) -lm
CSFML = -l csfml-graphics \
-l csfml-system \
-l csfml-window \
-l csfml-audio

CFLAGS = $(FLAGS) -I $(INCLUDE)
LDFLAGS = $(INCLUDES) $(LIB_NAME) $(CSFML) -lm

TEST_FLAGS = -I ./test/include
CFLAGS = $(FLAGS) $(LDFLAGS) $(OPTI) $(IGNORE)

CSFML_F = -l csfml-graphics -l csfml-system -l csfml-window -l csfml-audio
ifeq ($(OS), linux)
CC := gcc
NAME := $(BIN)engine.out
SHARE_NAME := $(BIN)libengine.so
TEST_NAME := $(BIN)test_engine.out
else
CC := x86_64-w64-mingw32-gcc
NAME := $(BIN)engine.exe
SHARE_NAME := $(BIN)libengine.lib
TEST_NAME := $(BIN)test_engine.exe
endif

SRC_COUNT := $(words $(SRC))
NB = 0

$(NAME): builder $(OBJ)
@make -C $(LIB_FOLDER) $(NO_PRINT)
@$(CC) -O3 -march=native $(CFLAGS) -o $(NAME) $(OBJ) $(LDFLAGS) $(CSFML_F) \
&& $(ECHO) $(BOLD) $(GREEN)"\n► BUILD SUCCESS !"$(DEFAULT) \
|| ($(ECHO) $(BOLD) $(RED)"\n► BUILD FAILED"$(DEFAULT) && exit 1)
$(NAME): $(OBJ)
@$(CC) -o $(NAME) $(OBJ) $(CFLAGS) \
&& $(ECHO) $(BOLD) $(GREEN)"\n► BUILD SUCCESS ⛽ !"$(DEFAULT) \
|| ($(ECHO) $(BOLD) $(RED)"\n► BUILD FAILED ⛽"$(DEFAULT) && exit 1)

all: lib $(NAME)

all: $(NAME)
lib:
@$(MAKE) all -C ./libs $(NO_PRINT)
@$(ECHO) $(BOLD) $(GREEN)"\n► LIB ⛽ !"$(DEFAULT)

## CLEAN TARGETS

clean:
@$(RM) $(OBJ)
@$(RM) $(TEST_OBJ)
@make -C $(LIB_FOLDER) clean $(NO_PRINT)
@$(MAKE) -C ./libs clean $(NO_PRINT)
@$(RM) *~
@$(RM) *#
@($(ECHO) $(BOLD) $(GREEN)$(LIGHT_BLUE)" CLEAN "$(DEFAULT))
@$(ECHO) $(BOLD) $(GREEN)$(LIGHT_BLUE)" CLEAN 💨"$(DEFAULT)

fclean: clean
@$(RM) $(NAME)
@$(RM) $(SHARE_NAME)
@$(RM) $(TEST_NAME)
@make -C $(LIB_FOLDER) fclean $(NO_PRINT)
@make -C ./src/server fclean $(NO_PRINT)
@make -C ./src/client fclean $(NO_PRINT)
@$(MAKE) -C ./libs fclean $(NO_PRINT)
@$(MAKE) -C ./src/server fclean $(NO_PRINT)
@$(MAKE) -C ./src/client fclean $(NO_PRINT)
@$(MAKE) -C ./src/manager fclean $(NO_PRINT)
@$(RM) *.gcda
@$(RM) *.gcno
@$(RM) vgcore.*
@($(ECHO) $(BOLD) $(GREEN)$(LIGHT_BLUE)" FCLEAN "$(DEFAULT))
@$(ECHO) $(BOLD) $(GREEN)$(LIGHT_BLUE)" FCLEAN 🧻"$(DEFAULT)

re: fclean all

debug: CFLAGS += -g3
debug: fclean $(OBJ)
@make debug -C $(LIB_FOLDER) $(NO_PRINT)
@$(CC) -Og $(OBJ) -o $(NAME) $(LDFLAGS) $(CSFML_F)
## DEBUG MODE

share: builder $(OBJ)
@make -C $(LIB_FOLDER) $(NO_PRINT)
@$(CC) -Os -shared $(CFLAGS) -o $(SHARE_NAME) -fPIC $(SRC) $(CSFML_F) \
&& $(ECHO) $(BOLD) $(GREEN)"\n► BUILD SHARE SUCCESS !"$(DEFAULT) \
|| ($(ECHO) $(BOLD) $(RED)"\n► BUILD SHARE FAILED"$(DEFAULT) && exit 1)
debug: OPTI = -Og -pipe
debug: CFLAGS = $(OPTI) -g3 -ggdb
debug: fclean lib_debug $(NAME)
@$(ECHO) $(BOLD) $(GREEN)"\n► DEBUG MODE 🔧 !"$(DEFAULT)

install: share
@cp $(SHARE_NAME) /usr/lib/ \
&& $(ECHO) $(BOLD) $(GREEN)"\n► INSTALL SHARE SUCCESS !"$(DEFAULT) \
|| ($(ECHO) $(BOLD) $(RED)"\n► INSTALL SHARE FAILED"$(DEFAULT) && exit 1)
lib_debug:
@$(MAKE) debug -C ./libs $(NO_PRINT)
@$(ECHO) $(BOLD) $(GREEN)"\n► LIB DEBUG 🔧 !"$(DEFAULT)

## ANAYLIZE MODE

gprof: OPTI = -Og -pipe
gprof: CFLAGS = $(OPTI) -g3 -ggdb -pg
gprof: fclean lib_gprof $(NAME)
@$(ECHO) $(BOLD) $(GREEN)"\n► GPROF MODE 🤖 !"$(DEFAULT)

lib_gprof:
@$(MAKE) gprof -C ./libs $(NO_PRINT)
@$(ECHO) $(BOLD) $(GREEN)"\n► LIB GPROF 🤖 !"$(DEFAULT)

test: fclean builder $(TEST_OBJ)
@make -C $(LIB_FOLDER) $(NO_PRINT)
@$(CC) $(FLAGS) -o $(TEST_NAME) $(TEST_OBJ) $(TEST_FLAGS) $(LDFLAGS) $(CSFML_F) \
&& $(ECHO) $(BOLD) $(GREEN)"\n► BUILD TEST SUCCESS !"$(DEFAULT) \
|| ($(ECHO) $(BOLD) $(RED)"\n► BUILD TEST FAILED"$(DEFAULT) && exit 1)
## INSTALL MODE

share: lib $(OBJ)
@$(CC) -Os -shared $(CFLAGS) -o $(SHARE_NAME) -fPIC $(SRC) \
&& $(ECHO) $(BOLD) $(GREEN)"\n► BUILD SHARE SUCCESS 🧲 !"$(DEFAULT) \
|| ($(ECHO) $(BOLD) $(RED)"\n► BUILD SHARE FAILED 🧲"$(DEFAULT) && exit 1)

install: share
@-read -r -p "Do you want to install the shared engine library ? [Y/n] " response; \
if [ $$response = "Y" ] || [ $$response = "y" ] || [ $$response = "" ]; then \
sudo cp $(SHARE_NAME) /usr/lib/ \
&& $(ECHO) $(BOLD) $(GREEN)"\n► INSTALL SHARE SUCCESS 🧭!"$(DEFAULT) \
|| ($(ECHO) $(BOLD) $(RED)"\n► INSTALL SHARE FAILED 🧭"$(DEFAULT) && exit 1) \
fi

## TEST MODE

build_tests: CFLAGS += --coverage -lcriterion -Wno-deprecated-declarations
build_tests: CFLAGS += -I ./test/include
build_tests: fclean lib_tests $(TEST_OBJ)
@$(CC) $(CFLAGS) -o $(TEST_NAME) $(TEST_OBJ) \
&& $(ECHO) $(BOLD) $(GREEN)"\n► BUILD TESTS SUCCESS 🧪 !"$(DEFAULT) \
|| ($(ECHO) $(BOLD) $(RED)"\n► BUILD TESTS FAILED 🧪"$(DEFAULT) && exit 1)

tests_run: CFLAGS += --coverage -lcriterion -Wno-deprecated-declarations
tests_run: CFLAGS += -I ./test/include
tests_run: fclean lib_tests $(TEST_OBJ)
@$(CC) $(CFLAGS) -o $(TEST_NAME) $(TEST_OBJ) \
&& $(ECHO) $(BOLD) $(GREEN)"\n► BUILD TESTS SUCCESS 🧪 !"$(DEFAULT) \
|| ($(ECHO) $(BOLD) $(RED)"\n► BUILD TESTS FAILED 🧪"$(DEFAULT) && exit 1)

lib_tests:
@$(MAKE) tests_run -C ./libs $(NO_PRINT)
@$(ECHO) $(BOLD) $(GREEN)"\n► LIB TESTS 🧪 !"$(DEFAULT)

%.o: %.c
@$(eval NB=$(shell echo $$(($(NB)+1))))
@$(CC) -c -o $@ $^ $(CFLAGS) \
&& python3 build/build.py $< $(NB) $(SRC_COUNT)

server:
@make all -C ./src/server $(NO_PRINT)
@$(MAKE) all -C ./src/server $(NO_PRINT)

client:
@make all -C ./src/client $(NO_PRINT)
@$(MAKE) all -C ./src/client $(NO_PRINT)

manager:
@make all -C ./src/manager $(NO_PRINT)
@$(MAKE) all -C ./src/manager $(NO_PRINT)

author:
@echo $(USER)

version:
@echo $(VERSION)

.PHONY: all re clean fclean debug test %.o
.SILENT: all re clean fclean debug test %.o
1 change: 1 addition & 0 deletions VERSION
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Engine-3D v1.0.0
1 change: 1 addition & 0 deletions build/install_csfml.sh
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,5 @@ if [ $? != 0 ]; then
exit 1
fi

rm -rf ../$DIR
echo "CSFML successfully installed to $INSTALL_DIR"
Empty file modified build/mysudopass.sh
100755 → 100644
Empty file.
45 changes: 0 additions & 45 deletions includes/my.h

This file was deleted.

67 changes: 0 additions & 67 deletions lib/Makefile

This file was deleted.

Loading

0 comments on commit 8aa3de9

Please sign in to comment.