| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 | 
							- # 
 
- # Copyright (c) 2019 - 2021 Stefan Strobel <stefan.strobel@shimatta.net>
 
- # 
 
- # This Source Code Form is subject to the terms of the Mozilla Public
 
- # License, v. 2.0. If a copy of the MPL was not distributed with this
 
- # file, You can obtain one at https://mozilla.org/MPL/2.0/.
 
- # 
 
- OBJ_DIR := output/
 
- INTEGRATIONTEST_CPP_OBJ_DIR := $(OBJ_DIR)test/integrationtest/
 
- INTEGRATIONTEST_C_OBJ_DIR := $(INTEGRATIONTEST_CPP_OBJ_DIR)
 
- UNITTEST_OBJ_DIR := $(OBJ_DIR)test/unittest/
 
- CC  := gcc
 
- CPP := g++
 
- LN  := ln
 
- SOURCES :=  src/shellmatta.c                \
 
-             src/shellmatta_autocomplete.c   \
 
-             src/shellmatta_history.c        \
 
-             src/shellmatta_utils.c          \
 
-             src/shellmatta_escape.c         \
 
-             src/shellmatta_opt.c
 
- INCLUDES    := api .
 
- UNITTEST_SOURCES := test/unittest/test_main.cpp                                         \
 
-                     test/unittest/shellmatta_opt/test_opt_findNextHunk.cpp              \
 
-                     test/unittest/shellmatta_opt/test_opt_peekNextHunk.cpp              \
 
-                     test/unittest/shellmatta_utils/test_utils_writeEcho.cpp             \
 
-                     test/unittest/shellmatta_utils/test_utils_shellItoa.cpp             \
 
-                     test/unittest/shellmatta_utils/test_utils_saveCursorPos.cpp         \
 
-                     test/unittest/shellmatta_utils/test_utils_restoreCursorPos.cpp      \
 
-                     test/unittest/shellmatta_utils/test_utils_eraseLine.cpp             \
 
-                     test/unittest/shellmatta_utils/test_utils_rewindCursor.cpp          \
 
-                     test/unittest/shellmatta_utils/test_utils_forwardCursor.cpp         \
 
-                     test/unittest/shellmatta_utils/test_utils_clearInput.cpp            \
 
-                     test/unittest/shellmatta_utils/test_utils_insertChars.cpp           \
 
-                     test/unittest/shellmatta_utils/test_utils_terminateInput.cpp        \
 
-                     test/unittest/shellmatta_utils/test_utils_removeChars.cpp           \
 
-                     test/unittest/shellmatta_autocomplete/test_autocomplete_run.cpp     \
 
-                     test/unittest/shellmatta_escape/test_escape_processArrowKeys.cpp    \
 
-                     test/unittest/shellmatta_history/test_appendHistoryByte.cpp         \
 
-                     test/unittest/shellmatta/test_shellmatta_doInit.cpp
 
- INTEGRATIONTEST_SOURCES :=  test/integrationtest/test_main.cpp                  \
 
-                             test/integrationtest/test_integration.cpp           \
 
-                             test/integrationtest/test_integration_opt.cpp       \
 
-                             test/integrationtest/test_integration_optLong.cpp   \
 
-                             test/integrationtest/test_integration_continue.cpp  \
 
-                             test/integrationtest/test_integration_busy.cpp      \
 
-                             test/integrationtest/test_integration_history.cpp   \
 
-                             test/integrationtest/test_integration_help.cpp
 
- UNITTEST_CPPOBJ  := $(patsubst %.cpp,$(UNITTEST_OBJ_DIR)%.o,$(UNITTEST_SOURCES))
 
- INTEGRATIONTEST_CPPOBJ  :=  $(patsubst %.cpp,$(INTEGRATIONTEST_CPP_OBJ_DIR)%.o,$(INTEGRATIONTEST_SOURCES))
 
- INTEGRATIONTEST_COBJ    :=  $(patsubst %.c,$(INTEGRATIONTEST_CPP_OBJ_DIR)%.o,$(SOURCES))
 
- CFLAGS      := $(INCLUDES:%=-I%) -g -Wall -Werror -Wextra -pedantic -DSHELLMATTA_HELP_ALIAS=\(char*\)\"?\"
 
- TESTFLAGS   := $(CFLAGS) -fprofile-arcs -ftest-coverage
 
- TESTLFLAGS  := -fprofile-arcs -Wl,--allow-multiple-definition
 
- DEPEND      = -MT $@ -MF "$(@:%.o=%.d)" -MG -MM
 
- COBJ    := $(patsubst %.c,$(OBJ_DIR)%.o,$(SOURCES))
 
- EXAMPLE_SOURCES := example/main.c
 
- EXAMPLE_COBJ     := $(patsubst %.c,$(OBJ_DIR)%.o,$(EXAMPLE_SOURCES))
 
- EXAMPLE_TARGET  := $(OBJ_DIR)example/example
 
- UNITTEST_TARGET     := $(OBJ_DIR)test/unittest/unittest
 
- INTEGRATIONTEST_TARGET     := $(OBJ_DIR)test/integrationtest/integrationtest
 
- OBJ     := $(COBJ) $(EXAMPLE_COBJ) $(UNITTEST_CPPOBJ) $(INTEGRATIONTEST_CPPOBJ) $(INTEGRATIONTEST_COBJ)
 
- DEPS    := $(OBJ:%.o=%.d)
 
- export
 
- .PHONY: help cppcheck doc clean
 
- help:
 
- 	@echo Shellmatta help
 
- 	@echo -----------------------------------------------
 
- 	@echo test      - run all tests
 
- 	@echo cppcheck  - run static code analysis \(cppcheck\)
 
- 	@echo example   - build example
 
- 	@echo -----------------------------------------------
 
