-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
78 lines (63 loc) · 1.97 KB
/
Copy pathMakefile
File metadata and controls
78 lines (63 loc) · 1.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# Pizza System Makefile
CC = gcc
CFLAGS = -Wall -Wextra -std=c99
SRCDIR = src
BUILDDIR = build
OBJDIR = $(BUILDDIR)/obj
# Source files
CONSOLE_SOURCES = $(SRCDIR)/main.c $(SRCDIR)/utils.c $(SRCDIR)/startup.c $(SRCDIR)/admin.c \
$(SRCDIR)/notifications.c $(SRCDIR)/orders.c $(SRCDIR)/client.c \
$(SRCDIR)/client_operations.c $(SRCDIR)/order_system.c
GUI_SOURCES = $(SRCDIR)/gui_main.c
# Object files
CONSOLE_OBJECTS = $(CONSOLE_SOURCES:$(SRCDIR)/%.c=$(OBJDIR)/%.o)
GUI_OBJECTS = $(GUI_SOURCES:$(SRCDIR)/%.c=$(OBJDIR)/%.o)
# Executables
CONSOLE_TARGET = $(BUILDDIR)/pizza_system
GUI_TARGET = $(BUILDDIR)/pizza_system_gui
# Windows executable extension
ifeq ($(OS),Windows_NT)
CONSOLE_TARGET := $(CONSOLE_TARGET).exe
GUI_TARGET := $(GUI_TARGET).exe
GUI_LDFLAGS = -mwindows -luser32 -lgdi32
else
GUI_LDFLAGS =
endif
.PHONY: all console gui clean directories
# Default target
all: console gui
# Console version
console: directories $(CONSOLE_TARGET)
# GUI version
gui: directories $(GUI_TARGET)
# Create necessary directories
directories:
@mkdir -p $(BUILDDIR)
@mkdir -p $(OBJDIR)
# Console executable
$(CONSOLE_TARGET): $(CONSOLE_OBJECTS)
@echo "Linking console version..."
$(CC) $(CONSOLE_OBJECTS) -o $@
@echo "Console build complete! Run: $@"
# GUI executable
$(GUI_TARGET): $(GUI_OBJECTS)
@echo "Linking GUI version..."
$(CC) $(GUI_OBJECTS) -o $@ $(GUI_LDFLAGS)
@echo "GUI build complete! Run: $@"
# Compile source files to object files
$(OBJDIR)/%.o: $(SRCDIR)/%.c
@echo "Compiling $<..."
$(CC) $(CFLAGS) -c $< -o $@
# Clean build artifacts
clean:
@echo "Cleaning build artifacts..."
@rm -rf $(BUILDDIR)
@echo "Clean complete!"
# Help target
help:
@echo "Available targets:"
@echo " all - Build both console and GUI versions (default)"
@echo " console - Build console version only"
@echo " gui - Build GUI version only"
@echo " clean - Remove all build artifacts"
@echo " help - Show this help message"