Makefile 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930
  1. #
  2. # Asterisk -- A telephony toolkit for Linux.
  3. #
  4. # Top level Makefile
  5. #
  6. # Copyright (C) 1999-2005, Mark Spencer
  7. #
  8. # Mark Spencer <markster@digium.com>
  9. #
  10. # This program is free software, distributed under the terms of
  11. # the GNU General Public License
  12. #
  13. .EXPORT_ALL_VARIABLES:
  14. # Create OPTIONS variable
  15. OPTIONS=
  16. # If cross compiling, define these to suit
  17. # CROSS_COMPILE=/opt/montavista/pro/devkit/arm/xscale_be/bin/xscale_be-
  18. # CROSS_COMPILE_BIN=/opt/montavista/pro/devkit/arm/xscale_be/bin/
  19. # CROSS_COMPILE_TARGET=/opt/montavista/pro/devkit/arm/xscale_be/target
  20. CC=$(CROSS_COMPILE)gcc
  21. HOST_CC=gcc
  22. # CROSS_ARCH=Linux
  23. # CROSS_PROC=arm
  24. # SUB_PROC=xscale # or maverick
  25. ifeq ($(CROSS_COMPILE),)
  26. OSARCH=$(shell uname -s)
  27. OSREV=$(shell uname -r)
  28. OSCPU=$(shell uname -m)
  29. else
  30. OSARCH=$(CROSS_ARCH)
  31. OSREV=$(CROSS_REV)
  32. endif
  33. # Remember the MAKELEVEL at the top
  34. MAKETOPLEVEL?=$(MAKELEVEL)
  35. PWD=$(shell pwd)
  36. ifneq ($(findstring dont-optimize,$(MAKECMDGOALS)),dont-optimize)
  37. ######### More GSM codec optimization
  38. ######### Uncomment to enable MMXTM optimizations for x86 architecture CPU's
  39. ######### which support MMX instructions. This should be newer pentiums,
  40. ######### ppro's, etc, as well as the AMD K6 and K7.
  41. #K6OPT = -DK6OPT
  42. #Tell gcc to optimize the code
  43. OPTIMIZE+=-O6
  44. endif
  45. #Overwite config files on "make samples"
  46. OVERWRITE=y
  47. #Include debug and macro symbols in the executables (-g) and profiling info (-pg)
  48. DEBUG=-g3 #-pg
  49. #Set NOCRYPTO to yes if you do not want to have crypto support or
  50. #dependencies
  51. #NOCRYPTO=yes
  52. # If you are running a radio application, define RADIO_RELAX so that the DTMF
  53. # will be received more reliably
  54. #OPTIONS += -DRADIO_RELAX
  55. # If you don't have a lot of memory (e.g. embedded Asterisk), define LOW_MEMORY
  56. # to reduce the size of certain static buffers
  57. #ifneq ($(CROSS_COMPILE),)
  58. #OPTIONS += -DLOW_MEMORY
  59. #endif
  60. # Optional debugging parameters
  61. DEBUG_THREADS = #-DDUMP_SCHEDULER #-DDEBUG_SCHEDULER #-DDEBUG_THREADS #-DDO_CRASH #-DDETECT_DEADLOCKS
  62. # Uncomment next one to enable ast_frame tracing (for debugging)
  63. TRACE_FRAMES = #-DTRACE_FRAMES
  64. # Uncomment next one to enable malloc debugging
  65. # You can view malloc debugging with:
  66. # *CLI> show memory allocations [filename]
  67. # *CLI> show memory summary [filename]
  68. #
  69. MALLOC_DEBUG = #-include $(PWD)/include/asterisk/astmm.h
  70. INSTALL=install
  71. # Where to install asterisk after compiling
  72. # Default -> leave empty
  73. INSTALL_PREFIX?=
  74. # Staging directory
  75. # Files are copied here temporarily during the install process
  76. # For example, make DESTDIR=/tmp/asterisk woud put things in
  77. # /tmp/asterisk/etc/asterisk
  78. # XXX watch out, put no spaces or comments after the value
  79. DESTDIR?=
  80. #DESTDIR?=/tmp/asterisk
  81. # Original busydetect routine
  82. BUSYDETECT = #-DBUSYDETECT
  83. # Improved busydetect routine, comment the previous one if you use this one
  84. BUSYDETECT+= #-DBUSYDETECT_MARTIN
  85. # Detect the busy signal looking only at tone lengths
  86. # For example if you have 3 beeps 100ms tone, 100ms silence separated by 500 ms of silence
  87. BUSYDETECT+= #-DBUSYDETECT_TONEONLY
  88. # Inforce the detection of busy singal (get rid of false hangups)
  89. # Don't use together with -DBUSYDETECT_TONEONLY
  90. BUSYDETECT+= #-DBUSYDETECT_COMPARE_TONE_AND_SILENCE
  91. # Comment this if you want to disable MIDCOM
  92. MIDCOM = -DMIDCOM
  93. ifneq ($(OSARCH),SunOS)
  94. ASTLIBDIR=$(INSTALL_PREFIX)/usr/lib/asterisk
  95. ASTVARLIBDIR=$(INSTALL_PREFIX)/var/lib/asterisk
  96. ASTETCDIR=$(INSTALL_PREFIX)/etc/asterisk
  97. ASTSPOOLDIR=$(INSTALL_PREFIX)/var/spool/asterisk
  98. ASTLOGDIR=$(INSTALL_PREFIX)/var/log/asterisk
  99. ASTHEADERDIR=$(INSTALL_PREFIX)/usr/include/asterisk
  100. ASTCONFPATH=$(ASTETCDIR)/asterisk.conf
  101. ASTBINDIR=$(INSTALL_PREFIX)/usr/bin
  102. ASTSBINDIR=$(INSTALL_PREFIX)/usr/sbin
  103. ASTVARRUNDIR=$(INSTALL_PREFIX)/var/run
  104. ASTMANDIR=$(INSTALL_PREFIX)/usr/share/man
  105. MODULES_DIR=$(ASTLIBDIR)/modules
  106. AGI_DIR=$(ASTVARLIBDIR)/agi-bin
  107. else
  108. ASTLIBDIR=$(INSTALL_PREFIX)/opt/asterisk/lib
  109. ASTVARLIBDIR=$(INSTALL_PREFIX)/var/opt/asterisk/lib
  110. ASTETCDIR=$(INSTALL_PREFIX)/etc/opt/asterisk
  111. ASTSPOOLDIR=$(INSTALL_PREFIX)/var/opt/asterisk/spool
  112. ASTLOGDIR=$(INSTALL_PREFIX)/var/opt/asterisk/log
  113. ASTHEADERDIR=$(INSTALL_PREFIX)/opt/asterisk/usr/include/asterisk
  114. ASTCONFPATH=$(ASTETCDIR)/asterisk.conf
  115. ASTBINDIR=$(INSTALL_PREFIX)/opt/asterisk/usr/bin
  116. ASTSBINDIR=$(INSTALL_PREFIX)/opt/asterisk/usr/sbin
  117. ASTVARRUNDIR=$(INSTALL_PREFIX)/var/opt/asterisk/run
  118. ASTMANDIR=$(INSTALL_PREFIX)/opt/asterisk/usr/share/man
  119. MODULES_DIR=$(ASTLIBDIR)/modules
  120. AGI_DIR=$(ASTVARLIBDIR)/agi-bin
  121. endif
  122. ASTCFLAGS=
  123. # Pentium Pro Optimize
  124. #PROC=i686
  125. # Pentium & VIA processors optimize
  126. #PROC=i586
  127. #PROC=k6
  128. #PROC=ppc
  129. #Uncomment this to use the older DSP routines
  130. #ASTCFLAGS+=-DOLD_DSP_ROUTINES
  131. # Determine by a grep 'DocumentRoot' of your httpd.conf file
  132. HTTP_DOCSDIR=/var/www/html
  133. # Determine by a grep 'ScriptAlias' of your httpd.conf file
  134. HTTP_CGIDIR=/var/www/cgi-bin
  135. # If the file .asterisk.makeopts is present in your home directory, you can
  136. # include all of your favorite Makefile options so that every time you download
  137. # a new version of Asterisk, you don't have to edit the makefile to set them.
  138. # The file, /etc/asterisk.makeopts will also be included, but can be overridden
  139. # by the file in your home directory.
  140. ifneq ($(wildcard /etc/asterisk.makeopts),)
  141. include /etc/asterisk.makeopts
  142. endif
  143. ifneq ($(wildcard ~/.asterisk.makeopts),)
  144. include ~/.asterisk.makeopts
  145. endif
  146. ifeq ($(OSARCH),Linux)
  147. ifeq ($(CROSS_COMPILE),)
  148. PROC?=$(shell uname -m)
  149. else
  150. PROC=$(CROSS_PROC)
  151. endif
  152. ifeq ($(PROC),x86_64)
  153. # You must have GCC 3.4 to use k8, otherwise use athlon
  154. PROC=k8
  155. #PROC=athlon
  156. endif
  157. ifeq ($(PROC),sparc64)
  158. #The problem with sparc is the best stuff is in newer versions of gcc (post 3.0) only.
  159. #This works for even old (2.96) versions of gcc and provides a small boost either way.
  160. #A ultrasparc cpu is really v9 but the stock debian stable 3.0 gcc doesn't support it.
  161. #So we go lowest common available by gcc and go a step down, still a step up from
  162. #the default as we now have a better instruction set to work with. - Belgarath
  163. PROC=ultrasparc
  164. OPTIONS+=$(shell if $(CC) -mtune=$(PROC) -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-mtune=$(PROC)"; fi)
  165. OPTIONS+=$(shell if $(CC) -mcpu=v8 -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-mcpu=v8"; fi)
  166. OPTIONS+=-fomit-frame-pointer
  167. endif
  168. ifeq ($(PROC),arm)
  169. # The Cirrus logic is the only heavily shipping arm processor with a real floating point unit
  170. ifeq ($(SUB_PROC),maverick)
  171. OPTIONS+=-fsigned-char -mcpu=ep9312
  172. else
  173. ifeq ($(SUB_PROC),xscale)
  174. OPTIONS+=-fsigned-char -mcpu=xscale
  175. else
  176. OPTIONS+=-fsigned-char
  177. endif
  178. endif
  179. endif
  180. MPG123TARG=linux
  181. endif
  182. GREP=grep
  183. LN=ln
  184. ID=id
  185. ifeq ($(OSARCH),SunOS)
  186. GREP=/usr/xpg4/bin/grep
  187. M4=/usr/local/bin/m4
  188. ID=/usr/xpg4/bin/id
  189. LN=/usr/xpg4/bin/ln
  190. INSTALL=ginstall
  191. endif
  192. INCLUDE+=-Iinclude -I../include
  193. ASTCFLAGS+=-pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $(DEBUG) $(INCLUDE) -D_REENTRANT -D_GNU_SOURCE #-DMAKE_VALGRIND_HAPPY
  194. ASTCFLAGS+=$(OPTIMIZE)
  195. ASTOBJ=-o asterisk
  196. ifeq ($(findstring BSD,$(OSARCH)),BSD)
  197. PROC=$(shell uname -m)
  198. ASTCFLAGS+=-I$(CROSS_COMPILE_TARGET)/usr/local/include -L$(CROSS_COMPILE_TARGET)/usr/local/lib
  199. endif
  200. ifneq ($(PROC),ultrasparc)
  201. ASTCFLAGS+=$(shell if $(CC) -march=$(PROC) -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo "-march=$(PROC)"; fi)
  202. endif
  203. ifeq ($(PROC),ppc)
  204. ASTCFLAGS+=-fsigned-char
  205. endif
  206. ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/local/include/osp/osp.h),)
  207. ASTCFLAGS+=-DOSP_SUPPORT -I$(CROSS_COMPILE_TARGET)/usr/local/include/osp
  208. else
  209. ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/osp/osp.h),)
  210. ASTCFLAGS+=-DOSP_SUPPORT -I$(CROSS_COMPILE_TARGET)/usr/include/osp
  211. endif
  212. endif
  213. ifeq ($(OSARCH),FreeBSD)
  214. BSDVERSION=$(shell make -V OSVERSION -f $(CROSS_COMPILE_TARGET)/usr/share/mk/bsd.port.subdir.mk)
  215. ASTCFLAGS+=$(shell if test $(BSDVERSION) -lt 500016 ; then echo "-D_THREAD_SAFE"; fi)
  216. LIBS+=$(shell if test $(BSDVERSION) -lt 502102 ; then echo "-lc_r"; else echo "-pthread"; fi)
  217. ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/local/include/spandsp),)
  218. ASTCFLAGS+=-I$(CROSS_COMPILE_TARGET)/usr/local/include/spandsp
  219. endif
  220. MPG123TARG=freebsd
  221. # XXX FreeBSD paths
  222. PREFIX?=/usr/local
  223. ASTLIBDIR=$(INSTALL_PREFIX)$(PREFIX)/lib/asterisk
  224. ASTVARLIBDIR=$(INSTALL_PREFIX)$(PREFIX)/share/asterisk
  225. ASTETCDIR=$(INSTALL_PREFIX)$(PREFIX)/etc/asterisk
  226. ASTSPOOLDIR=$(INSTALL_PREFIX)/var/spool/asterisk
  227. ASTLOGDIR=$(INSTALL_PREFIX)/var/log/asterisk
  228. ASTHEADERDIR=$(INSTALL_PREFIX)$(PREFIX)/include/asterisk
  229. ASTCONFPATH=$(ASTETCDIR)/asterisk.conf
  230. ASTBINDIR=$(INSTALL_PREFIX)$(PREFIX)/bin
  231. ASTSBINDIR=$(INSTALL_PREFIX)$(PREFIX)/sbin
  232. ASTVARRUNDIR=$(INSTALL_PREFIX)/var/run
  233. ASTMANDIR=$(INSTALL_PREFIX)$(PREFIX)/man
  234. # XXX end FreeBSD paths
  235. endif # FreeBSD
  236. ifeq ($(OSARCH),NetBSD)
  237. ASTCFLAGS+=-pthread
  238. INCLUDE+=-I$(CROSS_COMPILE_TARGET)/usr/pkg/include
  239. MPG123TARG=netbsd
  240. endif
  241. ifeq ($(OSARCH),OpenBSD)
  242. ASTCFLAGS+=-pthread
  243. endif
  244. ifeq ($(OSARCH),SunOS)
  245. ASTCFLAGS+=-Wcast-align -DSOLARIS
  246. INCLUDE+=-Iinclude/solaris-compat -I$(CROSS_COMPILE_TARGET)/opt/ssl/include -I$(CROSS_COMPILE_TARGET)/usr/local/ssl/include
  247. ifeq ($(OSCPU),sun4u)
  248. OPTIMIZE+=-mcpu=v9 -mcpu=ultrasparc
  249. endif
  250. endif
  251. ifeq ($(findstring CYGWIN,$(OSARCH)),CYGWIN)
  252. CYGLOADER=cygwin_a
  253. OSARCH=CYGWIN
  254. ASTOBJ=-shared -o asterisk.dll -Wl,--out-implib=libasterisk.dll.a -Wl,--export-all-symbols
  255. ASTLINK=
  256. LIBS+=-lpthread -lncurses -lm -lresolv
  257. ASTSBINDIR=$(MODULES_DIR)
  258. PROC=$(shell uname -m)
  259. endif
  260. ifndef WITHOUT_ZAPTEL
  261. ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/linux/zaptel.h)$(wildcard $(CROSS_COMPILE_TARGET)/usr/local/include/zaptel.h)$(wildcard $(CROSS_COMPILE_TARGET)/usr/pkg/include/zaptel.h),)
  262. ASTCFLAGS+=-DZAPTEL_OPTIMIZATIONS
  263. endif
  264. endif # WITHOUT_ZAPTEL
  265. LIBEDIT=editline/libedit.a
  266. ifneq ($(wildcard .version),)
  267. ASTERISKVERSION:=$(shell cat .version)
  268. ASTERISKVERSIONNUM:=$(shell awk -F. '{printf "%01d%02d%02d", $$1, $$2, $$3}' .version)
  269. RPMVERSION:=$(shell sed 's/[-\/:]/_/g' .version)
  270. else
  271. RPMVERSION=unknown
  272. endif
  273. # CVS mirrors of SVN have .svnrevision files showing
  274. # which SVN revision they are based on, and .svnbranch
  275. # showing the branch they are made from
  276. ifneq ($(wildcard .svnrevision),)
  277. ASTERISKVERSIONNUM=999999
  278. ASTERISKVERSION:=SVN-$(shell cat .svnbranch)-r$(shell cat .svnrevision)
  279. else
  280. ifneq ($(wildcard .svn),)
  281. ASTERISKVERSIONNUM=999999
  282. ASTERISKVERSION=SVN-$(shell build_tools/make_svn_branch_name)
  283. endif
  284. endif
  285. ASTCFLAGS+= $(DEBUG_THREADS)
  286. ASTCFLAGS+= $(TRACE_FRAMES)
  287. ASTCFLAGS+= $(MALLOC_DEBUG)
  288. ASTCFLAGS+= $(BUSYDETECT)
  289. ASTCFLAGS+= $(MIDCOM)
  290. ASTCFLAGS+= $(OPTIONS)
  291. ifneq ($(findstring dont-optimize,$(MAKECMDGOALS)),dont-optimize)
  292. ASTCFLAGS+= -fomit-frame-pointer
  293. endif
  294. SUBDIRS=res channels pbx apps codecs formats agi cdr funcs utils stdtime
  295. OBJS=io.o sched.o logger.o frame.o loader.o config.o channel.o \
  296. translate.o file.o say.o pbx.o cli.o md5.o term.o \
  297. ulaw.o alaw.o callerid.o fskmodem.o image.o app.o \
  298. cdr.o tdd.o acl.o rtp.o manager.o asterisk.o \
  299. dsp.o chanvars.o indications.o autoservice.o db.o privacy.o \
  300. astmm.o enum.o srv.o dns.o aescrypt.o aestab.o aeskey.o \
  301. utils.o plc.o jitterbuf.o dnsmgr.o devicestate.o \
  302. netsock.o slinfactory.o ast_expr2.o ast_expr2f.o \
  303. cryptostub.o astobj2.o
  304. ifeq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/sys/poll.h),)
  305. OBJS+= poll.o
  306. ASTCFLAGS+=-DPOLLCOMPAT
  307. endif
  308. ifeq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/dlfcn.h),)
  309. OBJS+= dlfcn.o
  310. ASTCFLAGS+=-DDLFCNCOMPAT
  311. endif
  312. ifeq ($(OSARCH),Linux)
  313. LIBS+=-ldl -lpthread -lncurses -lm -lresolv #-lnjamd
  314. else
  315. ifeq ($(OSARCH),SunOS)
  316. LIBS+=-lm -lcurses
  317. else
  318. LIBS+=-lncurses -lm
  319. endif
  320. endif
  321. ifeq ($(OSARCH),Darwin)
  322. LIBS+=-lresolv
  323. ASTCFLAGS+=-D__Darwin__
  324. AUDIO_LIBS=-framework CoreAudio
  325. ASTLINK=-Wl,-dynamic
  326. SOLINK=-dynamic -bundle -undefined suppress -force_flat_namespace
  327. OBJS+= poll.o
  328. ASTCFLAGS+=-DPOLLCOMPAT
  329. else
  330. #These are used for all but Darwin
  331. ASTLINK=-Wl,-E
  332. SOLINK=-shared -Xlinker -x
  333. endif
  334. ifeq ($(OSARCH),FreeBSD)
  335. LIBS+=-lcrypto
  336. endif
  337. ifeq ($(OSARCH),NetBSD)
  338. LIBS+=-lpthread -lcrypto -lm -L$(CROSS_COMPILE_TARGET)/usr/pkg/lib -lncurses
  339. endif
  340. ifeq ($(OSARCH),OpenBSD)
  341. LIBS+=-lcrypto -lpthread -lm -lncurses
  342. endif
  343. ifeq ($(OSARCH),SunOS)
  344. LIBS+=-lpthread -ldl -lnsl -lsocket -lresolv -L$(CROSS_COMPILE_TARGET)/opt/ssl/lib -L$(CROSS_COMPILE_TARGET)/usr/local/ssl/lib
  345. OBJS+=strcompat.o
  346. ASTLINK=
  347. SOLINK=-shared -fpic -L$(CROSS_COMPILE_TARGET)/opt/ssl/lib -L$(CROSS_COMPILE_TARGET)/usr/local/ssl/lib
  348. endif
  349. ifeq ($(MAKETOPLEVEL),$(MAKELEVEL))
  350. CFLAGS+=$(ASTCFLAGS)
  351. endif
  352. # This is used when generating the doxygen documentation
  353. ifneq ($(wildcard /usr/local/bin/dot)$(wildcard /usr/bin/dot),)
  354. HAVEDOT=yes
  355. else
  356. HAVEDOT=no
  357. endif
  358. LIBS+=-lssl
  359. _all: all
  360. @echo " +--------- Asterisk Build Complete ---------+"
  361. @echo " + Asterisk has successfully been built, but +"
  362. @echo " + cannot be run before being installed by +"
  363. @echo " + running: +"
  364. @echo " + +"
  365. @echo " + $(MAKE) install +"
  366. @echo " +-------------------------------------------+"
  367. all: cleantest depend asterisk subdirs
  368. #ifneq ($(wildcard tags),)
  369. ctags: tags
  370. #endif
  371. ifneq ($(wildcard TAGS),)
  372. all: TAGS
  373. endif
  374. noclean: depend asterisk subdirs
  375. editline/config.h:
  376. cd editline && unset CFLAGS LIBS && CFLAGS="$(OPTIMIZE)" ./configure ; \
  377. editline/libedit.a: FORCE
  378. cd editline && unset CFLAGS LIBS && test -f config.h || CFLAGS="$(OPTIMIZE)" ./configure
  379. $(MAKE) -C editline libedit.a
  380. db1-ast/libdb1.a: FORCE
  381. @if [ -d db1-ast ]; then \
  382. $(MAKE) -C db1-ast libdb1.a ; \
  383. else \
  384. echo "You need to do a cvs update -d not just cvs update"; \
  385. exit 1; \
  386. fi
  387. ifneq ($(wildcard .depend),)
  388. include .depend
  389. endif
  390. ifneq ($(wildcard .tags-depend),)
  391. include .tags-depend
  392. endif
  393. ast_expr2.c:
  394. bison -d --name-prefix=ast_yy ast_expr2.y -o ast_expr2.c
  395. ast_expr2f.c:
  396. flex --full ast_expr2.fl
  397. testexpr2: ast_expr2f.c ast_expr2.c ast_expr2.h
  398. gcc -g -c -DSTANDALONE ast_expr2f.c
  399. gcc -g -c -DSTANDALONE ast_expr2.c
  400. gcc -g -o testexpr2 ast_expr2f.o ast_expr2.o
  401. rm ast_expr2.o ast_expr2f.o
  402. manpage: asterisk.8
  403. asterisk.8: asterisk.sgml
  404. rm -f asterisk.8
  405. docbook2man asterisk.sgml
  406. mv ./*.8 asterisk.8
  407. asterisk.pdf: asterisk.sgml
  408. docbook2pdf asterisk.sgml
  409. asterisk.ps: asterisk.sgml
  410. docbook2ps asterisk.sgml
  411. asterisk.html: asterisk.sgml
  412. docbook2html asterisk.sgml
  413. mv r1.html asterisk.html
  414. asterisk.txt: asterisk.sgml
  415. docbook2txt asterisk.sgml
  416. defaults.h: FORCE
  417. build_tools/make_defaults_h > $@.tmp
  418. if cmp -s $@.tmp $@ ; then echo ; else \
  419. mv $@.tmp $@ ; \
  420. fi
  421. rm -f $@.tmp
  422. include/asterisk/version.h: FORCE
  423. build_tools/make_version_h > $@.tmp
  424. if cmp -s $@.tmp $@ ; then echo; else \
  425. mv $@.tmp $@ ; \
  426. fi
  427. rm -f $@.tmp
  428. stdtime/libtime.a: FORCE
  429. @if [ -d stdtime ]; then \
  430. $(MAKE) -C stdtime libtime.a ; \
  431. else \
  432. echo "You need to do a cvs update -d not just cvs update"; \
  433. exit 1; \
  434. fi
  435. cygwin_a:
  436. $(MAKE) -C cygwin all
  437. asterisk: $(CYGLOADER) editline/libedit.a db1-ast/libdb1.a stdtime/libtime.a $(OBJS)
  438. build_tools/make_build_h > include/asterisk/build.h.tmp
  439. if cmp -s include/asterisk/build.h.tmp include/asterisk/build.h ; then echo ; else \
  440. mv include/asterisk/build.h.tmp include/asterisk/build.h ; \
  441. fi
  442. rm -f include/asterisk/build.h.tmp
  443. $(CC) -c -o buildinfo.o $(CFLAGS) buildinfo.c
  444. $(CC) $(DEBUG) $(ASTOBJ) $(ASTLINK) $(OBJS) buildinfo.o $(LIBEDIT) db1-ast/libdb1.a stdtime/libtime.a $(LIBS)
  445. muted: muted.o
  446. $(CC) $(AUDIO_LIBS) -o muted muted.o
  447. subdirs:
  448. for x in $(SUBDIRS); do $(MAKE) -C $$x || exit 1 ; done
  449. clean:
  450. for x in $(SUBDIRS); do $(MAKE) -C $$x clean || exit 1 ; done
  451. rm -f *.o *.so asterisk .depend
  452. rm -f defaults.h
  453. rm -f include/asterisk/build.h
  454. rm -f include/asterisk/version.h
  455. rm -f .tags-depend .tags-sources tags TAGS
  456. @if [ -f editline/Makefile ]; then $(MAKE) -C editline distclean ; fi
  457. @if [ -d mpg123-0.59r ]; then $(MAKE) -C mpg123-0.59r clean; fi
  458. $(MAKE) -C db1-ast clean
  459. $(MAKE) -C stdtime clean
  460. datafiles: all
  461. if [ x`$(ID) -un` = xroot ]; then sh mkpkgconfig $(DESTDIR)/usr/lib/pkgconfig; fi
  462. mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/sounds/digits
  463. mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/sounds/silence
  464. mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/sounds/priv-callerintros
  465. for x in sounds/digits/*.gsm; do \
  466. if $(GREP) -q "^%`basename $$x`%" sounds.txt; then \
  467. $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTVARLIBDIR)/sounds/digits ; \
  468. else \
  469. echo "No description for $$x"; \
  470. exit 1; \
  471. fi; \
  472. done
  473. for x in sounds/silence/*.gsm; do \
  474. if $(GREP) -q "^%`basename $$x`%" sounds.txt; then \
  475. $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTVARLIBDIR)/sounds/silence ; \
  476. else \
  477. echo "No description for $$x"; \
  478. exit 1; \
  479. fi; \
  480. done
  481. mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/sounds/dictate
  482. for x in sounds/dictate/*.gsm; do \
  483. if $(GREP) -q "^%`basename $$x`%" sounds.txt; then \
  484. $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTVARLIBDIR)/sounds/dictate ; \
  485. else \
  486. echo "No description for $$x"; \
  487. exit 1; \
  488. fi; \
  489. done
  490. mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/sounds/letters
  491. for x in sounds/letters/*.gsm; do \
  492. if $(GREP) -q "^%`basename $$x`%" sounds.txt; then \
  493. $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTVARLIBDIR)/sounds/letters ; \
  494. else \
  495. echo "No description for $$x"; \
  496. exit 1; \
  497. fi; \
  498. done
  499. mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/sounds/phonetic
  500. for x in sounds/phonetic/*.gsm; do \
  501. if $(GREP) -q "^%`basename $$x`%" sounds.txt; then \
  502. $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTVARLIBDIR)/sounds/phonetic ; \
  503. else \
  504. echo "No description for $$x"; \
  505. exit 1; \
  506. fi; \
  507. done
  508. for x in sounds/demo-* sounds/vm-* sounds/transfer* sounds/pbx-* sounds/ss-* sounds/beep* sounds/dir-* sounds/conf-* sounds/agent-* sounds/invalid* sounds/tt-* sounds/auth-* sounds/privacy-* sounds/queue-* sounds/spy-* sounds/priv-* sounds/screen-* sounds/hello-* sounds/hours* sounds/minute* sounds/second* ; do \
  509. if $(GREP) -q "^%`basename $$x`%" sounds.txt; then \
  510. $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTVARLIBDIR)/sounds ; \
  511. else \
  512. echo "No description for $$x"; \
  513. exit 1; \
  514. fi; \
  515. done
  516. mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/mohmp3
  517. mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/images
  518. for x in images/*.jpg; do \
  519. $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTVARLIBDIR)/images ; \
  520. done
  521. mkdir -p $(DESTDIR)$(AGI_DIR)
  522. update:
  523. @if [ -d .svn ]; then \
  524. echo "Updating from Subversion..." ; \
  525. svn update | tee update.out; \
  526. rm -f .version; \
  527. if [ `grep -c ^C update.out` -gt 0 ]; then \
  528. echo ; echo "The following files have conflicts:" ; \
  529. grep ^C update.out | cut -b4- ; \
  530. fi ; \
  531. rm -f update.out; \
  532. elif [ -d CVS ]; then \
  533. echo "Updating from CVS..." ; \
  534. cvs -q -z3 update -Pd | tee update.out; \
  535. rm -f .version; \
  536. if [ `grep -c ^C update.out` -gt 0 ]; then \
  537. echo ; echo "The following files have conflicts:" ; \
  538. grep ^C update.out | cut -d' ' -f2- ; \
  539. fi ; \
  540. rm -f update.out; \
  541. else \
  542. echo "Not under version control"; \
  543. fi
  544. NEWHEADERS=$(notdir $(wildcard include/asterisk/*.h))
  545. OLDHEADERS=$(filter-out $(NEWHEADERS),$(notdir $(wildcard $(DESTDIR)$(ASTHEADERDIR)/*.h)))
  546. bininstall: all
  547. mkdir -p $(DESTDIR)$(MODULES_DIR)
  548. mkdir -p $(DESTDIR)$(ASTSBINDIR)
  549. mkdir -p $(DESTDIR)$(ASTETCDIR)
  550. mkdir -p $(DESTDIR)$(ASTBINDIR)
  551. mkdir -p $(DESTDIR)$(ASTVARRUNDIR)
  552. mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/voicemail
  553. mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/dictate
  554. mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/system
  555. mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/tmp
  556. mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/meetme
  557. mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/monitor
  558. if [ -f asterisk ]; then $(INSTALL) -m 755 asterisk $(DESTDIR)$(ASTSBINDIR)/; fi
  559. if [ -f cygwin/asterisk.exe ]; then $(INSTALL) -m 755 cygwin/asterisk.exe $(DESTDIR)$(ASTSBINDIR)/; fi
  560. if [ -f asterisk.dll ]; then $(INSTALL) -m 755 asterisk.dll $(DESTDIR)$(ASTSBINDIR)/; fi
  561. $(LN) -sf asterisk $(DESTDIR)$(ASTSBINDIR)/rasterisk
  562. $(INSTALL) -m 755 contrib/scripts/astgenkey $(DESTDIR)$(ASTSBINDIR)/
  563. $(INSTALL) -m 755 contrib/scripts/autosupport $(DESTDIR)$(ASTSBINDIR)/
  564. if [ ! -f $(DESTDIR)$(ASTSBINDIR)/safe_asterisk ]; then \
  565. cat contrib/scripts/safe_asterisk | sed 's|__ASTERISK_SBIN_DIR__|$(ASTSBINDIR)|;s|__ASTERISK_VARRUN_DIR__|$(ASTVARRUNDIR)|;' > $(DESTDIR)$(ASTSBINDIR)/safe_asterisk ;\
  566. chmod 755 $(DESTDIR)$(ASTSBINDIR)/safe_asterisk;\
  567. fi
  568. $(INSTALL) -d $(DESTDIR)$(ASTHEADERDIR)
  569. $(INSTALL) -m 644 include/asterisk/*.h $(DESTDIR)$(ASTHEADERDIR)
  570. if [ -n "$(OLDHEADERS)" ]; then \
  571. rm -f $(addprefix $(DESTDIR)$(ASTHEADERDIR)/,$(OLDHEADERS)) ;\
  572. fi
  573. mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/sounds
  574. mkdir -p $(DESTDIR)$(ASTLOGDIR)/cdr-csv
  575. mkdir -p $(DESTDIR)$(ASTLOGDIR)/cdr-custom
  576. mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/keys
  577. mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/firmware
  578. mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/firmware/iax
  579. mkdir -p $(DESTDIR)$(ASTMANDIR)/man8
  580. $(INSTALL) -m 644 keys/iaxtel.pub $(DESTDIR)$(ASTVARLIBDIR)/keys
  581. $(INSTALL) -m 644 keys/freeworlddialup.pub $(DESTDIR)$(ASTVARLIBDIR)/keys
  582. $(INSTALL) -m 644 asterisk.8 $(DESTDIR)$(ASTMANDIR)/man8
  583. $(INSTALL) -m 644 contrib/scripts/astgenkey.8 $(DESTDIR)$(ASTMANDIR)/man8
  584. $(INSTALL) -m 644 contrib/scripts/autosupport.8 $(DESTDIR)$(ASTMANDIR)/man8
  585. $(INSTALL) -m 644 contrib/scripts/safe_asterisk.8 $(DESTDIR)$(ASTMANDIR)/man8
  586. if [ -d contrib/firmware/iax ]; then \
  587. $(INSTALL) -m 644 contrib/firmware/iax/iaxy.bin $(DESTDIR)$(ASTVARLIBDIR)/firmware/iax/iaxy.bin; \
  588. else \
  589. echo "You need to do cvs update -d not just cvs update" ; \
  590. fi
  591. if [ -f mpg123-0.59r/mpg123 ]; then $(MAKE) -C mpg123-0.59r install; fi
  592. install-subdirs:
  593. for x in $(SUBDIRS); do $(MAKE) -C $$x install || exit 1 ; done
  594. NEWMODS=$(notdir $(wildcard */*.so))
  595. OLDMODS=$(filter-out $(NEWMODS),$(notdir $(wildcard $(DESTDIR)$(MODULES_DIR)/*.so)))
  596. oldmodcheck:
  597. @if [ -n "$(OLDMODS)" ]; then \
  598. echo " WARNING WARNING WARNING" ;\
  599. echo "" ;\
  600. echo " Your Asterisk modules directory, located at" ;\
  601. echo " $(DESTDIR)$(MODULES_DIR)" ;\
  602. echo " contains modules that were not installed by this " ;\
  603. echo " version of Asterisk. Please ensure that these" ;\
  604. echo " modules are compatible with this version before" ;\
  605. echo " attempting to run Asterisk." ;\
  606. echo "" ;\
  607. for f in $(OLDMODS); do \
  608. echo " $$f" ;\
  609. done ;\
  610. echo "" ;\
  611. echo " WARNING WARNING WARNING" ;\
  612. fi
  613. install: all datafiles bininstall install-subdirs
  614. @if [ -x /usr/sbin/asterisk-post-install ]; then \
  615. /usr/sbin/asterisk-post-install $(DESTDIR) . ; \
  616. fi
  617. @echo " +---- Asterisk Installation Complete -------+"
  618. @echo " + +"
  619. @echo " + YOU MUST READ THE SECURITY DOCUMENT +"
  620. @echo " + +"
  621. @echo " + Asterisk has successfully been installed. +"
  622. @echo " + If you would like to install the sample +"
  623. @echo " + configuration files (overwriting any +"
  624. @echo " + existing config files), run: +"
  625. @echo " + +"
  626. @echo " + $(MAKE) samples +"
  627. @echo " + +"
  628. @echo " +----------------- or ---------------------+"
  629. @echo " + +"
  630. @echo " + You can go ahead and install the asterisk +"
  631. @echo " + program documentation now or later run: +"
  632. @echo " + +"
  633. @echo " + $(MAKE) progdocs +"
  634. @echo " + +"
  635. @echo " + **Note** This requires that you have +"
  636. @echo " + doxygen installed on your local system +"
  637. @echo " +-------------------------------------------+"
  638. @$(MAKE) -s oldmodcheck
  639. upgrade: all bininstall
  640. adsi:
  641. mkdir -p $(DESTDIR)$(ASTETCDIR)
  642. for x in configs/*.adsi; do \
  643. if [ ! -f $(DESTDIR)$(ASTETCDIRX)/$$x ]; then \
  644. $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTETCDIR)/`basename $$x` ; \
  645. fi ; \
  646. done
  647. samples: adsi
  648. mkdir -p $(DESTDIR)$(ASTETCDIR)
  649. for x in configs/*.sample; do \
  650. if [ -f $(DESTDIR)$(ASTETCDIR)/`basename $$x .sample` ]; then \
  651. if [ "$(OVERWRITE)" = "y" ]; then \
  652. if cmp -s $(DESTDIR)$(ASTETCDIR)/`basename $$x .sample` $$x ; then \
  653. echo "Config file $$x is unchanged"; \
  654. continue; \
  655. fi ; \
  656. mv -f $(DESTDIR)$(ASTETCDIR)/`basename $$x .sample` $(DESTDIR)$(ASTETCDIR)/`basename $$x .sample`.old ; \
  657. else \
  658. echo "Skipping config file $$x"; \
  659. continue; \
  660. fi ;\
  661. fi ; \
  662. $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTETCDIR)/`basename $$x .sample` ;\
  663. done
  664. if [ "$(OVERWRITE)" = "y" ] || [ ! -f $(DESTDIR)$(ASTCONFPATH) ]; then \
  665. ( \
  666. echo "[directories]" ; \
  667. echo "astetcdir => $(ASTETCDIR)" ; \
  668. echo "astmoddir => $(MODULES_DIR)" ; \
  669. echo "astvarlibdir => $(ASTVARLIBDIR)" ; \
  670. echo "astagidir => $(AGI_DIR)" ; \
  671. echo "astspooldir => $(ASTSPOOLDIR)" ; \
  672. echo "astrundir => $(ASTVARRUNDIR)" ; \
  673. echo "astlogdir => $(ASTLOGDIR)" ; \
  674. echo "" ; \
  675. echo "; Changing the following lines may compromise your security." ; \
  676. echo ";[files]" ; \
  677. echo ";astctlpermissions = 0660" ; \
  678. echo ";astctlowner = root" ; \
  679. echo ";astctlgroup = apache" ; \
  680. echo ";astctl = asterisk.ctl" ; \
  681. ) > $(DESTDIR)$(ASTCONFPATH) ; \
  682. else \
  683. echo "Skipping asterisk.conf creation"; \
  684. fi
  685. mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/sounds ; \
  686. for x in sounds/demo-*; do \
  687. if $(GREP) -q "^%`basename $$x`%" sounds.txt; then \
  688. $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTVARLIBDIR)/sounds ; \
  689. else \
  690. echo "No description for $$x"; \
  691. exit 1; \
  692. fi; \
  693. done
  694. mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/mohmp3 ; \
  695. for x in sounds/moh/*.mp3 sounds/moh/LICENSE; do \
  696. $(INSTALL) -m 644 $$x $(DESTDIR)$(ASTVARLIBDIR)/mohmp3 ; \
  697. done
  698. rm -f $(DESTDIR)$(ASTVARLIBDIR)/mohmp3/sample-hold.mp3
  699. mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/voicemail/default/1234/INBOX
  700. :> $(DESTDIR)$(ASTSPOOLDIR)/voicemail/default/1234/unavail.gsm
  701. for x in vm-theperson digits/1 digits/2 digits/3 digits/4 vm-isunavail; do \
  702. cat $(DESTDIR)$(ASTVARLIBDIR)/sounds/$$x.gsm >> $(DESTDIR)$(ASTSPOOLDIR)/voicemail/default/1234/unavail.gsm ; \
  703. done
  704. :> $(DESTDIR)$(ASTSPOOLDIR)/voicemail/default/1234/busy.gsm
  705. for x in vm-theperson digits/1 digits/2 digits/3 digits/4 vm-isonphone; do \
  706. cat $(DESTDIR)$(ASTVARLIBDIR)/sounds/$$x.gsm >> $(DESTDIR)$(ASTSPOOLDIR)/voicemail/default/1234/busy.gsm ; \
  707. done
  708. webvmail:
  709. @[ -d $(DESTDIR)$(HTTP_DOCSDIR)/ ] || ( printf "http docs directory not found.\nUpdate assignment of variable HTTP_DOCSDIR in Makefile!\n" && exit 1 )
  710. @[ -d $(DESTDIR)$(HTTP_CGIDIR) ] || ( printf "cgi-bin directory not found.\nUpdate assignment of variable HTTP_CGIDIR in Makefile!\n" && exit 1 )
  711. $(INSTALL) -m 4755 -o root -g root contrib/scripts/vmail.cgi $(DESTDIR)$(HTTP_CGIDIR)/vmail.cgi
  712. mkdir -p $(DESTDIR)$(HTTP_DOCSDIR)/_asterisk
  713. for x in images/*.gif; do \
  714. $(INSTALL) -m 644 $$x $(DESTDIR)$(HTTP_DOCSDIR)/_asterisk/; \
  715. done
  716. @echo " +--------- Asterisk Web Voicemail ----------+"
  717. @echo " + +"
  718. @echo " + Asterisk Web Voicemail is installed in +"
  719. @echo " + your cgi-bin directory: +"
  720. @echo " + $(DESTDIR)$(HTTP_CGIDIR)"
  721. @echo " + IT USES A SETUID ROOT PERL SCRIPT, SO +"
  722. @echo " + IF YOU DON'T LIKE THAT, UNINSTALL IT! +"
  723. @echo " + +"
  724. @echo " + Other static items have been stored in: +"
  725. @echo " + $(DESTDIR)$(HTTP_DOCSDIR)"
  726. @echo " + +"
  727. @echo " + If these paths do not match your httpd +"
  728. @echo " + installation, correct the definitions +"
  729. @echo " + in your Makefile of HTTP_CGIDIR and +"
  730. @echo " + HTTP_DOCSDIR +"
  731. @echo " + +"
  732. @echo " +-------------------------------------------+"
  733. spec:
  734. sed "s/^Version:.*/Version: $(RPMVERSION)/g" redhat/asterisk.spec > asterisk.spec ; \
  735. rpm: __rpm
  736. __rpm: include/asterisk/version.h spec
  737. rm -rf /tmp/asterisk ; \
  738. mkdir -p /tmp/asterisk/redhat/RPMS/i386 ; \
  739. $(MAKE) DESTDIR=/tmp/asterisk install ; \
  740. $(MAKE) DESTDIR=/tmp/asterisk samples ; \
  741. mkdir -p /tmp/asterisk/etc/rc.d/init.d ; \
  742. cp -f contrib/init.d/rc.redhat.asterisk /tmp/asterisk/etc/rc.d/init.d/asterisk ; \
  743. rpmbuild --rcfile /usr/lib/rpm/rpmrc:redhat/rpmrc -bb asterisk.spec
  744. progdocs:
  745. (cat contrib/asterisk-ng-doxygen; echo "HAVE_DOT=$(HAVEDOT)"; \
  746. echo "PROJECT_NUMBER=$(ASTERISKVERSION)") | doxygen -
  747. mpg123:
  748. @wget -V >/dev/null || (echo "You need wget" ; false )
  749. [ -f mpg123-0.59r.tar.gz ] || wget http://www.mpg123.de/mpg123/mpg123-0.59r.tar.gz
  750. [ -d mpg123-0.59r ] || tar xfz mpg123-0.59r.tar.gz
  751. $(MAKE) -C mpg123-0.59r $(MPG123TARG)
  752. config:
  753. if [ -d /etc/rc.d/init.d ]; then \
  754. $(INSTALL) -m 755 contrib/init.d/rc.redhat.asterisk /etc/rc.d/init.d/asterisk; \
  755. /sbin/chkconfig --add asterisk; \
  756. elif [ -d /etc/init.d ]; then \
  757. echo "Only distros that use rc.d based init scripts are currently supported."; \
  758. echo "You may be able to copy one of the scripts in contrib/init.d/ into your /etc/init.d/ directory."; \
  759. exit 1; \
  760. fi
  761. dont-optimize: install
  762. valgrind: dont-optimize
  763. depend: include/asterisk/version.h .depend defaults.h
  764. for x in $(SUBDIRS); do $(MAKE) -C $$x depend || exit 1 ; done
  765. .depend: include/asterisk/version.h
  766. build_tools/mkdep $(CFLAGS) $(wildcard *.c)
  767. .tags-depend:
  768. @echo -n ".tags-depend: " > $@
  769. @find . -maxdepth 1 -name \*.c -printf "\t%p \\\\\n" >> $@
  770. @find . -maxdepth 1 -name \*.h -printf "\t%p \\\\\n" >> $@
  771. @find $(SUBDIRS) -name \*.c -printf "\t%p \\\\\n" >> $@
  772. @find $(SUBDIRS) -name \*.h -printf "\t%p \\\\\n" >> $@
  773. @find include -name \*.h -printf "\t%p \\\\\n" >> $@
  774. @echo >> $@
  775. .tags-sources:
  776. @rm -f $@
  777. @find . -maxdepth 1 -name \*.c -print >> $@
  778. @find . -maxdepth 1 -name \*.h -print >> $@
  779. @find $(SUBDIRS) -name \*.c -print >> $@
  780. @find $(SUBDIRS) -name \*.h -print >> $@
  781. @find include -name \*.h -print >> $@
  782. tags: .tags-depend .tags-sources
  783. ctags -L .tags-sources -o $@
  784. ctags: tags
  785. TAGS: .tags-depend .tags-sources
  786. etags -o $@ `cat .tags-sources`
  787. etags: TAGS
  788. FORCE:
  789. %_env:
  790. $(MAKE) -C $(shell echo $@ | sed "s/_env//g") env
  791. env:
  792. env
  793. # If the cleancount has been changed, force a make clean.
  794. # .cleancount is the global clean count, and .lastclean is the
  795. # last clean count we had
  796. # We can avoid this by making noclean
  797. cleantest:
  798. if cmp -s .cleancount .lastclean ; then echo ; else \
  799. $(MAKE) clean; cp -f .cleancount .lastclean;\
  800. fi