# List of source files containing translatable strings.
# Copyright (C) 2000-2012 Free Software Foundation, Inc.
# This file is part of GNU Make.
#
# GNU Make is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 3 of the License, or (at your option) any later
# version.
#
# GNU Make is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along with
# this program.  If not, see <http://www.gnu.org/licenses/>.

ar.c
arscan.c
commands.c
dir.c
expand.c
file.c
function.c
getopt.c
guile.c
hash.c
implicit.c
job.c
load.c
main.c
misc.c
read.c
remake.c
remote-cstms.c
rule.c
signame.c
strcache.c
variable.c
variable.h
vmsfunctions.c
vmsjobs.c
vpath.c
