aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile171
1 files changed, 96 insertions, 75 deletions
diff --git a/Makefile b/Makefile
index 1f4945c1e..6ee19b9f7 100644
--- a/Makefile
+++ b/Makefile
@@ -49,7 +49,7 @@ PWD=$(shell pwd)
# Remember the MAKELEVEL at the top
MAKETOPLEVEL?=$(MAKELEVEL)
-ifneq ($(findstring dont-optimize,$(MAKECMDGOALS)),dont-optimize)
+ifeq ($(findstring dont-optimize,$(MAKECMDGOALS)),)
# More GSM codec optimization
# Uncomment to enable MMXTM optimizations for x86 architecture CPU's
# which support MMX instructions. This should be newer pentiums,
@@ -97,13 +97,6 @@ DEBUG_THREADS += #-DDEBUG_CHANNEL_LOCKS
# Uncomment next one to enable ast_frame tracing (for debugging)
TRACE_FRAMES = #-DTRACE_FRAMES
-# Uncomment next one to enable malloc debugging
-# You can view malloc debugging with:
-# *CLI> show memory allocations [filename]
-# *CLI> show memory summary [filename]
-#
-MALLOC_DEBUG = #-include $(PWD)/include/asterisk/astmm.h
-
# Where to install asterisk after compiling
# Default -> leave empty
INSTALL_PREFIX?=
@@ -182,26 +175,39 @@ HTTP_CGIDIR=/var/www/cgi-bin
ASTCFLAGS=
-# Define this to use files larger than 2GB (useful for sound files longer than 37 hours and logfiles)
-ASTCFLAGS+=-D_FILE_OFFSET_BITS=64
-
# Uncomment this to use the older DSP routines
#ASTCFLAGS+=-DOLD_DSP_ROUTINES
# If the file .asterisk.makeopts is present in your home directory, you can
-# include all of your favorite Makefile options so that every time you download
-# a new version of Asterisk, you don't have to edit the makefile to set them.
-# The file, /etc/asterisk.makeopts will also be included, but can be overridden
+# include all of your favorite menuselect options so that every time you download
+# a new version of Asterisk, you don't have to run menuselect to set them.
+# The file /etc/asterisk.makeopts will also be included but can be overridden
# by the file in your home directory.
-ifneq ($(wildcard /etc/asterisk.makeopts),)
- include /etc/asterisk.makeopts
+GLOBAL_MAKEOPTS=$(wildcard /etc/asterisk.makeopts)
+USER_MAKEOPTS=$(wildcard ~/.asterisk.makeopts)
+
+ifneq ($(wildcard menuselect.makeopts),)
+ include menuselect.makeopts
+endif
+
+ifneq ($(wildcard makeopts),)
+ include makeopts
endif
-ifneq ($(wildcard ~/.asterisk.makeopts),)
- include ~/.asterisk.makeopts
+ASTCFLAGS+=$(MENUSELECT_CFLAGS)
+TOPDIR_CFLAGS=-include include/autoconfig.h
+MOD_SUBDIR_CFLAGS=-include ../include/autoconfig.h
+
+# *CLI> show memory allocations [filename]
+# *CLI> show memory summary [filename]
+ifneq ($(findstring -DMALLOC_DEBUG,$(ASTCFLAGS)),)
+ TOPDIR_CFLAGS+=-include include/asterisk/astmm.h
+ MOD_SUBDIR_CFLAGS+=-include ../include/asterisk/astmm.h
endif
+MOD_SUBDIR_CFLAGS+=-fPIC
+
ifeq ($(OSARCH),Linux)
ifeq ($(PROC),x86_64)
# You must have GCC 3.4 to use k8, otherwise use athlon
@@ -247,9 +253,13 @@ ifeq ($(OSARCH),SunOS)
endif
INCLUDE+=-Iinclude -I../include
-ASTCFLAGS+=-pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $(DEBUG) $(INCLUDE) -D_REENTRANT -D_GNU_SOURCE #-DMAKE_VALGRIND_HAPPY
+ASTCFLAGS+=-pipe -Wall -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations $(DEBUG) $(INCLUDE) #-DMAKE_VALGRIND_HAPPY
ASTCFLAGS+=$(OPTIMIZE)
-ASTCFLAGS+=# -Werror -Wunused
+
+ifeq ($(AST_DEVMODE),yes)
+ ASTCFLAGS+=-Werror -Wunused
+endif
+
ifeq ($(shell gcc -v 2>&1 | grep 'gcc version' | cut -f3 -d' ' | cut -f1 -d.),4)
ASTCFLAGS+= -Wno-pointer-sign
endif
@@ -267,14 +277,6 @@ ifeq ($(PROC),ppc)
ASTCFLAGS+=-fsigned-char
endif
-ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/local/include/osp/osp.h),)
- ASTCFLAGS+=-DOSP_SUPPORT -I$(CROSS_COMPILE_TARGET)/usr/local/include/osp
-else
- ifneq ($(wildcard $(CROSS_COMPILE_TARGET)/usr/include/osp/osp.h),)
- ASTCFLAGS+=-DOSP_SUPPORT -I$(CROSS_COMPILE_TARGET)/usr/include/osp
- endif
-endif
-
ifeq ($(OSARCH),FreeBSD)
BSDVERSION=$(shell make -V OSVERSION -f $(CROSS_COMPILE_TARGET)/usr/share/mk/bsd.port.subdir.mk)
ASTCFLAGS+=$(shell if test $(BSDVERSION) -lt 500016 ; then echo "-D_THREAD_SAFE"; fi)
@@ -300,27 +302,11 @@ ifeq ($(OSARCH),SunOS)
INCLUDE+=-Iinclude/solaris-compat -I$(CROSS_COMPILE_TARGET)/usr/local/ssl/include
endif
-ifeq ($(findstring CYGWIN,$(OSARCH)),CYGWIN)
- CYGLOADER=cygwin_a
- OSARCH=CYGWIN
- ASTOBJ=-shared -o asterisk.dll -Wl,--out-implib=libasterisk.dll.a -Wl,--export-all-symbols
- ASTLINK=
- LIBS+=-lpthread -lncurses -lm -lresolv
- ASTSBINDIR=$(MODULES_DIR)
-endif
-
-ifndef WITHOUT_ZAPTEL
-
-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),)
- ASTCFLAGS+=-DZAPTEL_OPTIMIZATIONS
-endif
-
-endif # WITHOUT_ZAPTEL
-
LIBEDIT=editline/libedit.a
+ASTERISKVERSION:=$(shell build_tools/make_version .)
+
ifneq ($(wildcard .version),)
- ASTERISKVERSION:=$(shell cat .version)
ASTERISKVERSIONNUM:=$(shell awk -F. '{printf "%02d%02d%02d", $$1, $$2, $$3}' .version)
RPMVERSION:=$(shell sed 's/[-\/:]/_/g' .version)
else
@@ -332,11 +318,9 @@ endif
# showing the branch they are made from
ifneq ($(wildcard .svnrevision),)
ASTERISKVERSIONNUM=999999
- ASTERISKVERSION:=SVN-$(shell cat .svnbranch)-r$(shell cat .svnrevision)
else
ifneq ($(wildcard .svn),)
ASTERISKVERSIONNUM=999999
- ASTERISKVERSION=SVN-$(shell build_tools/make_svn_branch_name)
endif
endif
@@ -345,11 +329,12 @@ ASTCFLAGS+= $(TRACE_FRAMES)
ASTCFLAGS+= $(MALLOC_DEBUG)
ASTCFLAGS+= $(BUSYDETECT)
ASTCFLAGS+= $(OPTIONS)
-ifneq ($(findstring dont-optimize,$(MAKECMDGOALS)),dont-optimize)
+ifeq ($(findstring dont-optimize,$(MAKECMDGOALS)),)
ASTCFLAGS+= -fomit-frame-pointer
endif
-SUBDIRS=res channels pbx apps codecs formats agi cdr funcs utils stdtime
+MOD_SUBDIRS=res channels pbx apps codecs formats cdr funcs
+SUBDIRS:=$(MOD_SUBDIRS) utils stdtime agi
OBJS=io.o sched.o logger.o frame.o loader.o config.o channel.o \
translate.o file.o pbx.o cli.o md5.o term.o \
@@ -426,11 +411,11 @@ ifeq ($(OSARCH),SunOS)
endif
ifeq ($(MAKETOPLEVEL),$(MAKELEVEL))
- CFLAGS+=$(ASTCFLAGS)
+ CFLAGS+=$(ASTCFLAGS) $(TOPDIR_CFLAGS)
endif
# This is used when generating the doxygen documentation
-ifneq ($(wildcard /usr/local/bin/dot)$(wildcard /usr/bin/dot),)
+ifneq ($(DOT),:)
HAVEDOT=yes
else
HAVEDOT=no
@@ -438,18 +423,38 @@ endif
INSTALL=install
-CFLAGS+=-DT38_SUPPORT
-
_all: all
@echo " +--------- Asterisk Build Complete ---------+"
@echo " + Asterisk has successfully been built, but +"
@echo " + cannot be run before being installed by +"
@echo " + running: +"
@echo " + +"
- @echo " + $(MAKE) install +"
+ @echo " + make install +"
@echo " +-------------------------------------------+"
-all: cleantest depend asterisk subdirs
+all: include/autoconfig.h menuselect.makeopts cleantest depend asterisk subdirs
+
+configure:
+ -@./bootstrap.sh
+
+include/autoconfig.h: configure
+ @CFLAGS="" ./configure
+ @echo "****"
+ @echo "**** The configure script was just executed, so 'make' needs to be"
+ @echo "**** restarted."
+ @echo "****"
+ @echo exit 1
+
+makeopts: configure
+ @CFLAGS="" ./configure
+ @echo "****"
+ @echo "**** The configure script was just executed, so 'make' needs to be"
+ @echo "**** restarted."
+ @echo "****"
+ @echo exit 1
+
+menuselect.makeopts: build_tools/menuselect makeopts.xml
+ @build_tools/menuselect --check-deps ${GLOBAL_MAKEOPTS} ${USER_MAKEOPTS} $@
#ifneq ($(wildcard tags),)
ctags: tags
@@ -459,16 +464,14 @@ ifneq ($(wildcard TAGS),)
all: TAGS
endif
-noclean: depend asterisk subdirs
-
editline/config.h:
cd editline && unset CFLAGS LIBS && ./configure ; \
-editline/libedit.a: FORCE
+editline/libedit.a:
cd editline && unset CFLAGS LIBS && test -f config.h || ./configure
$(MAKE) -C editline libedit.a
-db1-ast/libdb1.a: FORCE
+db1-ast/libdb1.a:
$(MAKE) -C db1-ast libdb1.a
ifneq ($(wildcard .depend),)
@@ -511,27 +514,24 @@ asterisk.html: asterisk.sgml
asterisk.txt: asterisk.sgml
docbook2txt asterisk.sgml
-defaults.h: FORCE
+defaults.h: makeopts
build_tools/make_defaults_h > $@.tmp
if cmp -s $@.tmp $@ ; then echo ; else \
mv $@.tmp $@ ; \
fi
rm -f $@.tmp
-include/asterisk/version.h: FORCE
+include/asterisk/version.h:
build_tools/make_version_h > $@.tmp
if cmp -s $@.tmp $@ ; then echo; else \
mv $@.tmp $@ ; \
fi
rm -f $@.tmp
-stdtime/libtime.a: FORCE
- $(MAKE) -C stdtime libtime.a
+stdtime/libtime.a:
+ CFLAGS="$(ASTCFLAGS) $(MOD_SUBDIR_CFLAGS)" $(MAKE) -C stdtime libtime.a
-cygwin_a:
- $(MAKE) -C cygwin all
-
-asterisk: $(CYGLOADER) editline/libedit.a db1-ast/libdb1.a stdtime/libtime.a $(OBJS)
+asterisk: editline/libedit.a db1-ast/libdb1.a stdtime/libtime.a $(OBJS)
build_tools/make_build_h > include/asterisk/build.h.tmp
if cmp -s include/asterisk/build.h.tmp include/asterisk/build.h ; then echo ; else \
mv include/asterisk/build.h.tmp include/asterisk/build.h ; \
@@ -544,7 +544,9 @@ muted: muted.o
$(CC) $(AUDIO_LIBS) -o muted muted.o
subdirs:
- for x in $(SUBDIRS); do $(MAKE) -C $$x || exit 1 ; done
+ for x in $(MOD_SUBDIRS); do CFLAGS="$(ASTCFLAGS) $(MOD_SUBDIR_CFLAGS)" $(MAKE) -C $$x || exit 1 ; done
+ CFLAGS="$(ASTCFLAGS)" $(MAKE) -C utils
+ CFLAGS="$(ASTCFLAGS) -include ../include/autoconfig.h" $(MAKE) -C agi
clean-depend:
for x in $(SUBDIRS); do $(MAKE) -C $$x clean-depend || exit 1 ; done
@@ -562,11 +564,18 @@ clean: clean-depend
$(MAKE) -C db1-ast clean
$(MAKE) -C stdtime clean
+dist-clean: clean
+ rm -f menuselect.makeopts makeopts makeopts.xml
+ rm -f config.log config.status
+ rm -f include/autoconfig.h
+ $(MAKE) -C mxml clean
+ $(MAKE) -C build_tools dist-clean
+
datafiles: all
if [ x`$(ID) -un` = xroot ]; then sh build_tools/mkpkgconfig $(DESTDIR)/usr/lib/pkgconfig; fi
- # Should static HTTP be installed during make samples or even with its own target ala
- # webvoicemail? There are portions here that *could* be customized but might also be
- # improved a lot. I'll put it here for now.
+# Should static HTTP be installed during make samples or even with its own target ala
+# webvoicemail? There are portions here that *could* be customized but might also be
+# improved a lot. I'll put it here for now.
mkdir -p $(DESTDIR)$(ASTDATADIR)/static-http
for x in static-http/*; do \
install -m 644 $$x $(DESTDIR)$(ASTDATADIR)/static-http ; \
@@ -664,7 +673,6 @@ bininstall: all
mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/meetme
mkdir -p $(DESTDIR)$(ASTSPOOLDIR)/monitor
if [ -f asterisk ]; then $(INSTALL) -m 755 asterisk $(DESTDIR)$(ASTSBINDIR)/; fi
- if [ -f cygwin/asterisk.exe ]; then $(INSTALL) -m 755 cygwin/asterisk.exe $(DESTDIR)$(ASTSBINDIR)/; fi
if [ -f asterisk.dll ]; then $(INSTALL) -m 755 asterisk.dll $(DESTDIR)$(ASTSBINDIR)/; fi
ln -sf asterisk $(DESTDIR)$(ASTSBINDIR)/rasterisk
$(INSTALL) -m 755 contrib/scripts/astgenkey $(DESTDIR)$(ASTSBINDIR)/
@@ -887,7 +895,7 @@ valgrind: dont-optimize
depend: include/asterisk/version.h .depend defaults.h
for x in $(SUBDIRS); do $(MAKE) -C $$x depend || exit 1 ; done
-.depend: include/asterisk/version.h
+.depend: include/asterisk/version.h defaults.h
build_tools/mkdep $(CFLAGS) $(wildcard *.c)
.tags-depend:
@@ -928,7 +936,6 @@ env:
# If the cleancount has been changed, force a make clean.
# .cleancount is the global clean count, and .lastclean is the
# last clean count we had
-# We can avoid this by making noclean
cleantest:
if cmp -s .cleancount .lastclean ; then echo ; else \
@@ -967,3 +974,17 @@ uninstall-all: _uninstall
rm -rf $(DESTDIR)$(ASTSPOOLDIR)
rm -rf $(DESTDIR)$(ASTETCDIR)
rm -rf $(DESTDIR)$(ASTLOGDIR)
+
+menuselect: build_tools/menuselect makeopts.xml
+ -@build_tools/menuselect ${GLOBAL_MAKEOPTS} ${USER_MAKEOPTS} menuselect.makeopts && echo "menuselect changes saved!" || echo "menuselect changes NOT saved!"
+
+build_tools/menuselect: build_tools/menuselect.c build_tools/menuselect.h mxml/libmxml.a
+ $(MAKE) -C build_tools menuselect
+
+mxml/libmxml.a:
+ @cd mxml && unset CFLAGS && test -f config.h || ./configure
+ $(MAKE) -C mxml libmxml.a
+
+makeopts.xml: $(foreach dir,$(MOD_SUBDIRS),$(dir)/*.c) build_tools/cflags.xml
+ @echo "Generating list of available modules ..."
+ @build_tools/prep_moduledeps > $@