Makefile change to responsefiles: 1 entry per line#456
Makefile change to responsefiles: 1 entry per line#456KageKirin wants to merge 3 commits intobkaradzic:masterfrom
Conversation
Why is this needed? |
without the added semicolon: macro = $(SILENT) echo "$(1)"
$(foreach v,$(inputs),$(call macro,$(v));)and now with the trailing semicolon in the macro definition: macro = $(SILENT) echo "$(1)";
$(foreach v,$(inputs),$(call macro,$(v)))IMHO, the 2nd one is easier to read and less confusing. I hope this answer is kind of satisfactory. The long story is that I was blocked by the lack of trailing semicolon for a while. EDIT: I agree that 41ab1a1 does not really need to be part of this PR, and I can remove it if required. |
rhoot
left a comment
There was a problem hiding this comment.
This does not work on Windows. The object response file for genie (after adding the flag) turns out to be this:
"" ;
"obj/Release/src/host/lua-5.3.0/src/lapi.o" ; echo "obj/Release/src/host/lua-5.3.0/src/lauxlib.o" ; echo "obj/Release/src/host/lua-5.3.0/src/lbaselib.o" ; echo "obj/Release/src/host/lua-5.3.0/src/lbitlib.o" ; echo "obj/Release/src/host/lua-5.3.0/src/lcode.o" ; echo "obj/Release/src/host/lua-5.3.0/src/lcorolib.o" ; echo "obj/Release/src/host/lua-5.3.0/src/lctype.o" ; echo "obj/Release/src/host/lua-5.3.0/src/ldblib.o" ; echo "obj/Release/src/host/lua-5.3.0/src/ldebug.o" ; echo "obj/Release/src/host/lua-5.3.0/src/ldo.o" ; echo "obj/Release/src/host/lua-5.3.0/src/ldump.o" ; echo "obj/Release/src/host/lua-5.3.0/src/lfunc.o" ; echo "obj/Release/src/host/lua-5.3.0/src/lgc.o" ; echo "obj/Release/src/host/lua-5.3.0/src/linit.o" ; echo "obj/Release/src/host/lua-5.3.0/src/liolib.o" ; echo "obj/Release/src/host/lua-5.3.0/src/llex.o" ; echo "obj/Release/src/host/lua-5.3.0/src/lmathlib.o" ; echo "obj/Release/src/host/lua-5.3.0/src/lmem.o" ; echo "obj/Release/src/host/lua-5.3.0/src/loadlib.o" ; echo "obj/Release/src/host/lua-5.3.0/src/lobject.o" ; echo "obj/Release/src/host/lua-5.3.0/src/lopcodes.o" ; echo "obj/Release/src/host/lua-5.3.0/src/loslib.o" ; echo "obj/Release/src/host/lua-5.3.0/src/lparser.o" ; echo "obj/Release/src/host/lua-5.3.0/src/lstate.o" ; echo "obj/Release/src/host/lua-5.3.0/src/lstring.o" ; echo "obj/Release/src/host/lua-5.3.0/src/lstrlib.o" ; echo "obj/Release/src/host/lua-5.3.0/src/ltable.o" ; echo "obj/Release/src/host/lua-5.3.0/src/ltablib.o" ; echo "obj/Release/src/host/lua-5.3.0/src/ltm.o" ; echo "obj/Release/src/host/lua-5.3.0/src/lundump.o" ; echo "obj/Release/src/host/lua-5.3.0/src/lutf8lib.o" ; echo "obj/Release/src/host/lua-5.3.0/src/lvm.o" ; echo "obj/Release/src/host/lua-5.3.0/src/lzio.o" ; echo "obj/Release/src/host/os_chdir.o" ; echo "obj/Release/src/host/os_copyfile.o" ; echo "obj/Release/src/host/os_getcwd.o" ; echo "obj/Release/src/host/os_is64bit.o" ; echo "obj/Release/src/host/os_isdir.o" ; echo "obj/Release/src/host/os_isfile.o" ; echo "obj/Release/src/host/os_match.o" ; echo "obj/Release/src/host/os_mkdir.o" ; echo "obj/Release/src/host/os_pathsearch.o" ; echo "obj/Release/src/host/os_rmdir.o" ; echo "obj/Release/src/host/os_stat.o" ; echo "obj/Release/src/host/os_ticks.o" ; echo "obj/Release/src/host/os_uuid.o" ; echo "obj/Release/src/host/path_getabsolute.o" ; echo "obj/Release/src/host/path_getrelative.o" ; echo "obj/Release/src/host/path_helpers.o" ; echo "obj/Release/src/host/path_isabsolute.o"
; echo "obj/Release/src/host/premake.o" ; echo "obj/Release/src/host/premake_main.o" ; echo "obj/Release/src/host/scripts.o" ; echo "obj/Release/src/host/string_endswith.o" ; echo "obj/Release/src/host/string_hash.o" ;
|
Thanks for reviewing, and sorry wasting your time with a broken commit. Anyway, I have an idea for a fix that I will implement tomorrow, and then test on Windows (DOS shell and Powershell) as well. |
This fixes issues with many objects yielding a command line too long.
41ab1a1 to
b5a3826
Compare
|
@rhoot @bkaradzic I also removed 41ab1a1 b/c it did not make any sense after my fixes. The Please not that I have a follow up commit already prepared here: |
|
Ok, closing this one in favor just merging both changes with #458 instead. |
Hi,
This is a small change to the gmake responsefile creation to have 1 entry per line, instead of 1 single line having space-separated entries.
Main reason: 1 of my projects has 2000+ source files, and exploded the command line limits when trying to
echoall the object names into the responsefile (this happended on Mac).Cheers.
CC: @rhoot for review.
@rhoot: Btw, you were right in the previous PR: there's no need for extra printing the object files/libs going into the responsefile since they'll be printed anyway in verbose mode, and the output is unwanted in silent mode.