b15f/control/src/Makefile

114 lines
3.6 KiB
Makefile
Raw Normal View History

2019-03-26 08:57:01 +00:00
# Name: Makefile
2019-05-16 08:07:27 +00:00
# Project: B15F (Board 15 Famulus Edition)
2019-03-26 08:57:01 +00:00
# Author: Tristan Krause
# Creation Date: 2019-03-22
2019-12-03 06:43:29 +00:00
# Änderungen veröffentlichen, vorher nochmal: make clean && make && make doc && make clean && make doc && make
2019-07-31 09:34:23 +00:00
2019-04-03 13:20:49 +00:00
# Environment
2022-12-06 18:15:12 +00:00
PATH_COMPILER = g++
PATH_DOXYGEN = ../bin/doxygen
PATH_AR = ar
2019-05-16 07:59:34 +00:00
# install paths
2022-12-06 19:29:20 +00:00
PATH_BIN = /usr/bin/
PATH_LIB = /usr/lib/
PATH_INCLUDE = /usr/include/b15f/
PATH_INCLUDE_WRAPPER = /usr/include/b15f/wrapper/
2019-05-16 07:59:34 +00:00
# tmp paths
PATH_TMP_BIN = ../bin/
PATH_TMP_LIB = ../lib/
# outputs
2022-12-06 18:15:12 +00:00
OUT_TMP_DRV = $(PATH_TMP_LIB)/libb15fdrv.so
OUT_TMP_CLI = $(PATH_TMP_BIN)/b15fcli
2022-12-06 19:29:20 +00:00
OUT_TMP_WRAPPER = $(PATH_TMP_LIB)/libb15fwrp.a
2022-12-06 18:15:12 +00:00
OUT_TMP_PLOTTY = $(PATH_TMP_BIN)/plotty
OUT_DRV = $(PATH_LIB)/libb15fdrv.so
OUT_CLI = $(PATH_BIN)/b15fcli
2022-12-06 19:29:20 +00:00
OUT_WRAPPER = $(PATH_LIB)/libb15fwrp.a
2022-12-06 18:15:12 +00:00
OUT_PLOTTY = $(PATH_BIN)/plotty
OUT_DOC = ../../docs/html
2019-05-16 07:59:34 +00:00
# compiling & linking parameters
2022-12-06 18:15:12 +00:00
CFLAGS = -std=c++14 -O3 -Wall -Wextra -fPIC
LDFLAGS_DRV = -lcurses -lpthread
LDFLAGS_CLI = $(LDFLAGS_DRV) -lb15fdrv
2019-05-16 07:59:34 +00:00
# objects
2022-12-06 18:15:12 +00:00
OBJECTS_DRV = drv/usart.o drv/b15f.o drv/plottyfile.o drv/dot.o
OBJECTS_CLI = cli.o ui/view.o ui/view_selection.o ui/view_promt.o ui/view_info.o ui/view_monitor.o ui/ui.o
OBJECTS_WRAPPER = wrapper/b15f.o
2019-05-16 07:59:34 +00:00
2019-03-26 08:57:01 +00:00
2019-05-16 07:59:34 +00:00
# *** TARGETS ***
2019-03-26 08:57:01 +00:00
2019-06-04 08:38:56 +00:00
.PHONY: $(OUT_TMP_DRV) clean help
2022-12-06 19:29:20 +00:00
all: drv cli wrapper
2019-05-15 08:51:39 +00:00
2019-06-28 12:21:10 +00:00
drv: commit_hash $(OBJECTS_DRV) $(OUT_TMP_DRV)
2019-05-15 11:36:40 +00:00
2022-12-06 19:29:20 +00:00
wrapper: drv $(OBJECTS_WRAPPER)
@echo "Linking wrapper library..."
@mkdir -p ../lib
$(PATH_AR) rcs $(OUT_TMP_WRAPPER) $(OBJECTS_WRAPPER)
2019-04-03 13:20:49 +00:00
2019-05-16 07:59:34 +00:00
cli: drv $(OBJECTS_CLI)
2019-05-15 09:06:52 +00:00
@echo "Linking cli..."
2019-05-16 07:59:34 +00:00
@mkdir -p ../bin
$(PATH_COMPILER) $(CFLAGS) $(OBJECTS_CLI) -L $(PATH_TMP_LIB) -o $(OUT_TMP_CLI) $(LDFLAGS_CLI)
@bash -c 'if [ ! -f "$(OUT_DRV)" ]; then echo -e "\n*** Warning ***: driver not installed\nType \"sudo make install\" to install or update b15fdrv."; fi'
2019-03-26 08:57:01 +00:00
2019-06-07 12:38:05 +00:00
doc: style
2019-05-23 13:08:54 +00:00
@echo "Creating documentation with doxygen..."
2019-05-22 08:46:23 +00:00
$(PATH_DOXYGEN) doxygen-cfg
2019-05-23 13:08:54 +00:00
@echo problems found: `($(PATH_DOXYGEN) doxygen-cfg 3>&2 2>&1 1>&3) 2>/dev/null | wc -l`
2019-06-28 12:21:10 +00:00
$(OUT_TMP_DRV):
@echo "Linking driver library..."
@mkdir -p ../lib
$(PATH_COMPILER) $(CFLAGS) $(OBJECTS_DRV) -shared -o $(OUT_TMP_DRV) $(LDFLAGS_CLI_DRV)
2019-05-23 13:08:54 +00:00
style:
@echo "Formatting source code with astyle..."
2019-06-11 13:01:06 +00:00
-astyle --recursive --style=allman *.cpp,*.h,*.c,*.hpp
2019-05-22 08:46:23 +00:00
install:
2019-05-16 07:59:34 +00:00
@echo "Installing driver..."
@mkdir -p $(PATH_INCLUDE)
2022-12-06 19:29:20 +00:00
@mkdir -p $(PATH_INCLUDE_WRAPPER)
2019-05-16 08:17:48 +00:00
cp $(OUT_TMP_DRV) $(OUT_DRV)
cp $(OUT_TMP_CLI) $(OUT_CLI)
2022-12-06 19:29:20 +00:00
cp $(OUT_TMP_WRAPPER) $(OUT_WRAPPER)
2019-05-16 08:17:48 +00:00
cp $(OUT_TMP_PLOTTY) $(OUT_PLOTTY)
2019-05-16 07:59:34 +00:00
cp drv/*.h $(PATH_INCLUDE)
2022-12-06 19:29:20 +00:00
cp wrapper/*.h $(PATH_INCLUDE_WRAPPER)
2019-05-15 13:39:16 +00:00
2019-05-23 10:55:56 +00:00
uninstall:
2019-05-16 08:17:48 +00:00
@echo "Uninstalling driver..."
2022-12-06 19:29:20 +00:00
rm -rf $(OUT_DRV) $(OUT_CLI) $(OUT_WRAPPER) $(OUT_PLOTTY) $(PATH_INCLUDE)
2019-05-16 08:17:48 +00:00
2019-03-26 08:57:01 +00:00
help:
2019-05-15 09:06:52 +00:00
@echo "This Makefile compiles the b15f driver lib and command line interface (CLI):"
2019-05-16 08:02:26 +00:00
@echo "make ......... to compile all (no install)"
2019-05-15 09:06:52 +00:00
@echo "make drv ..... to compile the b15f driver lib"
2019-05-15 13:39:16 +00:00
@echo "make cli ..... to compile the cli"
2019-05-16 08:02:26 +00:00
@echo "make install . to install or update the lib and headers on this machine"
2019-05-16 08:17:48 +00:00
@echo "make uninstall to remove the lib and headers on this machine"
2019-04-03 13:20:49 +00:00
@echo "make clean ... to delete objects and executables"
2019-06-04 08:38:56 +00:00
2019-03-26 08:57:01 +00:00
clean:
@echo "Cleaning..."
2022-12-06 19:29:20 +00:00
-rm -f $(OBJECTS_DRV) $(OBJECTS_CLI) $(OBJECTS_WRAPPER) $(OUT_TMP_CLI) $(OUT_TMP_DRV) $(OUT_TMP_WRAPPER)
2019-06-11 13:01:06 +00:00
-rm -rf $(OUT_DOC)
-find . -type f -name '*.orig' -delete
2019-03-26 08:57:01 +00:00
2019-06-28 12:21:10 +00:00
commit_hash:
@echo "Updating commit hash..."
2019-07-04 09:31:30 +00:00
@bash -c 'echo -e "#ifndef COMMIT_HASH_H\n#define COMMIT_HASH_H\nconst char COMMIT_HASH[] = \"`git log --pretty=format:'%H' -n 1`\";\n#endif // COMMIT_HASH_H" > drv/commit_hash.h'
2019-06-28 12:21:10 +00:00
2019-03-26 08:57:01 +00:00
.cpp.o:
2019-05-16 07:59:34 +00:00
$(PATH_COMPILER) $(CFLAGS) -c $< -o $@