xref: /netbsd-src/sys/arch/hpc/stand/dspgen/do_subst.awk (revision 97b36c3975d99987975785bed7667e446e5c2f09)
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