Compile error with MSVC

Started by Yoshiyuki Asabaabout 19 years ago8 messagespatches
Jump to latest
#1Yoshiyuki Asaba
y-asaba@sraoss.co.jp

Hi,

I tried to compile using Visual C++ 2005. But I got the following
errors.

.\src\backend\parser\keywords.c(22) : fatal error C1083: 'parser/parse.h': No such file or directory

I saw src/tools/msvc/pgbison.bat. Why does it copy
src/backend/parser/parser.h to src/include/parser directory?

src/tools/msvc/pgbison.bat:14

if "%1" == "src\backend\parser\gram.y" call :generate %1 src\backend\parser\gram.c src\include\parser\parse.h

I think we should add "src/backend" directory to include path. Because
if gram.c is newer than gram.y, include/parser/parse.h does not
copied.

Then, I saw clean.bat. It deletes the files generated by Bison. I
think we don't have to delete these files.

The attached patch for HEAD is fixed them.
Regards,
--
Yoshiyuki Asaba
y-asaba@sraoss.co.jp

Attachments:

msvc.difftext/plain; charset=us-asciiDownload+7-15
#2Magnus Hagander
magnus@hagander.net
In reply to: Yoshiyuki Asaba (#1)
Re: Compile error with MSVC

Yoshiyuki Asaba wrote:

Hi,

I tried to compile using Visual C++ 2005. But I got the following
errors.

.\src\backend\parser\keywords.c(22) : fatal error C1083: 'parser/parse.h': No such file or directory

I saw src/tools/msvc/pgbison.bat. Why does it copy
src/backend/parser/parser.h to src/include/parser directory?

<snip>
While your solution may be correct (I don't recall offhand how, but it
doesn't seem off the chart), I don't see how it can help you in this
case. Since pgbison would copy the file there, ISTM that pgbison must
have filed. Did you not get a warning output from that one earlier in
your build?

//Magnus

#3Yoshiyuki Asaba
y-asaba@sraoss.co.jp
In reply to: Magnus Hagander (#2)
Re: Compile error with MSVC

Hi,

From: Magnus Hagander <magnus@hagander.net>
Subject: Re: [PATCHES] Compile error with MSVC
Date: Thu, 05 Jul 2007 07:03:11 +0200

I tried to compile using Visual C++ 2005. But I got the following
errors.

.\src\backend\parser\keywords.c(22) : fatal error C1083: 'parser/parse.h': No such file or directory

I saw src/tools/msvc/pgbison.bat. Why does it copy
src/backend/parser/parser.h to src/include/parser directory?

<snip>
While your solution may be correct (I don't recall offhand how, but it
doesn't seem off the chart), I don't see how it can help you in this
case. Since pgbison would copy the file there, ISTM that pgbison must
have filed. Did you not get a warning output from that one earlier in
your build?

If gram.c is older than gram.y, pgbison copy parse.h by custom build
step. But it is newer, pgbison is skipped.

I see the same problem in PostgreSQL 8.2.4. parse.h does not exist in
"src/include/parser" directory.

% tar ztvf postgresql-8.2.4.tar.gz | grep -w parse.h
-rw-r--r-- pgsql/pgsql 16540 2007-04-20 14:13 postgresql-8.2.4/src/backend/parser/parse.h

gram.c is newer than gram.y in PostgreSQL 8.2.4.

% tar ztvf postgresql-8.2.4.tar.gz | grep -w gram.\[cy\] | grep -v plpgsql
-rw-r--r-- pgsql/pgsql 237506 2006-11-06 07:42 postgresql-8.2.4/src/backend/parser/gram.y
-rw-r--r-- pgsql/pgsql 1040559 2007-04-20 14:13 postgresql-8.2.4/src/backend/parser/gram.c

--
Yoshiyuki Asaba
y-asaba@sraoss.co.jp

#4Magnus Hagander
magnus@hagander.net
In reply to: Yoshiyuki Asaba (#3)
Re: Compile error with MSVC

Yoshiyuki Asaba wrote:

Hi,

From: Magnus Hagander <magnus@hagander.net>
Subject: Re: [PATCHES] Compile error with MSVC
Date: Thu, 05 Jul 2007 07:03:11 +0200

I tried to compile using Visual C++ 2005. But I got the following
errors.

.\src\backend\parser\keywords.c(22) : fatal error C1083: 'parser/parse.h': No such file or directory

I saw src/tools/msvc/pgbison.bat. Why does it copy
src/backend/parser/parser.h to src/include/parser directory?

<snip>
While your solution may be correct (I don't recall offhand how, but it
doesn't seem off the chart), I don't see how it can help you in this
case. Since pgbison would copy the file there, ISTM that pgbison must
have filed. Did you not get a warning output from that one earlier in
your build?

If gram.c is older than gram.y, pgbison copy parse.h by custom build
step. But it is newer, pgbison is skipped.

I see the same problem in PostgreSQL 8.2.4. parse.h does not exist in
"src/include/parser" directory.

Oh, I see, you're building from the tarball, not from cvs. Now I see the
problem. And yeah, your solution looks like the correct one. I'll take a
look at the details and make sure it gets in there.

//Magnus

#5Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Magnus Hagander (#4)
Re: Compile error with MSVC

Magnus Hagander wrote:

Yoshiyuki Asaba wrote:

Hi,

From: Magnus Hagander <magnus@hagander.net>
Subject: Re: [PATCHES] Compile error with MSVC
Date: Thu, 05 Jul 2007 07:03:11 +0200

I tried to compile using Visual C++ 2005. But I got the following
errors.

.\src\backend\parser\keywords.c(22) : fatal error C1083: 'parser/parse.h': No such file or directory

I saw src/tools/msvc/pgbison.bat. Why does it copy
src/backend/parser/parser.h to src/include/parser directory?

<snip>
While your solution may be correct (I don't recall offhand how, but it
doesn't seem off the chart), I don't see how it can help you in this
case. Since pgbison would copy the file there, ISTM that pgbison must
have filed. Did you not get a warning output from that one earlier in
your build?

If gram.c is older than gram.y, pgbison copy parse.h by custom build
step. But it is newer, pgbison is skipped.

I see the same problem in PostgreSQL 8.2.4. parse.h does not exist in
"src/include/parser" directory.

Oh, I see, you're building from the tarball, not from cvs. Now I see the
problem. And yeah, your solution looks like the correct one. I'll take a
look at the details and make sure it gets in there.

Maybe what needs fixed is that the Makefile ought to copy the parse.h
file to the include dir. Using src/backend/parser as an include dir
strikes me as a bad idea.

--
Alvaro Herrera http://www.amazon.com/gp/registry/CTMLCN8V17R4
"Nunca se desea ardientemente lo que solo se desea por raz�n" (F. Alexandre)

#6Magnus Hagander
magnus@hagander.net
In reply to: Alvaro Herrera (#5)
Re: Compile error with MSVC

Alvaro Herrera wrote:

Magnus Hagander wrote:

Yoshiyuki Asaba wrote:

Hi,

From: Magnus Hagander <magnus@hagander.net>
Subject: Re: [PATCHES] Compile error with MSVC
Date: Thu, 05 Jul 2007 07:03:11 +0200

I tried to compile using Visual C++ 2005. But I got the following
errors.

.\src\backend\parser\keywords.c(22) : fatal error C1083: 'parser/parse.h': No such file or directory

I saw src/tools/msvc/pgbison.bat. Why does it copy
src/backend/parser/parser.h to src/include/parser directory?

<snip>
While your solution may be correct (I don't recall offhand how, but it
doesn't seem off the chart), I don't see how it can help you in this
case. Since pgbison would copy the file there, ISTM that pgbison must
have filed. Did you not get a warning output from that one earlier in
your build?

If gram.c is older than gram.y, pgbison copy parse.h by custom build
step. But it is newer, pgbison is skipped.

I see the same problem in PostgreSQL 8.2.4. parse.h does not exist in
"src/include/parser" directory.

Oh, I see, you're building from the tarball, not from cvs. Now I see the
problem. And yeah, your solution looks like the correct one. I'll take a
look at the details and make sure it gets in there.

Maybe what needs fixed is that the Makefile ought to copy the parse.h
file to the include dir. Using src/backend/parser as an include dir
strikes me as a bad idea.

Well, the MSVC build is just emulating Unix regardless of if it's good
or bad :-)

Anyway. I'm not sure it matters enough to change it on Unix... It's not
like it hasn't worked well for many years ;-)

//Magnus

#7Magnus Hagander
magnus@hagander.net
In reply to: Magnus Hagander (#6)
Re: Compile error with MSVC

Magnus Hagander wrote:

Alvaro Herrera wrote:

Magnus Hagander wrote:

Yoshiyuki Asaba wrote:

Hi,

From: Magnus Hagander <magnus@hagander.net>
Subject: Re: [PATCHES] Compile error with MSVC
Date: Thu, 05 Jul 2007 07:03:11 +0200

I tried to compile using Visual C++ 2005. But I got the following
errors.

.\src\backend\parser\keywords.c(22) : fatal error C1083: 'parser/parse.h': No such file or directory

I saw src/tools/msvc/pgbison.bat. Why does it copy
src/backend/parser/parser.h to src/include/parser directory?

<snip>
While your solution may be correct (I don't recall offhand how, but it
doesn't seem off the chart), I don't see how it can help you in this
case. Since pgbison would copy the file there, ISTM that pgbison must
have filed. Did you not get a warning output from that one earlier in
your build?

If gram.c is older than gram.y, pgbison copy parse.h by custom build
step. But it is newer, pgbison is skipped.

I see the same problem in PostgreSQL 8.2.4. parse.h does not exist in
"src/include/parser" directory.

Oh, I see, you're building from the tarball, not from cvs. Now I see the
problem. And yeah, your solution looks like the correct one. I'll take a
look at the details and make sure it gets in there.

Maybe what needs fixed is that the Makefile ought to copy the parse.h
file to the include dir. Using src/backend/parser as an include dir
strikes me as a bad idea.

Well, the MSVC build is just emulating Unix regardless of if it's good
or bad :-)

Anyway. I'm not sure it matters enough to change it on Unix... It's not
like it hasn't worked well for many years ;-)

I've applied this. I didn't include your changes to clean.bat, because
clean really should clean up everything ;-) This should fix building for
people working off dev snapshot tarballs.

(If we want to change where parse.h is supposed to live, we'll take that
as a separate step)

Thanks!

//Magnus

#8Alvaro Herrera
alvherre@2ndquadrant.com
In reply to: Magnus Hagander (#7)
Re: Compile error with MSVC

Magnus Hagander wrote:

Anyway. I'm not sure it matters enough to change it on Unix... It's not
like it hasn't worked well for many years ;-)

I've applied this. I didn't include your changes to clean.bat, because
clean really should clean up everything ;-) This should fix building for
people working off dev snapshot tarballs.

(If we want to change where parse.h is supposed to live, we'll take that
as a separate step)

I noticed that what the Makefile do is symlink parse.h into the include
dir. So it doesn't need to add a -Isrc/backend/parser.

--
Alvaro Herrera http://www.CommandPrompt.com/
PostgreSQL Replication, Consulting, Custom Development, 24x7 support