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