1
# (C) Igor Calì 23/08/2018 (igor.cali0@gmail.com)
1
# (C) Igor Calì 02/04/2019 (igor.cali0@gmail.com)
3
3
#Product identification
4
4
# DEVMARKER COULD BE EITHER b (beta) or rc (release candidate)
7
VERSION = $(MAJVER)$(DEVMARKER).2
7
VERSION = $(MAJVER)$(DEVMARKER).1
8
8
#TODO separate igilogo if built with __STANDALONE__
9
9
LOGONAME = libigilogo-$(MAJVER).so
10
10
OMBNAME = libigiomb-$(MAJVER).so
118
123
# step 2: codename check
124
ifeq ($(CODENAME),xenial)
125
OMB_USE_SQLCIPHER = 0
119
127
ifeq ($(CODENAME),trusty)
120
128
WXSQLITE_LOCAL = 1
121
129
OMB_MAPVIEWER = 0
130
OMB_USE_SQLCIPHER = 0
123
132
ifeq ($(CODENAME),precise)
125
134
WXSQLITE_LOCAL = 1
126
135
USE_GSETTINGS = 0
127
136
OMB_MAPVIEWER = 0
137
OMB_USE_SQLCIPHER = 0
129
140
# step 3: configuration
130
ifeq ($(WXSQLITE_LOCAL),0)
131
142
#wxsqlite3 configuration
143
ifeq ($(OMB_USE_SQLCIPHER),1)
144
SQL3FLAGS = `pkg-config sqlcipher --cflags` -DSQLITE_HAS_CODEC -D_OMB_USE_CIPHER
145
SQL3LIBS = `pkg-config sqlcipher --libs`
146
OPTION_FLAGS += -D_OMB_USE_CIPHER
148
ifeq ($(WXSQLITE_LOCAL),0)
132
149
SQL3FLAGS = `pkg-config wxsqlite3$(WXSQLITE_VERSIONPOSTFIX) --cflags`
133
150
SQL3LIBS = `pkg-config wxsqlite3$(WXSQLITE_VERSIONPOSTFIX) --libs`
135
152
WXSQLITE_VERSION = 3.4.1
136
WXSQLITE_INCLUDE_FLAGS = -I3rdparty/wxsqlite3-$(WXSQLITE_VERSION)/include
153
SQL3FLAGS = -I3rdparty/wxsqlite3-$(WXSQLITE_VERSION)/include
137
154
SQL3LIBS = lib/libwxcode_$(GTK_VERSION)_wxsqlite3-$(WXVER).so
139
158
ifeq ($(APPINDICATOR),1)
140
159
INDICATOR_FLAGS = -D_OMB_USEINDICATOR
164
183
OBJECTS_LOGO = $(OBJDIR)igilogo/igilogolib.o $(OBJDIR)igilogo/ui/wxsplash.o $(OBJDIR)igilogo/ui/splashf.o # $(OBJDIR)igilogo/ui/thumb.bmp.o $(OBJDIR)igilogo/ui/wxabout.o $(OBJDIR)igilogo/ui/about.o
165
184
OBJECTS_OMB = $(OBJDIR)igiomb/igiomb.o $(OBJDIR)platformsetup.o $(OBJDIR)productversion.o
166
185
OBJECTS_BERR = $(OBJDIR)omberr/omberr.o
167
OBJECTS_OPT = $(OBJDIR)ombopt/ombopt.o $(OBJDIR)ombopt/ui/opzio.o $(OBJDIR)ombopt/ui/wxoption.o $(OBJDIR)ombopt/omb32opt.o
186
OBJECTS_OPT = $(OBJDIR)ombopt/ombopt.o $(OBJDIR)ombopt/ui/opzio.o $(OBJDIR)ombopt/ui/wxoption.o $(OBJDIR)ombopt/omb33opt.o
168
187
ifeq ($(OMBUPDATE),1)
169
188
OBJECTS_OPT += $(OBJDIR)ombopt/ui/wxadvsheet.o
172
191
ifeq ($(OMBUPDATE),1)
173
192
OBJECTS_UPD = $(OBJDIR)ombupdate/ombupdate.o
175
OBJECTS_APP = $(OBJDIR)omb32core.o $(OBJDIR)omb31core.o $(OBJDIR)dbformat.o $(OBJDIR)openmoneybox/openmoneybox.o $(OBJDIR)openmoneybox/ui/funds.o $(OBJDIR)openmoneybox/ui/gainexpense.o \
194
OBJECTS_APP = $(OBJDIR)omb33core.o $(OBJDIR)omb31core.o $(OBJDIR)dbformat.o $(OBJDIR)openmoneybox/openmoneybox.o $(OBJDIR)openmoneybox/ui/funds.o $(OBJDIR)openmoneybox/ui/gainexpense.o \
176
195
$(OBJDIR)openmoneybox/ui/getbackobj.o $(OBJDIR)openmoneybox/ui/main_wx.o $(OBJDIR)openmoneybox/ui/objct.o $(OBJDIR)openmoneybox/ui/remcreddeb.o $(OBJDIR)openmoneybox/ui/setcreddeb.o \
177
196
$(OBJDIR)openmoneybox/ui/wxgainexpense.o $(OBJDIR)openmoneybox/ui/wxgetbackf.o $(OBJDIR)openmoneybox/ui/wxobjct.o $(OBJDIR)openmoneybox/ui/wxremcreddeb.o $(OBJDIR)openmoneybox/ui/wxsetcreddeb.o \
178
197
$(OBJDIR)openmoneybox/ui/wxtopf.o $(OBJDIR)ui/password.o $(OBJDIR)ui/wxpassword.o \
183
202
ifeq ($(CHART_LIB),_OMB_CHART_MATLIBPLOT)
184
203
OBJECTS_APP += $(OBJDIR)openmoneybox/ui/wxmainframe_$(TOOL_ICON_SIZE)_mpl.o
206
OBJECTS_APP += $(OBJDIR)openmoneybox/ui/wx28/wxmainframe_$(TOOL_ICON_SIZE).o
186
208
OBJECTS_APP += $(OBJDIR)openmoneybox/ui/wxmainframe_$(TOOL_ICON_SIZE).o
188
211
ifeq ($(WXVER),2.8)
189
212
OBJECTS_APP += $(OBJDIR)3rdparty/mytimectrl.o
214
ifeq ($(OMB_USE_SQLCIPHER),1)
215
OBJECTS_APP += $(OBJDIR)wxsqlite3.o
191
217
OBJECTS_TRAY = $(OBJDIR)ombtray/ui/Alarm.o $(OBJDIR)ombtray/ombtrayapp.o $(OBJDIR)ombtray/ui/wxAlarm.o $(OBJDIR)ombtray/datawithalarms.o $(OBJDIR)dbformat.o
218
ifeq ($(OMB_USE_SQLCIPHER),1)
219
OBJECTS_TRAY += $(OBJDIR)wxsqlite3.o
192
221
OBJECTS_CONV = $(OBJDIR)ombconvert/ombconvert.o $(OBJDIR)ombconvert/dataconverter.o $(OBJDIR)dbformat.o
222
ifeq ($(OMB_USE_SQLCIPHER),1)
223
OBJECTS_CONV += $(OBJDIR)wxsqlite3.o
194
226
# Install information
296
331
$(CXX) $(OBJECTS_APP) -o $(BUILDDIR)$(APPNAME) $(LDLIBS) $(GSETTINGS_LIBS) $(BUILD_NUMBER_LDFLAGS) \
297
332
$(BUILDDIR)$(LOGONAME) $(BUILDDIR)$(OMBNAME) $(BUILDDIR)$(BERRNAME) $(BUILDDIR)$(OPTNAME) $(BUILDDIR)$(WIZARDNAME)
334
ifeq ($(OMB_USE_SQLCIPHER),1)
335
$(CXX) $(OBJECTS_APP) -o $(BUILDDIR)$(APPNAME) $(LDLIBS) $(SQL3LIBS) $(GSETTINGS_LIBS) $(BUILD_NUMBER_LDFLAGS) \
336
$(CHART_LIBS) $(BUILDDIR)$(LOGONAME) $(BUILDDIR)$(OMBNAME) $(BUILDDIR)$(BERRNAME) $(BUILDDIR)$(OPTNAME) $(BUILDDIR)$(WIZARDNAME) $(UPDATE_LIBS)
299
338
ifeq ($(WXSQLITE_LOCAL),0)
300
339
$(CXX) $(OBJECTS_APP) -o $(BUILDDIR)$(APPNAME) $(LDLIBS) $(SQL3LIBS) $(GSETTINGS_LIBS) $(BUILD_NUMBER_LDFLAGS) \
301
340
$(CHART_LIBS) $(BUILDDIR)$(LOGONAME) $(BUILDDIR)$(OMBNAME) $(BUILDDIR)$(BERRNAME) $(BUILDDIR)$(OPTNAME) $(BUILDDIR)$(WIZARDNAME) $(UPDATE_LIBS)
318
357
$(TRAYNAME): $(OBJECTS_TRAY) $(BUILD_NUMBER_FILE)
319
$(CXX) -Wall -D__OMBTRAY_EXE__ $(WXSQLITE_INCLUDE_FLAGS) $(GSETTINGS_FLAGS) $(FLAVOUR_FLAGS) -g $(CXXFLAGS) -c $(SRCDIR)omb31core.cpp -o $(BUILDDIR)$(OBJDIR)ombtray/omb31core.o
320
$(CXX) -Wall -D__OMBTRAY_EXE__ $(WXSQLITE_INCLUDE_FLAGS) $(GSETTINGS_FLAGS) $(FLAVOUR_FLAGS) -g $(CXXFLAGS) -c $(SRCDIR)omb32core.cpp -o $(BUILDDIR)$(OBJDIR)ombtray/omb32core.o
321
$(CXX) -Wall -D__OMBTRAY_EXE__ $(WXSQLITE_INCLUDE_FLAGS) $(GSETTINGS_FLAGS) $(FLAVOUR_FLAGS) -g $(CXXFLAGS) -c $(SRCDIR)ombopt/omb32opt.cpp -o $(BUILDDIR)$(OBJDIR)ombtray/omb32opt.o
322
$(CXX) -Wall -D__OMBTRAY_EXE__ $(WXSQLITE_INCLUDE_FLAGS) $(GSETTINGS_FLAGS) $(FLAVOUR_FLAGS) -g $(CXXFLAGS) -c $(SRCDIR)ui/password.cpp -o $(BUILDDIR)$(OBJDIR)ombtray/ui/password.o
323
$(CXX) -Wall -D__OMBTRAY_EXE__ $(WXSQLITE_INCLUDE_FLAGS) $(GSETTINGS_FLAGS) $(FLAVOUR_FLAGS) -g $(CXXFLAGS) -c $(SRCDIR)ui/wxpassword.cpp -o $(BUILDDIR)$(OBJDIR)ombtray/ui/wxpassword.o
324
$(CXX) $(OBJECTS_TRAY) $(OBJDIR)ombtray/omb32core.o $(OBJDIR)ombtray/omb31core.o $(OBJDIR)ombtray/omb32opt.o $(OBJDIR)ombtray/ui/password.o $(OBJDIR)ombtray/ui/wxpassword.o \
358
$(CXX) -Wall -D__OMBTRAY_EXE__ $(SQL3FLAGS) $(GSETTINGS_FLAGS) $(FLAVOUR_FLAGS) -g $(CXXFLAGS) -c $(SRCDIR)omb31core.cpp -o $(BUILDDIR)$(OBJDIR)ombtray/omb31core.o
359
$(CXX) -Wall -D__OMBTRAY_EXE__ $(SQL3FLAGS) $(GSETTINGS_FLAGS) $(FLAVOUR_FLAGS) -g $(CXXFLAGS) -c $(SRCDIR)omb33core.cpp -o $(BUILDDIR)$(OBJDIR)ombtray/omb33core.o
360
$(CXX) -Wall -D__OMBTRAY_EXE__ $(SQL3FLAGS) $(GSETTINGS_FLAGS) $(FLAVOUR_FLAGS) -g $(CXXFLAGS) -c $(SRCDIR)ombopt/omb33opt.cpp -o $(BUILDDIR)$(OBJDIR)ombtray/omb33opt.o
361
$(CXX) -Wall -D__OMBTRAY_EXE__ $(SQL3FLAGS) $(GSETTINGS_FLAGS) $(FLAVOUR_FLAGS) -g $(CXXFLAGS) -c $(SRCDIR)ui/password.cpp -o $(BUILDDIR)$(OBJDIR)ombtray/ui/password.o
362
$(CXX) -Wall -D__OMBTRAY_EXE__ $(SQL3FLAGS) $(GSETTINGS_FLAGS) $(FLAVOUR_FLAGS) -g $(CXXFLAGS) -c $(SRCDIR)ui/wxpassword.cpp -o $(BUILDDIR)$(OBJDIR)ombtray/ui/wxpassword.o
363
$(CXX) $(OBJECTS_TRAY) $(OBJDIR)ombtray/omb33core.o $(OBJDIR)ombtray/omb31core.o $(OBJDIR)ombtray/omb33opt.o $(OBJDIR)ombtray/ui/password.o $(OBJDIR)ombtray/ui/wxpassword.o \
325
364
-o $(BUILDDIR)$(TRAYNAME) $(LDLIBS) $(SQL3LIBS) $(GSETTINGS_LIBS) $(BUILD_NUMBER_LDFLAGS) $(BUILDDIR)$(LOGONAME) $(BUILDDIR)$(OMBNAME) $(BUILDDIR)$(BERRNAME) $(BUILDDIR)$(OPTNAME)
328
367
$(CONVERTNAME): $(OBJECTS_CONV)
329
$(CXX) -Wall $(CONVERT_FLAGS) -D__OMBCONVERT_BIN__ $(WXSQLITE_INCLUDE_FLAGS) -g $(CXXFLAGS) -c $(SRCDIR)omb31core.cpp -o $(BUILDDIR)$(OBJDIR)ombconvert/omb31core.o
330
$(CXX) -Wall $(CONVERT_FLAGS) -D__OMBCONVERT_BIN__ $(WXSQLITE_INCLUDE_FLAGS) -g $(CXXFLAGS) -c $(SRCDIR)igilogo/igilogolib.cpp -o $(BUILDDIR)$(OBJDIR)ombconvert/igilogolib.o
331
$(CXX) -Wall $(CONVERT_FLAGS) -D__OMBCONVERT_BIN__ $(WXSQLITE_INCLUDE_FLAGS) -g $(CXXFLAGS) -c $(SRCDIR)omberr/omberr.cpp -o $(BUILDDIR)$(OBJDIR)ombconvert/omberr.o
332
$(CXX) -Wall $(CONVERT_FLAGS) -D__OMBCONVERT_BIN__ $(WXSQLITE_INCLUDE_FLAGS) -g $(CXXFLAGS) -c $(SRCDIR)igiomb/igiomb.cpp -o $(BUILDDIR)$(OBJDIR)ombconvert/igiomb.o
333
$(CXX) -Wall $(CONVERT_FLAGS) -D__OMBCONVERT_BIN__ $(WXSQLITE_INCLUDE_FLAGS) -g $(CXXFLAGS) -c $(SRCDIR)platformsetup.cpp -o $(BUILDDIR)$(OBJDIR)ombconvert/platformsetup.o
368
$(CXX) -Wall $(CONVERT_FLAGS) $(FLAVOUR_FLAGS) -D__OMBCONVERT_BIN__ $(SQL3FLAGS) -g $(CXXFLAGS) -c $(SRCDIR)omb31core.cpp -o $(BUILDDIR)$(OBJDIR)ombconvert/omb31core.o
369
$(CXX) -Wall $(CONVERT_FLAGS) $(FLAVOUR_FLAGS) -D__OMBCONVERT_BIN__ $(SQL3FLAGS) -g $(CXXFLAGS) -c $(SRCDIR)omb33core.cpp -o $(BUILDDIR)$(OBJDIR)ombconvert/omb33core.o
370
$(CXX) -Wall $(CONVERT_FLAGS) $(FLAVOUR_FLAGS) -D__OMBCONVERT_BIN__ $(SQL3FLAGS) -g $(CXXFLAGS) -c $(SRCDIR)igilogo/igilogolib.cpp -o $(BUILDDIR)$(OBJDIR)ombconvert/igilogolib.o
371
$(CXX) -Wall $(CONVERT_FLAGS) $(FLAVOUR_FLAGS) -D__OMBCONVERT_BIN__ $(SQL3FLAGS) -g $(CXXFLAGS) -c $(SRCDIR)omberr/omberr.cpp -o $(BUILDDIR)$(OBJDIR)ombconvert/omberr.o
372
$(CXX) -Wall $(CONVERT_FLAGS) $(FLAVOUR_FLAGS) -D__OMBCONVERT_BIN__ $(SQL3FLAGS) -g $(CXXFLAGS) -c $(SRCDIR)igiomb/igiomb.cpp -o $(BUILDDIR)$(OBJDIR)ombconvert/igiomb.o
373
$(CXX) -Wall $(CONVERT_FLAGS) $(FLAVOUR_FLAGS) -D__OMBCONVERT_BIN__ $(SQL3FLAGS) -g $(CXXFLAGS) -c $(SRCDIR)platformsetup.cpp -o $(BUILDDIR)$(OBJDIR)ombconvert/platformsetup.o
334
374
ifeq ($(CODENAME),precise)
335
375
$(CXX) $(OBJECTS_CONV) $(BUILDDIR)$(OBJDIR)ombconvert/igilogolib.o $(BUILDDIR)$(OBJDIR)ombconvert/omberr.o $(BUILDDIR)$(OBJDIR)ombconvert/igiomb.o \
336
$(BUILDDIR)$(OBJDIR)ombconvert/omb31core.o $(BUILDDIR)$(OBJDIR)ombconvert/platformsetup.o -o $(BUILDDIR)$(CONVERTNAME) $(SQL3LIBS) -lwx_baseu-$(WXVER) -lwx_$(GTK_VERSION)_core-$(WXVER)
376
$(BUILDDIR)$(OBJDIR)ombconvert/omb31core.o $(BUILDDIR)$(OBJDIR)ombconvert/omb33core.o $(BUILDDIR)$(OBJDIR)ombconvert/platformsetup.o -o $(BUILDDIR)$(CONVERTNAME) \
377
$(SQL3LIBS) -lwx_baseu-$(WXVER) -lwx_$(GTK_VERSION)_core-$(WXVER)
338
379
$(CXX) $(OBJECTS_CONV) $(BUILDDIR)$(OBJDIR)ombconvert/igilogolib.o $(BUILDDIR)$(OBJDIR)ombconvert/omberr.o $(BUILDDIR)$(OBJDIR)ombconvert/igiomb.o \
339
$(BUILDDIR)$(OBJDIR)ombconvert/omb31core.o $(BUILDDIR)$(OBJDIR)ombconvert/platformsetup.o -o $(BUILDDIR)$(CONVERTNAME) $(SQL3LIBS) -lwx_baseu-$(WXVER)
380
$(BUILDDIR)$(OBJDIR)ombconvert/omb31core.o $(BUILDDIR)$(OBJDIR)ombconvert/omb33core.o $(BUILDDIR)$(OBJDIR)ombconvert/platformsetup.o -o $(BUILDDIR)$(CONVERTNAME) \
381
$(SQL3LIBS) -lwx_baseu-$(WXVER)
350
392
ifeq ($(DEBUG),1)
351
393
$(OBJECTS_LOGO): CFLAGS := -Wall -fPIC -g
352
394
$(OBJECTS_OMB): CFLAGS := -Wall -fPIC -g $(CHART_FLAGS) $(UPDATE_FLAGS) $(GSETTINGS_FLAGS) $(FLAVOUR_FLAGS)
353
$(OBJECTS_BERR): CFLAGS := -Wall -fPIC -g
354
$(OBJECTS_OPT): CFLAGS := -Wall -fPIC -g $(UPDATE_FLAGS) $(FLAVOUR_FLAGS)
395
$(OBJECTS_BERR): CFLAGS := -Wall -fPIC -g $(SQL3FLAGS) $(FLAVOUR_FLAGS)
396
$(OBJECTS_OPT): CFLAGS := -Wall -fPIC -g $(UPDATE_FLAGS) $(FLAVOUR_FLAGS) $(OPTION_FLAGS)
355
397
$(OBJECTS_WIZ): CFLAGS := -Wall -fPIC -g
356
$(OBJECTS_APP): CFLAGS := -Wall -D__OPENMONEYBOX_EXE__ -D_OMB_ICONSIZE_=$(TOOL_ICON_SIZE) -g $(CHART_FLAGS) $(FLAVOUR_FLAGS) $(UPDATE_FLAGS) $(WXSQLITE_INCLUDE_FLAGS) \
398
$(OBJECTS_APP): CFLAGS := -Wall -D__OPENMONEYBOX_EXE__ -D_OMB_ICONSIZE_=$(TOOL_ICON_SIZE) -g $(CHART_FLAGS) $(FLAVOUR_FLAGS) $(UPDATE_FLAGS) $(SQL3FLAGS) \
357
399
$(GSETTINGS_FLAGS)
358
400
$(OBJECTS_TRAY): CFLAGS := -Wall -D__OMBTRAY_EXE__ $(INDICATOR_FLAGS) $(GSETTINGS_FLAGS) -g
359
$(OBJECTS_CONV): CFLAGS := -Wall -D__LINUX__ $(CONVERT_FLAGS) -D__OMBCONVERT_BIN__ -g
401
$(OBJECTS_CONV): CFLAGS := -Wall -D__LINUX__ $(CONVERT_FLAGS) $(FLAVOUR_FLAGS) -D__OMBCONVERT_BIN__ -g
361
403
$(OBJECTS_LOGO): CFLAGS := -Wall -fPIC -O2
362
404
$(OBJECTS_OMB): CFLAGS := -Wall -fPIC -O2 $(CHART_FLAGS) $(UPDATE_FLAGS) $(GSETTINGS_FLAGS) $(FLAVOUR_FLAGS)
363
$(OBJECTS_BERR): CFLAGS := -Wall -fPIC -O2 $(WXSQLITE_INCLUDE_FLAGS)
364
$(OBJECTS_OPT): CFLAGS := -Wall -fPIC -O2 $(UPDATE_FLAGS) $(GSETTINGS_FLAGS) $(FLAVOUR_FLAGS)
365
$(OBJECTS_WIZ): CFLAGS := -Wall -fPIC -O2 $(WXSQLITE_INCLUDE_FLAGS)
405
$(OBJECTS_BERR): CFLAGS := -Wall -fPIC -O2 $(SQL3FLAGS) $(FLAVOUR_FLAGS)
406
$(OBJECTS_OPT): CFLAGS := -Wall -fPIC -O2 $(UPDATE_FLAGS) $(GSETTINGS_FLAGS) $(FLAVOUR_FLAGS) $(OPTION_FLAGS)
407
$(OBJECTS_WIZ): CFLAGS := -Wall -fPIC -O2 $(SQL3FLAGS)
366
408
$(OBJECTS_UPD): CFLAGS := -Wall -fPIC -O2 $(GSETTINGS_FLAGS) $(FLAVOUR_FLAGS)
367
$(OBJECTS_APP): CFLAGS := -Wall -D__OPENMONEYBOX_EXE__ -D_OMB_ICONSIZE_=$(TOOL_ICON_SIZE) $(CHART_FLAGS) $(FLAVOUR_FLAGS) $(UPDATE_FLAGS) -O2 $(WXSQLITE_INCLUDE_FLAGS) \
409
$(OBJECTS_APP): CFLAGS := -Wall -D__OPENMONEYBOX_EXE__ -D_OMB_ICONSIZE_=$(TOOL_ICON_SIZE) $(CHART_FLAGS) $(FLAVOUR_FLAGS) $(UPDATE_FLAGS) $(SQL3FLAGS) -O2 \
368
410
$(GSETTINGS_FLAGS)
369
$(OBJECTS_TRAY): CFLAGS := -Wall -D__OMBTRAY_EXE__ $(INDICATOR_FLAGS) $(FLAVOUR_FLAGS) $(GSETTINGS_FLAGS) -O2 $(WXSQLITE_INCLUDE_FLAGS)
370
$(OBJECTS_CONV): CFLAGS := -Wall -D__LINUX__ $(CONVERT_FLAGS) -D__OMBCONVERT_BIN__ -O2 $(WXSQLITE_INCLUDE_FLAGS)
411
$(OBJECTS_TRAY): CFLAGS := -Wall -D__OMBTRAY_EXE__ $(INDICATOR_FLAGS) $(FLAVOUR_FLAGS) $(GSETTINGS_FLAGS) $(SQL3FLAGS) -O2
412
$(OBJECTS_CONV): CFLAGS := -Wall -D__LINUX__ $(CONVERT_FLAGS) $(FLAVOUR_FLAGS) -D__OMBCONVERT_BIN__ $(SQL3FLAGS) -O2
373
415
$(OBJDIR)%.o: $(SRCDIR)%.cpp ${includes}