82 lines
1.7 KiB
Makefile
Executable File
82 lines
1.7 KiB
Makefile
Executable File
#
|
|
# 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
|
|
|