Have you tried the output group option to fix order dependencies?
Something like:

basic/libgen/src/Tupfile:
: classes.in |> /var/tmp/genclass.py classes.in |> One.h One.cpp Other.h 
Other.cpp ../<libgen>

progs/basic/src/Tupfile:
: main.cpp | ../../../basic/libgen/<libgen> |> g++ -Wall $(INCFLAGS) -g -c 
main.cpp |> main.o

--
Robert

On Friday, November 14, 2014 6:46:10 PM UTC+1, [email protected] 
wrote:
>
>
> I am experimenting with TUP via setting up a small test case that is 
> somewhat
> similar to the big build system that we use internally.  We have code 
> generators
> that generate multiple C++ header and source files from one input file.  
> These
> generators run in different directories from the source code that refers to
> them.  After setting up an example like this, I am having trouble getting 
> TUP
> to handle a dependency on a file generated in another directory.  When I 
> add
> the dependency I get:
>
> tup error: Explicitly named file 'One.h' is a ghost file, so it can't be 
> used as an input.
> tup error: Error parsing Tupfile line 2
>   Line was: ': main.cpp One.h |> g++ -Wall $(INCFLAGS) -g -c main.cpp |> 
> main.o'
>
> If I don't include the dependency, I get:
>
>  *** tup errors ***
> tup error: Missing input dependency - a file was read from, and was not 
> specified as an input link for the command. This is an issue because the 
> file was created from another command, and without the input link the 
> commands may execute out of order. You should add this file as an input, 
> since it is possible this could randomly break in the future.
>  - [53] build-default/basic/libgen/src/One.h
>
> The directory structure I am using looks like this:
>
> Tuprules.tup
> basic/
>   libgen/
>     src/
>       Tupfile
>       classes.in
> build-default/
>   tup.config
>   basic/
>     libgen/
>       src/
>         One.cpp
>         One.h
>         One.o
>         Other.cpp
>         Other.h
>         Other.o
>   progs/
>     basic/
>       src/
>         main.o
> progs/
>   basic/
>     src/
>       Tupfile
>       main.cpp
>
> Like our build system, I am using the facility to have outputs go into a 
> separate
> build area (build-default).  The library that contains the generation of 
> files
> (basic/libgen/src/Tupfile) has a Tupfile that looks like this:
>
> : classes.in |> /var/tmp/genclass.py classes.in |> One.h One.cpp Other.h 
> Other.cpp
> : One.h One.cpp |> g++ -Wall -g -c One.cpp |> One.o
> : Other.h Other.cpp |> g++ -Wall -g -c Other.cpp |> Other.o
>
> The consumer of this has the following Tupfile (progs/basic/src/Tupfile):
>
> include_rules
> : main.cpp |> g++ -Wall $(INCFLAGS) -g -c main.cpp |> main.o
> : main.o |> g++ -Wall -o main main.o |> main
>
> Alternatively, the version that contains the dependency is:
>
> include_rules
> : main.cpp One.h |> g++ -Wall $(INCFLAGS) -g -c main.cpp |> main.o
> : main.o |> g++ -Wall -o main main.o |> main
>
> The former produces the message about a missing dependency, the latter 
> produces
> the message about a ghost file.
>
> In order to see the include files appropriately, the top level Tuprules.tup
> file contains:
>
> INCFLAGS += -I$(TUP_CWD)/basic/libgen/src
>
> So, maybe I am missing something simple, but I can't get TUP to be happy 
> with
> this setup.  It can generate and compile the files in libgen but the main
> program can't seem to consume it.  Note that I haven't added the final link
> options into progs/basic/src/Tupfile because it is still stuck trying to
> compile the main.cpp program.  Any ideas?
>
>         David S. Harrison
>
>

-- 
-- 
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.

Reply via email to