summaryrefslogtreecommitdiffstats
path: root/Makefile
blob: ab34f9b5d6c8cd6983f5c4b634bb9e92deb02894 (plain) (blame)
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
#! /usr/bin/make -f

################################################################################
################################################################################
# Beautify output
Q	= @

export	Q

################################################################################
# Do not print "Entering directory ..."
MAKEFLAGS += --no-print-directory

################################################################################
# directories

MAIN_DIR	= $(CURDIR)

BIN_DIR		= $(CURDIR)/bin
BUILD_DIR	= $(CURDIR)/build
MK_DIR		= $(CURDIR)/mk
SRC_DIR		= $(CURDIR)/src
SHARE_DIR	= $(CURDIR)/share

INSTALL_BIN_DIR		= /usr/local/bin
INSTALL_SHARE_DIR	= /usr/local/share

export	MAIN_DIR

export	BUILD_DIR
export	MK_DIR
export	SRC_DIR

################################################################################
# Make variables (CC, etc...)
  CC	= gcc-10
  AS	= as
  SZ	= size

export	CC
export	AS
export	SZ

################################################################################
# cflags
CFLAGS_STD	= -std=gnu2x
CFLAGS_W	= -Wall -Wextra -Wno-format -Werror
CFLAGS_O	= -O3 -march=x86-64 -flto
CFLAGS_PKG	= `pkg-config --cflags libalx-base`
CFLAGS_PKG	+= `pkg-config --cflags libalx-cv`
CFLAGS		= $(CFLAGS_W) $(CFLAGS_O) $(CFLAGS_PKG)

export	CFLAGS

################################################################################
# libs

LIBS_OPT	= -O3
LIBS_OPT       += -flto
LIBS_OPT       += -fuse-linker-plugin

LIBS_PKG_A	+= `pkg-config --libs --static libalx-base`

LIBS_PKG_SO	+= `pkg-config --libs libalx-cv`

LIBS_PKG	= -Wl,-Bstatic $(LIBS_PKG_A) -Wl,-Bdynamic $(LIBS_PKG_SO)

LIBS		= -Wno-error
LIBS           += $(LIBS_OPT)
LIBS           += $(LIBS_PKG)

export	LIBS

################################################################################
# compile
.PHONY: all
all:
	$(Q)$(MAKE)	-C $(MK_DIR)

################################################################################
# install




.PHONY: install
install: | inst-bin
install: | inst-share
install: | inst-scripts

.PHONY: inst-scripts
inst-scripts:
	$(Q)chmod +x		$(BIN_DIR)/*
	$(Q)mkdir -p		$(DESTDIR)/$(INSTALL_BIN_DIR)/
	@echo	"	CP -rf	$(DESTDIR)/$(INSTALL_BIN_DIR)/*"
	$(Q)cp  -r -f $(v)	$(BIN_DIR)/*				\
					$(DESTDIR)/$(INSTALL_BIN_DIR)/

.PHONY: inst-bin
inst-bin:
	$(Q)mkdir -p		$(DESTDIR)/$(INSTALL_BIN_DIR)/
	@echo	"	CP -f	$(DESTDIR)/$(INSTALL_BIN_DIR)/laundry-symbol-reader"
	$(Q)cp  -f $(v)		$(BUILD_DIR)/laundry-symbol-reader	\
					$(DESTDIR)/$(INSTALL_BIN_DIR)/

.PHONY: inst-share
inst-share:
	$(Q)mkdir -p		$(DESTDIR)/$(INSTALL_SHARE_DIR)/laundry-symbol-reader/
	@echo	"	CP -rf	$(DESTDIR)/$(INSTALL_SHARE_DIR)/laundry-symbol-reader/*"
	$(Q)cp -r -f $(v)	$(SHARE_DIR)/*				\
					$(DESTDIR)/$(INSTALL_SHARE_DIR)/laundry-symbol-reader/


################################################################################
# uninstall
.PHONY: uninstall
uninstall:
	@echo	"	Uninstall:"
	@echo	"	RM -f	$(DESTDIR)/$(INSTALL_BIN_DIR)/laundry-symbol-reader"
	$(Q)rm -f $(v)		$(DESTDIR)/$(INSTALL_BIN_DIR)/laundry-symbol-reader
	@echo	"	RM -rf	$(DESTDIR)/$(INSTALL_SHARE_DIR)/laundry-symbol-reader/"
	$(Q)rm -f -r $(v)	$(DESTDIR)/$(INSTALL_SHARE_DIR)/laundry-symbol-reader/
	@echo	"	Done"


################################################################################
# clean
.PHONY: clean
clean:
	@echo	"	RM	$(BUILD_DIR)"
	$(Q)rm -rf $(v)		$(BUILD_DIR)


################################################################################
######## End of file ###########################################################
################################################################################