Makefile 30 KB

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