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 31AWK=awk 32if [ `uname` = SunOS ]; then 33 AWK=nawk 34fi 35 36STD_CPPDEF_LIST='' 37STD_INCDIR_LIST='' 38STD_LIBRARY_LIST='' 39 40export NAME 41export SRCFILE_LIST 42export CPPDEF_LIST STD_CPPDEF_LIST 43export INCDIR_LIST STD_INCDIR_LIST 44export LIBDEP_LIST 45export LIBRARY_LIST STD_LIBRARY_LIST 46 47${AWK} ' 48BEGIN { 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