-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile.llvm
100 lines (82 loc) · 2.57 KB
/
Makefile.llvm
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
# Makefile for fl_imgtk, LLVM ( MacOS )
# (C)2017 Raphael Kim / rageworx@gmail.com
#
# Compiler configure.
GCC = llvm-gcc
GPP = llvm-g++
AR = ar
LT = libtool
RL = ranlib
LIP = lipo
# Check architecture for x86.64 or arm64.
KRNL = $(shell uname -s)
ARCH = $(shell uname -m)
KVER = $(shell uname -r | cut -d . -f1)
# FLTK place
FLTKCFG = fltk-config --use-images
FLTKDIR := $(shell ${FLTKCFG} --cxxflags)
FLTKLIBDIR := $(shell ${FLTKCFG} --ldflags)
# Sources and how it built
# Optimization issue: recommend to build with using -ffast-math option.
# Change if your CPU architecture supports more high technologies.
INCDIR = ./inc
SOURCEDIR = ./src
INSTDIR = /usr/local
OBJDIR = ./obj/Release
OUTBIN = libfl_imgtk.a
OUTDIR = ./lib
DEFINEOPT = -DUSING_INTERPOLATED_ROTATE_FREE
# Additional options
OPTIMIZEOPT = -ffast-math -O3
CPUARCHOPT =
OSOPT =
MACOS_MINVER = 11.0
# architecture flag setting.
# Darwin, kernel 20 (big sur) automatically using universal binary.
ifeq ($(KRNL),Darwin)
ifeq ($(shell test $(KVER) -gt 19; echo $$?),0)
CPUARCHOPT += -arch x86_64 -arch arm64
OSOPT += -mmacosx-version-min=${MACOS_MINVER}
endif
endif
CFLAGS = -I$(INCDIR) -I$(SOURCEDIR) -I$(FLTKDIR) $(DEFINEOPT) $(OPTIMIZEOPT) $(CPUARCHOPT) $(BITSOPT)
CFLAGS += ${OSOPT}
.PHONY: prepare install clean
all: prepare ${OUTDIR}/${OUTBIN}
prepare:
@mkdir -p ${OBJDIR}
@mkdir -p ${OUTDIR}
${OBJDIR}/fl_imgtk_tonemap.o:
@$(GPP) -c ${SOURCEDIR}/fl_imgtk_tonemap.cpp ${CFLAGS} -o $@
${OBJDIR}/fl_smimg.o:
@$(GPP) -c ${SOURCEDIR}/fl_smimg.cpp ${CFLAGS} -o $@
${OBJDIR}/fl_imgtk_clahe.o:
@$(GPP) -c ${SOURCEDIR}/fl_imgtk_clahe.cpp ${CFLAGS} -o $@
${OBJDIR}/fl_imgtk.o:
@$(GPP) -c ${SOURCEDIR}/fl_imgtk.cpp ${CFLAGS} -o $@
${OUTDIR}/${OUTBIN}: ${OBJDIR}/fl_imgtk_tonemap.o ${OBJDIR}/fl_smimg.o ${OBJDIR}/fl_imgtk_clahe.o ${OBJDIR}/fl_imgtk.o
@echo "Generating $@ ..."
@$(AR) -cr $@ $^
@$(RL) $@
@cp -f ${INCDIR}/fl_imgtk.h ${OUTDIR}
clean:
@echo "Cleaning built directories ..."
@rm -rf ${OBJDIR}/*
@rm -rf ${OUTDIR}/${OUTBIN}
install:
@echo "Installing ... "
@if [ ! -e ${OUTDIR}/${OUTBIN} ];then \
echo "Error, build first.";exit 1;fi
@if [ ! -e ${INSTDIR} ];then \
echo "Error, install path ${INSTDIR} not found."; \
exit 1;fi
@cp -rf ${OUTDIR}/${OUTBIN} ${INSTDIR}/lib
@cp -rf ${OUTDIR}/fl_imgtk.h ${INSTDIR}/include
@echo "Done."
uninstall:
@echo "Uninstalling ... "
@if [ ! -e ${INSTDIR}/lib/${OUTBIN} ];then \
rm -rf ${INSTDIR}/lib/${OUTBIN};fi
@if [ ! -e ${INSTDIR}/include/fl_imgtk.h ];then \
rm -rf ${INSTDIR}/include/fl_imgtk.h;fi
@echo "Done."