Home | History | Annotate | Line # | Download | only in dspgen
      1 # $NetBSD: do_subst.sh,v 1.5 2001/04/15 10:10:43 takemura Exp $
      2 #
      3 # Copyright (c) 1999, 2000 Christopher G. Demetriou.  All rights reserved.
      4 #
      5 # Redistribution and use in source and binary forms, with or without
      6 # modification, are permitted provided that the following conditions
      7 # are met:
      8 # 1. Redistributions of source code must retain the above copyright
      9 #    notice, this list of conditions and the following disclaimer.
     10 # 2. Redistributions in binary form must reproduce the above copyright
     11 #    notice, this list of conditions and the following disclaimer in the
     12 #    documentation and/or other materials provided with the distribution.
     13 # 3. All advertising materials mentioning features or use of this software
     14 #    must display the following acknowledgement:
     15 #      This product includes software developed by Christopher G. Demetriou
     16 #      for the NetBSD Project.
     17 # 4. The name of the author may not be used to endorse or promote products
     18 #    derived from this software without specific prior written permission
     19 #
     20 # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
     21 # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
     22 # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
     23 # IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
     24 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
     25 # NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     26 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     27 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     28 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     29 # THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     30 
     31 AWK=awk
     32 if [ `uname` = SunOS ]; then
     33 	AWK=nawk
     34 fi
     35 
     36 STD_CPPDEF_LIST=''
     37 STD_INCDIR_LIST=''
     38 STD_LIBRARY_LIST=''
     39 
     40 export NAME
     41 export SRCFILE_LIST
     42 export CPPDEF_LIST STD_CPPDEF_LIST
     43 export INCDIR_LIST STD_INCDIR_LIST 
     44 export LIBDEP_LIST
     45 export LIBRARY_LIST STD_LIBRARY_LIST
     46 
     47 ${AWK} '
     48 BEGIN {
     49 	NAME=ENVIRON["NAME"]
     50 
     51 	SRCFILES=""
     52 	sz = split(ENVIRON["SRCFILE_LIST"], a, "[ \t\n]+");
     53 	for (i = 1; i <= sz; i++) {
     54 		if (a[i] == "") {
     55 			continue
     56 		}
     57 		if (SRCFILES != "") {
     58 			SRCFILES=SRCFILES "\n"
     59 		}
     60 		SRCFILES=SRCFILES "# Begin Source File\n"
     61 		SRCFILES=SRCFILES "\n"
     62 		SRCFILES=SRCFILES "SOURCE=.\\" a[i] "\n"
     63 		SRCFILES=SRCFILES "# End Source File"
     64 	}
     65 
     66 	CPPDEFS=""
     67 	sz = split(ENVIRON["STD_CPPDEF_LIST"], a, "[ \t\n]+");
     68 	for (i = 1; i <= sz; i++) {
     69 		if (a[i] == "") {
     70 			continue
     71 		}
     72 		if (CPPDEFS != "") {
     73 			CPPDEFS=CPPDEFS " "
     74 		}
     75 		a[i] = gensub("([^\\\\]|^)#", "\\1 ", "g", a[i])
     76 		a[i] = gensub("\\\\#", "#", "g", a[i])
     77 		CPPDEFS=CPPDEFS "/D " a[i]
     78 	}
     79 	sz = split(ENVIRON["CPPDEF_LIST"], a, "[ \t\n]+");
     80 	for (i = 1; i <= sz; i++) {
     81 		if (a[i] == "") {
     82 			continue
     83 		}
     84 		if (CPPDEFS != "") {
     85 			CPPDEFS=CPPDEFS " "
     86 		}
     87 		a[i] = gensub("([^\\\\]|^)#", "\\1 ", "g", a[i])
     88 		a[i] = gensub("\\\\#", "#", "g", a[i])
     89 		CPPDEFS=CPPDEFS "/D " a[i]
     90 	}
     91 
     92 	INCDIRS=""
     93 	sz = split(ENVIRON["STD_INCDIR_LIST"], a, "[ \t\n]+");
     94 	for (i = 1; i <= sz; i++) {
     95 		if (a[i] == "") {
     96 			continue
     97 		}
     98 		if (INCDIRS != "") {
     99 			INCDIRS=INCDIRS " "
    100 		}
    101 		INCDIRS=INCDIRS "/I \"" a[i] "\""
    102 	}
    103 	sz = split(ENVIRON["INCDIR_LIST"], a, "[ \t\n]+");
    104 	for (i = 1; i <= sz; i++) {
    105 		if (a[i] == "") {
    106 			continue
    107 		}
    108 		if (INCDIRS != "") {
    109 			INCDIRS=INCDIRS " "
    110 		}
    111 		INCDIRS=INCDIRS "/I \"" a[i] "\""
    112 	}
    113 	sz = split(ENVIRON["LIBDEP_LIST"], a, "[ \t\n]+");
    114 	for (i = 1; i <= sz; i++) {
    115 		if (a[i] == "") {
    116 			continue
    117 		}
    118 		if (INCDIRS != "") {
    119 			INCDIRS=INCDIRS " "
    120 		}
    121 		INCDIRS=INCDIRS "/I \"..\\" a[i] "\""
    122         }
    123 
    124 	LIBRARIES=""
    125 	sz = split(ENVIRON["STD_LIBRARY_LIST"], a, "[ \t\n]+");
    126 	for (i = 1; i <= sz; i++) {
    127 		if (a[i] == "") {
    128 			continue
    129 		}
    130 		if (LIBRARIES != "") {
    131 			LIBRARIES=LIBRARIES " "
    132 		}
    133 		LIBRARIES=LIBRARIES a[i] ".lib"
    134 	}
    135 	sz = split(ENVIRON["LIBRARY_LIST"], a, "[ \t\n]+");
    136 	for (i = 1; i <= sz; i++) {
    137 		if (a[i] == "") {
    138 			continue
    139 		}
    140 		if (LIBRARIES != "") {
    141 			LIBRARIES=LIBRARIES " "
    142 		}
    143 		LIBRARIES=LIBRARIES a[i] ".lib"
    144         }
    145 	sz = split(ENVIRON["LIBDEP_LIST"], a, "[ \t\n]+");
    146 	for (i = 1; i <= sz; i++) {
    147 		if (a[i] == "") {
    148 			continue
    149 		}
    150 		if (LIBRARIES != "") {
    151 			LIBRARIES=LIBRARIES " "
    152 		}
    153 		LIBRARIES=LIBRARIES a[i] ".lib"
    154 	}
    155 
    156 	sz = split(ENVIRON["LIBDEP_LIST"], a, "[ \t\n]+");
    157 	DEBUG_LIBPATH=""
    158 	RELEASE_LIBPATH=""
    159 	for (i = 1; i <= sz; i++) {
    160 		if (a[i] == "") {
    161 			continue
    162 		}
    163 		if (i > 1) {
    164 			DEBUG_LIBPATH=DEBUG_LIBPATH " "
    165 			RELEASE_LIBPATH=RELEASE_LIBPATH " "
    166 		}
    167 		DEBUG_LIBPATH=DEBUG_LIBPATH "/libpath:\"..\\" a[i] "\\WMIPSDbg\""
    168 		RELEASE_LIBPATH=RELEASE_LIBPATH "/libpath:\"..\\" a[i] "\\WMIPSRel\""
    169 	}
    170 }
    171 {
    172 	gsub("%%% NAME %%%", NAME)
    173 	gsub("%%% SRCFILES %%%", SRCFILES)
    174 	gsub("%%% CPPDEFS %%%", CPPDEFS)
    175 	gsub("%%% INCDIRS %%%", INCDIRS)
    176 	gsub("%%% LIBRARIES %%%", LIBRARIES)
    177 	gsub("%%% DEBUG_LIBPATH %%%", DEBUG_LIBPATH)
    178 	gsub("%%% RELEASE_LIBPATH %%%", RELEASE_LIBPATH)
    179 	print $0
    180 }
    181 '
    182