-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathMAKEFILE
165 lines (138 loc) · 4.97 KB
/
MAKEFILE
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
# Compiler and Flags
CC = gcc
CFLAGS = -Wall -Wextra -pedantic -std=c99
LDFLAGS = -lssl -lcrypto -lcurl
INCLUDES = -Iinclude
# Targets
TARGETS = pmll arc_agi_benchmark pmll_np_solver sat_test api_llama api vector_Matrix
# Deployment and Service Management
INSTALL_DIR = /opt/pmll
DEPLOY_BINARIES = silo_manager api logic_loop
DEPLOY_SCRIPT = deploy.sh
ORCHESTRATION_SCRIPT = ./Orchestrate.sh
# Default target: Build all
.PHONY: all clean debug help deploy start_services stop_services restart_services Orchestrate run deploy_script
all: $(TARGETS)
# Define each binary and its dependencies
pmll: unified_voice.o pml_logic_loop.o memory_silo.o io_socket.o persistence.o cross_talk.o main.o vector_Matrix.o
$(CC) $(CFLAGS) $(LDFLAGS) $(INCLUDES) -o $@ $^
arc_agi_benchmark: arc_agi_benchmark.o vector_Matrix.o io_socket.o
$(CC) $(CFLAGS) $(LDFLAGS) $(INCLUDES) -o $@ $^
pmll_np_solver: pmll_np_solver.o vector_Matrix.o io_socket.o
$(CC) $(CFLAGS) $(LDFLAGS) $(INCLUDES) -o $@ $^
sat_test: SAT_Compare.o Pmll_NP_Solver.o MiniSAT.o generate_3sat_instance.o SAT_Solver.o vector_Matrix.o io_socket.o
$(CC) $(CFLAGS) $(LDFLAGS) $(INCLUDES) -o $@ $^
api_llama: API_Llama.o vector_Matrix.o io_socket.o
$(CC) $(CFLAGS) $(LDFLAGS) $(INCLUDES) -o $@ $^
api: API.o vector_Matrix.o io_socket.o
$(CC) $(CFLAGS) $(LDFLAGS) $(INCLUDES) -o $@ $^
vector_Matrix: vector_Matrix.o io_socket.o
$(CC) $(CFLAGS) $(LDFLAGS) $(INCLUDES) -o $@ $^
# Compile Rules
%.o: %.c
$(CC) $(CFLAGS) $(INCLUDES) -c $<
# Deployment Target using Makefile Deployment Script
deploy: $(TARGETS)
@echo "Deploying binaries to $(INSTALL_DIR)..."
@sudo mkdir -p $(INSTALL_DIR)
@for binary in $(DEPLOY_BINARIES); do \
if [ -f $$binary ]; then \
sudo cp $$binary $(INSTALL_DIR)/; \
echo "Deployed $$binary to $(INSTALL_DIR)"; \
else \
echo "Binary $$binary not found. Skipping..."; \
fi \
done
@echo "Deployment complete."
# Deployment Target Using deploy.sh
deploy_script: $(DEPLOY_SCRIPT)
@echo "Running deployment script $(DEPLOY_SCRIPT)..."
@if [ -f $(DEPLOY_SCRIPT) ]; then \
chmod +x $(DEPLOY_SCRIPT); \
./$(DEPLOY_SCRIPT) || { echo "Deployment script failed. Check logs for details."; exit 1; }; \
else \
echo "Deployment script $(DEPLOY_SCRIPT) not found."; \
exit 1; \
fi
# Start Services
start_services:
@echo "Starting services..."
@$(INSTALL_DIR)/silo_manager & echo $$! > silo_manager.pid
@$(INSTALL_DIR)/api & echo $$! > api.pid
@$(INSTALL_DIR)/logic_loop & echo $$! > logic_loop.pid
@echo "Services started successfully."
# Stop Services
stop_services:
@echo "Stopping services..."
@for pidfile in silo_manager.pid api.pid logic_loop.pid; do \
if [ -f $$pidfile ]; then \
kill `cat $$pidfile` && rm -f $$pidfile; \
echo "Stopped service with PID `cat $$pidfile`"; \
else \
echo "PID file $$pidfile not found. Skipping..."; \
fi \
done
@echo "Services stopped."
# Restart Services
restart_services: stop_services start_services
@echo "Services restarted."
# Run Orchestration Script
Orchestrate:
@if [ -f $(ORCHESTRATION_SCRIPT) ]; then \
echo "Running orchestration script..."; \
chmod +x $(ORCHESTRATION_SCRIPT); \
$(ORCHESTRATION_SCRIPT); \
else \
echo "Error: Orchestration script $(ORCHESTRATION_SCRIPT) not found."; \
exit 1; \
fi
# Run Default Program (pmll)
run: pmll
@echo "Running the default program: pmll..."
./pmll
# Run Commands for Specific Targets
run_arc_agi_benchmark: arc_agi_benchmark
@echo "Running arc_agi_benchmark..."
./arc_agi_benchmark
run_pmll_np_solver: pmll_np_solver
@echo "Running pmll_np_solver..."
./pmll_np_solver
run_sat_test: sat_test
@echo "Running sat_test..."
./sat_test
run_api_llama: api_llama
@echo "Running api_llama..."
./api_llama
run_api: api
@echo "Running api..."
./api
run_vector_Matrix: vector_Matrix
@echo "Running vector_Matrix..."
./vector_Matrix
# Clean Target
clean:
@echo "Cleaning up..."
-rm -f *.o $(TARGETS) *.pid
@echo "Clean complete."
# Debug Build
debug: CFLAGS += -g -O0
debug: $(TARGETS)
# Help Target
help:
@echo "Makefile commands:"
@echo " all Build all targets."
@echo " clean Remove all build artifacts."
@echo " debug Build all targets with debug flags."
@echo " deploy Deploy binaries to $(INSTALL_DIR)."
@echo " deploy_script Run deployment using deploy.sh."
@echo " start_services Start all services."
@echo " stop_services Stop all services."
@echo " restart_services Restart all services."
@echo " Orchestrate Run the orchestration script."
@echo " run Build all and run the pmll executable."
@echo " run_arc_agi_benchmark Run the arc_agi_benchmark executable."
@echo " run_pmll_np_solver Run the Pmll NP Solver."
@echo " run_sat_test Run the SAT test."
@echo " run_api_llama Run the API Llama."
@echo " run_api Run the API."
@echo " run_vector_Matrix Run the vector_Matrix executable."