+1, that would work. I just wondering if it’s better to have I in both bracket to be tolerant to case like -RsI<path>, although it’s not a problem now, but that seems legal options to me.
Cheers, Henry On Nov 5, 2013, at 4:27 AM, Erik Joelsson <erik.joels...@oracle.com> wrote: > So this only happens in hotspot because of > make/linux/makefiles/adjust-mflags.sh. I would suggest this change to fix it. > It adds -I to a set of options that cannot be combined with -j sharing the > same dash (since -I requires an argument). > > diff -r ddc3758f68db make/linux/makefiles/adjust-mflags.sh > --- a/make/linux/makefiles/adjust-mflags.sh > +++ b/make/linux/makefiles/adjust-mflags.sh > @@ -64,7 +64,7 @@ > echo "$MFLAGS" \ > | sed ' > s/^-/ -/ > - s/ -\([^ ][^ ]*\)j/ -\1 -j/ > + s/ -\([^ I][^ ]*\)j/ -\1 -j/ > s/ -j[0-9][0-9]*/ -j/ > s/ -j\([^ ]\)/ -j -\1/ > s/ -j/ -j'${HOTSPOT_BUILD_JOBS:-${default_build_jobs}}'/ > > /Erik > > On 2013-11-05 07:18, Henry Jen wrote: >> Yes, GNU make 4.0 change the format of MFLAGS so that there is no longer >> space between -I and folder. >> >> Cheers, >> Henry >> >> >> On 11/04/2013 01:38 AM, Erik Joelsson wrote: >>> This seems to be make 4.0 specific. I saw the same error when trying a >>> home built make 4.0 on Solaris the other day (for a completely different >>> reason so I didn't pursue the problem). >>> >>> We will investigate. >>> >>> /Erik >>> >>> On 2013-11-02 08:30, Henry Jen wrote: >>>> What I don't understand(misleading me) is that my previous Ubuntu >>>> setup has same directory structure, but not seeing this problem. >>>> >>>> Cheers, >>>> Henry >>>> >>>> On 11/02/2013 12:27 AM, Henry Jen wrote: >>>>> Yes, I just verified that's the result of sed. Following patch fix it. >>>>> I don't quite understand why we need that line. >>>>> >>>>> Cheers, >>>>> Henry >>>>> >>>>> diff -r ea1b8c643fc8 make/linux/makefiles/adjust-mflags.sh >>>>> --- a/make/linux/makefiles/adjust-mflags.sh Wed Oct 30 13:43:16 2013 >>>>> -0700 >>>>> +++ b/make/linux/makefiles/adjust-mflags.sh Sat Nov 02 00:26:42 2013 >>>>> -0700 >>>>> @@ -64,7 +64,6 @@ >>>>> echo "$MFLAGS" \ >>>>> | sed ' >>>>> s/^-/ -/ >>>>> - s/ -\([^ ][^ ]*\)j/ -\1 -j/ >>>>> s/ -j[0-9][0-9]*/ -j/ >>>>> s/ -j\([^ ]\)/ -j -\1/ >>>>> s/ -j/ -j'${HOTSPOT_BUILD_JOBS:-${default_build_jobs}}'/ >>>>> >>>>> >>>>> On 11/02/2013 12:24 AM, David Holmes wrote: >>>>>> Hi Henry, >>>>>> >>>>>> Looks to me like the script that tries to hack the -j option has >>>>>> messed up: >>>>>> >>>>>> -I /home/hjen/ws/tl/common/makefiles -f adlc.make -r -rRs -I/home/h >>>>>> -j3 >>>>>> -en/ws/tl/common/makefiles >>>>>> >>>>>> Note the -j3 which seems to have been inserted into the middle of >>>>>> /hjen/ws ... >>>>>> >>>>>> David >>>>>> >>>>>> On 2/11/2013 1:36 PM, Henry Jen wrote: >>>>>>> Hi, >>>>>>> >>>>>>> I am trying to setup build environment on a new installation, and >>>>>>> encounter following build error. >>>>>>> >>>>>>> I suspect this is because of missing some required tools and software, >>>>>>> however, the error message is not helpful. >>>>>>> >>>>>>> Tried to echo the make commang used, but as you can see the output >>>>>>> seems >>>>>>> to be scrambled. Is there a way to find out what exact command causing >>>>>>> problem? I tried to configure --with-jobs=1, that doesn't help. >>>>>>> >>>>>>> The Gnu make version is 4.0, let me know what else information I can >>>>>>> collect to help diagnosis the problem. >>>>>>> >>>>>>> Cheers, >>>>>>> Henry >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> INFO: ZIP_DEBUGINFO_FILES=1 >>>>>>>> /usr/bin/make -s VERBOSE=-s LOG_LEVEL=warn -R -I >>>>>>>> /home/hjen/ws/tl/common/makefiles -f adlc.make -r -rRs -I/home/h -j3 >>>>>>>> -en/ws/tl/common/makefiles -I/home/hjen/ws/tl/common/makefiles >>>>>>>> -I/home/hjen/ws/tl/common/makefiles >>>>>>>> -I/home/hjen/ws/tl/common/makefiles >>>>>>>> -I/home/hjen/ws/tl/common/makefiles >>>>>>>> /usr/bin/make: invalid option -- '/' >>>>>>>> /usr/bin/make: invalid option -- '/' >>>>>>>> Usage: make [options] [target] ... >>>>>>>> Options: >>>>>>>> -b, -m Ignored for compatibility. >>>>>>>> -B, --always-make Unconditionally make all targets. >>>>>>>> -C DIRECTORY, --directory=DIRECTORY >>>>>>>> Change to DIRECTORY before doing >>>>>>>> anything. >>>>>>>> -d Print lots of debugging information. >>>>>>>> --debug[=FLAGS] Print various types of debugging >>>>>>>> information. >>>>>>>> -e, --environment-overrides >>>>>>>> Environment variables override >>>>>>>> makefiles. >>>>>>>> --eval=STRING Evaluate STRING as a makefile >>>>>>>> statement. >>>>>>>> -f FILE, --file=FILE, --makefile=FILE >>>>>>>> Read FILE as a makefile. >>>>>>>> -h, --help Print this message and exit. >>>>>>>> -i, --ignore-errors Ignore errors from recipes. >>>>>>>> -I DIRECTORY, --include-dir=DIRECTORY >>>>>>>> Search DIRECTORY for included >>>>>>>> makefiles. >>>>>>>> -j [N], --jobs[=N] Allow N jobs at once; infinite jobs >>>>>>>> with >>>>>>>> no arg. >>>>>>>> -k, --keep-going Keep going when some targets can't be >>>>>>>> made. >>>>>>>> -l [N], --load-average[=N], --max-load[=N] >>>>>>>> Don't start multiple jobs unless >>>>>>>> load is >>>>>>>> below N. >>>>>>>> -L, --check-symlink-times Use the latest mtime between symlinks >>>>>>>> and target. >>>>>>>> -n, --just-print, --dry-run, --recon >>>>>>>> Don't actually run any recipe; just >>>>>>>> print them. >>>>>>>> -o FILE, --old-file=FILE, --assume-old=FILE >>>>>>>> Consider FILE to be very old and don't >>>>>>>> remake it. >>>>>>>> -O[TYPE], --output-sync[=TYPE] >>>>>>>> Synchronize output of parallel jobs by >>>>>>>> TYPE. >>>>>>>> -p, --print-data-base Print make's internal database. >>>>>>>> -q, --question Run no recipe; exit status says if >>>>>>>> up to >>>>>>>> date. >>>>>>>> -r, --no-builtin-rules Disable the built-in implicit rules. >>>>>>>> -R, --no-builtin-variables Disable the built-in variable settings. >>>>>>>> -s, --silent, --quiet Don't echo recipes. >>>>>>>> -S, --no-keep-going, --stop >>>>>>>> Turns off -k. >>>>>>>> -t, --touch Touch targets instead of remaking them. >>>>>>>> --trace Print tracing information. >>>>>>>> -v, --version Print the version number of make and >>>>>>>> exit. >>>>>>>> -w, --print-directory Print the current directory. >>>>>>>> --no-print-directory Turn off -w, even if it was turned on >>>>>>>> implicitly. >>>>>>>> -W FILE, --what-if=FILE, --new-file=FILE, --assume-new=FILE >>>>>>>> Consider FILE to be infinitely new. >>>>>>>> --warn-undefined-variables Warn when an undefined variable is >>>>>>>> referenced. >>>>>>>> >>>>>>>> This program built for x86_64-unknown-linux-gnu >>>>>>>> Report bugs to <bug-m...@gnu.org> >>>>>>>> make[5]: *** [ad_stuff] Error 2 >>>>>>>> /home/hjen/ws/tl/hotspot/make/linux/makefiles/top.make:91: recipe for >>>>>>>> target 'ad_stuff' failed >>>>>>>> make[4]: *** [product] Error 2 >>>>>>>> /home/hjen/ws/tl/hotspot/make/linux/Makefile:289: recipe for target >>>>>>>> 'product' failed >>>>>>>> make[3]: *** [generic_build2] Error 2 >>>>>>>> Makefile:216: recipe for target 'generic_build2' failed >>>>>>>> make[2]: *** [product] Error 2 >>>>>>>> Makefile:167: recipe for target 'product' failed >>>>>>>> make[1]: *** >>>>>>>> [/home/hjen/ws/tl/build/linux-x86_64-normal-server-release/hotspot/_hotspot.timestamp] >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Error 2 >>>>>>>> HotspotWrapper.gmk:44: recipe for target >>>>>>>> '/home/hjen/ws/tl/build/linux-x86_64-normal-server-release/hotspot/_hotspot.timestamp' >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> failed >>>>>>>> /export/home/hjen/ws/tl//common/makefiles/Main.gmk:108: recipe for >>>>>>>> target 'hotspot-only' failed >>>>>>>> make: *** [hotspot-only] Error 2 >>> >