This is the mail archive of the cygwin@sources.redhat.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

[avail for test] xpm-4.0.0-1


I've just uploaded xpm-4.0.0-1 to sourceware.  USE A MIRROR -- the ones
listed in the INSTALLATION section have been verified up-to-date with
xpm.  xpm is marked as a 'test' release, so you may have to specifically
select it in setup to install (see INSTALLATION below).  This release is
probably somewhat controversial, so please let you opinions be known. 
xpm provides the Xpm library, consisting of routines to manipulate and
display Xpm-format images.

o can coexist with the "libXpm.dll" provided by cygwin-XFree, but does
provide additional features. The cygwin-XFree version of the Xpm library
is dynamic only; this version provides the option of statically linking
the Xpm code -- although the X11 version of libXpm provided here still
requires the *other* X11 dynamic libs, so that's kind of a moot point. 
The real key is the no-X-server-required version:

o Two different builds: one that requires X11 and an Xserver (similar to
the cygwin-XFree "libXpm.dll", and one that is "X11-free".  Both builds
are provided in "static" and "dll" versions.
  X11 build     : + more complete		- requires Xserver
  X11-free build: + no Xserver needed	- a few missing routines (*)
The missing routines are the ones related to "Pixmaps" ("XpmImage"
"Buffer" "Image" and "Data" related functions are implemented).  I've
never run into a program that fails to link using the X11-free library
-- and it works fine with cygwin-XEmacs; however, since it isn't fully
complete:

o the X11 version is configured so that it is used by default when
linking external apps (see the symlinks below).  However, if you prefer
to always use the X11-free version, just rearrange the symlinks.

o Based on the xpm code from the XFree86-4.0.0 distribution (xpm was
*finally* absorbed into the main XFree distro as of v4.0).  However,
there is no substantial difference between the earlier "xpm-3.4k.tar.gz"
distribution and the "xpm" directory in the XFree86-4.0.0 sources.

o PLEASE comment: the dll's are versioned as "4", not "3" -- but this is
NOT because the sources came from XFree86- ***4*** .0.0.  According to
xpm.h, the library version number, which remains "3.4k" even in the
XFree86-4.0.0 sources, should be parsed as follows:
   XpmFormat "3"
   XpmVersion "4"
   XpmRevision "11" ( "k" is the 11th letter of the alphabet )
Quoting: "we forget the 3 which is the format number" so the SO version
is 4.11 (which I simplified down to just SOMAJOR = 4 ).  Did I do the
right thing in using "4" as the dll version number?

o follows new naming scheme for dlls (with some complications because
there are two different versions):
   /usr/lib/libXpm-X.dll.a    (import lib, Xserver needed)
   /usr/lib/libXpm-X.a        (static lib, Xserver needed)
   /usr/lib/libXpm-noX.dll.a  (import lib, X11-free)
   /usr/lib/libXpm-noX.a      (static lib, X11-free)
   /usr/lib/libXpm.dll.a -> libXpm-X.dll.a
   /usr/lib/libXpm.a     -> libXpm-X.a
   /usr/bin/cygXpm-X4.dll     (dll, Xserver needed)
   /usr/bin/cygXpm-noX4.dll   (dll, X11-free)
So, -lXpm will get the Xserver-required version (unless you change the
symbolic links before linking your app). Also, you can explicitly use
'-lXpm-X' and '-lXpm-noX'.

o Proactive answer to the obvious question: "Why don't you merge this
into the cygwin-XFree86 distribution?"  Answer: Not easy, and probably
not a good idea.  The cygwin-XFree86 builds using standard "xmkmf"
X11-style configuration and builds.  This generates makefiles for
building the "X11 world".  Then you do "make world" and build
everything.  It's just not part of the mindset to hack up xmkmf so that
"if building on cygwin, when generating the makefiles for the xpm target
(but not the other targets), do the X thing, but also cheat a bit over
here and generate this extra library that is not part of the X world,
etc etc".  It really is easier, on cygwin, to pull xpm out and build it
separately.

The X11free code (not my special Makefile changes) is actually part of
the official xpm-3.4k distro, which was absorbed en mass into XFree86. 
However, the inclusion of the X11free stuff was probably an accidental
oversight on the part of the XFree86 folks, or they just included it
because there was no better place to put it so that it doesn't get lost;
now that libXpm has been absorbed by XFree86, the "old" separate xpm-3.4
distro will probably fade into obscurity.

You're not supposed to actually *USE* the X11free code when building X11
-- that's why the official Makefiles, even the so-called "-noX"
makefiles, don't activate the X11free code.  (Yes, it's confusing.  In
the X11 world, a "-noX" makefile is a makefile that does not rely on a
working xmkmf program; they don't *really* mean
"this-makefile-builds-an-X11free-library".)  Anway, the X11free code is
*only* provided in the official xpm-3.4k distro (and now, in the XFree86
distro) in case you (a) want libXpm on windows, and (b) don't want X11.  

Cygwin kinda straddles the fence, so libXpm straddles the fence too --
these sources and the official XFree86-xpm/xpm-3.4k sources are
synchronized aside from Makefile issues, but my version *can* build a
no-X library "out-of-box"; the cygwin-XFree86 version can't and IMO
shouldn't.

whew.


INSTALLATION:

To update your installation, click on the "Install Cygwin now" link on
the http://sources.redhat.com/cygwin web page.  This downloads setup.exe
to your system.

Run setup and answer all of the questions.  PLEASE, PLEASE, PLEASE
choose a mirror site for your download.  The 'sources.redhat.com' site
is badly overloaded.  The mirrors below have the latest version of this
package:

ftp://ftp.freesoftware.com/pub/sourceware/cygwin/ (US)
ftp://ftp.franken.de/pub/win32/develop/gnuwin32/cygwin/mirrors/cygnus/
(Germany)
ftp://ftp.ntua.gr/pub/pc/cygwin/ (Greece)

The setup.exe program will figure out what needs to be updated on your
system and should install the less package automatically. To install
this Test version of xpm you'll have to tell setup.exe to specifically
install it by clicking on the arrows to the left of the xpm package line
until "Test" shows up.  You may need to click on the "Full/Part" button
in the upper right corner of the the setup screen to get xpm to show up
in the list.

--Chuck Wilson

--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]