[sr-dev] git:master: core: Added support for the clang compiler

Daniel-Constantin Mierla miconda at gmail.com
Fri Sep 14 12:30:06 CEST 2012


Hello,

nice, is everything compiling (at least the standard modules and most 
commonly used)?

Thanks,
Daniel

On 9/14/12 12:23 PM, Marius Zbihlei wrote:
> Module: sip-router
> Branch: master
> Commit: 452c543de61d413351a5ac0816adc137d150824b
> URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=452c543de61d413351a5ac0816adc137d150824b
>
> Author: Marius Zbihlei <marius.zbihlei at 1and1.ro>
> Committer: Marius Zbihlei <marius.zbihlei at 1and1.ro>
> Date:   Fri Sep 14 13:17:24 2012 +0300
>
> core: Added support for the clang compiler
>
> Support for clang, a C compiler from the LLVM suite has been added.
> Install clang and run 'make cfg CC=clang && make' for building. GCC Inline assembly is supported.
> TODO: clean warning caused by clang (-Wunused-variable, etc)
>
> ---
>
>   Makefile.defs |   41 ++++++++++++++++++++++++++++++++++++++++-
>   1 files changed, 40 insertions(+), 1 deletions(-)
>
> diff --git a/Makefile.defs b/Makefile.defs
> index b9718fd..9bf78b5 100644
> --- a/Makefile.defs
> +++ b/Makefile.defs
> @@ -321,6 +321,14 @@ ifneq (, $(findstring Intel(R) C++ Compiler, $(CC_LONGVER)))
>   	MKDEP=$(CC) -MM
>   endif
>   
> +ifneq (, $(findstring clang, $(CC_LONGVER)))
> +	#clang should be gcc compatible
> +	CC_NAME=clang
> +	CC_FULLVER:=$(shell echo "$(CC_LONGVER)" | head -n 1 |  sed -e 's/.*version \([0-9]\.[0-9]\).*/\1/g' )
> +	CC_SHORTVER:=$(shell echo "$(CC_FULLVER)" | cut -d. -f1,2 )
> +	CC_VER=$(CC) $(CC_FULLVER)
> +	MKDEP=$(CC) -MM
> +endif
>   
>   ifeq (,$(CC_NAME))
>   #not found
> @@ -866,7 +874,7 @@ ifeq ($(mode), release)
>   	#if i386
>   ifeq	($(ARCH), i386)
>   		# if gcc
> -ifeq		($(CC_NAME), gcc)
> +ifeq		($(CC_NAME), gcc)
>   				C_DEFS+=-DCC_GCC_LIKE_ASM
>   				#common stuff
>   				CFLAGS=-g -O9 -funroll-loops  -Wcast-align $(PROFILE)
> @@ -923,6 +931,15 @@ endif			# CC_SHORTVER, 4.x
>   endif			# CC_SHORTVER, 4.5+ or 4.2+
>   
>   else		# CC_NAME, gcc
> +ifeq		($(CC_NAME), clang)
> +$(call                          set_if_empty,CPU,athlon64)
> +					C_DEFS+=-DCC_GCC_LIKE_ASM
> +                                        CFLAGS+=-m32
> +                                                         \
> +                                                         \
> +                                                        -mtune=$(CPU)
> +                                        LDFLAGS+=-m32
> +else			# CC_NAME, clang
>   ifeq		($(CC_NAME), icc)
>   			C_DEFS+=-DCC_GCC_LIKE_ASM
>   			CFLAGS=-g -O3  -ipo -ipo_obj -unroll  $(PROFILE) \
> @@ -935,6 +952,7 @@ else
>   				#other compilers
>   $(error 			Unsupported compiler ($(CC):$(CC_NAME)), try gcc)
>   endif		#CC_NAME, icc
> +endif		#CC_NAME, clang
>   endif		#CC_NAME, gcc
>   endif	#ARCH, i386
>   
> @@ -1009,6 +1027,13 @@ endif			# CC_SHORTVER, 4.2+
>   endif			# CC_SHORTVER, 4.5+
>   
>   else		# CC_NAME, gcc
> +ifeq            ($(CC_NAME), clang)
> +$(call                          set_if_empty,CPU,opteron)
> +					C_DEFS+=-DCC_GCC_LIKE_ASM
> +                                        CFLAGS+=-m64 \
> +
> +                                        LDFLAGS+=-m64
> +else      	# CC_NAME, clang
>   ifeq		($(CC_NAME), icc)
>   			C_DEFS+=-DCC_GCC_LIKE_ASM
>   			CFLAGS=-g -O3  -ipo -ipo_obj -unroll  $(PROFILE) \
> @@ -1021,6 +1046,7 @@ else
>   				#other compilers
>   $(error 			Unsupported compiler ($(CC):$(CC_NAME)), try gcc)
>   endif		#CC_NAME, icc
> +endif		#CC_NAME, clang
>   endif		#CC_NAME, gcc
>   endif	#ARCH, x86_64
>   
> @@ -1597,6 +1623,14 @@ endif
>   	# the executable file, because it's always loaded at a fixed address
>   	# -andrei
>   
> +ifeq ($(CC_NAME), clang)
> +	LDFLAGS+=-Wl,-O2 -Wl,-E $(PROFILE)
> +        MOD_LDFLAGS:=-shared $(LDFLAGS)
> +        LIB_LDFLAGS:=-shared $(LDFLAGS)
> +        LIB_SONAME=-Wl,-soname,
> +        LD_RPATH=-Wl,-rpath,
> +endif
> +
>   LDFLAGS+= $(LD_EXTRA_OPTS)
>   MOD_LDFLAGS+= $(LD_EXTRA_OPTS)
>   LIB_LDFLAGS+= $(LD_EXTRA_OPTS)
> @@ -1674,6 +1708,11 @@ ifeq	($(CC_NAME), suncc)
>   MOD_CFLAGS=-xcode=pic32  $(CFLAGS)
>   LIB_CFLAGS=-xcode=pic32  $(CFLAGS)
>   endif
> +ifeq    ($(CC_NAME), clang)
> +MOD_CFLAGS=-fPIC -DPIC $(CFLAGS)
> +LIB_CFLAGS=-fPIC -DPIC $(CFLAGS)
> +endif
> +
>   UTILS_CFLAGS=$(CFLAGS)
>   # LDFLAGS uses for compiling the utils
>   UTILS_LDFLAGS=$(LDFLAGS)
>
>
> _______________________________________________
> sr-dev mailing list
> sr-dev at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev


-- 
Daniel-Constantin Mierla - http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Kamailio Advanced Training, Berlin, Nov 5-8, 2012 - http://asipto.com/u/kat
Kamailio Advanced Training, Miami, USA, Nov 12-14, 2012 - http://asipto.com/u/katu




More information about the sr-dev mailing list