- test: unittest integrationtest
 
- cppcheck:
 
- 	- @mkdir -p output/cppcheck/html
 
- 	cppcheck --enable=all --template=gcc --cppcheck-build-dir=output/cppcheck $(SOURCES)
 
- 	cppcheck --enable=all --template=gcc --cppcheck-build-dir=output/cppcheck $(SOURCES) --xml 2>output/cppcheck/cppcheck.xml
 
- 	cppcheck-htmlreport --file=output/cppcheck/cppcheck.xml --title="Shellmatta" --report-dir=output/cppcheck/html
 
- unittest: $(UNITTEST_TARGET)
 
- 	- @mkdir -p output/test/unittest/report
 
- 	@echo running test:
 
- #	remove coverage from former run
 
- 	@-find . -name "*.gcda" -type f -delete
 
- 	-$(UNITTEST_TARGET)
 
- #	remove report from former run
 
- 	-rm -rf $(OBJ_DIR)test/unittest/report/*
 
- 	gcovr --html-details --output $(OBJ_DIR)test/unittest/report/report.html output/test/unittest -f src -f api -d
 
- integrationtest: $(INTEGRATIONTEST_TARGET)
 
- 	- @mkdir -p output/test/integrationtest/report
 
- 	@echo running test:
 
- #	remove coverage from former run
 
- #	@-find . -name "*.gcda" -type f -delete
 
- 	-$(INTEGRATIONTEST_TARGET)
 
- 	#	remove report from former run
 
- #	-rm -rf $(OBJ_DIR)test/unittest/report/*
 
- 	gcovr --html-details --output $(OBJ_DIR)test/integrationtest/report/report.html output/test/integrationtest -f src -f api -d
 
- example: $(EXAMPLE_TARGET)
 
- 	@echo building example
 
- doc:
 
- 	- @mkdir -p output/doc/html
 
- 	- @mkdir -p output/doc/latex
 
- 	doxygen cfg/doxygen/doxyfile
 
- 	
 
- clean:
 
- 	- rm -rf $(OBJ_DIR)
 
- $(EXAMPLE_TARGET): $(COBJ) $(EXAMPLE_COBJ)
 
- 	- @mkdir -p $(@D)
 
- 	$(CC) $(LFLAGS) $(LIB_PATH) -o $@ $^ $(LIBS)
 
- $(UNITTEST_TARGET): $(UNITTEST_CPPOBJ)
 
- 	- @mkdir -p $(@D)
 
- 	$(CPP) $(TESTLFLAGS) $(LIB_PATH) -o $@ $^ $(LIBS)
 
- 	
 
- $(INTEGRATIONTEST_TARGET): $(INTEGRATIONTEST_CPPOBJ) $(INTEGRATIONTEST_COBJ)
 
- 	- @mkdir -p $(@D)
 
- 	$(CPP) $(TESTLFLAGS) $(LIB_PATH) -o $@ $^ $(LIBS)
 
- $(TARGET): $(OBJ)
 
- 	- @mkdir -p $(@D)
 
- 	$(CC) $(LFLAGS) $(LIB_PATH) -o $@ $^ $(LIBS)
 
- 	
 
- $(COBJ):
 
- 	- @mkdir -p $(@D)
 
- 	@$(CC) -c $(CFLAGS)  $(DEPEND) -o $@  $(subst $(OBJ_DIR), ,$(@:%.o=%.c))
 
- 	$(CC) -c $(CFLAGS) -o $@  $(subst $(OBJ_DIR), ,$(@:%.o=%.c))
 
- $(EXAMPLE_COBJ):
 
- 	- @mkdir -p $(@D)
 
- 	@$(CC) -c $(CFLAGS) $(DEPEND) -o $@  $(subst $(OBJ_DIR), ,$(@:%.o=%.c))
 
- 	$(CC) -c $(CFLAGS) -o $@  $(subst $(OBJ_DIR), ,$(@:%.o=%.c))
 
- $(UNITTEST_CPPOBJ):
 
- 	- @mkdir -p $(@D)
 
- 	@$(CPP) -c $(TESTFLAGS) $(DEPEND) -o $@  $(subst $(UNITTEST_OBJ_DIR), ,$(@:%.o=%.cpp))
 
- 	$(CPP) -c $(TESTFLAGS) -o $@  $(subst $(UNITTEST_OBJ_DIR), ,$(@:%.o=%.cpp))
 
- $(INTEGRATIONTEST_CPPOBJ):
 
- 	- @mkdir -p $(@D)
 
- 	@$(CPP) -c $(TESTFLAGS) $(DEPEND) -o $@  $(subst $(INTEGRATIONTEST_CPP_OBJ_DIR), ,$(@:%.o=%.cpp))
 
- 	$(CPP) -c $(TESTFLAGS) -o $@  $(subst $(INTEGRATIONTEST_CPP_OBJ_DIR), ,$(@:%.o=%.cpp))
 
- $(INTEGRATIONTEST_COBJ):
 
- 	- @mkdir -p $(@D)
 
- 	@$(CC) -c $(TESTFLAGS) $(DEPEND) -o $@  $(subst $(INTEGRATIONTEST_C_OBJ_DIR), ,$(@:%.o=%.c))
 
- 	$(CC) -c $(TESTFLAGS) -o $@  $(subst $(INTEGRATIONTEST_C_OBJ_DIR), ,$(@:%.o=%.c))
 
- %.o: %.cpp
 
- 	- @mkdir -p $(@D)
 
- 	@$(CPP) -c $(CFLAGS) $(DEPEND) -o $@  $(subst $(OBJ_DIR), ,$(@:%.o=%.c))
 
- 	$(CPP) -c $(CFLAGS) -o $@  $<
 
- -include $(DEPS)
 
 
  |