1*97b36c39Srafal# $NetBSD: do_subst.awk,v 1.5 2008/02/26 21:46:38 rafal Exp $ 29173eae7Such# 39173eae7Such# Copyright (c) 1999, 2000 Christopher G. Demetriou. All rights reserved. 49173eae7Such# 59173eae7Such# Redistribution and use in source and binary forms, with or without 69173eae7Such# modification, are permitted provided that the following conditions 79173eae7Such# are met: 89173eae7Such# 1. Redistributions of source code must retain the above copyright 99173eae7Such# notice, this list of conditions and the following disclaimer. 109173eae7Such# 2. Redistributions in binary form must reproduce the above copyright 119173eae7Such# notice, this list of conditions and the following disclaimer in the 129173eae7Such# documentation and/or other materials provided with the distribution. 139173eae7Such# 3. All advertising materials mentioning features or use of this software 149173eae7Such# must display the following acknowledgement: 159173eae7Such# This product includes software developed by Christopher G. Demetriou 169173eae7Such# for the NetBSD Project. 179173eae7Such# 4. The name of the author may not be used to endorse or promote products 189173eae7Such# derived from this software without specific prior written permission 199173eae7Such# 209173eae7Such# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 219173eae7Such# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 229173eae7Such# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 239173eae7Such# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 249173eae7Such# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 259173eae7Such# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 269173eae7Such# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 279173eae7Such# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 289173eae7Such# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 299173eae7Such# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 309173eae7Such 31aa7c0fa2Suchfunction setup_md_files (arch, env, srclist) { 329173eae7Such srclist="" 339173eae7Such asm_tmpl="dspgen/asm_build." arch 349173eae7Such prop_tmpl="dspgen/property." arch 359173eae7Such 369173eae7Such sz = split(ENVIRON[env], a, "[ \t\n]+"); 379173eae7Such for (i = 1; i <= sz; i++) { 389173eae7Such if (a[i] == "") { 399173eae7Such continue 409173eae7Such } 419173eae7Such if (srclist != "") { 429173eae7Such srclist=srclist "\n" 439173eae7Such } 449173eae7Such srclist=srclist "# Begin Source File\n" 459173eae7Such srclist=srclist "\n" 469173eae7Such srclist=srclist "SOURCE=.\\" a[i] "\n" 479173eae7Such base = index (a[i], ".asm") 489173eae7Such if (base != 0) { 499173eae7Such basename = substr (a[i], 0, base - 1) 509173eae7Such while (getline < asm_tmpl > 0) { 519173eae7Such gsub ("%%% ASM_BASENAME %%%", basename) 529173eae7Such srclist=srclist $0 "\n" 539173eae7Such } 549173eae7Such close (asm_tmpl) 559173eae7Such } else { 569173eae7Such while (getline < prop_tmpl > 0) 579173eae7Such srclist=srclist $0 "\n" 589173eae7Such close (prop_tmpl) 599173eae7Such } 609173eae7Such srclist=srclist "# End Source File" 619173eae7Such } 629173eae7Such return srclist 639173eae7Such} 649173eae7Such 659173eae7SuchBEGIN { 669173eae7Such NAME=ENVIRON["NAME"] 679173eae7Such 689173eae7Such SRCFILES="" 699173eae7Such sz = split(ENVIRON["SRCFILE_LIST"], a, "[ \t\n]+"); 709173eae7Such for (i = 1; i <= sz; i++) { 719173eae7Such if (a[i] == "") { 729173eae7Such continue 739173eae7Such } 749173eae7Such if (SRCFILES != "") { 759173eae7Such SRCFILES=SRCFILES "\n" 769173eae7Such } 779173eae7Such SRCFILES=SRCFILES "# Begin Source File\n" 789173eae7Such SRCFILES=SRCFILES "\n" 799173eae7Such SRCFILES=SRCFILES "SOURCE=.\\" a[i] "\n" 809173eae7Such SRCFILES=SRCFILES "# End Source File" 819173eae7Such } 829173eae7Such 83aa7c0fa2Such SRCFILES_ARM = setup_md_files("ARM", "SRCFILE_LIST_ARM", SRCFILES_ARM) 84*97b36c39Srafal SRCFILES_ARMV4 = setup_md_files("ARMV4", "SRCFILE_LIST_ARM", SRCFILES_ARM) 85aa7c0fa2Such SRCFILES_SH3 = setup_md_files("SH3", "SRCFILE_LIST_SH3", SRCFILES_SH3) 862e79fe1eSuch SRCFILES_SH4 = setup_md_files("SH4", "SRCFILE_LIST_SH3", SRCFILES_SH3) 87aa7c0fa2Such SRCFILES_SH = setup_md_files("SH", "SRCFILE_LIST_SH3", SRCFILES_SH3) 88aa7c0fa2Such SRCFILES_MIPS = setup_md_files("MIPS", "SRCFILE_LIST_MIPS", 89aa7c0fa2Such SRCFILES_MIPS) 909173eae7Such 919173eae7Such CPPDEFS="" 929173eae7Such sz = split(ENVIRON["STD_CPPDEF_LIST"], a, "[ \t\n]+"); 939173eae7Such for (i = 1; i <= sz; i++) { 949173eae7Such if (a[i] == "") { 959173eae7Such continue 969173eae7Such } 979173eae7Such if (CPPDEFS != "") { 989173eae7Such CPPDEFS=CPPDEFS " " 999173eae7Such } 10005859f4cStakemura a[i] = gensub("([^\\\\]|^)#", "\\1 ", "g", a[i]) 10105859f4cStakemura a[i] = gensub("\\\\#", "#", "g", a[i]) 10205859f4cStakemura CPPDEFS=CPPDEFS "/D " a[i] 1039173eae7Such } 1049173eae7Such sz = split(ENVIRON["CPPDEF_LIST"], a, "[ \t\n]+"); 1059173eae7Such for (i = 1; i <= sz; i++) { 1069173eae7Such if (a[i] == "") { 1079173eae7Such continue 1089173eae7Such } 1099173eae7Such if (CPPDEFS != "") { 1109173eae7Such CPPDEFS=CPPDEFS " " 1119173eae7Such } 11205859f4cStakemura a[i] = gensub("([^\\\\]|^)#", "\\1 ", "g", a[i]) 11305859f4cStakemura a[i] = gensub("\\\\#", "#", "g", a[i]) 11405859f4cStakemura CPPDEFS=CPPDEFS "/D " a[i] 1159173eae7Such } 1169173eae7Such 1179173eae7Such INCDIRS="" 1189173eae7Such sz = split(ENVIRON["STD_INCDIR_LIST"], a, "[ \t\n]+"); 1199173eae7Such for (i = 1; i <= sz; i++) { 1209173eae7Such if (a[i] == "") { 1219173eae7Such continue 1229173eae7Such } 1239173eae7Such if (INCDIRS != "") { 1249173eae7Such INCDIRS=INCDIRS " " 1259173eae7Such } 1269173eae7Such INCDIRS=INCDIRS "/I \"" a[i] "\"" 1279173eae7Such } 1289173eae7Such sz = split(ENVIRON["INCDIR_LIST"], a, "[ \t\n]+"); 1299173eae7Such for (i = 1; i <= sz; i++) { 1309173eae7Such if (a[i] == "") { 1319173eae7Such continue 1329173eae7Such } 1339173eae7Such if (INCDIRS != "") { 1349173eae7Such INCDIRS=INCDIRS " " 1359173eae7Such } 1369173eae7Such INCDIRS=INCDIRS "/I \"" a[i] "\"" 1379173eae7Such } 1389173eae7Such sz = split(ENVIRON["LIBDEP_LIST"], a, "[ \t\n]+"); 1399173eae7Such for (i = 1; i <= sz; i++) { 1409173eae7Such if (a[i] == "") { 1419173eae7Such continue 1429173eae7Such } 1439173eae7Such if (INCDIRS != "") { 1449173eae7Such INCDIRS=INCDIRS " " 1459173eae7Such } 1469173eae7Such INCDIRS=INCDIRS "/I \"..\\" a[i] "\"" 1479173eae7Such } 1489173eae7Such 1499173eae7Such LIBRARIES="" 1509173eae7Such sz = split(ENVIRON["STD_LIBRARY_LIST"], a, "[ \t\n]+"); 1519173eae7Such for (i = 1; i <= sz; i++) { 1529173eae7Such if (a[i] == "") { 1539173eae7Such continue 1549173eae7Such } 1559173eae7Such if (LIBRARIES != "") { 1569173eae7Such LIBRARIES=LIBRARIES " " 1579173eae7Such } 1589173eae7Such LIBRARIES=LIBRARIES a[i] ".lib" 1599173eae7Such } 1609173eae7Such sz = split(ENVIRON["LIBRARY_LIST"], a, "[ \t\n]+"); 1619173eae7Such for (i = 1; i <= sz; i++) { 1629173eae7Such if (a[i] == "") { 1639173eae7Such continue 1649173eae7Such } 1659173eae7Such if (LIBRARIES != "") { 1669173eae7Such LIBRARIES=LIBRARIES " " 1679173eae7Such } 1689173eae7Such LIBRARIES=LIBRARIES a[i] ".lib" 1699173eae7Such } 1709173eae7Such sz = split(ENVIRON["LIBDEP_LIST"], a, "[ \t\n]+"); 1719173eae7Such for (i = 1; i <= sz; i++) { 1729173eae7Such if (a[i] == "") { 1739173eae7Such continue 1749173eae7Such } 1759173eae7Such if (LIBRARIES != "") { 1769173eae7Such LIBRARIES=LIBRARIES " " 1779173eae7Such } 1789173eae7Such LIBRARIES=LIBRARIES a[i] ".lib" 1799173eae7Such } 1809173eae7Such 1819173eae7Such sz = split(ENVIRON["LIBDEP_LIST"], a, "[ \t\n]+"); 1829173eae7Such DEBUG_LIBPATH="" 1839173eae7Such RELEASE_LIBPATH="" 1849173eae7Such for (i = 1; i <= sz; i++) { 1859173eae7Such if (a[i] == "") { 1869173eae7Such continue 1879173eae7Such } 1889173eae7Such if (i > 1) { 1899173eae7Such DEBUG_LIBPATH=DEBUG_LIBPATH " " 1909173eae7Such RELEASE_LIBPATH=RELEASE_LIBPATH " " 1919173eae7Such } 1929173eae7Such DEBUG_LIBPATH=DEBUG_LIBPATH "/libpath:\"..\\" a[i] "\\WMIPSDbg\"" 1939173eae7Such RELEASE_LIBPATH=RELEASE_LIBPATH "/libpath:\"..\\" a[i] "\\WMIPSRel\"" 1949173eae7Such } 1959173eae7Such} 1969173eae7Such{ 1979173eae7Such gsub("%%% SRCFILES %%%", SRCFILES) 1989173eae7Such gsub("%%% SRCFILES_ARM %%%", SRCFILES_ARM) 199*97b36c39Srafal gsub("%%% SRCFILES_ARMV4 %%%", SRCFILES_ARMV4) 2009173eae7Such gsub("%%% SRCFILES_SH3 %%%", SRCFILES_SH3) 2012e79fe1eSuch gsub("%%% SRCFILES_SH4 %%%", SRCFILES_SH4) 202aa7c0fa2Such gsub("%%% SRCFILES_SH %%%", SRCFILES_SH) 2039173eae7Such gsub("%%% SRCFILES_MIPS %%%", SRCFILES_MIPS) 2049173eae7Such gsub("%%% CPPDEFS %%%", CPPDEFS) 2059173eae7Such gsub("%%% INCDIRS %%%", INCDIRS) 2069173eae7Such gsub("%%% LIBRARIES %%%", LIBRARIES) 2079173eae7Such gsub("%%% DEBUG_LIBPATH %%%", DEBUG_LIBPATH) 2089173eae7Such gsub("%%% RELEASE_LIBPATH %%%", RELEASE_LIBPATH) 2099173eae7Such gsub("%%% NAME %%%", NAME) 2109173eae7Such print $0 2119173eae7Such} 212