-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefileShippedSDL
61 lines (47 loc) · 1.72 KB
/
MakefileShippedSDL
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
CC := g++
CFLAGS := -O2
UPCXX_CC := upcxx $(CFLAGS)
UPCXX_RUNNER := upcxx-run
SDL2_HEADER_PATH := sdl/include
SDL2_LIBRARY_PATH := sdl/lib
SDL2_CFLAGS := -I$(SDL2_HEADER_PATH)
SDL2_LFLAGS := -L$(SDL2_LIBRARY_PATH) -lSDL2
BUILD_DIR := build
TARGET_DIR := target
CLIENT_EXEC := ClientMandelbrot # Also path
CLIENT_SRC := $(shell find $(CLIENT_EXEC) -name *cpp)
CLIENT_OBJS := $(CLIENT_SRC:%.cpp=$(BUILD_DIR)/%.o)
CLIENT_CFLAGS := $(CFLAGS) -I$(CLIENT_EXEC:%=%/ClientMandelbrotLib) $(SDL2_CFLAGS)
CLIENT_LFLAGS := $(SDL2_LFLAGS)
SERVER_EXEC := ServerMandelbrot # Also path
SERVER_SRC := $(shell find $(SERVER_EXEC) -name *cpp)
SERVER_OBJS := $(SERVER_SRC:%.cpp=$(BUILD_DIR)/%.o)
all: client server
run_local: all
@rm -f /tmp/.req /tmp/.resp
@echo Starting Client in background..
LD_LIBRARY_PATH="$(SDL2_LIBRARY_PATH)" ./$(TARGET_DIR)/$(CLIENT_EXEC) &
@echo Started Client.
@echo Starting Server in background..
$(UPCXX_RUNNER) -n $(shell nproc) ./$(TARGET_DIR)/$(SERVER_EXEC) &
@echo Started Server. Nproc count $(shell nproc)
client: $(TARGET_DIR)/$(CLIENT_EXEC)
server: $(TARGET_DIR)/$(SERVER_EXEC)
clean:
rm -rf $(BUILD_DIR) $(TARGET_DIR)
$(TARGET_DIR)/$(CLIENT_EXEC): $(CLIENT_OBJS)
@mkdir -p $(dir $@)
$(CC) $^ -o $@ $(CLIENT_LFLAGS)
$(TARGET_DIR)/$(SERVER_EXEC): $(SERVER_OBJS)
@mkdir -p $(dir $@)
$(UPCXX_CC) $^ -o $@
# Variable substitution is BROKEN ! Couldn't figure out how it works.
# $(BUILD_DIR)/$(CLIENT_EXEC)/%.o:$(CLIENT_EXEC)/%.cpp
build/ClientMandelbrot/%.o:ClientMandelbrot/%.cpp
@mkdir -p $(dir $@)
$(CC) $(CLIENT_CFLAGS) -c $< -o $@
# $(BUILD_DIR)/$(SERVER_EXEC)/%.o:$(SERVER_EXEC)/%.cpp
build/ServerMandelbrot/%.o:ServerMandelbrot/%.cpp
@mkdir -p $(dir $@)
$(UPCXX_CC) -c $< -o $@
.PHONY: all client server clean