In our environment we support cross compilation of our code for different target platforms. E.g. it could be that we compile on a 32 bit compiler and target a 64 bit system.
For this environment we have split up the compilation of the tools that bootstrap the compilation and the compilation itself.
In other words internal build tools are first compiled manually using one set of environment variables and then target compilation is compiled next with other environment variables.
This seperation is causing problems with makepp. Since we don't want the host-arch tools to be re-compiled when we're compiling the target-arch then we naturally don't reference the makefiles.
This causes other warnings though like:
makepp: warning: `/private/var/root/host-arch/tool' is a stale file generated by makepp,
but there is no rule to build it any more. Makepp assumes that it
is now a source file. If this is correct, then you should add it
to your source control system (if any), and touch the file to make
this warning go away. Otherwise, you should remove the file,
because the targets that depend on it will not be reproducible.
makepp -rm-stale would automatically do this for you.
Is there a way we can solve this and make makepp realize that these are do-not-touch things?
Thanks.
Henrik
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
from your warning I suppose that you have separate hierarchies for host-arch and target-arch? In that case, if you're willing to always call mpp separately in both, it's easy: put a RootMakeppfile in each. That has the side effect of separating everything in the tree, from everything outside (default -dont-build). That way the host-arch will only be attempted to build when actually calling mpp there.
regards - Daniel
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2010-04-25
Unfortunately this has a side effect.
In a particular case I need a shared library from the host directory. With this change I get:
"makepp: error: Not building inexistent `/cygdrive/c/test/shared/generic/temp/win32_x86_vc2008/sharedgeneric.lib' because it's marked for dont-build"
Can I conditionally make inside RootMakeppfile that only this subdirectory must be build after all?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
will allow building anything under tool, even though the RootMakeppfile further up declared the whole tree off limits. If you need more directories you can repeat this option. If some subdirectory there, is not to be built, add the 2nd opt in my example.
regards - Daniel
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2010-04-28
Is there no option to do the same from the make files? I don't see this as a solution. To build our code we should be able to type "makepp" from anywhere without further subcommands. The idea of the rootmakeppfile should be to stop scanning particular paths.
Alternatively is there a way we can stop makepp to not load particular makefiles and ignore the dependencies.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Not from the makefile, but you can put options permanently associated with a directory hierarchy into a file .makepprc at its top.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2010-05-03
I don't like the idea though. The idea about makefiles is to specify all the rules of how to build code. Thus I see it as a annoyance that you'd have to specify it somewhere else.
What if I would disable implicit loading and then loading all directories manually… will this still cause "stale files" warnings?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
In our environment we support cross compilation of our code for different target platforms. E.g. it could be that we compile on a 32 bit compiler and target a 64 bit system.
For this environment we have split up the compilation of the tools that bootstrap the compilation and the compilation itself.
In other words internal build tools are first compiled manually using one set of environment variables and then target compilation is compiled next with other environment variables.
This seperation is causing problems with makepp. Since we don't want the host-arch tools to be re-compiled when we're compiling the target-arch then we naturally don't reference the makefiles.
This causes other warnings though like:
makepp: warning: `/private/var/root/host-arch/tool' is a stale file generated by makepp,
but there is no rule to build it any more. Makepp assumes that it
is now a source file. If this is correct, then you should add it
to your source control system (if any), and touch the file to make
this warning go away. Otherwise, you should remove the file,
because the targets that depend on it will not be reproducible.
makepp -rm-stale would automatically do this for you.
Is there a way we can solve this and make makepp realize that these are do-not-touch things?
Thanks.
Henrik
Hi Henrik,
from your warning I suppose that you have separate hierarchies for host-arch and target-arch? In that case, if you're willing to always call mpp separately in both, it's easy: put a RootMakeppfile in each. That has the side effect of separating everything in the tree, from everything outside (default -dont-build). That way the host-arch will only be attempted to build when actually calling mpp there.
regards - Daniel
Unfortunately this has a side effect.
In a particular case I need a shared library from the host directory. With this change I get:
"makepp: error: Not building inexistent `/cygdrive/c/test/shared/generic/temp/win32_x86_vc2008/sharedgeneric.lib' because it's marked for dont-build"
Can I conditionally make inside RootMakeppfile that only this subdirectory must be build after all?
Hi Henrik,
will allow building anything under tool, even though the RootMakeppfile further up declared the whole tree off limits. If you need more directories you can repeat this option. If some subdirectory there, is not to be built, add the 2nd opt in my example.
regards - Daniel
Is there no option to do the same from the make files? I don't see this as a solution. To build our code we should be able to type "makepp" from anywhere without further subcommands. The idea of the rootmakeppfile should be to stop scanning particular paths.
Alternatively is there a way we can stop makepp to not load particular makefiles and ignore the dependencies.
Not from the makefile, but you can put options permanently associated with a directory hierarchy into a file .makepprc at its top.
I don't like the idea though. The idea about makefiles is to specify all the rules of how to build code. Thus I see it as a annoyance that you'd have to specify it somewhere else.
What if I would disable implicit loading and then loading all directories manually… will this still cause "stale files" warnings?