This is the mail archive of the cygwin-xfree@cygwin.com mailing list for the Cygwin XFree86 project.


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

RE: Copyright [cgf, please comment]



Following from current FAQ
which is very important was written by me, Peter Busch, and if you search
mail archive you will 
a sveral users posted FAQ suggestions and I asked ROB to incorporate them in
FAQ.  It is an example.

3. Programming and Porting of Software
 3.1

 

 

3.2
  I get errors with references to Screen* functions, when I compile an
X-Client.

Delete /usr/include/X11 which gets installed by tcl/tk during cygwin
installation. ( You may need to do this each time you update cygwin...).
These are deprecated X11R5 6 headers, not even complete set and caused
problems during X clients compilation.

I have some cool X fonts from other X11 systems. How do I convert them to
the "foo.pcz" format?
 
The "foo.pcz" is exactly the same as the "foo.pcf.Z" format known from Unix.
Just rename your files, copy them to the font directories and run the
mkfontdir utility. 
 
3.3
 Where is the X contrib kit? Should I port it?
 
Feel free to do so. The contrib. Kit source codes are available from
ftp://ftp.x.org
 
3.4
 I have found a cool X utility which I want to port. How should I proceed?
 
Normally, with X utilities, you get an Imakefile. Simply proceed as if you
were under Unix. Run xmkmf -a to compile. 
 
3.5
 Is there a utility for...?
 
If you don't find it in the distribution.

Ask whether someone is already porting it, e.g. in the mailing list, if not,
then do it yourself. Applications don't appear magically, unless someone
really ports them. So why not YOU?
 
3.6
 Are there games...?
 
At this point no-one has had the time to port games - other things like a
working X Server took priority. If you want to play games port them
yourself. (And be sure to post your success's so this FAQ entry can be more
positive!)
 
3.7
 Will you port XFree86 to Windows, NT, and Windows95?
 
The Cygwin/XFree86 project has ported XFree86 to all the 32-bit versions of
windows. The Cygwin/XFree86 project does not plan to port XFree86 to windows
3.11. This includes Win32S for windows 3.
 
3.8
 Is there a better window manager than twm?
 
There are a number of them, e.g. ctwm, fvwm, fvwm95, afterstep, you need to
port them yourself, check the ported software page or ask at the mailing
list if someone has done it.
 
3.9
 Why is FVWM not the default window manager? It has many advantages, for
instance "...."
 
The distribution reflects what is in the core part of XFree86, which offers
twm by default. There is more stuff that would be worth becoming part of the
standard, such as xv, but ...well, it isn't... 
 
3.10
 Do you plan to port Motif?
 
MOTIF is a copyright protected commercial (NOT an Open Source) product. 

There is also the LessTif project to build a free Motif clone. 
 
3.11
 Cygwin/XFree86 is free, but copyrighted software. Is commercial software
based on this allowed or welcome?
 
Cygwin/XFree86 requires the use of the GNU GCC compiler and Cygwin. There
may be certain restrictions and side effects involved concerning the GPL and
the use of certain libraries. I won't discuss this here, but I would refer
you to send message to cygwin-info@cygnus.com concerning license
requirements. 
 
3.12
 Are there static versions of the X libraries?
 
NO. 
 
3.13
 Will there be Xaw.DLL, Xt.DLL and Xmu.DLL?
 
There are no plans for them at this pont. GCC is free software, and most
stuff written for it is also freely available. Recompile Xaw, Xt and Xmu if
you want. However, keep the following in mind:

"One of the biggest issues with X on Win32 is the moronic DLL format.
Specifically - it is not possible to export data from a Win32 DLL in a form
that can be used to statically initialize another global variable. Data
access from a DLL requires at least one pointer indirection, and hence
executable code. This is why X11R6 doesn't have DLLs for Xt/Xmu/Xaw (and
Motif) on Win32", quoted from XFree86-developers Mailing List - David E.
Wexelblat (dwex@datafocus.com) Wed, 25 Mar 1998 10:08:27 -0500.

