On August 5, 2015 2:10:43 PM CDT, Bourgond Aries <[email protected]> wrote: >>You can do something like this with the Lua parser: > >>Tupdefault.lua (at the top of your project): >>tup.foreach_rule('*.c', 'gcc -c %f -o %o -I$(NETHACK_ROOT)/include', >{'%B.o', '$(NETHACK_ROOT)/<objs>'}) > >Interestingly enough, the code your provided put the object files in >the >source directories. >To rememedy this I had to write the following in Tupdefault.lua: >tup.foreach_rule('*.cpp', 'g++ -std=c++11 -g -Wall -Wextra >-Wfatal-errors >-c %f -o %o -I$(NETHACK_ROOT)/', {''$(NETHACK_ROOT)/temp/%B.o'}) > >A question regarding this, btw, is the DSL deprecated in favor of Lua? >I >was namely generating DSL code using bash, then this came along. >The Lua API seems a lot more versatile. Also, is "NETHACK_ROOT" the >root >folder convention that ought to be used? > >>I'd like to see this trivial Makefile. >SOURCES=$(find -name *.cpp) >g++ -std=c++11 -g $(SOURCES) -o binaries/test.elf $(INCLUDE) > >I didn't generate .o files here, but that'd be a call to a bash script >looping over them, generating the .o file, >and ensuring a unique name (by sorting the list of paths first, then >`sed`ing the / to be _). > >for i in ${LIST}; do > echo $i | sed 's|/|_|g' # GCC invocation follows naturally... >done >
You know, you could just use patsubst and keep it all in make... >Is there any way of doing this (E.g. prepending paths to the o-files >and >replacing / by underscores)? > > >On Wednesday, August 5, 2015 at 8:10:59 PM UTC+2, [email protected] >wrote: >> >> On Wed, Aug 5, 2015 at 12:38 PM, Bourgond Aries <[email protected] >> <javascript:>> wrote: >> >>> I have a project with a lot of directories. >>> I want to just build every .c file and dump the .o files in >$(TOP)/temp/. >>> >>> Then I'd like to link them into an executable. >>> >> >> You can do something like this with the Lua parser: >> >> Tupdefault.lua (at the top of your project): >> tup.foreach_rule('*.c', 'gcc -c %f -o %o -I$(NETHACK_ROOT)/include', >> {'%B.o', '$(NETHACK_ROOT)/<objs>'}) >> >> Tuprules.lua (at the top of your project): >> NETHACK_ROOT = tup.getcwd() >> >> Tupfile.lua (wherever you want to link everything): >> tup.rule('$(NETHACK_ROOT)/<objs>', 'gcc -o %o %<objs>', 'nethack') >> >> So three files in total, each one line. >> >> >>> >>> This is trivial with make. >>> >> >> I'd like to see this trivial Makefile. >> >> >>> How is this done in tup? >>> The single-tupfile-per-directory and similar limitations are not >>> practical and they clutter. >>> What am I supposed to do? Propagate the .o files up to the parent >>> directory? What >>> if the files have the same name? >>> >> >> If the files have the same name, won't you run into trouble putting >> everything in $(TOP)/temp regardless? >> >> -Mike >> -- Sent from my Nexus 5 with K-9 Mail. Please excuse my brevity. -- -- tup-users mailing list email: [email protected] unsubscribe: [email protected] options: http://groups.google.com/group/tup-users?hl=en --- You received this message because you are subscribed to the Google Groups "tup-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
