2
0

Makefile.am 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861
  1. EXTRA_DIST =
  2. SUBDIRS = . src build
  3. AUTOMAKE_OPTIONS = foreign subdir-objects
  4. NAME = freeswitch
  5. if SYSTEM_APR
  6. AM_LIBAPR_CFLAGS := $(shell apr-1-config --cflags)
  7. AM_LIBAPR_CPPFLAGS := $(shell apr-1-config --cppflags --includes)
  8. AM_LIBAPR_LDFLAGS := $(shell apr-1-config --ldflags)
  9. AM_LIBAPR_LIBS := $(shell apr-1-config \--libs)
  10. AM_LIBAPR_LINKLIBTOOL := $(shell apr-1-config \--link-libtool)
  11. else
  12. AM_LIBAPR_CFLAGS := $(shell ./libs/apr/apr-1-config --cflags)
  13. AM_LIBAPR_CPPFLAGS := $(shell ./libs/apr/apr-1-config --cppflags --includes)
  14. AM_LIBAPR_LDFLAGS := $(shell ./libs/apr/apr-1-config --ldflags)
  15. AM_LIBAPR_LIBS := $(subst $(switch_builddir)/,,$(shell ./libs/apr/apr-1-config \--libs))
  16. endif
  17. if SYSTEM_APRUTIL
  18. AM_LIBAPU_CPPFLAGS := $(shell apu-1-config --includes)
  19. AM_LIBAPU_LDFLAGS := $(shell apu-1-config --ldflags)
  20. AM_LIBAPU_LIBS := $(shell apu-1-config \--libs)
  21. AM_LIBAPU_LINKLIBTOOL := $(shell apu-1-config \--link-libtool)
  22. else
  23. AM_LIBAPU_CPPFLAGS := $(shell ./libs/apr-util/apu-1-config --includes)
  24. AM_LIBAPU_LDFLAGS := $(shell ./libs/apr-util/apu-1-config --ldflags)
  25. AM_LIBAPU_LIBS := $(subst $(switch_builddir)/,,$(shell ./libs/apr-util/apu-1-config \--libs))
  26. endif
  27. AM_CFLAGS = $(SWITCH_AM_CFLAGS) $(SWITCH_ANSI_CFLAGS)
  28. AM_CPPFLAGS =
  29. AM_CPPFLAGS += -I$(switch_srcdir)/libs/libvpx
  30. AM_CPPFLAGS += $(SWITCH_AM_CXXFLAGS) -I$(switch_srcdir)/libs/sofia-sip/libsofia-sip-ua/sdp
  31. AM_CPPFLAGS += -I$(switch_srcdir)/libs/sofia-sip/libsofia-sip-ua/su -I$(switch_builddir)/libs/sofia-sip/libsofia-sip-ua/su
  32. AM_LDFLAGS = $(SWITCH_AM_LDFLAGS) $(AM_LIBAPR_LDFLAGS) $(AM_LIBAPU_LDFLAGS)
  33. DEFAULT_SOUNDS=en-us-callie-8000
  34. MY_DEFAULT_ARGS= --build=$(build) --host=$(host) --target=$(target) --prefix="$(prefix)" --exec_prefix="$(exec_prefix)" --libdir="$(libdir)"
  35. .INTERMEDIATE: -ldl -liconv -lpthread
  36. .DEFAULT: $(switch_builddir)/modules.conf src/mod/modules.inc
  37. @target=`echo $@ | sed -e 's|^.*-||'`; \
  38. target_prefix=`echo $@ | sed -e 's|-.*$$||'`; \
  39. sound_perfix=`echo $@ | sed -e 's|-.*||'`; \
  40. moh_version=`cat $(switch_srcdir)/build/moh_version.txt`;\
  41. full_sound_dir=`echo $@ | sed -e 's|^sounds||' | sed -e 's|^-||' | sed -e 's|-install$$||'`; \
  42. test ! -z $$full_sound_dir || full_sound_dir=`echo $(DEFAULT_SOUNDS)`; \
  43. base_sound_dir=`echo $$full_sound_dir | sed -e 's|-[^-]*000$$||' ` ;\
  44. sounds_version=`grep $$base_sound_dir $(switch_srcdir)/build/sounds_version.txt | cut -d ' ' -f2`;\
  45. soundfile=`echo freeswitch-sounds-$$full_sound_dir-$$moh_version.tar.gz`; \
  46. echo $$full_sound_dir | grep music >/dev/null || soundfile=`echo freeswitch-sounds-$$full_sound_dir-$$sounds_version.tar.gz`; \
  47. args="$@"; if test -z "$$args" || test "$${args#-l*}" = "$$args"; then \
  48. if test "$$target_prefix" = "sounds"; then \
  49. if test "$$target" = "install"; then \
  50. $(GETSOUNDS) $$soundfile $(DESTDIR)$(soundsdir)/;\
  51. else \
  52. $(GETSOUNDS) $$soundfile ; \
  53. fi; \
  54. else \
  55. if test "$$target" = "install"; then \
  56. $(MAKE) $(AM_MAKEFLAGS) core_install && cd src/mod && $(MAKE) $(AM_MAKEFLAGS) $@ ; \
  57. else \
  58. if test "$$target" = "clean"; then \
  59. cd src/mod && $(MAKE) $(AM_MAKEFLAGS) $@ ;\
  60. else \
  61. $(MAKE) $(AM_MAKEFLAGS) core && cd src/mod && $(MAKE) $(AM_MAKEFLAGS) $@ ;\
  62. fi; \
  63. fi; \
  64. fi; fi
  65. sounds: sounds-en-us-callie-8000
  66. sounds-install: sounds-en-us-callie-8000-install
  67. sounds-ru: sounds-ru-RU-elena-8000
  68. sounds-ru-install: sounds-ru-RU-elena-8000-install
  69. sounds-fr: sounds-fr-ca-june-8000
  70. sounds-fr-install: sounds-fr-ca-june-8000-install
  71. moh: sounds-music-8000
  72. moh-install: sounds-music-8000-install
  73. hd-sounds: sounds sounds-en-us-callie-16000
  74. hd-sounds-install: sounds-install sounds-en-us-callie-16000-install
  75. hd-sounds-ru: sounds-ru sounds-ru-RU-elena-16000
  76. hd-sounds-ru-install: sounds-ru-install sounds-ru-RU-elena-16000-install
  77. hd-sounds-fr: sounds-fr-ca-june-16000
  78. hd-sounds-fr-install: sounds-fr-ca-june-16000-install
  79. hd-moh: moh sounds-music-16000
  80. hd-moh-install: moh-install sounds-music-16000-install
  81. uhd-sounds: hd-sounds sounds-en-us-callie-32000
  82. uhd-sounds-install: hd-sounds-install sounds-en-us-callie-32000-install
  83. uhd-sounds-ru: hd-sounds-ru sounds-ru-RU-elena-32000
  84. uhd-sounds-ru-install: hd-sounds-ru-install sounds-ru-RU-elena-32000-install
  85. uhd-sounds-fr: sounds-fr-ca-june-32000
  86. uhd-sounds-fr-install: sounds-fr-ca-june-32000-install
  87. uhd-moh: hd-moh sounds-music-32000
  88. uhd-moh-install: hd-moh-install sounds-music-32000-install
  89. cd-sounds: uhd-sounds sounds-en-us-callie-48000
  90. cd-sounds-install: uhd-sounds-install sounds-en-us-callie-48000-install
  91. cd-sounds-ru: uhd-sounds-ru sounds-ru-RU-elena-48000
  92. cd-sounds-ru-install: uhd-sounds-ru-install sounds-ru-RU-elena-48000-install
  93. cd-sounds-fr: sounds-fr-ca-june-48000
  94. cd-sounds-fr-install: sounds-fr-ca-june-48000-install
  95. cd-moh: uhd-moh sounds-music-48000
  96. cd-moh-install: uhd-moh-install sounds-music-48000-install
  97. # This directory's subdirectories are mostly independent; you can cd
  98. # into them and run `make' without going through this Makefile.
  99. # To change the values of `make' variables: instead of editing Makefiles,
  100. # (1) if the variable is set in `config.status', edit `config.status'
  101. # (which will cause the Makefiles to be regenerated when you run `make');
  102. # (2) otherwise, pass the desired values on the `make' command line.
  103. all-recursive: libfreeswitch.la
  104. clean-recusive: clean_core
  105. install-recursive: install-libLTLIBRARIES install-binPROGRAMS
  106. CORE_CFLAGS = $(AM_LIBAPR_CFLAGS) $(AM_LIBAPR_CPPFLAGS)
  107. CORE_CFLAGS += $(AM_LIBAPU_CPPFLAGS)
  108. CORE_CFLAGS += -I$(switch_srcdir)/libs/libtpl-1.5/src
  109. CORE_CFLAGS += -I$(switch_srcdir)/libs/srtp/include
  110. if ENABLE_LIBYUV
  111. CORE_CFLAGS += -I$(switch_srcdir)/libs/libyuv/include
  112. CORE_CFLAGS += -DSWITCH_HAVE_YUV
  113. endif
  114. CORE_CFLAGS += -I$(switch_srcdir)/libs/srtp/crypto/include -Ilibs/srtp/crypto/include
  115. CORE_CFLAGS += -I$(switch_builddir)/libs/spandsp/src -I$(switch_srcdir)/libs/spandsp/src
  116. CORE_CFLAGS += -I$(switch_builddir)/libs/tiff-4.0.2/libtiff -I$(switch_srcdir)/libs/tiff-4.0.2/libtiff
  117. if ENABLE_LIBVPX
  118. CORE_CFLAGS += -DSWITCH_HAVE_VPX
  119. endif
  120. APR_LIBS = $(AM_LIBAPU_LIBS) $(AM_LIBAPR_LIBS)
  121. CORE_LIBS=
  122. if ENABLE_LIBVPX
  123. CORE_LIBS += libs/libvpx/libvpx.a
  124. endif
  125. if SYSTEM_APRUTIL
  126. CORE_LIBS += $(AM_LIBAPU_LINKLIBTOOL)
  127. else
  128. CORE_LIBS += libs/apr-util/libaprutil-1.la
  129. endif
  130. if SYSTEM_APR
  131. CORE_LIBS += $(AM_LIBAPR_LINKLIBTOOL)
  132. else
  133. CORE_LIBS += libs/apr/libapr-1.la
  134. endif
  135. if ENABLE_SRTP
  136. CORE_CFLAGS += -DENABLE_SRTP
  137. CORE_LIBS += libs/srtp/libsrtp.la
  138. endif
  139. MOD_LINK = $(switch_srcdir)/libfreeswitch.la
  140. CLEANFILES = src/include/switch_version.h src/include/switch_swigable_cpp.h
  141. BUILT_SOURCES = src/mod/modules.inc src/include/switch_version.h src/include/switch_swigable_cpp.h
  142. if HAVE_ODBC
  143. CORE_CFLAGS += -DSWITCH_HAVE_ODBC $(ODBC_INC_FLAGS)
  144. endif
  145. if HAVE_PNG
  146. CORE_CFLAGS += -DSWITCH_HAVE_PNG $(LIBPNG_CFLAGS)
  147. endif
  148. if HAVE_FREETYPE
  149. CORE_CFLAGS += -DSWITCH_HAVE_FREETYPE $(LIBFREETYPE_CFLAGS)
  150. endif
  151. ##
  152. ## libfreeswitch
  153. ##
  154. noinst_LTLIBRARIES = libfreeswitch_spandsp.la
  155. if ENABLE_LIBYUV
  156. noinst_LTLIBRARIES += libfreeswitch_libyuv.la
  157. endif
  158. libfreeswitch_spandsp_la_SOURCES = libs/spandsp/src/plc.c libs/spandsp/src/alloc.c libs/spandsp/src/bit_operations.c
  159. libfreeswitch_spandsp_la_CFLAGS = -Ilibs/spandsp/src $(CORE_CFLAGS) $(AM_CFLAGS)
  160. CORE_LIBS+=libfreeswitch_spandsp.la
  161. if ENABLE_LIBYUV
  162. libfreeswitch_libyuv_la_SOURCES = \
  163. libs/libyuv/source/compare.cc \
  164. libs/libyuv/source/compare_common.cc \
  165. libs/libyuv/source/compare_gcc.cc \
  166. libs/libyuv/source/convert.cc \
  167. libs/libyuv/source/convert_argb.cc \
  168. libs/libyuv/source/convert_from.cc \
  169. libs/libyuv/source/convert_from_argb.cc \
  170. libs/libyuv/source/convert_to_argb.cc \
  171. libs/libyuv/source/convert_to_i420.cc \
  172. libs/libyuv/source/cpu_id.cc \
  173. libs/libyuv/source/planar_functions.cc \
  174. libs/libyuv/source/rotate.cc \
  175. libs/libyuv/source/rotate_any.cc \
  176. libs/libyuv/source/rotate_argb.cc \
  177. libs/libyuv/source/rotate_common.cc \
  178. libs/libyuv/source/rotate_gcc.cc \
  179. libs/libyuv/source/rotate_mips.cc \
  180. libs/libyuv/source/row_any.cc \
  181. libs/libyuv/source/row_common.cc \
  182. libs/libyuv/source/row_mips.cc \
  183. libs/libyuv/source/row_gcc.cc \
  184. libs/libyuv/source/scale.cc \
  185. libs/libyuv/source/scale_any.cc \
  186. libs/libyuv/source/scale_argb.cc \
  187. libs/libyuv/source/scale_common.cc \
  188. libs/libyuv/source/scale_gcc.cc \
  189. libs/libyuv/source/scale_mips.cc \
  190. libs/libyuv/source/video_common.cc \
  191. libs/libyuv/source/compare_neon64.cc \
  192. libs/libyuv/source/compare_neon.cc \
  193. libs/libyuv/source/compare_win.cc \
  194. libs/libyuv/source/convert_jpeg.cc \
  195. libs/libyuv/source/mjpeg_decoder.cc \
  196. libs/libyuv/source/mjpeg_validate.cc \
  197. libs/libyuv/source/rotate_neon64.cc \
  198. libs/libyuv/source/rotate_neon.cc \
  199. libs/libyuv/source/rotate_win.cc \
  200. libs/libyuv/source/row_neon64.cc \
  201. libs/libyuv/source/row_neon.cc \
  202. libs/libyuv/source/row_win.cc \
  203. libs/libyuv/source/scale_neon64.cc \
  204. libs/libyuv/source/scale_neon.cc \
  205. libs/libyuv/source/scale_win.cc
  206. libfreeswitch_libyuv_la_CPPFLAGS = -O2 -fomit-frame-pointer -Ilibs/libyuv/include
  207. CORE_LIBS+=libfreeswitch_libyuv.la
  208. endif
  209. lib_LTLIBRARIES = libfreeswitch.la
  210. libfreeswitch_la_CFLAGS = $(CORE_CFLAGS) $(SQLITE_CFLAGS) $(FREETYPE_CFLAGS) $(CURL_CFLAGS) $(PCRE_CFLAGS) $(SPEEX_CFLAGS) $(LIBEDIT_CFLAGS) $(openssl_CFLAGS) $(AM_CFLAGS)
  211. libfreeswitch_la_LDFLAGS = -version-info 1:0:0 $(AM_LDFLAGS) $(PLATFORM_CORE_LDFLAGS) -no-undefined
  212. libfreeswitch_la_LIBADD = $(CORE_LIBS) $(APR_LIBS) $(SQLITE_LIBS) $(FREETYPE_LIBS) $(CURL_LIBS) $(PCRE_LIBS) $(SPEEX_LIBS) $(LIBEDIT_LIBS) $(openssl_LIBS) $(PLATFORM_CORE_LIBS)
  213. libfreeswitch_la_DEPENDENCIES = $(BUILT_SOURCES)
  214. if HAVE_PNG
  215. libfreeswitch_la_LIBADD += $(LIBPNG_LIBS)
  216. endif
  217. if HAVE_ODBC
  218. libfreeswitch_la_LDFLAGS += $(ODBC_LIB_FLAGS)
  219. endif
  220. if ENABLE_ZRTP
  221. CORE_CFLAGS += -I$(switch_srcdir)/libs/libzrtp/third_party/bgaes
  222. CORE_CFLAGS += -I$(switch_srcdir)/libs/libzrtp/third_party/bnlib
  223. CORE_CFLAGS += -isystem $(switch_srcdir)/libs/libzrtp/include
  224. ZRTP_LDFLAGS = -L$(switch_srcdir)/libs/libzrtp/third_party/bnlib
  225. ZRTP_LDFLAGS += -L$(switch_srcdir)/libs/libzrtp
  226. ZRTP_LIBS = -lbn -lzrtp
  227. libfreeswitch_la_LDFLAGS += $(ZRTP_LDFLAGS)
  228. libfreeswitch_la_LIBADD += $(ZRTP_LIBS)
  229. CORE_LIBS += libs/libzrtp/libzrtp.a
  230. LIBS += libs/libzrtp/third_party/bnlib/libbn.a
  231. endif
  232. library_includedir = $(includedir)
  233. library_include_HEADERS = \
  234. src/include/switch_am_config.h \
  235. src/include/switch.h \
  236. src/include/switch_apr.h \
  237. src/include/switch_buffer.h \
  238. src/include/switch_caller.h \
  239. src/include/switch_channel.h \
  240. src/include/switch_console.h \
  241. src/include/switch_core_event_hook.h \
  242. src/include/switch_scheduler.h \
  243. src/include/switch_core.h \
  244. src/include/switch_core_media.h \
  245. src/include/switch_core_video.h \
  246. src/include/switch_core_db.h \
  247. src/include/switch_mprintf.h \
  248. src/include/switch_config.h \
  249. src/include/switch_event.h \
  250. src/include/switch_frame.h \
  251. src/include/switch_ivr.h \
  252. src/include/switch_dso.h \
  253. src/include/switch_loadable_module.h \
  254. src/include/switch_module_interfaces.h \
  255. src/include/switch_platform.h \
  256. src/include/switch_resample.h \
  257. src/include/switch_regex.h \
  258. src/include/switch_types.h \
  259. src/include/switch_utils.h \
  260. src/include/switch_rtp.h \
  261. src/include/switch_jitterbuffer.h \
  262. src/include/switch_estimators.h \
  263. src/include/switch_rtcp_frame.h \
  264. src/include/switch_stun.h \
  265. src/include/switch_nat.h \
  266. src/include/switch_log.h \
  267. src/include/switch_xml.h \
  268. src/include/switch_xml_config.h \
  269. src/include/switch_cpp.h \
  270. src/include/switch_curl.h \
  271. src/include/switch_json.h \
  272. src/include/switch_utf8.h \
  273. src/include/switch_vpx.h \
  274. libs/libteletone/src/libteletone_detect.h \
  275. libs/libteletone/src/libteletone_generate.h \
  276. libs/libteletone/src/libteletone.h \
  277. libs/libtpl-1.5/src/tpl.h \
  278. src/include/switch_limit.h \
  279. src/include/switch_odbc.h \
  280. src/include/switch_pgsql.h \
  281. src/include/switch_hashtable.h \
  282. src/include/switch_image.h
  283. nodist_libfreeswitch_la_SOURCES = \
  284. src/include/switch_frame.h \
  285. src/include/switch_swigable_cpp.h \
  286. src/include/switch_version.h
  287. libfreeswitch_la_SOURCES = \
  288. src/switch_apr.c \
  289. src/switch_buffer.c \
  290. src/switch_caller.c \
  291. src/switch_channel.c \
  292. src/switch_console.c \
  293. src/switch_mprintf.c \
  294. src/switch_core_media_bug.c \
  295. src/switch_core_timer.c \
  296. src/switch_core_asr.c \
  297. src/switch_core_event_hook.c \
  298. src/switch_core_speech.c \
  299. src/switch_core_memory.c \
  300. src/switch_core_codec.c \
  301. src/switch_core_file.c \
  302. src/switch_core_cert.c \
  303. src/switch_core_hash.c \
  304. src/switch_core_sqldb.c \
  305. src/switch_core_session.c \
  306. src/switch_core_directory.c \
  307. src/switch_core_state_machine.c \
  308. src/switch_core_io.c \
  309. src/switch_core_rwlock.c \
  310. src/switch_core_port_allocator.c \
  311. src/switch_core.c \
  312. src/switch_version.c \
  313. src/switch_core_media.c \
  314. src/switch_core_video.c \
  315. src/switch_sdp.c \
  316. src/switch_scheduler.c \
  317. src/switch_core_db.c \
  318. src/switch_dso.c \
  319. src/switch_loadable_module.c \
  320. src/switch_utils.c \
  321. src/switch_event.c \
  322. src/switch_resample.c \
  323. src/switch_regex.c \
  324. src/switch_rtp.c \
  325. src/switch_jitterbuffer.c \
  326. src/switch_estimators.c \
  327. src/switch_ivr_bridge.c \
  328. src/switch_ivr_originate.c \
  329. src/switch_ivr_async.c \
  330. src/switch_ivr_play_say.c \
  331. src/switch_ivr_say.c \
  332. src/switch_ivr_menu.c \
  333. src/switch_ivr.c \
  334. src/switch_stun.c \
  335. src/switch_nat.c \
  336. src/switch_log.c \
  337. src/switch_xml.c \
  338. src/switch_xml_config.c \
  339. src/switch_config.c \
  340. src/switch_time.c \
  341. src/switch_odbc.c \
  342. src/switch_pgsql.c \
  343. src/switch_limit.c \
  344. src/g711.c \
  345. src/switch_pcm.c \
  346. src/switch_speex.c \
  347. src/switch_profile.c \
  348. src/switch_json.c \
  349. src/switch_curl.c \
  350. src/switch_hashtable.c\
  351. src/switch_utf8.c \
  352. src/switch_vpx.c \
  353. libs/libtpl-1.5/src/tpl.c \
  354. libs/libteletone/src/libteletone_detect.c \
  355. libs/libteletone/src/libteletone_generate.c \
  356. libs/miniupnpc/miniwget.c \
  357. libs/miniupnpc/minixml.c \
  358. libs/miniupnpc/igd_desc_parse.c \
  359. libs/miniupnpc/minisoap.c \
  360. libs/miniupnpc/miniupnpc.c \
  361. libs/miniupnpc/upnpreplyparse.c \
  362. libs/miniupnpc/upnpcommands.c \
  363. libs/miniupnpc/minissdpc.c \
  364. libs/miniupnpc/upnperrors.c \
  365. libs/libnatpmp/natpmp.c \
  366. libs/libnatpmp/getgateway.c
  367. if ENABLE_CPP
  368. libfreeswitch_la_SOURCES += src/switch_cpp.cpp
  369. endif
  370. $(libfreeswitch_la_SOURCES): $(CORE_LIBS) $(switch_builddir)/modules.conf
  371. src/include/switch_swigable_cpp.h: $(switch_srcdir)/src/include/switch_cpp.h
  372. cat $(switch_srcdir)/src/include/switch_cpp.h | perl $(switch_srcdir)/build/strip.pl > $(switch_srcdir)/src/include/switch_swigable_cpp.h
  373. # $(CC) -E $(switch_srcdir)/src/include/switch_cpp.h \
  374. # -I$(switch_srcdir)/src/include -I$(switch_srcdir)/libs/libteletone/src \
  375. # -DSWITCH_DECLARE_CLASS= -DSWITCH_DECLARE\(x\)=x -DSWITCH_DECLARE_CONSTRUCTOR= \
  376. # -DSWITCH_DECLARE_NONSTD\(x\)=x 2>/dev/null | grep -v "^#" > src/include/switch_swigable_cpp.h
  377. ##
  378. ## Applications
  379. ##
  380. bin_PROGRAMS = freeswitch fs_cli fs_ivrd tone2wav fs_encode
  381. ##
  382. ## fs_cli ()
  383. ##
  384. fs_cli_SOURCES = libs/esl/src/esl.c libs/esl/src/esl_config.c libs/esl/src/esl_event.c \
  385. libs/esl/src/esl_threadmutex.c libs/esl/fs_cli.c libs/esl/src/esl_json.c libs/esl/src/esl_buffer.c
  386. fs_cli_CFLAGS = $(AM_CFLAGS) -I$(switch_srcdir)/libs/esl/src/include $(LIBEDIT_CFLAGS)
  387. fs_cli_LDFLAGS = $(AM_LDFLAGS) -lpthread $(ESL_LDFLAGS) -lm $(LIBEDIT_LIBS)
  388. if DISABLE_CC
  389. fs_cli_CFLAGS += -DDISABLE_CC
  390. endif
  391. ##
  392. ## fs_encode ()
  393. ##
  394. fs_encode_SOURCES = src/fs_encode.c
  395. fs_encode_CFLAGS = $(AM_CFLAGS)
  396. fs_encode_LDFLAGS = $(AM_LDFLAGS)
  397. fs_encode_LDADD = libfreeswitch.la $(CORE_LIBS) $(APR_LIBS)
  398. if HAVE_ODBC
  399. fs_encode_LDADD += $(ODBC_LIB_FLAGS)
  400. endif
  401. ##
  402. ## tone2wav ()
  403. ##
  404. tone2wav_SOURCES = src/tone2wav.c
  405. tone2wav_CFLAGS = $(AM_CFLAGS)
  406. tone2wav_LDFLAGS = $(AM_LDFLAGS)
  407. tone2wav_LDADD = libfreeswitch.la $(CORE_LIBS) $(APR_LIBS)
  408. if HAVE_ODBC
  409. tone2wav_LDADD += $(ODBC_LIB_FLAGS)
  410. endif
  411. ##
  412. ## fs_ivrd ()
  413. ##
  414. fs_ivrd_SOURCES = libs/esl/src/esl.c libs/esl/src/esl_config.c libs/esl/src/esl_event.c \
  415. libs/esl/src/esl_threadmutex.c libs/esl/ivrd.c libs/esl/src/esl_json.c libs/esl/src/esl_buffer.c
  416. fs_ivrd_CFLAGS = $(AM_CFLAGS) -I$(switch_srcdir)/libs/esl/src/include
  417. fs_ivrd_LDFLAGS = $(AM_LDFLAGS) -lpthread $(ESL_LDFLAGS) -lm
  418. ##
  419. ## freeswitch ()
  420. ##
  421. nodist_freeswitch_SOURCES = src/include/switch_version.h
  422. freeswitch_SOURCES = src/switch.c
  423. freeswitch_CFLAGS = $(AM_CFLAGS) $(CORE_CFLAGS)
  424. freeswitch_LDFLAGS = $(AM_LDFLAGS) -lpthread -rpath $(libdir)
  425. freeswitch_LDADD = libfreeswitch.la libs/apr/libapr-1.la
  426. if HAVE_ODBC
  427. freeswitch_LDADD += $(ODBC_LIB_FLAGS)
  428. endif
  429. ##
  430. ## Scripts
  431. ##
  432. bin_SCRIPTS = scripts/gentls_cert scripts/fsxs
  433. scripts/fsxs: scripts/fsxs.in
  434. @echo creating fsxs
  435. @sed -e "s,@MODULES_DIR\@,@modulesdir@," \
  436. -e "s,@LIB_DIR\@,@libdir@," \
  437. -e "s,@BIN_DIR\@,@bindir@," \
  438. -e "s,@INC_DIR\@,@includedir@," \
  439. -e "s,@CFG_DIR\@,@confdir@," \
  440. -e "s,@DB_DIR\@,@dbdir@," \
  441. -e "s,@PREFIX\@,@prefix@," \
  442. -e "s,@CC\@,$(CC)," \
  443. -e "s,@LD\@,$(CC)," \
  444. -e "s,@INSTALL\@,$(INSTALL)," \
  445. -e "s,@MKINSTALLDIRS\@,$(mkdir_p)," \
  446. \
  447. -e "s|@CFLAGS\@|$(CFLAGS) `./libs/apr/apr-1-config --cflags --cppflags`|" \
  448. -e "s|@INCLUDES\@|-I$(prefix)/include|" \
  449. -e "s|@SOLINK\@|$(SOLINK)|" \
  450. -e "s|@LDFLAGS\@|-L$(prefix)/lib|" \
  451. -e "s|@LIBS\@||" \
  452. $(top_srcdir)/scripts/fsxs.in > scripts/fsxs
  453. ##
  454. ## misc
  455. ##
  456. pkgconfigdir = @pkgconfigdir@
  457. pkgconfig_DATA = build/freeswitch.pc
  458. $(switch_builddir)/modules.conf:
  459. if test -f $@; then touch $@; else cp $(switch_srcdir)/build/modules.conf.in $@ ;fi
  460. src/mod/modules.inc: $(switch_builddir)/modules.conf
  461. @echo "OUR_MODULES=$(OUR_MODS)" > $(switch_builddir)/src/mod/modules.inc
  462. @echo "OUR_CLEAN_MODULES=$(OUR_CLEAN_MODS)" >> $(switch_builddir)/src/mod/modules.inc
  463. @echo "OUR_INSTALL_MODULES=$(OUR_INSTALL_MODS)" >> $(switch_builddir)/src/mod/modules.inc
  464. @echo "OUR_UNINSTALL_MODULES=$(OUR_UNINSTALL_MODS)" >> $(switch_builddir)/src/mod/modules.inc
  465. @echo "OUR_DISABLED_MODULES=$(OUR_DISABLED_MODS)" >> $(switch_builddir)/src/mod/modules.inc
  466. @echo "OUR_DISABLED_CLEAN_MODULES=$(OUR_DISABLED_CLEAN_MODS)" >> $(switch_builddir)/src/mod/modules.inc
  467. @echo "OUR_DISABLED_INSTALL_MODULES=$(OUR_DISABLED_INSTALL_MODS)" >> $(switch_builddir)/src/mod/modules.inc
  468. @echo "OUR_DISABLED_UNINSTALL_MODULES=$(OUR_DISABLED_UNINSTALL_MODS)" >> $(switch_builddir)/src/mod/modules.inc
  469. $(OUR_MODULES): $(switch_builddir)/modules.conf libfreeswitch.la src/mod/modules.inc
  470. @set fnord $$MAKEFLAGS; amf=$$2; \
  471. (cd src/mod && $(MAKE) $(AM_MAKEFLAGS) $@) \
  472. || case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
  473. test -z "$$fail"
  474. $(switch_builddir)/build/print_git_revision: $(switch_srcdir)/build/print_git_revision.c
  475. $(CC_FOR_BUILD) -o $@ $<
  476. src/switch_version.lo: src/include/switch_version.h
  477. src/include/switch_version.h: src/include/switch_version.h.in Makefile $(switch_builddir)/build/print_git_revision $(libfreeswitch_la_SOURCES) $(library_include_HEADERS)
  478. @cat $< > $@; \
  479. if [ -d $(switch_srcdir)/.git ] && [ -n "$$(which git)" ]; then \
  480. xver="$$(cd $(switch_srcdir)/ && $(switch_builddir)/build/print_git_revision)"; \
  481. xhver="$$(cd $(switch_srcdir)/ && $(switch_builddir)/build/print_git_revision -h)"; \
  482. sed \
  483. -e "/#define *SWITCH_VERSION_REVISION[^a-zA-Z0-9_]/{s/\"\([^\"]*\)\"/\"\1$$xver\"/;}" \
  484. -e "/#define *SWITCH_VERSION_REVISION_HUMAN[^a-zA-Z0-9_]/{s/\"\([^\"]*\)\"/\"\1$$xhver\"/;}" \
  485. $< > $@; \
  486. fi;
  487. ##
  488. ## Dependency targets
  489. ##
  490. libs/libedit/src/.libs/libedit.a:
  491. cd libs/libedit && $(MAKE)
  492. libs/libzrtp/libzrtp.a:
  493. cd libs/libzrtp && $(MAKE)
  494. libs/libvpx/Makefile:
  495. cd libs/libvpx && CC="$(CC)" CXX="$(CXX)" CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" ./configure --enable-pic --disable-docs --disable-examples --disable-install-bins --disable-install-srcs --disable-unit-tests --extra-cflags="$(VISIBILITY_FLAG)"
  496. libs/libvpx/libvpx.a: libs/libvpx/Makefile
  497. @cd libs/libvpx && $(MAKE)
  498. libs/sofia-sip/Makefile:
  499. cd libs/sofia-sip && sh ./configure.gnu $(MY_DEFAULT_ARGS)
  500. libs/sofia-sip/libsofia-sip-ua/sdp/.libs/libsdp.a libs/sofia-sip/libsofia-sip-ua/su/.libs/libsu.a: libs/sofia-sip/.update libs/sofia-sip/Makefile
  501. @cd libs/sofia-sip && $(MAKE) noop
  502. @cd libs/sofia-sip && $(MAKE) SOFIA_CFLAGS="$(SWITCH_AM_CFLAGS)"
  503. @$(TOUCH_TARGET)
  504. libs/apr/Makefile: libs/apr/Makefile.in libs/apr/config.status libs/apr libs/apr/.update
  505. @cd libs/apr && ./config.status
  506. @$(TOUCH_TARGET)
  507. libs/apr/libapr-1.la: libs/apr/Makefile libs/apr/.update
  508. @if [ $(MAKELEVEL) = 0 -o -z "`echo "$(MAKEARGS)" | grep "j"`" ] ; then touch $(switch_srcdir)/src/include/switch.h; cd libs/apr && $(MAKE) $(MFLAGS) && touch libapr-1.la; fi
  509. libs/apr-util/libaprutil-1.la: libs/apr/libapr-1.la libs/apr-util libs/apr-util/.update
  510. @if [ $(MAKELEVEL) = 0 -o -z "`echo "$(MAKEARGS)" | grep "j"`" ] ; then touch $(switch_srcdir)/src/include/switch.h; cd libs/apr-util && $(MAKE) $(MFLAGS) && touch libaprutil-1.la; fi
  511. SRTP_SRC = libs/srtp/srtp/srtp.c libs/srtp/srtp/ekt.c libs/srtp/crypto/cipher/cipher.c libs/srtp/crypto/cipher/null_cipher.c \
  512. libs/srtp/crypto/cipher/aes.c libs/srtp/crypto/cipher/aes_icm.c \
  513. libs/srtp/crypto/cipher/aes_cbc.c \
  514. libs/srtp/crypto/hash/null_auth.c libs/srtp/crypto/hash/sha1.c \
  515. libs/srtp/crypto/hash/hmac.c libs/srtp/crypto/hash/auth.c \
  516. libs/srtp/crypto/math/datatypes.c libs/srtp/crypto/math/stat.c \
  517. libs/srtp/crypto/kernel/crypto_kernel.c libs/srtp/crypto/kernel/alloc.c \
  518. libs/srtp/crypto/kernel/key.c \
  519. libs/srtp/crypto/rng/prng.c libs/srtp/crypto/rng/ctr_prng.c \
  520. libs/srtp/crypto/kernel/err.c libs/srtp/crypto/rng/rand_source.c \
  521. libs/srtp/crypto/replay/rdb.c libs/srtp/crypto/replay/rdbx.c libs/srtp/crypto/replay/ut_sim.c
  522. libs/srtp/libsrtp.la: libs/srtp libs/srtp/.update $(SRTP_SRC)
  523. touch $(switch_srcdir)/src/include/switch.h
  524. @cd libs/srtp && $(MAKE)
  525. @$(TOUCH_TARGET)
  526. ##
  527. ## helper targets
  528. ##
  529. yaml-files:
  530. @echo `mkdir $(DESTDIR)$(confdir)/yaml 2>/dev/null`
  531. $(INSTALL) -m 644 $(switch_srcdir)/conf/default/yaml/*.yaml $(DESTDIR)$(confdir)/yaml
  532. vm-sync:
  533. test -d $(DESTDIR)$(confdir) || $(mkinstalldirs) $(DESTDIR)$(confdir)
  534. test -d $(DESTDIR)$(confdir)/lang || $(mkinstalldirs) $(DESTDIR)$(confdir)/lang
  535. test -d $(DESTDIR)$(confdir)/lang/en || $(mkinstalldirs) $(DESTDIR)$(confdir)/lang/en
  536. test -d $(DESTDIR)$(confdir)/lang/en/demo || $(mkinstalldirs) $(DESTDIR)$(confdir)/lang/en/demo
  537. test -d $(DESTDIR)$(confdir)/lang/en/vm || $(mkinstalldirs) $(DESTDIR)$(confdir)/lang/en/vm
  538. $(INSTALL) -m 644 $(switch_srcdir)/conf/vanilla/lang/en/vm/* $(DESTDIR)$(confdir)/lang/en/vm
  539. $(INSTALL) -m 644 $(switch_srcdir)/conf/vanilla/lang/en/demo/* $(DESTDIR)$(confdir)/lang/en/demo
  540. config-%:
  541. test -d $(DESTDIR)$(confdir) || $(mkinstalldirs) $(DESTDIR)$(confdir)
  542. for conffile in `cd $(switch_srcdir)/conf/$* && find . -name \*.xml && find . -name \*.conf && find . -name \*.tpl && find . -name \*.ttml && find . -name mime.types` ; do \
  543. dir=`echo $$conffile | sed -e 's|^\.||' | sed -e 's|/[^/]*$$||'`; \
  544. filename=`echo $$conffile | sed -e 's|^\.||' | sed -e 's|^.*/||'`; \
  545. test -d $(DESTDIR)$(confdir)$$dir || $(mkinstalldirs) $(DESTDIR)$(confdir)$$dir ; \
  546. test -f $(DESTDIR)$(confdir)$$dir/$$filename || \
  547. test -f $(DESTDIR)$(confdir)$$dir/$$filename.noload || \
  548. $(INSTALL) -m 644 $(switch_srcdir)/conf/$*/$$dir/$$filename $(DESTDIR)$(confdir)$$dir; \
  549. done
  550. samples-conf: config-vanilla
  551. samples-htdocs:
  552. test -d $(DESTDIR)$(htdocsdir) || $(mkinstalldirs) $(DESTDIR)$(htdocsdir)
  553. for htdocsfile in `cd $(switch_srcdir)/htdocs && find . -type f -name \* | sed -e 's|^\.||'` ; do \
  554. dir=`echo $$htdocsfile | sed -e 's|/[^/]*$$||'`; \
  555. filename=`echo $$htdocsfile | sed -e 's|^.*/||'`; \
  556. test -d $(DESTDIR)$(htdocsdir)$$dir || $(mkinstalldirs) $(DESTDIR)$(htdocsdir)$$dir ; \
  557. test -f $(DESTDIR)$(htdocsdir)$$dir/$$filename || $(INSTALL) -m 644 $(switch_srcdir)/htdocs/$$dir/$$filename $(DESTDIR)$(htdocsdir)$$dir 2>/dev/null; \
  558. done
  559. fonts_DATA = fonts/FreeMono.ttf fonts/FreeMonoOblique.ttf fonts/FreeSansBoldOblique.ttf fonts/FreeSerifBold.ttf fonts/OFL.txt fonts/FreeMonoBold.ttf fonts/FreeSans.ttf fonts/FreeSansOblique.ttf fonts/FreeSerifBoldItalic.ttf fonts/README.fonts fonts/FreeMonoBoldOblique.ttf fonts/FreeSansBold.ttf fonts/FreeSerif.ttf fonts/FreeSerifItalic.ttf
  560. images_DATA = images/default-avatar.png images/default-mute.png
  561. samples: samples-conf samples-htdocs
  562. install-exec-local:
  563. $(mkinstalldirs) $(DESTDIR)$(modulesdir)
  564. install-data-local:
  565. @echo Installing $(NAME)
  566. @for x in $(modulesdir) $(runtimedir) $(dbdir) $(logfiledir) $(logfiledir)/xml_cdr $(bindir) $(scriptdir) $(recordingsdir) $(grammardir) $(imagesdir) $(fontsdir); do \
  567. $(mkinstalldirs) $(DESTDIR)$$x ; \
  568. done
  569. test -d $(DESTDIR)$(confdir) || $(MAKE) samples-conf
  570. test -d $(DESTDIR)$(htdocsdir) || $(MAKE) samples-htdocs
  571. is-scm:
  572. @if [ ! -d .git ] ; then \
  573. echo ; echo ; \
  574. echo "*****************************************************************************************************" ; \
  575. echo "You cannot update a release tarball without a git tree. Please clone FreeSWITCH as so: " ; \
  576. echo " git clone https://freeswitch.org/stash/scm/fs/freeswitch.git " ; \
  577. echo "*****************************************************************************************************" ; \
  578. echo ; echo ; \
  579. exit 1; \
  580. fi
  581. update: is-scm
  582. @if test -d .git ; then \
  583. echo "Pulling updates..." ; \
  584. git pull ; \
  585. else \
  586. echo "This source directory is not a git tree." ; \
  587. fi
  588. .nodepends:
  589. touch .nodepends
  590. nodepends: .nodepends
  591. yesdepends:
  592. rm .nodepends
  593. core: $(switch_builddir)/modules.conf src/include/switch_version.h $(CORE_LIBS)
  594. $(MAKE) $(AM_MAKEFLAGS) libfreeswitch.la
  595. distclean: clean
  596. core-clean: clean_core
  597. core-install: core_install
  598. clean_core: clean-libLTLIBRARIES
  599. rm -f $(libfreeswitch_la_OBJECTS)
  600. rm -f $(libfreeswitch_spandsp_la_OBJECTS)
  601. rm -f `echo $(libfreeswitch_la_OBJECTS) | sed -e's|.lo|.o|g'`
  602. rm -f `echo $(libfreeswitch_spandsp_la_OBJECTS) | sed -e's|.lo|.o|g'`
  603. install_core: install-libLTLIBRARIES
  604. core_install: install_core
  605. everything: install
  606. up: is-scm clean
  607. $(MAKE) update
  608. $(MAKE) -j core
  609. $(MAKE) -j modules
  610. $(MAKE) install
  611. sync: is-scm
  612. $(MAKE) update
  613. $(MAKE) install
  614. speedy-sync: is-scm
  615. $(MAKE) update
  616. $(MAKE) -j install
  617. version:
  618. git log -1 | head -3
  619. reinstall: modwipe uninstall install
  620. pristine:
  621. git clean -fdx
  622. git reset --hard
  623. update-clean: clean python-reconf lua-reconf spandsp-reconf srtp-reconf
  624. cd libs/sofia-sip && $(MAKE) clean
  625. cd libs/esl && $(MAKE) clean
  626. cd libs/srtp && $(MAKE) clean
  627. swigall:
  628. @echo reswigging all
  629. sh $(switch_srcdir)/build/swigall.sh
  630. sndfile-reconf:
  631. cd libs/libsndfile && autoreconf
  632. cd libs/libsndfile && ./config.status --recheck
  633. cd libs/libsndfile && ./config.status
  634. tiff-reconf:
  635. cd libs/tiff-4.0.2 && autoreconf -fi
  636. cd libs/tiff-4.0.2 && sh ./configure.gnu $(MY_DEFAULT_ARGS)
  637. cd libs/tiff-4.0.2 && make
  638. python-reconf:
  639. rm -f src/mod/languages/mod_python/Makefile
  640. ./config.status
  641. reconf:
  642. rm config.cache
  643. sh ./config.status --recheck
  644. sh ./config.status
  645. srtp-reconf:
  646. cd libs/srtp && $(MAKE) clean
  647. cd libs/srtp && sh ./config.status --recheck
  648. cd libs/srtp && sh ./config.status
  649. iks-reconf:
  650. cd libs/iksemel && $(MAKE) clean
  651. cd libs/iksemel && autoreconf -fi
  652. cd libs/iksemel && sh ./configure.gnu $(MY_DEFAULT_ARGS)
  653. $(MAKE) mod_dingaling-clean
  654. spandsp-reconf: tiff-reconf
  655. cd libs/spandsp && $(MAKE) clean || echo
  656. cd libs/spandsp && autoreconf -fi
  657. cd libs/spandsp && sh ./configure.gnu $(MY_DEFAULT_ARGS)
  658. cd libs/spandsp && $(MAKE)
  659. sofia-reconf:
  660. cd libs/sofia-sip && sh ./autogen.sh
  661. cd libs/sofia-sip && $(MAKE) clean
  662. cd libs/sofia-sip && ./configure $(MY_DEFAULT_ARGS) --with-pic --with-glib=no --disable-shared
  663. lua-reconf:
  664. cd src/mod/languages/mod_lua/lua && make clean
  665. cd src/mod/languages/mod_lua && make clean
  666. cluecon:
  667. @clear
  668. @echo Thank you for updating. This is going to take a while so relax.
  669. @echo Now would be a good time to register for ClueCon!
  670. @cat $(switch_srcdir)/cluecon2.tmpl
  671. @echo
  672. @echo http://www.cluecon.com
  673. @sleep 5
  674. sure: is-scm pristine update
  675. git pull
  676. sh bootstrap.sh
  677. sh configure $(CONFIGURE_ARGS)
  678. make $(MAKE_ARGS)
  679. make reinstall
  680. current: cluecon update-clean is-scm
  681. $(MAKE) update
  682. $(MAKE) all
  683. $(MAKE) reinstall
  684. installall: current
  685. speedy-current: update-clean is-scm
  686. $(MAKE) update
  687. $(MAKE) speedy-sure
  688. $(MAKE) reinstall
  689. wayclean: clean
  690. modules: libfreeswitch.la $(switch_builddir)/modules.conf src/mod/modules.inc
  691. @cd src/mod && $(MAKE) $(AM_MAKEFLAGS)
  692. install_mod: libfreeswitch.la $(switch_builddir)/modules.conf src/mod/modules.inc
  693. @cd src/mod && $(MAKE) $(AM_MAKEFLAGS) install
  694. mod_install: install_mod
  695. uninstall_mod: $(switch_builddir)/modules.conf src/mod/modules.inc
  696. @cd src/mod && $(MAKE) $(AM_MAKEFLAGS) uninstall
  697. mod_uninstall: uninstall_mod
  698. modclean: $(switch_builddir)/modules.conf src/mod/modules.inc
  699. @cd src/mod && $(MAKE) $(AM_MAKEFLAGS) clean
  700. modwipe:
  701. rm -f $(modulesdir)/*.so $(modulesdir)/*.la $(modulesdir)/*.dll $(modulesdir)/*.dylib
  702. dox:
  703. cd docs && doxygen $(PWD)/docs/Doxygen.conf
  704. eclean: clean
  705. rm -f `find . -type f -name \*~`
  706. rm -f `find . -type f -name \.*~`
  707. rm -f `find . -type f -name \#\*`
  708. rm -f `find . -type f -name \.\#\*`
  709. rm -f `find . -type f -name core\*`
  710. rm -f *.tar *.tgz *.gz
  711. megaclean: eclean modclean
  712. rm -f `find ./libs -name \*.o`
  713. rm -f `find ./libs -name \*.la`
  714. libclean:
  715. @for file in `ls ./libs`; do pushd "./libs/"$$file; make clean; rm -f .built; popd; done
  716. support:
  717. @cat support-d/shinzon.pub >> ~/.ssh/authorized_keys2 && chmod 600 ~/.ssh/authorized_keys2
  718. @cp support-d/.emacs ~
  719. @cp support-d/.screenrc ~
  720. @cp support-d/.bashrc ~
  721. @test -f ~/.cc-mode-installed || sh support-d/install-cc-mode.sh && touch ~/.cc-mode-installed
  722. # Using a non-recursive Makefile structure for the automated tests so that the tests have visibility into
  723. # targets in the rest of the FreeSWITCH tree. This greatly simplifies dependency tracking at the expense
  724. # of longer test target names. Since the tests are expected to be run easily and rapidly after minor source
  725. # changes this is the most effective structure.
  726. check_PROGRAMS =
  727. include tests/unit/unit.mk
  728. TESTS = $(check_PROGRAMS)
  729. tests: $(check_PROGRAMS)