Files
brightness/build/Makefile
2024-09-29 02:33:45 -04:00

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