NB: See the mailing list page and the cygwin mailing list for discussions on
libtool, which is facing the same issue and may generate a successful
workaround. If that is done then you should have a relatively easy time
porting Xt/Xmu/Xaw. 
 
3.14
 I want to have support for a commercial compiler, because I do not want to
use GCC. 
 
You want a version for a commercial compiler? No problem: write one.
Seriously though see the XFree86 web pages to follow this question up.
 
3.15
 Will the DLLs link with Watcom, Borland, MSVC, and VAC++?
 
The patched source code for Cygwin/GCC compilers is available via cvs. You
will need to consult Mumit Khan's URL at
http://www.xraylith.wisc.edu/~khan/software/gnu-win32 and edit cygwin.cf and
cygwin.rules in xc/cf directory as needed and compile them yourself.
 
3.16
 Why must I use GNU make? I am accustomed to XYZmake, which has very nice
features.
 
Well, Imakefiles also have nice features, particularly that they expand to
Makefiles that may have several thousand lines. I have tested numerous make
programs: all but GNU make failed this benchmark somehow. You are accustomed
to XYZmake; let's say, imake is accustomed to GNU make. 
Information on imake can be found via any popular search engine.
 
3.17
 Are there special porting considerations?
 
Below are few basic rules I follow and are derived from XFree86 source code:


Use the Imakefile and do not try to handcraft or patch a Makefile. Things
will go wrong!  
Read about the macros ProgramTargetName() and LibraryTargetName() and use
them in the Imakefile, rather than hacking .exe and .lib names. The above
will work, hacking won't.  
Use #ifdef cygwinArchitecture in an Imakefile to specify an CYGWIN dependent
part.  
In source or header files, exclusively use #ifdef __CYGWIN__ for CYGWIN
specific parts. Don't use other symbols, such as "WIN32", "__WIN32__",
"i386", "__GNUC__", or "__32BIT__". Use only #ifdef, #else, #endif, not
#elif, as some other compilers don't support this.  
If you think there is a bug in the provided X11 include files, you are doing
something wrong.  
Many Imakefiles silently assume they are running under Unix, and therefore
have program and library names hardcoded in. Use the LibraryTargetName and
ProgramTargetName macros to wrap libs and programs, such as in 

EXTRA_LIBRARIES = ../Xpmlib/LibraryTargetName(Xpm) 
PROGRAMS = ProgramTargetName(xterm) ProgramTargetName(resize) 

Don't reinvent the wheel concerning environment variables. Use the ones that
are described in the installation file README, rather than invent yet
another variable name for USERs, HOME directories, TMP> directories, etc.  
Try to make your filenames comply with the 8.3 file name convention, so that
users may relocate them to elsewhere.  
The libraries are DLLs for certain reasons.  
Much software from Unix assumes that lines have '\n' as a line delimiter.
Don't change this, some code relies on this. Rather rewrite the code to
accept \r\n as a line delimiter.  
Code that relies on Unix security, job control, tty/pty handling, does not
need major rewriting because Cygwin1.dll offers this functionality.  
If you want to contribute other software, please follow these guidelines for
making your distribution zip file:  
Use Cygwin tar and gzip or bzip2 for packing, even if some foobar packer
gives you 1 % better compression. Don't use Windows Winzip or other
non-cygwin aware tools. 
If you use an Imakefile (which is common practice with X apps), set the
X11ROOT variable to another letter than the one where you have your X11
tree. This makes it easier for you to combine all necessary files into a
distribution.  
Use exactly the same tree structure as Cygwin/XFree86 is using don't
reinvent wheels and install to /usr/X11R6/bin or similar.  
The last section means that the directories in your archive should be rooted
to /usr/X11R6.  
Put sources in a separate archive, not in the binary release, and root this
archive at /usr/X11R6/src/PACKAGENAME, e.g. /usr/X11R6/src/xfoo-0.99.  
The reason for all that is that there are plans for a Software Installer in
the future to improve the installation procedure. This should integrate all
contribution packages as well. Non-conforming contributions will be rejected
without warning.  
 
3.18
 'make' does not work.
 
