Ticket #125 (closed bug: fixed)

Opened 13 years ago

Last modified 13 years ago

Parrot won't build on windows due to new assert stuff

Reported by: kjs Owned by: Infinoid
Priority: blocker Milestone:
Component: core Version: trunk
Severity: medium Keywords:
Cc: parrot-dev@… Language:
Patch status: new Platform: win32

Description

The recent updates with parrot assert stuff prevents parrot from building on windows: (Revision: r34868)

"Compiling with:" xx.c cl -I.\include -nologo -GF -W4 -MD -Zi -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT -DNO_HASH_SEED -DUSE_SITECUSTOMIZE -DPRIV LIB_LAST_IN_INC -D_CRT_SECURE_NO_DEPRECATE -DHASATTRIBUTE_DEPRECATED -wd4101 -DHASATTRIBUTE_NORETURN -wd4101 -Zi -wd4127

-wd4054 -wd4310 -DHAS_JIT -DI386 -I. -Fo xx.obj -c xx.c

src\string.c G:\cygwin\home\Kramer\parrot1\include\parrot/exceptions.h(283) : warning C4431: missing type specifier - int assumed. No te: C no longer supports default-int G:\cygwin\home\Kramer\parrot1\include\parrot/exceptions.h(283) : error C2054: expected '(' to follow 'inline' G:\cygwin\home\Kramer\parrot1\include\parrot/exceptions.h(285) : error C2085: '_PARROT_ASSERT_ARG' : not in formal param eter list G:\cygwin\home\Kramer\parrot1\include\parrot/exceptions.h(285) : error C2143: syntax error : missing ';' before '{' src\string.c(85) : warning C4013: '_PARROT_ASSERT_ARG' undefined; assuming extern returning int NMAKE : fatal error U1077: 'G:\Perl\bin\perl.exe' : return code '0x2' Stop.

kjs

Attachments

20090103.34877.parrot.txt Download (29.9 KB) - added by jkeenan 13 years ago.
'make' log showing failure on Darwin/ppc after assert_args branch merged into trunk
convert_to_a_macro-only_solution.patch Download (2.0 KB) - added by Infinoid 13 years ago.
updated patch with an extra set of parens, to solve an operator precedence issue (it built fine, but wasn't catching failures properly).

Change History

Changed 13 years ago by jkeenan

'make' log showing failure on Darwin/ppc after assert_args branch merged into trunk

follow-up: ↓ 3   Changed 13 years ago by jkeenan

The updates built fine for me on Linux, but broke 'make' on Darwin. See build log attached.

follow-up: ↓ 7   Changed 13 years ago by Infinoid

Ok, I wasn't aware "inline" wasn't C89. Here's a patch that converts the system to use only macros. I know it works on gcc, I am hoping it fixes things on msvc.

in reply to: ↑ 1 ; follow-up: ↓ 6   Changed 13 years ago by Infinoid

Replying to jkeenan:

The updates built fine for me on Linux, but broke 'make' on Darwin. See build log attached.

Thanks, looks like you have a different issue from kjs's MSVC issue.

It looks like the issue on darwin/ppc is that "make headerizer" hasn't been run recently on the ppc platform. Sorry, I should have realized that I can't test those files. I've backed out the ASSERT_ARGS changes for ppc and arm for now in r34890. This should get builds working again, though it may cause a failure in t/codingstd/c_arg_assert.t. Once headerizer has generated the assert macros, those changes can be reverted and life should be good.

  Changed 13 years ago by Infinoid

  • owner set to Infinoid

Changed 13 years ago by Infinoid

updated patch with an extra set of parens, to solve an operator precedence issue (it built fine, but wasn't catching failures properly).

  Changed 13 years ago by Infinoid

  • platform set to win32
  • patch set to new

in reply to: ↑ 3   Changed 13 years ago by jkeenan

Replying to Infinoid:

Replying to jkeenan:

Infinoid did some fixing which enabled me to once again complete 'make' on Darwin/PPC as of r34890':  http://smolder.plusthree.com/app/public_projects/report_details/11779

in reply to: ↑ 2   Changed 13 years ago by Infinoid

Replying to Infinoid:

Ok, I wasn't aware "inline" wasn't C89. Here's a patch that converts the system to use only macros. I know it works on gcc, I am hoping it fixes things on msvc.

I applied that change earlier today as r34896. It significantly simplifies (and in my mind, improves) the API, and I also think it has a good chance of fixing the build issue on MSVC; please try it and let me know either way.

  Changed 13 years ago by kjs

  • status changed from new to closed
  • resolution set to fixed

The issue has been resolved.

Note: See TracTickets for help on using tickets.