Apache OpenOffice (AOO) Bugzilla – Issue 69742
Normalize targets in dmakes internal representation
Last modified: 2013-08-07 15:34:52 UTC
The following makefile demonstrates what I mean. -- makefile.mk -- SHELL*:=/bin/sh SHELLFLAGS*:=-ce all : ./try1.xx +echo all try1.xx : +echo try1 -- makefile.mk -- Currently this failes with: dmake: Error: -- `./try1.xx' not found, and can't be made This happens because dmake doesn't recognize that ./try1.xx and try1.xx are equivalent. Fixing this opens the possibility to teach dmake that under cygwin /cygdrive/c/foo, c:/foo and even c:\foo are the same. It also covers the ../bar and ..\bar case. (For case insensitive FS one could even add an option to store everything normalized to lowercase.)
The last commit to dmake47 enables the normalization of targets and non-dynamic prerequisites. (Dynamic prerequisites are prerequisites with not expanded macros.)
I was a little worried about the extra string operations for the normalization being too time consuming (Even though Build_path() should be slightly faster now than before.) and did a comparison build: dmake47: Total build time: 20262 (5:37:42) SRC680_m186: Total build time: 20343 sec (5:39:03) That's in the noise, or maybe even an 0.4% improvement, so the change should be fine.
All changes committed. @ause: Please verify.
looks good on native win and unix. cygwin not yet checked
testcase target-15 passed on cygwin too
seen in MWS