Files
where-are-my-friends/Makefile
2026-02-12 10:23:28 +01:00

73 lines
2.1 KiB
Makefile

CC = cc
CFLAGS = -std=c17
CFLAGS_WARNINGS = -Wall -Wextra
CFLAGS_RELEASE = -O2 -fstack-protector-strong -fpie
CFLAGS_DEBUG = -O0 -ggdb -DDEBUG -fsanitize=address -static-libasan
prefix = /usr/local
exec_prefix = $(prefix)
bindir = $(exec_prefix)/bin
SOURCE_FOLDER = src
SOURCE = main.c
TARGET = wamf
TARGET_DEBUG = wamf-debug
OUTPUT_FOLDER = output
OUTPUT = $(OUTPUT_FOLDER)/$(TARGET)
OUTPUT_DEBUG = $(OUTPUT_FOLDER)/$(TARGET_DEBUG)
REMOTE_USER = root
REMOTE_HOST = innovation.pvv.ntnu.no
REMOTE_DIR = /tmp/wamf
REMOTE_PATH = $(REMOTE_USER)@$(REMOTE_HOST):$(REMOTE_DIR)
.PHONY: all install release debug clean deploy remote-build remote-clean remote-run help
all: $(OUTPUT)
$(OUTPUT_FOLDER):
mkdir $(OUTPUT_FOLDER)
$(OUTPUT) release: $(SOURCE_FOLDER)/$(SOURCE) $(OUTPUT_FOLDER)
$(CC) $(CFLAGS) $(CFLAGS_WARNINGS) $(CFLAGS_RELEASE) -o $(OUTPUT) $(SOURCE_FOLDER)/$(SOURCE)
$(OUTPUT_DEBUG) debug: $(SOURCE_FOLDER)/$(SOURCE) $(OUTPUT_FOLDER)
$(CC) $(CFLAGS) $(CFLAGS_WARNINGS) $(CFLAGS_DEBUG) -o $(OUTPUT_DEBUG) $(SOURCE_FOLDER)/$(SOURCE)
install: $(OUTPUT)
install -Dm755 $(OUTPUT) -t $(bindir)
clean:
rm -rf $(OUTPUT_FOLDER)
deploy:
@echo "Creating remote directory..."
ssh $(REMOTE_USER)@$(REMOTE_HOST) "mkdir -p $(REMOTE_DIR)"
@echo "Copying source files to $(REMOTE_HOST)..."
scp $(SOURCE_FOLDER)/$(SOURCE) $(REMOTE_PATH)/$(SOURCE_FOLDER)
scp Makefile $(REMOTE_PATH)
@echo "Files deployed successfully"
remote-build: deploy
@echo "Building on remote server..."
ssh $(REMOTE_USER)@$(REMOTE_HOST) "cd $(REMOTE_DIR) && make all"
@echo "Build completed on remote server"
remote-clean:
@echo "Cleaning remote build..."
ssh $(REMOTE_USER)@$(REMOTE_HOST) "cd $(REMOTE_DIR) && make clean"
remote-run: remote-build
@echo "Running on remote server..."
ssh $(REMOTE_USER)@$(REMOTE_HOST) "cd $(REMOTE_DIR) && ./$(TARGET)"
help:
@echo "Available targets:"
@echo " all - Build locally"
@echo " clean - Clean local build"
@echo " deploy - Copy files to remote server"
@echo " remote-build - Deploy and build on remote server"
@echo " remote-clean - Clean remote build"
@echo " remote-run - Build and run on remote server"