Skip to content
This repository
branch: shallow_clone
Fetching contributors…

Cannot retrieve contributors at this time

file 197 lines (118 sloc) 4.685 kb

README.cygwin - Parrot under Cygwin

Parrot builds out of the box under Cygwin, when no other parrot is installed. See below at PROBLEMS.

There are official cygwin parrot packages available via http://cygwin.com/setup.exe.

  parrot libparrot0 libparrot-devel parrot-perl6 parrot-languages

Some tweaks are needed for different names for the ffi to some dll's. See "loadlib DLL versioning".

You'll need the following Cygwin packages to run and build Parrot by your own.

Runtime requirements:

  libreadline6 ncurses libintl8 libgmp3 libgdbm4

Optional requirements:

  libicu38 libpq5 openssl

  for opengl: w32api opengl or libglut3 xorg-x11-base xorg-x11-bin-dlls

Build requirements:

  gcc make perl parrot readline libncurses-devel libgmp-devel
  libgdbm-devel pcre-devel

Optional build requirements:

  libicu-devel openssl-devel

  for Cygwin/X opengl: freeglut libglut-devel xorg-x11-devel

Optional perl packages for testing:

  L<Test::TAP::HTMLMatrix> if you want to run the smoke tests
  with C<make smoke>.

  perl L<Test::Perl::Critic> and L<Perl::Critic>

If you use SVN to get a copy of Parrot, you should use the Cygwin SVN and not the TortoiseSVN client to avoid build errors. Similarly you will need Cygwin Perl rather than ActiveState or Strawberry Perl.

Note that ICU is now optional, you can build Parrot without it, by not installing it or asking Parrot to ignore it (--without-icu).

Building is tricky:

If the freeglut package for the X Server is installed, this is used, otherwise the w32api and opengl packages for native Windows opengl support are tried.

In order to use the w32api native GLUT there must be no /usr/include/GL directory.

The problem is that the NCI tries the header files to create the imports and not the libraries, and if the /usr/include/GL headers are found these are used, despite the w32api GLUT libraries are defined.

  Determining if your platform supports OpenGL.............yes, freeglut 3.4.
  Determining if your platform supports OpenGL...................yes, GLUT 3.
  Determining if your platform supports OpenGL............................no.

Required packages:

  libglut-devel libGL-devel libGLU-devel libglut3 ... 

or if libglut-devel and libGL-devel is not installed:

  w32api opengl

SDL references cygSDL-1-2-0.dll, which is only in cygports http://news.gmane.org/gmane.os.cygwin.ports.announce

libaio-devel "Linux-native asynchronous I/O access" is not available for cygwin, and as the name says it will never be :)

  perl Configure.pl
  make
  make test
  make install

Something like: perl.exe: *** fatal error - unable to remap C:\cygwin\lib\perl5\5.10\i686-cygwin\auto\File\Glob\Glob.dll to same address as parent(0x860000) != 0x14D0000

This is a known cygwin problem with dll's, esp. perl on non-XP 32bit platforms. You need to install the rebase package and run rebaseall from an ash shell.

Invoking Parrot to generate runtime/parrot/include/config.fpmc --cross your fingers

  F<./miniparrot.exe config_lib.pasm > runtime/parrot/include/config.fpmc>
crashes

See below.

Be sure that there's no other libparrot.dll.a or libparrot.a in the linker libpath.

/usr/lib/libparrot.dll.a, /usr/local/lib/libparrot.dll.a

  t/pmc/os....................................
  #   Failed test 'hard link was really created'
  #   at t/pmc/os.t line 312.

This is a known Windows limitation with NTFS junctions on files.

Use cyg*-1.1.dll naming conventions instead of lib*.so.1.1 names for loadlib, the FFI.

Thanks to the Windows DLL Hell and the impossibility of file hardlinks, windows dll names are versioned, so the loadlib function or the various pir's needs more logic.

Either add the version to each loadlib call, and stem the version from POSIX versions within get_path(), or add an optional version argument to loadlib for win32. Or just fix all the pir's, which will be easier when exceptions work again.

Threads, Events, and Signals are missing.

    L<parrot>

Last updated: 23 January 2009

Something went wrong with that request. Please try again.