63 lines
1.2 KiB
Makefile
63 lines
1.2 KiB
Makefile
# Makefile located in build/ directory
|
|
|
|
# Compiler
|
|
CC = gcc
|
|
|
|
# Compiler Flags
|
|
CFLAGS = -I../include -Wall
|
|
|
|
# Linker Flags
|
|
LDFLAGS = -lX11 -lm
|
|
|
|
# Directories
|
|
SRC_DIR = ../src
|
|
OBJ_DIR = ../Obj
|
|
BUILD_DIR = .
|
|
INCLUDE_DIR = ../include
|
|
|
|
# Source Files
|
|
SRC = $(SRC_DIR)/main.c $(SRC_DIR)/brightness.c
|
|
|
|
# Object Files
|
|
OBJ = $(patsubst $(SRC_DIR)/%.c, $(OBJ_DIR)/%.o, $(SRC))
|
|
|
|
# Target Binary
|
|
TARGET = brightness
|
|
|
|
# Installation Directory
|
|
PREFIX ?= /usr/local
|
|
BIN_DIR = $(PREFIX)/bin
|
|
|
|
# Default Target
|
|
all: $(TARGET)
|
|
|
|
# Link Object Files to Create Binary
|
|
$(TARGET): $(OBJ)
|
|
$(CC) -o $(BUILD_DIR)/$@ $^ $(LDFLAGS)
|
|
|
|
# Compile Source Files to Object Files
|
|
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.c | $(OBJ_DIR)
|
|
$(CC) $(CFLAGS) -c $< -o $@
|
|
|
|
# Create Object Directory if it Doesn't Exist
|
|
$(OBJ_DIR):
|
|
mkdir -p $(OBJ_DIR)
|
|
|
|
# Install the Binary to /usr/local/bin/
|
|
install: $(TARGET)
|
|
@echo "Installing $(TARGET) to $(BIN_DIR)/$(TARGET)"
|
|
mkdir -p $(BIN_DIR)
|
|
install -m 755 $(BUILD_DIR)/$(TARGET) $(BIN_DIR)/$(TARGET)
|
|
|
|
# Uninstall the Binary from /usr/local/bin/
|
|
uninstall:
|
|
@echo "Uninstalling $(TARGET) from $(BIN_DIR)/$(TARGET)"
|
|
rm -f $(BIN_DIR)/$(TARGET)
|
|
|
|
# Clean Build Artifacts
|
|
clean:
|
|
rm -f $(OBJ) $(BUILD_DIR)/$(TARGET)
|
|
|
|
# Phony Targets
|
|
.PHONY: all clean install uninstall
|