|
- #
- # RTES_final makefile
- #
- # Author: Christos Choutouridis AEM:8997
- # email: cchoutou@ece.auth.gr
- #
-
- #
- # Edit the paths to match your environment
- # Currently supported:
- # Windows (we prefer Cygwin)
- # GNU/Linux
- #
- LINUX_CXX := /usr/local/bin/cross-pi0/bin/arm-linux-gnueabihf-gcc
- WIN_CXX := D:\SysGCC\raspberry\bin\arm-linux-gnueabihf-gcc.exe
-
- # RTES related stuff for upload
- SCP := scp
- PIUSER := root
- PI := 192.168.0.1
- RTES_PATH := /usr/local/bin/
-
- # === Compilation related stuff ===
- CXXFLAGS := -std=c11 -Wall -Wextra -Werror
- CXXFEXTR := -c -fmessage-length=0
- LDFLAGS := -lm -lpthread
- BUILD := ./bin
- OBJ_DIR := $(BUILD)/obj
- APP_DIR := $(BUILD)
- TARGET := rtes_final
- SRC := $(wildcard src/*.c)
-
- # === OS selection ===
- ifeq ($(OS),Windows_NT)
- # Windows, select exe path
- CXX := $(WIN_CXX)
- else
- # Linux filter [currently only GNU/Linux]
- UNAME := $(shell uname)
- ifeq ($(UNAME),Linux)
- CXX := $(LINUX_CXX)
- else
- ERR := $(error Not supporting OS)
- endif
- endif
-
- # === MakeFile body ===
- OBJECTS := $(SRC:%.c=$(OBJ_DIR)/%.o)
-
- $(OBJ_DIR)/%.o: %.c
- @mkdir -p $(@D)
- $(CXX) $(CXXFEXTR) $(CXXFLAGS) -o $@ -c $<
-
- $(APP_DIR)/$(TARGET): $(OBJECTS)
- @mkdir -p $(@D)
- $(CXX) $(CXXFLAGS) $(LDFLAGS) -o $(APP_DIR)/$(TARGET) $(OBJECTS)
-
- # === Rules ===
- rtes_final: build $(APP_DIR)/$(TARGET)
-
- clean:
- -@rm -rvf $(OBJ_DIR)/*
- -@rm -rvf $(APP_DIR)/*
-
- build:
- @mkdir -p $(APP_DIR)
- @mkdir -p $(OBJ_DIR)
-
- debug: CXXFLAGS += -DDEBUG -g3
- debug: rtes_final
-
- release: CXXFLAGS += -O2
- release: rtes_final
-
- upload:
- $(SCP) $(BUILD)/$(TARGET) $(PIUSER)@$(PI):$(RTES_PATH)
-
- all: clean release upload
-
- .PHONY: rtes_final build debug release upload clean all
-
|