1
+ #
2
+ # Options
3
+ #
4
+ # make // standard everything
5
+ # make debug // Give standard binary just with debugging
6
+ # make aqdebug // Compile with extra aqualink debug information like timings
7
+ # make slog // Serial logger
8
+ # make <other> // not documenting
9
+ #
10
+
11
+ # Valid flags for AQ_FLAGS
12
+ AQ_RS16 = true
13
+ AQ_PDA = true
14
+ AQ_ONETOUCH = true
15
+ AQ_IAQTOUCH = true
16
+ # AQ_MEMCMP = true // Not implimented correctly yet.
17
+
18
+ # Turn off threadded net services
19
+ AQ_NO_THREAD_NETSERVICE = false
20
+
21
+ # define the C compiler to use
22
+ CC = gcc
23
+
24
+ # LIBS := -lpthread -lm
25
+ LIBS := -l pthread -l m
26
+ # LIBS := -l pthread -l m -static # Take out -static, just for dev
27
+
28
+ # Standard compile flags
29
+ GCCFLAGS = -Wall -O3
30
+ # GCCFLAGS = -O3
31
+ # GCCFLAGS = -Wall -O3 -Wextra
32
+ # GCCFLAGS = -Wl,--gc-sections,--print-gc-sections
33
+ # GCCFLAGS = -Wall -O3 -ffunction-sections -fdata-sections
34
+
35
+ # Standard debug flags
36
+ DGCCFLAGS = -Wall -O0 -g
37
+
38
+ # Aqualink Debug flags
39
+ # DBGFLAGS = -g -O0 -Wall -fsanitize=address -D AQ_DEBUG -D AQ_TM_DEBUG
40
+ DBGFLAGS = -g -O0 -Wall -D AQ_DEBUG -D AQ_TM_DEBUG
41
+
42
+ # Mongoose flags
43
+ # MGFLAGS = -D MG_DISABLE_MD5 -D MG_DISABLE_HTTP_DIGEST_AUTH -D MG_DISABLE_MD5 -D MG_DISABLE_JSON_RPC
44
+ # Mongoose 6.18 flags
45
+ MGFLAGS = -D MG_ENABLE_HTTP_SSI=0 -D MG_ENABLE_DIRECTORY_LISTING=0 -D MG_ENABLE_HTTP_CGI=0
46
+ # MGFLAGS =
47
+
48
+ # Detect OS and set some specifics
49
+ ifeq ($(OS ) ,Windows_NT)
50
+ # Windows Make.
51
+ RM = del /Q
52
+ MKDIR = mkdir
53
+ FixPath = $(subst /,\,$1)
54
+ else
55
+ UNAME_S := $(shell uname -s)
56
+ # Linux
57
+ ifeq ($(UNAME_S),Linux)
58
+ RM = rm -f
59
+ MKDIR = mkdir -p
60
+ FixPath = $1
61
+ # Get some system information
62
+ PI_OS_VERSION = $(shell cat /etc/os-release | grep VERSION= | cut -d\" -f2)
63
+ $(info OS : $(PI_OS_VERSION ) )
64
+ GLIBC_VERSION = $(shell ldd --version | grep ldd)
65
+ $(info GLIBC build with : $(GLIBC_VERSION ) )
66
+ $(info GLIBC Prefered : 2.24-11+deb9u1 2.24 )
67
+ endif
68
+ # OSX
69
+ ifeq ($(UNAME_S),Darwin)
70
+ endif
71
+ endif
72
+
73
+
74
+ # Main source files
75
+ SRCS = aqualinkd.c utils.c config.c aq_serial.c aq_panel.c aq_programmer.c net_services.c json_messages.c rs_msg_utils.c\
76
+ devices_jandy.c packetLogger.c devices_pentair.c color_lights.c serialadapter.c aq_timer.c aq_scheduler.c web_config.c\
77
+ mongoose.c
78
+
79
+
80
+ AQ_FLAGS =
81
+ # Add source and flags depending on protocols to support.
82
+ ifeq ($(AQ_PDA ) , true)
83
+ SRCS := $(SRCS ) pda.c pda_menu.c pda_aq_programmer.c
84
+ AQ_FLAGS := $(AQ_FLAGS ) -D AQ_PDA
85
+ endif
86
+
87
+ ifeq ($(AQ_ONETOUCH ) , true)
88
+ SRCS := $(SRCS ) onetouch.c onetouch_aq_programmer.c
89
+ AQ_FLAGS := $(AQ_FLAGS ) -D AQ_ONETOUCH
90
+ endif
91
+
92
+ ifeq ($(AQ_IAQTOUCH ) , true)
93
+ SRCS := $(SRCS ) iaqtouch.c iaqtouch_aq_programmer.c
94
+ AQ_FLAGS := $(AQ_FLAGS ) -D AQ_IAQTOUCH
95
+ endif
96
+
97
+ ifeq ($(AQ_RS16 ) , true)
98
+ AQ_FLAGS := $(AQ_FLAGS ) -D AQ_RS16
99
+ endif
100
+
101
+ ifeq ($(AQ_MEMCMP ) , true)
102
+ AQ_FLAGS := $(AQ_FLAGS ) -D AQ_MEMCMP
103
+ endif
104
+
105
+ ifeq ($(AQ_NO_THREAD_NETSERVICE ) , true)
106
+ AQ_FLAGS := $(AQ_FLAGS ) -D AQ_NO_THREAD_NETSERVICE
107
+ endif
108
+
109
+
110
+ # Put all flags together.
111
+ CFLAGS = $(GCCFLAGS ) $(AQ_FLAGS ) $(MGFLAGS )
112
+ DFLAGS = $(DGCCFLAGS ) $(AQ_FLAGS ) $(MGFLAGS )
113
+ DBG_CFLAGS = $(DBGFLAGS ) $(AQ_FLAGS ) $(MGFLAGS )
114
+
115
+ # Other sources.
116
+ DBG_SRC = $(SRCS ) debug_timer.c
117
+ SL_SRC = serial_logger.c aq_serial.c utils.c packetLogger.c rs_msg_utils.c
118
+
119
+ # Build durectories
120
+ OBJ_DIR := ./build
121
+ DBG_OBJ_DIR := $(OBJ_DIR ) /debug
122
+ SL_OBJ_DIR := $(OBJ_DIR ) /slog
123
+
124
+ # Object files
125
+ OBJ_FILES := $(patsubst % .c,$(OBJ_DIR ) /% .o,$(SRCS ) )
126
+ DBG_OBJ_FILES := $(patsubst % .c,$(DBG_OBJ_DIR ) /% .o,$(DBG_SRC ) )
127
+ SL_OBJ_FILES := $(patsubst % .c,$(SL_OBJ_DIR ) /% .o,$(SL_SRC ) )
128
+
129
+
130
+ # define the executable file
131
+ MAIN = ./release/aqualinkd
132
+ SLOG = ./release/serial_logger
133
+ DEBG = ./release/aqualinkd-debug
134
+ # LOGR = ./release/log_reader
135
+ # PLAY = ./release/aqualinkd-player
136
+
137
+
138
+ # Rules to pass to make.
139
+ all : $(MAIN ) $(SLOG )
140
+ $(info $(MAIN ) has been compiled)
141
+ $(info $(SLOG ) has been compiled)
142
+
143
+ slog : $(SLOG )
144
+ $(info $(SLOG ) has been compiled)
145
+
146
+ aqdebug : $(DEBG )
147
+ $(info $(DEBG ) has been compiled)
148
+
149
+ # debug, Just change compile flags and call MAIN
150
+ debug : CFLAGS = $(DFLAGS )
151
+ debug : $(MAIN ) $(SLOG )
152
+ $(info $(MAIN ) has been compiled (** DEBUG ** ) )
153
+ $(info $(SLOG ) has been compiled (** DEBUG ** ) )
154
+
155
+ install : $(MAIN )
156
+ ./release/install.sh
157
+
158
+
159
+ # Rules to compile
160
+ $(OBJ_DIR ) /% .o : % .c | $(OBJ_DIR )
161
+ $(CC ) $(CFLAGS ) $(INCLUDES ) -c -o $@ $<
162
+
163
+ $(DBG_OBJ_DIR ) /% .o : % .c | $(DBG_OBJ_DIR )
164
+ $(CC ) $(DBG_CFLAGS ) $(INCLUDES ) -c -o $@ $<
165
+
166
+ $(SL_OBJ_DIR ) /% .o : % .c | $(SL_OBJ_DIR )
167
+ $(CC ) $(CFLAGS ) $(INCLUDES ) -c -o $@ $<
168
+
169
+ # Rules to link
170
+ $(MAIN ) : $(OBJ_FILES )
171
+ $(CC ) $(CFLAGS ) $(INCLUDES ) $(LIBS ) -o $@ $^
172
+
173
+ $(DEBG ) : $(DBG_OBJ_FILES )
174
+ $(CC ) $(DBG_CFLAGS ) $(INCLUDES ) $(LIBS ) -o $@ $^
175
+
176
+ $(SLOG ) : CFLAGS := $(CFLAGS ) -D SERIAL_LOGGER
177
+ $(SLOG ) : $(SL_OBJ_FILES )
178
+ $(CC ) $(CFLAGS ) $(INCLUDES ) $(LIBS ) -o $@ $^
179
+
180
+ # Rules to make object directories.
181
+ $(OBJ_DIR ) :
182
+ $(MKDIR ) $@
183
+
184
+ $(SL_OBJ_DIR ) :
185
+ $(MKDIR ) $@
186
+
187
+ $(DBG_OBJ_DIR ) :
188
+ $(MKDIR ) $@
189
+
190
+
191
+ # Clean rules
192
+ .PHONY : clean
193
+ clean :
194
+ $(RM ) * .o * ~ $(MAIN ) $(MAIN_U ) $(PLAY ) $(PL_EXOBJ ) $(DEBG )
195
+ $(RM ) $(wildcard * .o) $(wildcard * ~) $(OBJ_FILES ) $(DBG_OBJ_FILES ) $(SL_OBJ_FILES ) $(MAIN ) $(MAIN_U ) $(PLAY ) $(PL_EXOBJ ) $(LOGR ) $(PLAY ) $(DEBG )
196
+
197
+
198
+
199
+
200
+
201
+ define DO_NOT_USE
202
+
203
+ # OLD MAKEFILE, STILL NEED TO MOVE THE BELOW OVER TO NEW Makefile
204
+ LOGR = ./release/log_reader
205
+ PLAY = ./release/aqualinkd-player
206
+
207
+
208
+
1
209
#
2
210
# Options
3
211
#
@@ -48,15 +256,18 @@ DGCCFLAGS = -Wall -O0 -g
48
256
DBGFLAGS = -g -O0 -Wall -D AQ_DEBUG -D AQ_TM_DEBUG
49
257
50
258
# Mongoose flags
51
- MGFLAGS = -D MG_DISABLE_MD5 -D MG_DISABLE_HTTP_DIGEST_AUTH -D MG_DISABLE_MD5 -D MG_DISABLE_JSON_RPC
259
+ # MGFLAGS = -D MG_DISABLE_MD5 -D MG_DISABLE_HTTP_DIGEST_AUTH -D MG_DISABLE_MD5 -D MG_DISABLE_JSON_RPC
260
+ # Mongoose 6.18 flags
261
+ MGFLAGS = -D MG_ENABLE_HTTP_SSI=0 -D MG_ENABLE_DIRECTORY_LISTING=0 -D MG_ENABLE_HTTP_CGI=0
52
262
# MGFLAGS =
53
263
54
264
# define the C source files
55
265
# SRCS = aqualinkd.c utils.c config.c aq_serial.c init_buttons.c aq_programmer.c net_services.c json_messages.c pda.c pda_menu.c \
56
266
# pda_aq_programmer.c devices_jandy.c onetouch.c onetouch_aq_programmer.c packetLogger.c devices_pentair.c color_lights.c mongoose.c
57
267
58
268
SRCS = aqualinkd.c utils.c config.c aq_serial.c aq_panel.c aq_programmer.c net_services.c json_messages.c rs_msg_utils.c\
59
- devices_jandy.c packetLogger.c devices_pentair.c color_lights.c serialadapter.c aq_timer.c aq_scheduler.c web_config.c mongoose.c
269
+ devices_jandy.c packetLogger.c devices_pentair.c color_lights.c serialadapter.c aq_timer.c aq_scheduler.c web_config.c\
270
+ mongoose.c
60
271
61
272
62
273
AQ_FLAGS =
@@ -110,15 +321,18 @@ SL_OBJS = $(SL_SRC:.c=.o)
110
321
LR_OBJS = $(LR_SRC:.c=.o )
111
322
PL_OBJS = $(PL_SRC:.c=.o )
112
323
324
+
113
325
# define the executable file
114
326
MAIN = ./release/aqualinkd
115
327
SLOG = ./release/serial_logger
116
328
LOGR = ./release/log_reader
117
329
PLAY = ./release/aqualinkd-player
118
330
DEBG = ./release/aqualinkd-debug
119
331
120
- all : $(MAIN )
332
+
333
+ all: $(MAIN ) $(SLOG )
121
334
$(info $(MAIN ) has been compiled)
335
+ $(info $(SLOG ) has been compiled)
122
336
123
337
# debug, Just change compile flags and call MAIN
124
338
debug: CFLAGS = $(DFLAGS )
@@ -134,7 +348,8 @@ slog: $(SLOG)
134
348
135
349
$(SLOG ) : CFLAGS := $(CFLAGS ) -D SERIAL_LOGGER
136
350
$(SLOG ) : $(SL_OBJS )
137
- $(CC ) $(CFLAGS ) $(INCLUDES ) -o $(SLOG ) $(SL_OBJS )
351
+ # $(CC) $(CFLAGS) $(INCLUDES) -o $(SLOG) $(SL_OBJS)
352
+ $(CC ) $(INCLUDES ) -o $(SLOG ) $(SL_OBJS )
138
353
139
354
140
355
# .PHONY: clean_slog_o
@@ -181,7 +396,8 @@ git: clean $(MAIN) $(SLOG)
181
396
# the rule(a .c file) and $@: the name of the target of the rule (a .o file)
182
397
# (see the gnu make manual section about automatic variables)
183
398
.c.o:
184
- $(CC ) $(CFLAGS ) $(INCLUDES ) -c $< -o $@
399
+ $(CC ) $(CFLAGS ) $(INCLUDES ) -c $< -o $@
400
+
185
401
186
402
.PHONY: clean
187
403
clean:
@@ -194,3 +410,7 @@ depend: $(SRCS)
194
410
install: $(MAIN )
195
411
./release/install.sh
196
412
413
+
414
+
415
+ endef
416
+
0 commit comments