mirror of
https://github.com/Karmaz95/Snake_Apple.git
synced 2026-06-04 17:48:01 +02:00
58 lines
1.8 KiB
Makefile
58 lines
1.8 KiB
Makefile
# Compiler and flags
|
|
CC = gcc
|
|
CFLAGS = -Wall -Wextra -O2 # Enable warnings and basic optimization
|
|
FRAMEWORKS = -framework Foundation
|
|
|
|
# Binary names and paths
|
|
SERVICE_NAME = crimson_xpc_service
|
|
CLIENT_NAME = crimson_xpc_client
|
|
INSTALL_PATH = /usr/local/bin
|
|
LAUNCHD_PATH = /Library/LaunchDaemons
|
|
PLIST_NAME = com.crimson.xpc.message_service.plist
|
|
|
|
# Source files
|
|
SERVICE_SRC = crimson_xpc_service.c
|
|
CLIENT_SRC = crimson_xpc_client.c
|
|
|
|
# Default target builds both executables
|
|
all: $(SERVICE_NAME) $(CLIENT_NAME)
|
|
|
|
# Build the XPC service
|
|
$(SERVICE_NAME): $(SERVICE_SRC)
|
|
$(CC) $(CFLAGS) -o $@ $< $(FRAMEWORKS)
|
|
|
|
# Build the XPC client
|
|
$(CLIENT_NAME): $(CLIENT_SRC)
|
|
$(CC) $(CFLAGS) -o $@ $< $(FRAMEWORKS)
|
|
|
|
# Install everything (requires sudo)
|
|
install: all
|
|
@echo "Installing XPC service and client..."
|
|
sudo cp $(SERVICE_NAME) $(INSTALL_PATH)/
|
|
sudo cp $(PLIST_NAME) $(LAUNCHD_PATH)/
|
|
sudo launchctl unload $(LAUNCHD_PATH)/$(PLIST_NAME) 2>/dev/null || true
|
|
sudo launchctl load $(LAUNCHD_PATH)/$(PLIST_NAME)
|
|
@echo "Installation complete"
|
|
|
|
# Clean up compiled files
|
|
clean:
|
|
rm -f $(SERVICE_NAME) $(CLIENT_NAME)
|
|
|
|
# Uninstall everything (requires sudo)
|
|
uninstall:
|
|
@echo "Uninstalling XPC service and client..."
|
|
sudo launchctl unload $(LAUNCHD_PATH)/$(PLIST_NAME) 2>/dev/null || true
|
|
sudo rm -f $(INSTALL_PATH)/$(SERVICE_NAME)
|
|
sudo rm -f $(LAUNCHD_PATH)/$(PLIST_NAME)
|
|
@echo "Uninstallation complete"
|
|
|
|
# Help target to show available commands
|
|
help:
|
|
@echo "Available targets:"
|
|
@echo " make all - Build both service and client"
|
|
@echo " make install - Install and load the service (requires sudo)"
|
|
@echo " make clean - Remove compiled files"
|
|
@echo " make uninstall - Remove installed files (requires sudo)"
|
|
|
|
# Declare our phony targets (targets that don't create files)
|
|
.PHONY: all install clean uninstall help |