ICU-10879 Split out OBJECTS from Makefiles into separate files
diff --git a/icu4c/source/common/Makefile.in b/icu4c/source/common/Makefile.in
index 7d149eb..67bcf00 100644
--- a/icu4c/source/common/Makefile.in
+++ b/icu4c/source/common/Makefile.in
@@ -79,45 +79,8 @@
 # $(LIBICUDT) is either stub data or the real DLL common data.
 LIBS = $(LIBICUDT) $(DEFAULT_LIBS)
 
-OBJECTS = errorcode.o putil.o umath.o utypes.o uinvchar.o umutex.o ucln_cmn.o \
-uinit.o uobject.o cmemory.o charstr.o cstr.o \
-udata.o ucmndata.o udatamem.o umapfile.o udataswp.o utrie_swap.o ucol_swp.o utrace.o \
-uhash.o uhash_us.o uenum.o ustrenum.o uvector.o ustack.o uvectr32.o uvectr64.o \
-ucnv.o ucnv_bld.o ucnv_cnv.o ucnv_io.o ucnv_cb.o ucnv_err.o ucnvlat1.o \
-ucnv_u7.o ucnv_u8.o ucnv_u16.o ucnv_u32.o ucnvscsu.o ucnvbocu.o \
-ucnv_ext.o ucnvmbcs.o ucnv2022.o ucnvhz.o ucnv_lmb.o ucnvisci.o ucnvdisp.o ucnv_set.o ucnv_ct.o \
-resource.o uresbund.o ures_cnv.o uresdata.o resbund.o resbund_cnv.o \
-ucurr.o \
-localebuilder.o localeprioritylist.o \
-messagepattern.o ucat.o locmap.o uloc.o locid.o locutil.o locavailable.o locdispnames.o locdspnm.o loclikely.o locresdata.o \
-lsr.o loclikelysubtags.o locdistance.o localematcher.o \
-bytestream.o stringpiece.o bytesinkutil.o \
-stringtriebuilder.o bytestriebuilder.o \
-bytestrie.o bytestrieiterator.o \
-ucharstrie.o ucharstriebuilder.o ucharstrieiterator.o \
-dictionarydata.o \
-edits.o \
-appendable.o ustr_cnv.o unistr_cnv.o unistr.o unistr_case.o unistr_props.o \
-utf_impl.o ustring.o ustrcase.o ucasemap.o ucasemap_titlecase_brkiter.o cstring.o ustrfmt.o ustrtrns.o ustr_wcs.o utext.o \
-unistr_case_locale.o ustrcase_locale.o unistr_titlecase_brkiter.o ustr_titlecase_brkiter.o \
-normalizer2impl.o normalizer2.o filterednormalizer2.o normlzr.o unorm.o unormcmp.o loadednormalizer2impl.o \
-chariter.o schriter.o uchriter.o uiter.o \
-patternprops.o uchar.o uprops.o ucase.o propname.o ubidi_props.o characterproperties.o \
-ubidi.o ubidiwrt.o ubidiln.o ushape.o \
-uscript.o uscript_props.o usc_impl.o unames.o \
-utrie.o utrie2.o utrie2_builder.o ucptrie.o umutablecptrie.o \
-bmpset.o unisetspan.o uset_props.o uniset_props.o uniset_closure.o uset.o uniset.o usetiter.o ruleiter.o caniter.o unifilt.o unifunct.o \
-uarrsort.o brkiter.o ubrk.o brkeng.o dictbe.o filteredbrk.o \
-rbbi.o rbbidata.o rbbinode.o rbbirb.o rbbiscan.o rbbisetb.o rbbistbl.o rbbitblb.o rbbi_cache.o \
-serv.o servnotf.o servls.o servlk.o servlkf.o servrbf.o servslkf.o \
-uidna.o usprep.o uts46.o punycode.o \
-util.o util_props.o parsepos.o locbased.o cwchar.o wintz.o dtintrv.o ucnvsel.o propsvec.o \
-ulist.o uloc_tag.o icudataver.o icuplug.o \
-sharedobject.o simpleformatter.o unifiedcache.o uloc_keytype.o \
-ubiditransform.o \
-pluralmap.o \
-static_unicode_sets.o \
-restrace.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
 
 ## Header files to install
 HEADERS = $(srcdir)/unicode/*.h
diff --git a/icu4c/source/common/sources.txt b/icu4c/source/common/sources.txt
new file mode 100644
index 0000000..e0410da
--- /dev/null
+++ b/icu4c/source/common/sources.txt
@@ -0,0 +1,196 @@
+appendable.cpp
+bmpset.cpp
+brkeng.cpp
+brkiter.cpp
+bytesinkutil.cpp
+bytestream.cpp
+bytestrie.cpp
+bytestriebuilder.cpp
+bytestrieiterator.cpp
+caniter.cpp
+characterproperties.cpp
+chariter.cpp
+charstr.cpp
+cmemory.cpp
+cstr.cpp
+cstring.cpp
+cwchar.cpp
+dictbe.cpp
+dictionarydata.cpp
+dtintrv.cpp
+edits.cpp
+errorcode.cpp
+filteredbrk.cpp
+filterednormalizer2.cpp
+icudataver.cpp
+icuplug.cpp
+loadednormalizer2impl.cpp
+localebuilder.cpp
+localematcher.cpp
+localeprioritylist.cpp
+locavailable.cpp
+locbased.cpp
+locdispnames.cpp
+locdistance.cpp
+locdspnm.cpp
+locid.cpp
+loclikely.cpp
+loclikelysubtags.cpp
+locmap.cpp
+locresdata.cpp
+locutil.cpp
+lsr.cpp
+messagepattern.cpp
+normalizer2.cpp
+normalizer2impl.cpp
+normlzr.cpp
+parsepos.cpp
+patternprops.cpp
+pluralmap.cpp
+propname.cpp
+propsvec.cpp
+punycode.cpp
+putil.cpp
+rbbi.cpp
+rbbi_cache.cpp
+rbbidata.cpp
+rbbinode.cpp
+rbbirb.cpp
+rbbiscan.cpp
+rbbisetb.cpp
+rbbistbl.cpp
+rbbitblb.cpp
+resbund.cpp
+resbund_cnv.cpp
+resource.cpp
+restrace.cpp
+ruleiter.cpp
+schriter.cpp
+serv.cpp
+servlk.cpp
+servlkf.cpp
+servls.cpp
+servnotf.cpp
+servrbf.cpp
+servslkf.cpp
+sharedobject.cpp
+simpleformatter.cpp
+static_unicode_sets.cpp
+stringpiece.cpp
+stringtriebuilder.cpp
+uarrsort.cpp
+ubidi.cpp
+ubidi_props.cpp
+ubidiln.cpp
+ubiditransform.cpp
+ubidiwrt.cpp
+ubrk.cpp
+ucase.cpp
+ucasemap.cpp
+ucasemap_titlecase_brkiter.cpp
+ucat.cpp
+uchar.cpp
+ucharstrie.cpp
+ucharstriebuilder.cpp
+ucharstrieiterator.cpp
+uchriter.cpp
+ucln_cmn.cpp
+ucmndata.cpp
+ucnv.cpp
+ucnv2022.cpp
+ucnv_bld.cpp
+ucnv_cb.cpp
+ucnv_cnv.cpp
+ucnv_ct.cpp
+ucnv_err.cpp
+ucnv_ext.cpp
+ucnv_io.cpp
+ucnv_lmb.cpp
+ucnv_set.cpp
+ucnv_u16.cpp
+ucnv_u32.cpp
+ucnv_u7.cpp
+ucnv_u8.cpp
+ucnvbocu.cpp
+ucnvdisp.cpp
+ucnvhz.cpp
+ucnvisci.cpp
+ucnvlat1.cpp
+ucnvmbcs.cpp
+ucnvscsu.cpp
+ucnvsel.cpp
+ucol_swp.cpp
+ucptrie.cpp
+ucurr.cpp
+udata.cpp
+udatamem.cpp
+udataswp.cpp
+uenum.cpp
+uhash.cpp
+uhash_us.cpp
+uidna.cpp
+uinit.cpp
+uinvchar.cpp
+uiter.cpp
+ulist.cpp
+uloc.cpp
+uloc_keytype.cpp
+uloc_tag.cpp
+umapfile.cpp
+umath.cpp
+umutablecptrie.cpp
+umutex.cpp
+unames.cpp
+unifiedcache.cpp
+unifilt.cpp
+unifunct.cpp
+uniset.cpp
+uniset_closure.cpp
+uniset_props.cpp
+unisetspan.cpp
+unistr.cpp
+unistr_case.cpp
+unistr_case_locale.cpp
+unistr_cnv.cpp
+unistr_props.cpp
+unistr_titlecase_brkiter.cpp
+unorm.cpp
+unormcmp.cpp
+uobject.cpp
+uprops.cpp
+ures_cnv.cpp
+uresbund.cpp
+uresdata.cpp
+usc_impl.cpp
+uscript.cpp
+uscript_props.cpp
+uset.cpp
+uset_props.cpp
+usetiter.cpp
+ushape.cpp
+usprep.cpp
+ustack.cpp
+ustr_cnv.cpp
+ustr_titlecase_brkiter.cpp
+ustr_wcs.cpp
+ustrcase.cpp
+ustrcase_locale.cpp
+ustrenum.cpp
+ustrfmt.cpp
+ustring.cpp
+ustrtrns.cpp
+utext.cpp
+utf_impl.cpp
+util.cpp
+util_props.cpp
+utrace.cpp
+utrie.cpp
+utrie2.cpp
+utrie2_builder.cpp
+utrie_swap.cpp
+uts46.cpp
+utypes.cpp
+uvector.cpp
+uvectr32.cpp
+uvectr64.cpp
+wintz.cpp
diff --git a/icu4c/source/extra/scrptrun/Makefile.in b/icu4c/source/extra/scrptrun/Makefile.in
index 6712c43..f6e4773 100644
--- a/icu4c/source/extra/scrptrun/Makefile.in
+++ b/icu4c/source/extra/scrptrun/Makefile.in
@@ -35,7 +35,8 @@
 LDFLAGS = @LDFLAGS@ $(RPATHLDFLAGS)
 LIBS = $(LIBICUUC) @LIBS@ @LIB_M@
 
-OBJECTS = scrptrun.o srtest.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/extra/scrptrun/sources.txt b/icu4c/source/extra/scrptrun/sources.txt
new file mode 100644
index 0000000..a4b20b7
--- /dev/null
+++ b/icu4c/source/extra/scrptrun/sources.txt
@@ -0,0 +1,2 @@
+scrptrun.cpp
+srtest.cpp
diff --git a/icu4c/source/extra/uconv/Makefile.in b/icu4c/source/extra/uconv/Makefile.in
index b614461..30e27fd 100644
--- a/icu4c/source/extra/uconv/Makefile.in
+++ b/icu4c/source/extra/uconv/Makefile.in
@@ -74,7 +74,8 @@
 INSTALLTO=$(libdir)
 endif
 
-OBJECTS = uconv.o uwmsg.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(patsubst %.cpp,%.o,$(patsubst %.c,%.o, $(SOURCES)))
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/extra/uconv/sources.txt b/icu4c/source/extra/uconv/sources.txt
new file mode 100644
index 0000000..ed227fe
--- /dev/null
+++ b/icu4c/source/extra/uconv/sources.txt
@@ -0,0 +1,2 @@
+uconv.cpp
+uwmsg.c
diff --git a/icu4c/source/i18n/Makefile.in b/icu4c/source/i18n/Makefile.in
index ae2c71a..ce7fe00 100644
--- a/icu4c/source/i18n/Makefile.in
+++ b/icu4c/source/i18n/Makefile.in
@@ -64,57 +64,8 @@
 LDFLAGS += $(LDFLAGSICUI18N)
 LIBS = $(LIBICUUC) $(DEFAULT_LIBS)
 
-OBJECTS = ucln_in.o \
-fmtable.o format.o msgfmt.o umsg.o numfmt.o unum.o decimfmt.o dcfmtsym.o \
-fmtable_cnv.o \
-choicfmt.o datefmt.o smpdtfmt.o reldtfmt.o dtfmtsym.o udat.o dtptngen.o udatpg.o \
-nfrs.o nfrule.o nfsubs.o rbnf.o numsys.o unumsys.o ucsdet.o \
-ucal.o calendar.o gregocal.o timezone.o simpletz.o olsontz.o \
-astro.o taiwncal.o buddhcal.o persncal.o islamcal.o japancal.o gregoimp.o hebrwcal.o \
-indiancal.o chnsecal.o cecal.o coptccal.o dangical.o ethpccal.o \
-coleitr.o coll.o sortkey.o bocsu.o ucoleitr.o \
-ucol.o ucol_res.o ucol_sit.o \
-collation.o collationsettings.o collationdata.o collationtailoring.o \
-collationdatareader.o collationdatawriter.o collationfcd.o \
-collationiterator.o utf16collationiterator.o utf8collationiterator.o uitercollationiterator.o \
-collationsets.o \
-collationcompare.o collationfastlatin.o collationkeys.o rulebasedcollator.o collationroot.o \
-collationrootelements.o collationdatabuilder.o \
-collationweights.o collationruleparser.o collationbuilder.o collationfastlatinbuilder.o \
-listformatter.o ulistformatter.o \
-strmatch.o usearch.o search.o stsearch.o \
-translit.o utrans.o esctrn.o unesctrn.o funcrepl.o strrepl.o tridpars.o \
-cpdtrans.o rbt.o rbt_data.o rbt_pars.o rbt_rule.o rbt_set.o \
-nultrans.o remtrans.o casetrn.o titletrn.o tolowtrn.o toupptrn.o anytrans.o \
-name2uni.o uni2name.o nortrans.o quant.o transreg.o brktrans.o \
-regexcmp.o rematch.o repattrn.o regexst.o regextxt.o regeximp.o uregex.o uregexc.o \
-ulocdata.o measfmt.o currfmt.o curramt.o currunit.o measure.o utmscale.o \
-csdetect.o csmatch.o csr2022.o csrecog.o csrmbcs.o csrsbcs.o csrucode.o csrutf8.o inputext.o \
-wintzimpl.o windtfmt.o winnmfmt.o basictz.o dtrule.o rbtz.o tzrule.o tztrans.o vtzone.o zonemeta.o \
-standardplural.o upluralrules.o plurrule.o plurfmt.o selfmt.o dtitvfmt.o dtitvinf.o udateintervalformat.o \
-tmunit.o tmutamt.o tmutfmt.o currpinf.o \
-uspoof.o uspoof_impl.o uspoof_build.o uspoof_conf.o smpdtfst.o \
-ztrans.o zrule.o vzone.o fphdlimp.o fpositer.o ufieldpositer.o \
-decNumber.o decContext.o alphaindex.o tznames.o tznames_impl.o tzgnames.o \
-tzfmt.o compactdecimalformat.o gender.o region.o scriptset.o \
-uregion.o reldatefmt.o quantityformatter.o measunit.o measunit_extra.o \
-sharedbreakiterator.o scientificnumberformatter.o dayperiodrules.o nounit.o \
-number_affixutils.o number_compact.o number_decimalquantity.o \
-number_decimfmtprops.o number_fluent.o number_formatimpl.o number_grouping.o \
-number_integerwidth.o number_longnames.o number_modifiers.o number_notation.o number_output.o \
-number_padding.o number_patternmodifier.o number_patternstring.o \
-number_rounding.o number_scientific.o number_utils.o number_asformat.o \
-number_mapper.o number_multiplier.o number_currencysymbols.o number_skeletons.o number_capi.o \
-double-conversion-string-to-double.o double-conversion-double-to-string.o \
-double-conversion-bignum-dtoa.o double-conversion-bignum.o \
-double-conversion-cached-powers.o \
-double-conversion-fast-dtoa.o double-conversion-strtod.o \
-string_segment.o numparse_parsednumber.o numparse_impl.o \
-numparse_symbols.o numparse_decimal.o numparse_scientific.o numparse_currency.o \
-numparse_affixes.o numparse_compositions.o numparse_validators.o \
-numrange_fluent.o numrange_impl.o \
-erarules.o \
-formattedvalue.o formattedval_iterimpl.o formattedval_sbimpl.o formatted_string_builder.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
 
 ## Header files to install
 HEADERS = $(srcdir)/unicode/*.h
diff --git a/icu4c/source/i18n/sources.txt b/icu4c/source/i18n/sources.txt
new file mode 100644
index 0000000..c4b84de
--- /dev/null
+++ b/icu4c/source/i18n/sources.txt
@@ -0,0 +1,233 @@
+alphaindex.cpp
+anytrans.cpp
+astro.cpp
+basictz.cpp
+bocsu.cpp
+brktrans.cpp
+buddhcal.cpp
+calendar.cpp
+casetrn.cpp
+cecal.cpp
+chnsecal.cpp
+choicfmt.cpp
+coleitr.cpp
+coll.cpp
+collation.cpp
+collationbuilder.cpp
+collationcompare.cpp
+collationdata.cpp
+collationdatabuilder.cpp
+collationdatareader.cpp
+collationdatawriter.cpp
+collationfastlatin.cpp
+collationfastlatinbuilder.cpp
+collationfcd.cpp
+collationiterator.cpp
+collationkeys.cpp
+collationroot.cpp
+collationrootelements.cpp
+collationruleparser.cpp
+collationsets.cpp
+collationsettings.cpp
+collationtailoring.cpp
+collationweights.cpp
+compactdecimalformat.cpp
+coptccal.cpp
+cpdtrans.cpp
+csdetect.cpp
+csmatch.cpp
+csr2022.cpp
+csrecog.cpp
+csrmbcs.cpp
+csrsbcs.cpp
+csrucode.cpp
+csrutf8.cpp
+curramt.cpp
+currfmt.cpp
+currpinf.cpp
+currunit.cpp
+dangical.cpp
+datefmt.cpp
+dayperiodrules.cpp
+dcfmtsym.cpp
+decContext.cpp
+decNumber.cpp
+decimfmt.cpp
+double-conversion-bignum-dtoa.cpp
+double-conversion-bignum.cpp
+double-conversion-cached-powers.cpp
+double-conversion-double-to-string.cpp
+double-conversion-fast-dtoa.cpp
+double-conversion-string-to-double.cpp
+double-conversion-strtod.cpp
+dtfmtsym.cpp
+dtitvfmt.cpp
+dtitvinf.cpp
+dtptngen.cpp
+dtrule.cpp
+erarules.cpp
+esctrn.cpp
+ethpccal.cpp
+fmtable.cpp
+fmtable_cnv.cpp
+format.cpp
+formatted_string_builder.cpp
+formattedval_iterimpl.cpp
+formattedval_sbimpl.cpp
+formattedvalue.cpp
+fphdlimp.cpp
+fpositer.cpp
+funcrepl.cpp
+gender.cpp
+gregocal.cpp
+gregoimp.cpp
+hebrwcal.cpp
+indiancal.cpp
+inputext.cpp
+islamcal.cpp
+japancal.cpp
+listformatter.cpp
+measfmt.cpp
+measunit.cpp
+measunit_extra.cpp
+measure.cpp
+msgfmt.cpp
+name2uni.cpp
+nfrs.cpp
+nfrule.cpp
+nfsubs.cpp
+nortrans.cpp
+nounit.cpp
+nultrans.cpp
+number_affixutils.cpp
+number_asformat.cpp
+number_capi.cpp
+number_compact.cpp
+number_currencysymbols.cpp
+number_decimalquantity.cpp
+number_decimfmtprops.cpp
+number_fluent.cpp
+number_formatimpl.cpp
+number_grouping.cpp
+number_integerwidth.cpp
+number_longnames.cpp
+number_mapper.cpp
+number_modifiers.cpp
+number_multiplier.cpp
+number_notation.cpp
+number_output.cpp
+number_padding.cpp
+number_patternmodifier.cpp
+number_patternstring.cpp
+number_rounding.cpp
+number_scientific.cpp
+number_skeletons.cpp
+number_utils.cpp
+numfmt.cpp
+numparse_affixes.cpp
+numparse_compositions.cpp
+numparse_currency.cpp
+numparse_decimal.cpp
+numparse_impl.cpp
+numparse_parsednumber.cpp
+numparse_scientific.cpp
+numparse_symbols.cpp
+numparse_validators.cpp
+numrange_fluent.cpp
+numrange_impl.cpp
+numsys.cpp
+olsontz.cpp
+persncal.cpp
+plurfmt.cpp
+plurrule.cpp
+quant.cpp
+quantityformatter.cpp
+rbnf.cpp
+rbt.cpp
+rbt_data.cpp
+rbt_pars.cpp
+rbt_rule.cpp
+rbt_set.cpp
+rbtz.cpp
+regexcmp.cpp
+regeximp.cpp
+regexst.cpp
+regextxt.cpp
+region.cpp
+reldatefmt.cpp
+reldtfmt.cpp
+rematch.cpp
+remtrans.cpp
+repattrn.cpp
+rulebasedcollator.cpp
+scientificnumberformatter.cpp
+scriptset.cpp
+search.cpp
+selfmt.cpp
+sharedbreakiterator.cpp
+simpletz.cpp
+smpdtfmt.cpp
+smpdtfst.cpp
+sortkey.cpp
+standardplural.cpp
+string_segment.cpp
+strmatch.cpp
+strrepl.cpp
+stsearch.cpp
+taiwncal.cpp
+timezone.cpp
+titletrn.cpp
+tmunit.cpp
+tmutamt.cpp
+tmutfmt.cpp
+tolowtrn.cpp
+toupptrn.cpp
+translit.cpp
+transreg.cpp
+tridpars.cpp
+tzfmt.cpp
+tzgnames.cpp
+tznames.cpp
+tznames_impl.cpp
+tzrule.cpp
+tztrans.cpp
+ucal.cpp
+ucln_in.cpp
+ucol.cpp
+ucol_res.cpp
+ucol_sit.cpp
+ucoleitr.cpp
+ucsdet.cpp
+udat.cpp
+udateintervalformat.cpp
+udatpg.cpp
+ufieldpositer.cpp
+uitercollationiterator.cpp
+ulistformatter.cpp
+ulocdata.cpp
+umsg.cpp
+unesctrn.cpp
+uni2name.cpp
+unum.cpp
+unumsys.cpp
+upluralrules.cpp
+uregex.cpp
+uregexc.cpp
+uregion.cpp
+usearch.cpp
+uspoof.cpp
+uspoof_build.cpp
+uspoof_conf.cpp
+uspoof_impl.cpp
+utf16collationiterator.cpp
+utf8collationiterator.cpp
+utmscale.cpp
+utrans.cpp
+vtzone.cpp
+vzone.cpp
+windtfmt.cpp
+winnmfmt.cpp
+wintzimpl.cpp
+zonemeta.cpp
+zrule.cpp
+ztrans.cpp
diff --git a/icu4c/source/io/Makefile.in b/icu4c/source/io/Makefile.in
index ef2c2a6..9bf9359 100644
--- a/icu4c/source/io/Makefile.in
+++ b/icu4c/source/io/Makefile.in
@@ -60,9 +60,8 @@
 LDFLAGS += $(LDFLAGSICUIO)
 LIBS = $(LIBICUUC) $(LIBICUI18N) $(DEFAULT_LIBS)
 
-OBJECTS = locbund.o ufile.o ufmt_cmn.o uprintf.o uprntf_p.o \
-uscanf.o uscanf_p.o ustdio.o sprintf.o sscanf.o \
-ustream.o ucln_io.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
 
 ## Header files to install
 HEADERS = $(srcdir)/unicode/*.h
diff --git a/icu4c/source/io/sources.txt b/icu4c/source/io/sources.txt
new file mode 100644
index 0000000..7331043
--- /dev/null
+++ b/icu4c/source/io/sources.txt
@@ -0,0 +1,12 @@
+locbund.cpp
+sprintf.cpp
+sscanf.cpp
+ucln_io.cpp
+ufile.cpp
+ufmt_cmn.cpp
+uprintf.cpp
+uprntf_p.cpp
+uscanf.cpp
+uscanf_p.cpp
+ustdio.cpp
+ustream.cpp
diff --git a/icu4c/source/layoutex/Makefile.in b/icu4c/source/layoutex/Makefile.in
index d456ef4..d735099 100644
--- a/icu4c/source/layoutex/Makefile.in
+++ b/icu4c/source/layoutex/Makefile.in
@@ -67,11 +67,8 @@
 LDFLAGS += $(LDFLAGSICULX)
 LIBS = $(LIBICUUC) $(LIBICULE) $(DEFAULT_LIBS)
 
-OBJECTS =  ParagraphLayout.o \
-RunArrays.o \
-LXUtilities.o  \
-playout.o \
-plruns.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
 
 ## Header files to install
 HEADERS= $(srcdir)/layout/ParagraphLayout.h $(srcdir)/layout/RunArrays.h $(srcdir)/layout/playout.h $(srcdir)/layout/plruns.h
diff --git a/icu4c/source/layoutex/sources.txt b/icu4c/source/layoutex/sources.txt
new file mode 100644
index 0000000..ef92e54
--- /dev/null
+++ b/icu4c/source/layoutex/sources.txt
@@ -0,0 +1,5 @@
+LXUtilities.cpp
+ParagraphLayout.cpp
+RunArrays.cpp
+playout.cpp
+plruns.cpp
diff --git a/icu4c/source/stubdata/Makefile.in b/icu4c/source/stubdata/Makefile.in
index 162c63a..cf20510 100644
--- a/icu4c/source/stubdata/Makefile.in
+++ b/icu4c/source/stubdata/Makefile.in
@@ -48,7 +48,8 @@
 CPPFLAGS += -I$(top_srcdir)/common $(LIBCPPFLAGS)
 LDFLAGS += $(LDFLAGSICUDT)
 
-OBJECTS = stubdata.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
 
 ## Header files to install
 HEADERS = 
diff --git a/icu4c/source/stubdata/sources.txt b/icu4c/source/stubdata/sources.txt
new file mode 100644
index 0000000..1bbb267
--- /dev/null
+++ b/icu4c/source/stubdata/sources.txt
@@ -0,0 +1 @@
+stubdata.cpp
diff --git a/icu4c/source/tools/ctestfw/Makefile.in b/icu4c/source/tools/ctestfw/Makefile.in
index 845fdc9..2ad1fbe 100644
--- a/icu4c/source/tools/ctestfw/Makefile.in
+++ b/icu4c/source/tools/ctestfw/Makefile.in
@@ -50,7 +50,8 @@
 LDFLAGS += $(LDFLAGSCTESTFW)
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS)
 
-OBJECTS = ctest.o tstdtmod.o testdata.o datamap.o uperf.o ucln_ct.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(patsubst %.cpp,%.o,$(patsubst %.c,%.o, $(SOURCES)))
 
 STATIC_OBJECTS = $(OBJECTS:.o=.$(STATIC_O))
 
diff --git a/icu4c/source/tools/ctestfw/sources.txt b/icu4c/source/tools/ctestfw/sources.txt
new file mode 100644
index 0000000..30103db
--- /dev/null
+++ b/icu4c/source/tools/ctestfw/sources.txt
@@ -0,0 +1,6 @@
+ctest.c
+datamap.cpp
+testdata.cpp
+tstdtmod.cpp
+ucln_ct.c
+uperf.cpp
diff --git a/icu4c/source/tools/genbrk/Makefile.in b/icu4c/source/tools/genbrk/Makefile.in
index cb7fcd8..bcb684e 100644
--- a/icu4c/source/tools/genbrk/Makefile.in
+++ b/icu4c/source/tools/genbrk/Makefile.in
@@ -31,7 +31,8 @@
 CPPFLAGS += -I$(top_srcdir)/common -I$(srcdir)/../toolutil
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = genbrk.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/genbrk/sources.txt b/icu4c/source/tools/genbrk/sources.txt
new file mode 100644
index 0000000..a750aeb
--- /dev/null
+++ b/icu4c/source/tools/genbrk/sources.txt
@@ -0,0 +1 @@
+genbrk.cpp
diff --git a/icu4c/source/tools/genccode/Makefile.in b/icu4c/source/tools/genccode/Makefile.in
index 948fd00..6a1bab5 100644
--- a/icu4c/source/tools/genccode/Makefile.in
+++ b/icu4c/source/tools/genccode/Makefile.in
@@ -32,7 +32,8 @@
 CPPFLAGS += -I$(top_srcdir)/common -I$(srcdir)/../toolutil
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = genccode.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.c=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/genccode/sources.txt b/icu4c/source/tools/genccode/sources.txt
new file mode 100644
index 0000000..d5eb025
--- /dev/null
+++ b/icu4c/source/tools/genccode/sources.txt
@@ -0,0 +1 @@
+genccode.c
diff --git a/icu4c/source/tools/gencfu/Makefile.in b/icu4c/source/tools/gencfu/Makefile.in
index 0563141..6cd8e41 100644
--- a/icu4c/source/tools/gencfu/Makefile.in
+++ b/icu4c/source/tools/gencfu/Makefile.in
@@ -31,7 +31,8 @@
 CPPFLAGS += -I$(top_srcdir)/common -I$(top_srcdir)/i18n -I$(srcdir)/../toolutil
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = gencfu.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/gencfu/sources.txt b/icu4c/source/tools/gencfu/sources.txt
new file mode 100644
index 0000000..e5a05f8
--- /dev/null
+++ b/icu4c/source/tools/gencfu/sources.txt
@@ -0,0 +1 @@
+gencfu.cpp
diff --git a/icu4c/source/tools/gencmn/Makefile.in b/icu4c/source/tools/gencmn/Makefile.in
index dd33fcd..bb7fc4e 100644
--- a/icu4c/source/tools/gencmn/Makefile.in
+++ b/icu4c/source/tools/gencmn/Makefile.in
@@ -32,7 +32,8 @@
 CPPFLAGS += -I$(top_srcdir)/common -I$(srcdir)/../toolutil
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = gencmn.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.c=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/gencmn/sources.txt b/icu4c/source/tools/gencmn/sources.txt
new file mode 100644
index 0000000..6ffa777
--- /dev/null
+++ b/icu4c/source/tools/gencmn/sources.txt
@@ -0,0 +1 @@
+gencmn.c
diff --git a/icu4c/source/tools/gencnval/Makefile.in b/icu4c/source/tools/gencnval/Makefile.in
index 4e0ab25..b808b0f 100644
--- a/icu4c/source/tools/gencnval/Makefile.in
+++ b/icu4c/source/tools/gencnval/Makefile.in
@@ -32,7 +32,8 @@
 CPPFLAGS += -I$(top_srcdir)/common -I$(srcdir)/../toolutil
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = gencnval.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.c=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/gencnval/sources.txt b/icu4c/source/tools/gencnval/sources.txt
new file mode 100644
index 0000000..9206d40
--- /dev/null
+++ b/icu4c/source/tools/gencnval/sources.txt
@@ -0,0 +1 @@
+gencnval.c
diff --git a/icu4c/source/tools/gendict/Makefile.in b/icu4c/source/tools/gendict/Makefile.in
index 03eb07e..d2cdb1c 100644
--- a/icu4c/source/tools/gendict/Makefile.in
+++ b/icu4c/source/tools/gendict/Makefile.in
@@ -31,7 +31,8 @@
 CPPFLAGS += -I$(top_srcdir)/common -I$(srcdir)/../toolutil
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = gendict.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/gendict/sources.txt b/icu4c/source/tools/gendict/sources.txt
new file mode 100644
index 0000000..6647c5c
--- /dev/null
+++ b/icu4c/source/tools/gendict/sources.txt
@@ -0,0 +1 @@
+gendict.cpp
diff --git a/icu4c/source/tools/gennorm2/Makefile.in b/icu4c/source/tools/gennorm2/Makefile.in
index afc3f9b..84f5830 100644
--- a/icu4c/source/tools/gennorm2/Makefile.in
+++ b/icu4c/source/tools/gennorm2/Makefile.in
@@ -27,7 +27,8 @@
 CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(srcdir)/../toolutil
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = gennorm2.o n2builder.o extradata.o norms.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/gennorm2/sources.txt b/icu4c/source/tools/gennorm2/sources.txt
new file mode 100644
index 0000000..76452d2
--- /dev/null
+++ b/icu4c/source/tools/gennorm2/sources.txt
@@ -0,0 +1,4 @@
+extradata.cpp
+gennorm2.cpp
+n2builder.cpp
+norms.cpp
diff --git a/icu4c/source/tools/genrb/Makefile.in b/icu4c/source/tools/genrb/Makefile.in
index 5e75725..336d839 100644
--- a/icu4c/source/tools/genrb/Makefile.in
+++ b/icu4c/source/tools/genrb/Makefile.in
@@ -37,9 +37,10 @@
 CPPFLAGS += -DUNISTR_FROM_CHAR_EXPLICIT=explicit -DUNISTR_FROM_STRING_EXPLICIT=explicit
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = errmsg.o genrb.o parse.o read.o reslist.o ustr.o rbutil.o \
-wrtjava.o rle.o wrtxml.o prscmnts.o filterrb.o
-DERB_OBJ = derb.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(patsubst %.cpp,%.o,$(patsubst %.c,%.o, $(SOURCES)))
+DERB_SOURCES = derb.cpp
+DERB_OBJ = $(DERB_SOURCES:.cpp=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 DERB_DEPS = $(DERB_OBJ:.o=.d)
diff --git a/icu4c/source/tools/genrb/sources.txt b/icu4c/source/tools/genrb/sources.txt
new file mode 100644
index 0000000..0128e20
--- /dev/null
+++ b/icu4c/source/tools/genrb/sources.txt
@@ -0,0 +1,12 @@
+errmsg.c
+filterrb.cpp
+genrb.cpp
+parse.cpp
+prscmnts.cpp
+rbutil.c
+read.c
+reslist.cpp
+rle.c
+ustr.c
+wrtjava.cpp
+wrtxml.cpp
diff --git a/icu4c/source/tools/gensprep/Makefile.in b/icu4c/source/tools/gensprep/Makefile.in
index 3ed8cd1..7f475ae 100644
--- a/icu4c/source/tools/gensprep/Makefile.in
+++ b/icu4c/source/tools/gensprep/Makefile.in
@@ -32,7 +32,8 @@
 CPPFLAGS += -I$(top_srcdir)/common -I$(srcdir)/../toolutil
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = gensprep.o store.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.c=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/gensprep/sources.txt b/icu4c/source/tools/gensprep/sources.txt
new file mode 100644
index 0000000..c369456
--- /dev/null
+++ b/icu4c/source/tools/gensprep/sources.txt
@@ -0,0 +1,2 @@
+gensprep.c
+store.c
diff --git a/icu4c/source/tools/gentest/Makefile.in b/icu4c/source/tools/gentest/Makefile.in
index 5f6d9e8..4aba2b6 100644
--- a/icu4c/source/tools/gentest/Makefile.in
+++ b/icu4c/source/tools/gentest/Makefile.in
@@ -26,7 +26,8 @@
 CPPFLAGS+= -I$(top_srcdir)/i18n
 LIBS = $(LIBCTESTFW) $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = gentest.o genres32.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.c=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/gentest/sources.txt b/icu4c/source/tools/gentest/sources.txt
new file mode 100644
index 0000000..b681084
--- /dev/null
+++ b/icu4c/source/tools/gentest/sources.txt
@@ -0,0 +1,2 @@
+genres32.c
+gentest.c
diff --git a/icu4c/source/tools/icuinfo/Makefile.in b/icu4c/source/tools/icuinfo/Makefile.in
index ddbb2ee..68eeb08 100644
--- a/icu4c/source/tools/icuinfo/Makefile.in
+++ b/icu4c/source/tools/icuinfo/Makefile.in
@@ -26,8 +26,10 @@
 CPPFLAGS+= -I$(top_srcdir)/i18n
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = icuinfo.o
-@PLUGINS_TRUE@PLUGIN_OBJECTS = testplug.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
+@PLUGINS_TRUE@PLUGIN_SOURCES = $(shell cat $(srcdir)/plugin_sources.txt)
+@PLUGINS_TRUE@PLUGIN_OBJECTS = $(@PLUGINS_TRUE@PLUGIN_SOURCES:.c=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/icuinfo/plugin_sources.txt b/icu4c/source/tools/icuinfo/plugin_sources.txt
new file mode 100644
index 0000000..7d5e663
--- /dev/null
+++ b/icu4c/source/tools/icuinfo/plugin_sources.txt
@@ -0,0 +1 @@
+testplug.c
diff --git a/icu4c/source/tools/icuinfo/sources.txt b/icu4c/source/tools/icuinfo/sources.txt
new file mode 100644
index 0000000..67b9aa2
--- /dev/null
+++ b/icu4c/source/tools/icuinfo/sources.txt
@@ -0,0 +1 @@
+icuinfo.cpp
diff --git a/icu4c/source/tools/icupkg/Makefile.in b/icu4c/source/tools/icupkg/Makefile.in
index 6a5a773..45f0b33 100644
--- a/icu4c/source/tools/icupkg/Makefile.in
+++ b/icu4c/source/tools/icupkg/Makefile.in
@@ -31,7 +31,8 @@
 CPPFLAGS += -I$(top_srcdir)/common -I$(srcdir)/../toolutil
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = icupkg.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/icupkg/sources.txt b/icu4c/source/tools/icupkg/sources.txt
new file mode 100644
index 0000000..b4406e6
--- /dev/null
+++ b/icu4c/source/tools/icupkg/sources.txt
@@ -0,0 +1 @@
+icupkg.cpp
diff --git a/icu4c/source/tools/icuswap/Makefile.in b/icu4c/source/tools/icuswap/Makefile.in
index f2f7978..18b04e8 100644
--- a/icu4c/source/tools/icuswap/Makefile.in
+++ b/icu4c/source/tools/icuswap/Makefile.in
@@ -31,7 +31,8 @@
 CPPFLAGS += -I$(top_srcdir)/common -I$(srcdir)/../toolutil
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = icuswap.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/icuswap/sources.txt b/icu4c/source/tools/icuswap/sources.txt
new file mode 100644
index 0000000..6e73ffb
--- /dev/null
+++ b/icu4c/source/tools/icuswap/sources.txt
@@ -0,0 +1 @@
+icuswap.cpp
diff --git a/icu4c/source/tools/makeconv/Makefile.in b/icu4c/source/tools/makeconv/Makefile.in
index 6447283..061d54c 100644
--- a/icu4c/source/tools/makeconv/Makefile.in
+++ b/icu4c/source/tools/makeconv/Makefile.in
@@ -31,7 +31,8 @@
 CPPFLAGS += -I$(srcdir) -I$(top_srcdir)/common -I$(srcdir)/../toolutil
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = makeconv.o ucnvstat.o genmbcs.o gencnvex.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(patsubst %.cpp,%.o,$(patsubst %.c,%.o, $(SOURCES)))
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/makeconv/sources.txt b/icu4c/source/tools/makeconv/sources.txt
new file mode 100644
index 0000000..4283ea9
--- /dev/null
+++ b/icu4c/source/tools/makeconv/sources.txt
@@ -0,0 +1,4 @@
+gencnvex.c
+genmbcs.cpp
+makeconv.cpp
+ucnvstat.c
diff --git a/icu4c/source/tools/pkgdata/Makefile.in b/icu4c/source/tools/pkgdata/Makefile.in
index 13e1289..4777998 100644
--- a/icu4c/source/tools/pkgdata/Makefile.in
+++ b/icu4c/source/tools/pkgdata/Makefile.in
@@ -36,7 +36,8 @@
 DEFS += -DUDATA_SO_SUFFIX=\".$(SO)\" -DSTATIC_O=\"$(STATIC_O)\"
 LIBS = $(LIBICUTOOLUTIL) $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS) $(LIB_M)
 
-OBJECTS = pkgdata.o pkgtypes.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(patsubst %.cpp,%.o,$(patsubst %.c,%.o, $(SOURCES)))
 
 DEPS = $(OBJECTS:.o=.d)
 
diff --git a/icu4c/source/tools/pkgdata/sources.txt b/icu4c/source/tools/pkgdata/sources.txt
new file mode 100644
index 0000000..8a5b202
--- /dev/null
+++ b/icu4c/source/tools/pkgdata/sources.txt
@@ -0,0 +1,2 @@
+pkgdata.cpp
+pkgtypes.c
diff --git a/icu4c/source/tools/toolutil/Makefile.in b/icu4c/source/tools/toolutil/Makefile.in
index 0a6dc7d..c9fd89b 100644
--- a/icu4c/source/tools/toolutil/Makefile.in
+++ b/icu4c/source/tools/toolutil/Makefile.in
@@ -55,12 +55,8 @@
 LDFLAGS += $(LDFLAGSICUTOOLUTIL)
 LIBS = $(LIBICUI18N) $(LIBICUUC) $(DEFAULT_LIBS)
 
-OBJECTS = filestrm.o package.o pkgitems.o swapimpl.o toolutil.o unewdata.o \
-collationinfo.o denseranges.o \
-ucm.o ucmstate.o uoptions.o uparse.o \
-ucbuf.o xmlparser.o writesrc.o \
-pkg_icu.o pkg_genc.o pkg_gencmn.o ppucd.o flagparser.o filetools.o \
-udbgutil.o dbgutil.o ucln_tu.o
+SOURCES = $(shell cat $(srcdir)/sources.txt)
+OBJECTS = $(SOURCES:.cpp=.o)
 
 STATIC_OBJECTS = $(OBJECTS:.o=.$(STATIC_O))
 
diff --git a/icu4c/source/tools/toolutil/sources.txt b/icu4c/source/tools/toolutil/sources.txt
new file mode 100644
index 0000000..d328899
--- /dev/null
+++ b/icu4c/source/tools/toolutil/sources.txt
@@ -0,0 +1,24 @@
+collationinfo.cpp
+dbgutil.cpp
+denseranges.cpp
+filestrm.cpp
+filetools.cpp
+flagparser.cpp
+package.cpp
+pkg_genc.cpp
+pkg_gencmn.cpp
+pkg_icu.cpp
+pkgitems.cpp
+ppucd.cpp
+swapimpl.cpp
+toolutil.cpp
+ucbuf.cpp
+ucln_tu.cpp
+ucm.cpp
+ucmstate.cpp
+udbgutil.cpp
+unewdata.cpp
+uoptions.cpp
+uparse.cpp
+writesrc.cpp
+xmlparser.cpp
diff --git a/tools/scripts/cpysearch/Cpy.pm b/tools/scripts/cpysearch/Cpy.pm
index 6d86a49..3936876 100644
--- a/tools/scripts/cpysearch/Cpy.pm
+++ b/tools/scripts/cpysearch/Cpy.pm
@@ -107,7 +107,7 @@
                    @ignore_extensions;
 
 # ignore regex
-our $ignore_regex = "data/out/build|CVS|\\~|\\#|Debug|Release|positions|unidata|$ignore_exts";
+our $ignore_regex = "data/out/build|CVS|\\~|\\#|Debug|Release|positions|unidata|sources\.txt|$ignore_exts";
 
 # Check if this file should be ignored.
 sub should_ignore($) {