SRC_DIR=./src OBJ_DIR=./obj BIN_DIR?=./bin INC_DIR=./include $(INHERIT_INCLUDES) CC = arm-linux-gnueabihf-gcc CXX = arm-linux-gnueabihf-g++ CPPFLAGS = -I . CFLAGS =-g -std=gnu99 -O1 -Wall CXXFLAGS = -g -std=gnu++11 -O1 -Wall LDFLAGS = -lrt -lpthread -l :libmagic.so.1 -l :libjpeg.so.62 -l :libz.so -l :libpng16.so.16 NAME=image-viewer BINARY=$(BIN_DIR)/$(NAME) SRC=$(wildcard $(SRC_DIR)/*.c) OBJ=$(patsubst $(SRC_DIR)/%.c, $(OBJ_DIR)/%.o, $(SRC)) CFLAGS+=-I$(INC_DIR) -Wall -Werror CFLAGS+=$(shell sdl2-config --cflags) #TARGET_IP ?= 192.168.202.127 ifeq ($(TARGET_IP),) ifneq ($(filter debug run,$(MAKECMDGOALS)),) $(warning The target IP address is not set) $(warning Run as "TARGET_IP=192.168.202.xxx make run" or modify Makefile) TARGET_IP ?= 192.168.202.xxx endif endif TARGET_DIR ?= /tmp/$(shell whoami) TARGET_USER ?= root # for use from Eduroam network use TARGET_IP=localhost and enable next line SSH_OPTIONS=-o "UserKnownHostsFile=/dev/null" -o "StrictHostKeyChecking=no" -o "Port=2222" SSH_GDB_TUNNEL_REQUIRED=y SSH_OPTIONS+=-i ~/.ssh/mzapo-root-key #SSH_OPTIONS=-i /opt/zynq/ssh-connect/mzapo-root-key #SSH_OPTIONS=-o 'ProxyJump=ctu_login@postel.felk.cvut.cz' .PHONY: all clean all: $(BINARY) $(BINARY): $(OBJ) | $(BIN_DIR) $(CC) $(LDFLAGS) $^ $(LDLIBS) -o $@ $(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(OBJ_DIR) $(CC) $(CFLAGS) -c $< -o $@ $(BIN_DIR) $(OBJ_DIR): echo $(BIN_DIR) mkdir -p $@ dep: depend depend: $(SRC) $(HEADERS) echo '# autogenerated dependencies' > depend ifneq ($(filter %.c,$(SRC)),) $(CC) $(CFLAGS) $(CPPFLAGS) -w -E -M $(filter %.c,$(SRC)) \ >> depend endif ifneq ($(filter %.cpp,$(SRC)),) $(CXX) $(CXXFLAGS) $(CPPFLAGS) -w -E -M $(filter %.cpp,$(SRC)) \ >> depend endif copy-executable: $(BINARY) ssh $(SSH_OPTIONS) -t $(TARGET_USER)@$(TARGET_IP) killall gdbserver 1>/dev/null 2>/dev/null || true ssh $(SSH_OPTIONS) $(TARGET_USER)@$(TARGET_IP) mkdir -p $(TARGET_DIR) scp $(SSH_OPTIONS) $(BINARY) $(TARGET_USER)@$(TARGET_IP):$(TARGET_DIR)/$(NAME) run: copy-executable $(BINARY) ssh $(SSH_OPTIONS) -t $(TARGET_USER)@$(TARGET_IP) $(TARGET_DIR)/$(NAME) ifneq ($(filter -o ProxyJump=,$(SSH_OPTIONS))$(SSH_GDB_TUNNEL_REQUIRED),) SSH_GDB_PORT_FORWARD=-L 12345:127.0.0.1:12345 TARGET_GDB_PORT=127.0.0.1:12345 else TARGET_GDB_PORT=$(TARGET_IP):12345 endif debug: copy-executable $(BINARY) xterm -e ssh $(SSH_OPTIONS) $(SSH_GDB_PORT_FORWARD) -t $(TARGET_USER)@$(TARGET_IP) gdbserver :12345 $(TARGET_DIR)/$(NAME) & sleep 2 echo >connect.gdb "target extended-remote $(TARGET_GDB_PORT)" echo >>connect.gdb "b main" echo >>connect.gdb "c" ddd --debugger gdb-multiarch -x connect.gdb $(BINARY) clean: $(RM) -rv $(BIN_DIR) $(OBJ_DIR) $(RM) -rv .cache $(RM) -rv connect.gdb $(RM) -rv depend -include $(OBJ:.o=.d) -include depend