forked from cherubrock-seb/PrMers
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
85 lines (67 loc) · 2.23 KB
/
Makefile
File metadata and controls
85 lines (67 loc) · 2.23 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
79
80
81
82
83
84
85
PREFIX ?= /usr/local
TARGET := prmers
SRC_DIR := src
INC_DIR := include
SRCS := $(shell find $(SRC_DIR) -type f -name '*.cpp')
OBJS := $(patsubst $(SRC_DIR)/%.cpp,$(SRC_DIR)/%.o,$(SRCS))
UNAME_S := $(shell uname -s)
VERSION := $(shell git describe --tags --always)
PACKAGE := prmers-$(VERSION)
WARN := -Wall -Wextra -Wsign-conversion
CPPFLAGS := -I$(INC_DIR) -I$(INC_DIR)/marin -DGPU
MARCH := native
OPT := -O3 -ffinite-math-only -march=$(MARCH)
CXX := g++
CXXFLAGS := -std=c++20 $(WARN) $(OPT) -flto=auto
LDFLAGS := -flto=auto
# Mac
ifeq ($(UNAME_S),Darwin)
CPPFLAGS += -I/System/Library/Frameworks/OpenCL.framework/Headers
LDFLAGS += -framework OpenCL
else
LDFLAGS += -lOpenCL
endif
# Windows
ifeq ($(shell case $(UNAME_S) in (*_NT*) echo 1;; esac),1)
LDFLAGS += -lWs2_32
KERNEL_PATH ?= ./kernels/
else
KERNEL_PATH ?= $(PREFIX)/share/$(TARGET)/
endif
LDFLAGS += -lgmpxx -lgmp
CPPFLAGS += -DKERNEL_PATH=\"$(KERNEL_PATH)\"
.PHONY: all clean install uninstall package
all: $(TARGET)
$(TARGET): $(OBJS)
$(CXX) $(CXXFLAGS) $(CPPFLAGS) $^ -o $@ $(LDFLAGS)
$(SRC_DIR)/%.o: $(SRC_DIR)/%.cpp
@mkdir -p $(dir $@)
$(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $< -o $@
install: $(TARGET)
@if [ "$(KERNEL_PATH)" = "./kernels/" ]; then \
echo "Installation not supported with portable kernel path."; \
exit 1; \
fi
@echo "Installation de $(TARGET) dans $(PREFIX)/bin"
install -d $(DESTDIR)$(PREFIX)/bin
install -m 755 $(TARGET) $(DESTDIR)$(PREFIX)/bin/
@echo "Installation des kernels dans $(KERNEL_PATH)"
install -d $(DESTDIR)$(KERNEL_PATH)
install -m 644 kernels/*.cl $(DESTDIR)$(KERNEL_PATH)
package: $(TARGET)
@if [ "$(KERNEL_PATH)" != "./kernels/" ]; then \
echo "Packaging only supported with portable kernel path."; \
exit 1; \
fi
mkdir -p package/$(PACKAGE)
cp $(TARGET) package/$(PACKAGE)
cp -r kernels package/$(PACKAGE)
ldd $(TARGET) | grep "=> /.[^/]" | awk '{print $$3}' | xargs -- cp -t package/$(PACKAGE)
bsdtar -czvf $(PACKAGE).zip -C package $(PACKAGE)
uninstall:
@echo "Désinstallation de $(TARGET)"
rm -f $(DESTDIR)$(PREFIX)/bin/$(TARGET)
rm -rf $(DESTDIR)$(KERNEL_PATH)
clean:
@echo "Nettoyage des objets et de l'exécutable"
rm -f $(OBJS) $(TARGET)