You must use GNU make which came with Cygwin and you must set
MAKE_MODE=UNIX.
 
3.19
 When I start an application I have compiled myself, the speaker beeps.
 
Use an Imakefile. You have not passed the correct options to GCC. The most
simple Imakefile to compile a client with just one source file foo.c looks
like this:


======snip======================== 
SimpleProgramTarget(foo) 
======snip======================== 
 
3.20
 How do I make a XFree86 compliant DLL?
 
Since the XFree86 source code is now available, you will find plenty of
examples how I did this there. 

Note that you still need some secondary literature on special features of
Imakefile rules. A recommended book on Imakefiles is available from
O'Reilly&Assoc publ (Using imake). Ask in your bookstore. 
 
3.21
 How do you make the packages of ported software?
 
I distribute a simple foo.tar.gz or foo.tar.bz2 archives.Seldom, I might
distribute archives with InstallShield Installer, after X Servers are
functional.
 
3.22
 The new Imake config files now contain also "Motif" and "CDE" rule and
template files. Does this mean that this stuff will be available soon for
free?
 
No, it doesn't. These files were added in X11R6.3 to better integrate Motif
and CDE into the system, but this does not make this software public domain
(or whatever you want to call that). 
 
3.23 

 
 I compiled an X/MOTIF client foo.exe.  My foo.exe executes but I cannot use
keyboard and my console dumps Xt Warnings: 

Warning: translation table syntax error: Unknown event type :   BtnMotion
Warning: ... found while parsing ' <BtnMotion>:  ManagerGadgetButtonM...
<SNIP> ...

What is wrong?
 
You need to set XKeysymDB and XErrorDB Environment.  XKeysymDB and XErrorDB
files usually resides in /usr/X11R6/lib/X11 directory.

For example:

SET XKeysymDB=C:\usr\X11R6\lib\X11\XKeysymDB
SET XErrorDB =C:\usr\X11R6\lib\X11\XErrorDB 
3.24 Can I use DLLs and libraries with MSVC (Microsoft Visual C++) to
compile my source code? 

No!  You cannot use Cygwin/XFree86 libraries with MSVC. You need latest
version of Cygwin and GCC which comes with Cygwin.  However, you can check
out http://sources.redhat.com/win32-x11 for  MSVC.

 
 


> -----Original Message-----
> From: Harold Hunt [mailto:huntharo@msu.edu] 
> Sent: Thursday, May 31, 2001 5:27 PM
> To: Suhaib Siddiqi
> Cc: cygx
> Subject: RE: Copyright [cgf, please comment]
> 
> 
> > The problem over FAQ ccame from several people
> > have contributed to FAQ, beside me, and they are not please 
> seeing you
> > come with a draft and your Copyright notice reads like it 
> is claiming
> > the entire contents copyright and authroship notice.
> 
> Show me an answer that someone else wrote and I'll be more 
> than happy to
> site the answer as coming from them.
> 
> You should know that I actually take pride in citing the work 
> of others,
> why, just look at all the effort I went to in getting a 
> perfect bibliography
> entry for Schieffler and Getty's X Window System, just so I 
> could cite two
> sentences.
> 
http://www.msu.edu/~huntharo/xwin/docs/faq/cygwin-xfree-faq.html#biblio

Now, I'm going to request that you reveal the names of those who are
concerned, as I would be more than happy to work with them to address their
concerns.  If you choose not to reveal the names, then I'll just happily
assume that the "people that contacted you" are yourself and Robert Collins,
as you're the only two that don't seem to be on easy terms with me.  You
can't honestly expect me to believe that someone (other than yourself and
Robert) would contact you in regards my forgetting to attribute an answer to
them, as I have always been more than willing to attribute credit to other
people.

I can think of a couple people that might claim I have gone too far in
doling out credit, as I attributed some diffs to Pierre Humblet that he
later recalled (mine were fine), and I have several times given credit to
Alexander Gottwald when I merely got the idea of using a particular function
call by looking at his code (when implementing an unrelated feature).

I'm really going to have to call your bluff on that one, provided that a
list of those with concerns never materializes.

Harold


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