Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 13 Oct 2015 11:13:11 -0700
From:      Patrick Powell <papowell@astart.com>
To:        FreeBSD Ports ML <freebsd-ports@freebsd.org>
Subject:   9.3 to 10.2 migration, determining if clang is used
Message-ID:  <561D49B7.9070900@astart.com>

next in thread | raw e-mail | index | archive | help
I just started doing a 9.3 to 10.2 migration of a bunch of applications 
and discovered that some of the options used
to generate the applications were slightly different.   I just know that 
this has been covered before,  but I could not
find a definitive method or set of methods to use to determine if the 
old GCC compiler or the new CLANG compiler
is being used.   Could the ports wizards (and/or autoconf experts) help 
me a bit?

(Aside:  the clang compiler diagnostics and warnings are very thorough 
and quite clear.  Nicely done, especially
the addition of the information about the flag to turn this warning 
off.  I also like the pragmas to
control warnings and the push/pop pragma facility.  This may have been 
in the GCC compiler but I missed it.)

1. If the application is to be generated via the PORT infrastructure,  
what do you
     put in the port Makefile to determine if CLANG (10.2) or GCC (9.3) 
is being used?


    Something like below.  Note: the examples below are a bit contrived, 
but the idea is to set
    some MAKE variable to different values depending on CLANG or GCC in use.

    .if defined(CC_IS_CLANG)
    MYFLAGS+= -Wall -Werror -Wno-error=unused
    .else
    .if defined(CC_IS_GCC)
    MYFLAGS+= -Wall -Werror -Wno-unused
    .endif
    .endif



2.  A simple test for configure that checks the for the CLANG compiler:

     # Check for programs
     AC_PROG_CC
     # we may need to add this to the configure macro set?
     AC_PROG_CLANG
     if test "$ac_cv_using_clang" = yes; then
       CFLAGS="$CFLAGS -Wall -Werror -Wno-error=unused"
    else
      if test "$ac_cv_c_compiler_gnu" = yes; then
        CFLAGS="$CFLAGS -Wall -Werror -Wno-unused"
     fi;
    fi;

    It could even be something simpler if the AC_PROG_CC configure macro 
sets, for example,
    the $ac_gcc_version shell variable with a value that indicates CLANG 
in use then the following
    would be useful:


    if test "$ac_gcc_version" -gt 999  ; then
       ...
    fi;





-- 
Patrick Powell                 Astart Technologies
papowell@astart.com            1530 Jamacha Rd, Suite X
Network and System             San Diego, CA 92019
   Consulting                   858-874-6543 FAX 858-751-2435
Web: www.astart.com




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?561D49B7.9070900>