From 779556a689e16cb40e464737c31fb10333c605bd Mon Sep 17 00:00:00 2001 From: patacongo Date: Fri, 7 Nov 2008 19:11:27 +0000 Subject: Handler compiler differences git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@1155 42af7a65-404d-4744-a932-0658087f49c3 --- nuttx/drivers/Makefile | 16 +---- nuttx/examples/pashello/Makefile | 5 +- nuttx/tools/incdir.sh | 136 +++++++++++++++++++++++++++++++++++++++ nuttx/tools/zipme.sh | 4 +- 4 files changed, 142 insertions(+), 19 deletions(-) create mode 100755 nuttx/tools/incdir.sh diff --git a/nuttx/drivers/Makefile b/nuttx/drivers/Makefile index 9f8344621..a4a3c826d 100644 --- a/nuttx/drivers/Makefile +++ b/nuttx/drivers/Makefile @@ -47,25 +47,13 @@ ifeq ($(CONFIG_USBDEV),y) include usbdev/Make.defs ROOTDEPPATH = --dep-path . USBDEVDEPPATH = --dep-path usbdev -ifeq ($(COMPILER),zneocc.exe) -USBDEVDIR = ${shell cygpath -w $(TOPDIR)/drivers/usbdev} -CFLAGS += -usrinc:'$(USBDEVDIR)' -else -USBDEVDIR = $(TOPDIR)/drivers/usbdev -CFLAGS += -I$(USBDEVDIR) -endif +CFLAGS += ${shell $(TOPDIR)/tools/incdir.sh "$CC" $(TOPDIR)/drivers/usbdev} endif include mmcsd/Make.defs ROOTDEPPATH = --dep-path . MMCSDDEPPATH = --dep-path mmcsd -ifeq ($(COMPILER),zneocc.exe) -MMCSDDIR = ${shell cygpath -w $(TOPDIR)/drivers/mmcsd} -CFLAGS += -usrinc:'$(MMCSDDIR)' -else -MMCSDDIR = $(TOPDIR)/drivers/mmcsd -CFLAGS += -I$(MMCSDDIR) -endif +CFLAGS += ${shell $(TOPDIR)/tools/incdir.sh "$CC" $(TOPDIR)/drivers/mmcsd} ASRCS = $(NET_ASRCS) $(USBDEV_ASRCS) $(MMCSD_ASRCS) AOBJS = $(ASRCS:.S=$(OBJEXT)) diff --git a/nuttx/examples/pashello/Makefile b/nuttx/examples/pashello/Makefile index b14c0cece..8de5941ba 100644 --- a/nuttx/examples/pashello/Makefile +++ b/nuttx/examples/pashello/Makefile @@ -37,11 +37,10 @@ -include $(TOPDIR)/Make.defs COMPILER = ${shell basename $(CC)} -ifeq ($(COMPILER),zneocc.exe) -USRINCLUDES = -usrinc:'.;$(WTOPDIR)\pcode\include;$(WTOPDIR)\pcode\insn\include' +USRINCLUDES = ${shell $(TOPDIR)/tools/incdir.sh "$CC" $(TOPDIR)/pcode/include $(TOPDIR)/pcode/insn/include} +ifneq ($(ARCHSTDINCLUDES),) INCLUDES = $(ARCHSTDINCLUDES) $(USRINCLUDES) else -USRINCLUDES = -I$(TOPDIR)/pcode/include -I$(TOPDIR)/pcode/insn/include INCLUDES = $(ARCHINCLUDES) $(USRINCLUDES) endif CFLAGS = $(ARCHWARNINGS) $(ARCHOPTIMIZATION) $(ARCHCPUFLAGS) $(INCLUDES) $(ARCHDEFINES) diff --git a/nuttx/tools/incdir.sh b/nuttx/tools/incdir.sh new file mode 100755 index 000000000..c23103d23 --- /dev/null +++ b/nuttx/tools/incdir.sh @@ -0,0 +1,136 @@ +#!/bin/bash +# tools/incdir.sh +# +# Copyright (C) 2008 Gregory Nutt. All rights reserved. +# Author: Gregory Nutt +# +# 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. Neither the name NuttX 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 COPYRIGHT HOLDERS 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 +# COPYRIGHT OWNER 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. +# + +# Input parameters: +# $1 : Compiler name as it appears in config/*/*/Make.defs +# $2, $3, ...: Include file paths + +compiler=$1 +shift +dirlist=$@ + +usage="USAGE: $0 [ [ ...]]" + +if [ -z "$compiler" ]; then + echo "Missing compiler path" + echo $usage + exit 1 +fi + +if [ -z "$dirlist" ]; then + echo "Missing include directory list" + echo $usage + exit 1 +fi + +# +# Most compilers support CFLAG options like '-I' to add include +# file header paths. Some (like the Zilog tools), do not. This script +# makes the select of header file paths compiler independent. +# +# Below are all known compiler names (as found in the config/*/*/Make.defs +# files). If a new compiler is used that has some unusual syntax, then +# additional logic needs to be added to this file. +# +# NAME Syntax +# $(CROSSDEV)gcc -I -I -I ... +# sdcc -I -I -I ... +# $(ZDSBINDIR)/ez8cc.exe -usrinc:'::...` +# $(ZDSBINDIR)/zneocc.exe -usrinc:'::...` +# $(ZDSBINDIR)/eZ80cc.exe -usrinc:'::...` +# +# Furthermore, just to make matters more difficult, with Windows based +# toolchains, we have to use the full windows-style paths to the header +# files. + +fmt=std +windows=no + +exefile=`basename $compiler` +if [ "X$exefile" = "Xez8cc.exe" -o "X$exefile" = "Xzneocc.exe" -o "X$exefile" = "XeZ80cc.exe" ]; then + fmt=userinc + windows=yes +fi + +# Now process each directory in the directory list + +unset response +for dir in $dirlist; do + + # Verify that the include directory exists + + if [ ! -d $dir ]; then + echo "Include path '$dir' does not exist" + echo $showusage + exit 1 + fi + + # Check if the path needs to be extended for Windows-based tools under Cygwin + + if [ "X$windows" = "Xyes" ]; then + path=`cygpath -w $dir` + else + path=$dir + fi + + # Handle the output using the selected format + + if [ "X$fmt" = "Xuserinc" ]; then + # Treat the first directory differently + + if [ -z "$response" ]; then + response="-usrinc:'"$path + else + response=$response":$path" + fi + else + # Treat the first directory differently + + if [ -z "$response" ]; then + response=-I$path + else + response=$response" -I$path" + fi + fi +done + +if [ "X$fmt" = "Xuserinc" ]; then + response=$response"'" +else + response=\"$response\" +fi + +echo $response + + diff --git a/nuttx/tools/zipme.sh b/nuttx/tools/zipme.sh index bb902c8a8..217db7f41 100755 --- a/nuttx/tools/zipme.sh +++ b/nuttx/tools/zipme.sh @@ -1,7 +1,7 @@ #!/bin/bash # zipme.sh # -# Copyright (C) 2007 Gregory Nutt. All rights reserved. +# Copyright (C) 2007, 2008 Gregory Nutt. All rights reserved. # Author: Gregory Nutt # # Redistribution and use in source and binary forms, with or without @@ -14,7 +14,7 @@ # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. -# 3. Neither the name Gregory Nutt nor the names of its contributors may be +# 3. Neither the name NuttX nor the names of its contributors may be # used to endorse or promote products derived from this software # without specific prior written permission. # -- cgit v1.2.3