-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
133 lines (112 loc) · 3.64 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
# Makefile for etinker-ui
BUILD_OS := $(shell uname -o)
DEBIAN := $(shell dpkg-architecture 2>/dev/null)
ifeq ($(DEBIAN),)
# Generic Linux host system
HOST_ARCH := $(shell uname -m 2>/dev/null)
else
# Debian/Ubuntu host system
HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_GNU_CPU 2>/dev/null)
endif
CXX = g++
TARGET_EXE = etinker-ui
FLUID_SOURCES = $(shell ls *.fl 2>/dev/null)
FLUID_OBJECTS = $(patsubst %.fl,%.o,$(FLUID_SOURCES))
FLUID_CPP = $(patsubst %.fl,%.cpp,$(FLUID_SOURCES))
FLUID_CPP += $(patsubst %.fl,%.h,$(FLUID_SOURCES))
SOURCES = $(shell ls *.cpp 2>/dev/null)
SOURCES_EXTRA = Makefile
SOURCES_EXTRA += $(FLUID_SOURCES)
SOURCES_EXTRA += $(shell ls *.h 2>/dev/null)
OBJECTS = $(patsubst %.cpp,%.o,$(SOURCES))
DEBUG = yes
CXXFLAGS = -g
CXXFLAGS += -D_REENTRANT
CXXFLAGS += $(shell fltk-config --use-images --use-cairo --cxxflags 2>/dev/null)
CXXFLAGS += -I.
LDFLAGS = -L/lib -L/usr/lib
ifneq ($(DEBIAN),)
LDFLAGS += \
-L/lib/$(shell dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null) \
-L/usr/lib/$(shell dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null)
endif
LDLIBS = -lc -lrt -lpthread -lz
LDLIBS += $(shell fltk-config --use-images --use-cairo --ldflags 2>/dev/null)
.PHONY: all
all: $(TARGET_EXE)
$(TARGET_EXE): $(FLUID_CPP) $(OBJECTS) $(SOURCES_EXTRA)
$(CXX) $(LDFLAGS) $(OBJECTS) -o $@ $(LDLIBS)
%.o: %.cpp | /usr/bin/fluid
$(CXX) $(CXXFLAGS) -o $@ -c $<
%.cpp %.h: %.fl | /usr/bin/fluid
@fluid -c $<
.PHONY: fltk
fltk: /usr/bin/fluid
/usr/bin/fluid: fltk-git-check
@if ! [ -n "`which cmake 2>/dev/null`" ]; then \
printf "***** 'cmake' IS MISSING *****\n"; \
exit 2; \
fi
(cd fltk && \
mkdir -p build && cd build &&\
cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib/$(shell dpkg-architecture -qDEB_HOST_MULTIARCH 2>/dev/null) \
-DCMAKE_BUILD_TYPE=Release \
-DFLTK_BUILD_SHARED_LIBS=on \
-DFLTK_GRAPHICS_CAIRO=on -DFLTK_OPTION_CAIRO_EXT=on -DFLTK_OPTION_CAIRO_WINDOW=on -DFLTK_USE_PANGO=on \
-DFLTK_BUILD_HTML_DOCS=on -DFLTK_BUILD_FLUID_DOCS=on -DFLTK_BUILD_PDF_DOCS=on \
-DFLTK_OPTION_OPTIM=-fPIC && \
make && \
make docs && \
sudo make install)
@if ! [ -f /usr/bin/fluid ]; then \
printf "***** FLTK BUILD FAILED *****\n"; \
exit 2; \
fi
fltk-%:
@if [ -d fltk/build ] && [ -f fltk/build/Makefile ]; then \
if [ "install" = "`echo $(*F)|grep -o install`" ]; then \
(cd fltk/build && sudo make $(*F)); \
else \
(cd fltk/build && make $(*F)); \
fi; \
fi
fltk-git-%:
@if ! [ -d fltk ]; then \
git clone https://github.com/fltk/fltk; \
if ! [ -d fltk ]; then \
printf "***** FLTK GIT CLONE FAILED *****\n"; \
exit 2; \
fi; \
else \
if ! [ "check" = "$(*F)" ]; then \
(cd fltk && git $(*F)); \
fi; \
fi
.PHONY: clean
clean:
$(RM) $(OBJECTS)
$(RM) $(TARGET_EXE)
.PHONY: distclean
distclean: clean
$(RM) -r fltk/build
.PHONY: env
env:
@printf "========================================================================\n"
@printf "TARGET_EXE : $(TARGET_EXE)\n"
@printf "BUILD_OS : $(BUILD_OS)\n"
@printf "HOST_ARCH : $(HOST_ARCH)\n"
@printf "CXX : $(CXX)\n"
@printf "CXXFLAGS : $(CXXFLAGS)\n"
@printf "LDLIBS : $(LDLIBS)\n"
@printf "LDFLAGS : $(LDFLAGS)\n"
@printf "SOURCES : $(SOURCES)\n"
@printf "SOURCES_EXTRA : $(SOURCES_EXTRA)\n"
@printf "OBJECTS : $(OBJECTS)\n"
@printf "FLUID_SOURCES : $(FLUID_SOURCES)\n"
@printf "FLUID_OBJECTS : $(FLUID_OBJECTS)\n"
@printf "FLUID_CPP : $(FLUID_CPP)\n"
@printf "========================================================================\n"
@printf "PATH : $(PATH)\n"
@printf "========================================================================\n"