# $NetBSD: transform-sunpro-cc,v 1.29 2007/11/28 13:03:56 rillig Exp $ # # Copyright (c) 2004 The NetBSD Foundation, Inc. # All rights reserved. # # This code is derived from software contributed to The NetBSD Foundation # by Johnny C. Lam. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. All advertising materials mentioning features or use of this software # must display the following acknowledgement: # This product includes software developed by the NetBSD # Foundation, Inc. and its contributors. # 4. Neither the name of The NetBSD Foundation nor the names of its # contributors may be used to endorse or promote products derived # from this software without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. transform_setname "transform-sunpro-cc" case $arg in # libstdc++ is specific to the GNU C++ compiler. -lstdc++ ) transform_discard_with_warning ;; # Standard options, except -O0 and -O1. -[cEgOos] |\ -[DILlU]?* ) transform_pass ;; # Create dependency lines for Makefiles -MM ) transform_to "-xM1" ;; # SunPro can handle -xO (n={0|1|2|3|4|5}), so optimistically # convert those GCC -O values to -xO. -O[012345] ) transform_to "-xO${arg#-O}" ;; # Ignore all other -O* options. -O* ) transform_discard_with_warning ;; # Directories for the runtime library search path are passed via # simply "-R", not "-Wl,-R". This is because the C++ compiler # does not know about the -W?,* options. -Wl,-R* ) transform_to "${arg#-Wl,}" ;; -R* ) transform_pass ;; # SunPro uses -h to set the shared object name. -Wl,-soname=* ) transform_to "-h${arg#-Wl,-soname=}" ;; # Solaris' linker exports all dynamic symbols by default when # building a shared object. -export-dynamic |\ -Wl,--export-dynamic |\ -Wl,-E ) transform_discard ;; -W[02aclmop],* ) case $wrapper_type in CC) transform_pass ;; CXX) transform_discard_with_warning ;; *) echo "ERROR: [transform-sunpro-cc] unknown wrapper type: $wrapper_type"; exit 1 ;; esac ;; -Wall |\ -W ) case $wrapper_type in CC) transform_to "-v" ;; CXX) transform_to_and_split "+w +w2" ;; *) echo "ERROR: [transform-sunpro-cc] unknown wrapper type: $wrapper_type"; exit 1 ;; esac ;; # Ignore options that are probably meant for GCC. -W* |\ -Xc ) transform_discard_with_warning ;; -static ) transform_to "-Bstatic" ;; --export-dynamic |\ -shared ) transform_to "-G" ;; # SunPro on amd64 does not know the -xcode= option (see PR 35555). -fpic |\ -Kpic |\ -xcode=pic13 ) transform_to "-Kpic" ;; -fPIC |\ -KPIC |\ -xcode=pic32 ) transform_to "-KPIC" ;; # SunPro needs -mt -lpthread for POSIX threads. -pthread ) transform_to_and_split "-mt -lpthread" ;; # -fast implies -xlibmopt, which uses the optimized math # routines in libsunmath. libsunmath is only available as part of # SunPro, so disable the use of the optimized math library # (at least until it can be statically linked). -fast ) transform_to_and_split "-fast -xnolibmopt" ;; # Pass through those options that SunPro understands. -Bdynamic |\ -Bstatic |\ -fd |\ -features* |\ -flags |\ -flteval* |\ -fnonstd* |\ -fns* |\ -fprecision* |\ -fround* |\ -fsimple* |\ -fsingle |\ -fstore |\ -ftrap* |\ -G |\ -h*.so.* |\ -mt |\ -template=* |\ -xarch=* |\ -xcode=* |\ -xdepend |\ -xstrconst |\ -xtarget=* ) transform_pass ;; #-std=gnu99 ) transform_to "-xc99" ;; #-xc99 ) transform_to_and_split "-xc99 -D_XOPEN_SOURCE=600 -D__EXTENSIONS__" ;; -ggdb ) transform_to "-g" ;; # Ignore some flags that are unnecessary for SunPro. -ansi |\ -fPIE |\ -fpie |\ -pedantic |\ -pie |\ -pipe |\ -rdynamic |\ -traditional ) transform_discard ;; # Ignore all other -f flags. -f* ) transform_discard_with_warning ;; # Unknown options. -* ) transform_pass_with_warning ;; esac