Hi,
I got the following error with wine-20020804 when I skipped 'make depend' before doing 'make':
gmake[2]: Entering directory `/u0/work/wine-20020804/tools/widl' gcc -c -I. -I. -I../../include -I../../include -O2 -Wall -mpreferred-stack-boundary=2 -D__WINE__ -D_REENTRANT -I/usr/X11R6/include -o header.o header.c header.c:36: y.tab.h: No such file or directory gmake[2]: *** [header.o] Error 1 gmake[2]: Leaving directory `/u0/work/wine-20020804/tools/widl' gmake[1]: *** [widl] Error 2 gmake[1]: Leaving directory `/u0/work/wine-20020804/tools' gmake: *** [tools] Error 2
This was due to dependency that widl/*.c require y.tab.h in common but y.tab.h is not generated before compilation is being done. I have worked around it as follows:
--- Make.rules.in.orig Sat Aug 3 04:34:21 2002 +++ Make.rules.in Mon Aug 5 14:57:17 2002 @@ -112,7 +112,7 @@ CLEAN_FILES = *.o *.a *.so *.ln *.$(LIBEXT) \#*\# *~ *% .\#* *.bak *.orig *.rej \ *.flc *.spec.c *.spec.def *.glue.c *.dbg.c y.tab.c y.tab.h @LEX_OUTPUT_ROOT@.c core
-OBJS = $(C_SRCS:.c=.o) $(GEN_C_SRCS:.c=.o) $(GEN_ASM_SRCS:.s=.o) $(ASM_SRCS:.S=.o) $(EXTRA_OBJS) +OBJS = $(EXTRA_OBJS) $(C_SRCS:.c=.o) $(GEN_C_SRCS:.c=.o) $(GEN_ASM_SRCS:.s=.o) $(ASM_SRCS:.S=.o)
RCOBJS = $(RC_SRCS:.rc=.res.o) LINTS = $(C_SRCS:.c=.ln)
Obviously the patch doesn't look good. Is there any better solution for this? What about introducing PREEXTRA_OBJS and POSTEXTRA_OBJS?
Jun-Young
Hello!
On Mon, Aug 05, 2002 at 03:46:42PM +0900, Bang Jun-Young wrote:
I got the following error with wine-20020804 when I skipped 'make depend' before doing 'make':
Than don't do that. 'make depend' is required and not optional.
bye michael
gmake[2]: Entering directory `/u0/work/wine-20020804/tools/widl' gcc -c -I. -I. -I../../include -I../../include -O2 -Wall -mpreferred-stack-boundary=2 -D__WINE__ -D_REENTRANT -I/usr/X11R6/include -o header.o header.c header.c:36: y.tab.h: No such file or directory gmake[2]: *** [header.o] Error 1 gmake[2]: Leaving directory `/u0/work/wine-20020804/tools/widl' gmake[1]: *** [widl] Error 2 gmake[1]: Leaving directory `/u0/work/wine-20020804/tools' gmake: *** [tools] Error 2
This was due to dependency that widl/*.c require y.tab.h in common but y.tab.h is not generated before compilation is being done. I have worked around it as follows:
--- Make.rules.in.orig Sat Aug 3 04:34:21 2002 +++ Make.rules.in Mon Aug 5 14:57:17 2002 @@ -112,7 +112,7 @@ CLEAN_FILES = *.o *.a *.so *.ln *.$(LIBEXT) \#*\# *~ *% .\#* *.bak *.orig *.rej \ *.flc *.spec.c *.spec.def *.glue.c *.dbg.c y.tab.c y.tab.h @LEX_OUTPUT_ROOT@.c core
-OBJS = $(C_SRCS:.c=.o) $(GEN_C_SRCS:.c=.o) $(GEN_ASM_SRCS:.s=.o) $(ASM_SRCS:.S=.o) $(EXTRA_OBJS) +OBJS = $(EXTRA_OBJS) $(C_SRCS:.c=.o) $(GEN_C_SRCS:.c=.o) $(GEN_ASM_SRCS:.s=.o) $(ASM_SRCS:.S=.o)
RCOBJS = $(RC_SRCS:.rc=.res.o) LINTS = $(C_SRCS:.c=.ln)
Obviously the patch doesn't look good. Is there any better solution for this? What about introducing PREEXTRA_OBJS and POSTEXTRA_OBJS?
On Mon, Aug 05, 2002 at 10:16:09AM +0200, Michael Stefaniuc wrote:
'make depend' is required and not optional.
Why? I had no problem with earlier snapshots of wine. And in most of software that has GNU style build process, 'make depend' is completely optional.
Jun-Young
--- Bang Jun-Young junyoung@mogua.com a écrit : > On Mon, Aug 05, 2002 at 10:16:09AM +0200, Michael Stefaniuc wrote:
'make depend' is required and not optional.
Why?
See configure output and follow its instructions - it says to run 'make depend && make'.
___________________________________________________________ Do You Yahoo!? -- Une adresse @yahoo.fr gratuite et en français ! Yahoo! Mail : http://fr.mail.yahoo.com
On Mon, Aug 05, 2002 at 02:10:12PM +0200, Sylvain Petreolle wrote:
--- Bang Jun-Young junyoung@mogua.com a ?crit?: > On Mon, Aug 05, 2002 at 10:16:09AM +0200, Michael Stefaniuc wrote:
'make depend' is required and not optional.
Why?
See configure output and follow its instructions - it says to run 'make depend && make'.
Why do I have to do 'make depend' when I can build Wine without it? Only because it's said so there? Sounds unreasonable to me.
Jun-Young
On Mon, Aug 05, 2002 at 10:05:48PM +0900, Bang Jun-Young wrote:
On Mon, Aug 05, 2002 at 02:10:12PM +0200, Sylvain Petreolle wrote:
--- Bang Jun-Young junyoung@mogua.com a ?crit?: > On Mon, Aug 05, 2002 at 10:16:09AM +0200, Michael Stefaniuc wrote:
'make depend' is required and not optional.
Why?
See configure output and follow its instructions - it says to run 'make depend && make'.
Why do I have to do 'make depend' when I can build Wine without it? Only because it's said so there? Sounds unreasonable to me.
Heh? I thought you told us you can't build wine without running 'make depend'?
bye michael
On Mon, Aug 05, 2002 at 03:11:00PM +0200, Michael Stefaniuc wrote:
On Mon, Aug 05, 2002 at 10:05:48PM +0900, Bang Jun-Young wrote:
On Mon, Aug 05, 2002 at 02:10:12PM +0200, Sylvain Petreolle wrote:
--- Bang Jun-Young junyoung@mogua.com a ?crit?: > On Mon, Aug 05, 2002 at 10:16:09AM +0200, Michael Stefaniuc wrote:
'make depend' is required and not optional.
Why?
See configure output and follow its instructions - it says to run 'make depend && make'.
Why do I have to do 'make depend' when I can build Wine without it? Only because it's said so there? Sounds unreasonable to me.
Heh? I thought you told us you can't build wine without running 'make depend'?
I _said_ I worked around the problem by applying a quick and dirty patch.
Jun-Young
On Mon, Aug 05, 2002 at 10:05:48PM +0900, Bang Jun-Young wrote:
Why do I have to do 'make depend' when I can build Wine without it? Only because it's said so there? Sounds unreasonable to me.
No, not because it is said there. Definitely not because it is said there. The current build process requires that this is done in some cases. Because nobody wanted to document those cases, the message was put at the end of configure. I had problems compiling wine without make depend from time to time 6 or more years ago, so your problem is in no way new. It may be new for you, but not for wine. And because of this problem, you should do make depend. Or not, but please don't complain in that case. Your agrument seems to go a bit like that: "I've been speeding for years but never got a ticket. Why should I get one now?"
ciao Jörg
-- Joerg Mayer jmayer@loplof.de I found out that "pro" means "instead of" (as in proconsul). Now I know what proactive means.
On Mon, Aug 05, 2002 at 03:21:47PM +0200, Joerg Mayer wrote:
On Mon, Aug 05, 2002 at 10:05:48PM +0900, Bang Jun-Young wrote:
Why do I have to do 'make depend' when I can build Wine without it? Only because it's said so there? Sounds unreasonable to me.
No, not because it is said there. Definitely not because it is said there. The current build process requires that this is done in some cases.
In what cases?
Because nobody wanted to document those cases, the message was put at the end of configure. I had problems compiling wine without make depend from time to time 6 or more years ago, so your problem is in no way new. It may be new for you, but not for wine.
I have been able to build Wine without 'make depend' for the past 8 months (or longer, probably). I couldn't test with releases earlier than 20011226 when NetBSD support was available for the first time. If you want, I can do the same test with earlier releases on Linux.
I really wonder how the same problem has come and gone from time to time. Who broke it and who fixed it?
And because of this problem, you should do make depend. Or not, but please don't complain in that case. Your agrument seems to go a bit like that: "I've been speeding for years but never got a ticket. Why should I get one now?"
I think you never understand what the purpose of 'make depend' is. If you are only interested in getting binaries via source build, you should be able to do it without a time-spendng process that adds a large amount of explicit dependency to Makefiles.
Jun-Young
On Mon, Aug 05, 2002 at 11:22:54PM +0900, Bang Jun-Young wrote:
In what cases?
I don't know.
I think you never understand what the purpose of 'make depend' is.
You may be right here :-) I think make depend builds for each source file a list of all other files it includes (recursively). So if one of theses files has changed, an existing object file get rebuild. So if something in the include or #define structure (e.g. config.h) changes, you need to do a new make depend.
That's my understanding of what make depend is good for.
Ciao Jörg -- Joerg Mayer jmayer@loplof.de I found out that "pro" means "instead of" (as in proconsul). Now I know what proactive means.
On Mon, Aug 05, 2002 at 04:49:21PM +0200, Joerg Mayer wrote:
On Mon, Aug 05, 2002 at 11:22:54PM +0900, Bang Jun-Young wrote:
In what cases?
I don't know.
I think you never understand what the purpose of 'make depend' is.
You may be right here :-) I think make depend builds for each source file a list of all other files it includes (recursively). So if one of theses files has changed, an existing object file get rebuild. So if something in the include or #define structure (e.g. config.h) changes, you need to do a new make depend.
If none of files in the source directories is supposed to change, e.g. making a binary package from sources, 'make depend' is completely unnecessary,
That's my understanding of what make depend is good for.
I intepret "be good for" to "be useful for", not "be required for."
Jun-Young
Bang Jun-Young wrote:
On Mon, Aug 05, 2002 at 04:49:21PM +0200, Joerg Mayer wrote:
On Mon, Aug 05, 2002 at 11:22:54PM +0900, Bang Jun-Young wrote:
In what cases?
I don't know.
I think you never understand what the purpose of 'make depend' is.
You may be right here :-) I think make depend builds for each source file a list of all other files it includes (recursively). So if one of theses files has changed, an existing object file get rebuild. So if something in the include or #define structure (e.g. config.h) changes, you need to do a new make depend.
If none of files in the source directories is supposed to change, e.g. making a binary package from sources, 'make depend' is completely unnecessary,
That's my understanding of what make depend is good for.
I intepret "be good for" to "be useful for", not "be required for."
Jun-Young
In this case required for would be true. Running make depend ensures that all dependencys are accounted for and in most cases they do not change from one snapshot to the next., but that is not guarnteed. It seems to me there have been quite a few changes that would affect dependencys since the last snapshot. What you are saying is that you don't "_have_to_" run make depend each time you compile wine, which is true. just as you dont "_have _to_ " run ./configure each time wine changes. There are times when you do and running make depend does not take that long and it makes sure that everything is in the right place.
If you realy want to avoid it you can work around it as you have, or you can run make depend, your choice I suppose.
Tony Lambregts
--- Tony Lambregts tony_lambregts@telusplanet.net wrote: [skipped]
In this case required for would be true. Running make depend ensures that all dependencys are accounted for and in most cases they do not change from one snapshot to the next., but that is not guarnteed. It seems to me there have been quite a few changes that would affect dependencys since the last snapshot. What you are saying is that you don't "_have_to_" run make depend each time you compile wine, which is true. just as you dont "_have _to_ " run ./configure each time wine changes. There are times when you do and running make depend does not take that long and it makes sure that everything is in the right place.
If you realy want to avoid it you can work around it as you have, or you can run make depend, your choice I suppose.
I think Bang describes a little different situation - when he wants to build Wine from a clean source tree.
Assuming the purpose of "make depend" is to track dependencies of changes it should not be required to call it on clean source as there is no generated files yet. One needs to use "make depend" on an updated source tree in order to use results of previous builds.
As I understand one could even use "make clean && make" instead of "make depend" on updated source tree.
Andriy
__________________________________________________ Do You Yahoo!? Yahoo! Health - Feel better, live better http://health.yahoo.com
Andriy Palamarchuk apa3a@yahoo.com writes:
As I understand one could even use "make clean && make" instead of "make depend" on updated source tree.
In theory yes, but in practice this isn't guaranteed to work. The reason is that some headers are generated at build time, and thus need proper dependencies in order to be generated in the right order. So we either have to require make depend before building, or manually maintain the dependencies for these headers. Neither solution is perfect, but at least the make depend approach has the advantage that it doesn't break if you change a #include and forget to update the makefile.
On Mon, Aug 05, 2002 at 11:10:17AM -0600, Tony Lambregts wrote:
In this case required for would be true. Running make depend ensures that all dependencys are accounted for and in most cases they do not change from one snapshot to the next., but that is not guarnteed. It
Have you tried to build Wine without running 'make depend'? Have you investigated my patch?
Jun-Young
On Mon, Aug 05, 2002 at 03:46:42PM +0900, Bang Jun-Young wrote:
I got the following error with wine-20020804 when I skipped 'make depend' before doing 'make':
make depend is indeed optional. Except for a few dozens corner cases that I don't know all myself. Because I'm too lazy to find out about all of them the hard way (or by really understanding the complete build system) I usually do the make depend, just like the last lines of configure say.
Ciao Jörg -- Joerg Mayer jmayer@loplof.de I found out that "pro" means "instead of" (as in proconsul). Now I know what proactive means.