Fancy logo
Yadex 1.8.0 (2004-02-01)

Yadex FAQ




Compilation issues

During configure,
error: none of (gcc, c89, cc) work, is your PATH set right?

You need a C compiler to compile Yadex.

If you have one but it's not in the path, either fix $PATH or pass the full pathname to the configure script with the --cc flag (E.G. "./configure --cc /opt/sfw/bin/gcc").

If it's in the path but it's not called gcc or c89 or cc, pass the name to the configure script with the --cc flag (E.G. "./configure --cc icc").

During configure,
error: none of (g++, c++, cxx) work, is your PATH set right?

You need a C++ compiler to compile Yadex.

If you have one but it's not in the path, either fix $PATH or pass the full pathname to the configure script with the --cxx flag (E.G. "./configure --cxx /opt/sfw/bin/g++").

If it's in the path but it's not called g++ or c++ or cxx, pass the name to the configure script with the --cxx flag (E.G. "./configure --cxx icc").

X11/Xlib.h: No such file or directory

Are you sure you have the Xlib headers ? If not, install them. If you already have them, then find out where they are and change the "X11INCLUDEDIR =" line in GNUmakefile accordingly.

The compiler chokes on the Xlib headers

This happens on Solaris 2.6 with GCC 2.95.2. Oliver Kraus says that the solution is to add "-fpermissive" to "CXXFLAGS =" in GNUmakefile.

/usr/X11R6/lib/libX11.so: undefined reference to `recv'
/usr/X11R6/lib/libX11.so: undefined reference to `connect'
/usr/X11R6/lib/libX11.so: undefined reference to `socket'
/usr/X11R6/lib/libX11.so: undefined reference to `setsockopt'
/usr/X11R6/lib/libX11.so: undefined reference to `shutdown'
/usr/X11R6/lib/libX11.so: undefined reference to `gethostbyname'
/usr/X11R6/lib/libX11.so: undefined reference to `getservbyname'
/usr/X11R6/lib/libX11.so: undefined reference to `getpeername'
/usr/X11R6/lib/libX11.so: undefined reference to `getsockname'

This happens with QNX 6 and other Unices. Add "-lsocket" to "LDFLAGS =" in GNUmakefile.

Solaris: can't resolve gettimeofday()

In GNUmakefile, add "-lrt" after "-lX11".

Mac OS X:
al_adigits.o literal C string section (__TEXT,__cstring) does not end with a '\0'

As far as I can see, the code in Yadex is legal C, and Mac OS X's ld is incorrect in rejecting it. As a workaround, change the size of al_adigits[] from 36 to 37 in al_adigits.c and atclib.h. The real fix is to complain to Apple for selling you a linker that won't link valid C code.

GCC 3.0: Yadex 1.5.1 doesn't compile

Get Yadex 1.5.2 or later.

GCC 2.96: Yadex 1.5.0 doesn't compile

Get Yadex 1.5.1 or later.

EGCS 1.1.2 / SuSE 6.2:
no matching function for call to `menu_c::menu_c (...)'

Apparently, there is a bug in certain EGCS 1.1.2 installations that makes them choke on src/editloop.cc. I know no workaround. I'd suggest that you try to get a fix from your distributor or use another compiler. EGCS 1.0.3, EGCS 1.1.1 and GCC 2.95.2 are known to work.

GCC 2.7: lots of compilation errors

GCC 2.7 is a very old compiler, it does not implement the current C++ standard and I don't support it. If you must, try applying patch/gcc-2.7.diff that's included in the archive but don't complain to me if it doesn't work.

GCC:
warning: comparison between signed and unsigned

GCC is over-sensitive to signedness mismatches. Don't worry, that won't prevent Yadex from working.

GCC: In sanity.cc,
warning: decimal integer constant is so large that it is unsigned

Weird as it may sound, the standard says that the lowest value that a signed long can hold is -(2^31). GCC sticks to the party line, never mind that you're on a platform like i386 where LONG_MIN is -(2^31) - 1.

You can ignore this warning.

GCC: In sanity.cc,
warning: this decimal constant is unsigned only in ISO C90

This is a new avatar (as of GCC 3.3) of the previous warning. Ignore it.

Yadex 1.3.1 doesn't compile

There's a thinko in the makefile. It's fixed in version 1.3.2.

Yadex 1.1.0 doesn't compile

In src/infobar.cc, lines 48 and 49, replace

  const char infobar_c::FILE_NAME_UNSET[1];  // A special pointer value 
  const char infobar_c::LEVEL_NAME_UNSET[1];  // A special pointer value

by

  const char infobar_c::FILE_NAME_UNSET[1] = { ' ' };
  const char infobar_c::LEVEL_NAME_UNSET[1] = { ' ' };
Yadex 1.0.1 doesn't compile

In src/vector.h, delete line 44 ("return this;") and compile again.

Usage issues

I don't have an iwad

You can download certain iwads for free ;

Yadex is slow, particularly when dragging objects

Yes. I plan to replace the current implementation (pixmap) by drawing directly to the window. The difficulty lies in making that without generating a lot of flicker. In the meantime, try the -P option.

Development and contributions

What about a 3D preview ?

Andrew Apted has written an amazing patch that does exactly that.

Why didn't you use <insert speaker's favourite toolkit> ?

I used plain Xlib and not a toolkit for several reasons. Firstly, I wanted to learn Xlib. Secondly, I reckoned it would be easier to translate the existing BGI calls to Xlib than to some higher level toolkit. Thirdly, I feared that depending on a toolkit would hurt portability.

Why hasn't patch x been integrated ?

Adapted from this post :

Maybe the patch is not good enough. Even if it's perfectly good, other reasons could delay or prevent its integration.

The first issue is the cost of reviewing. As a general rule, I don't integrate code without reviewing it. Reviewing code, especially code you have not written and don't understand a priori, is hard work. In fact, validating code written by someone else can take more time and effort than writing it yourself from scratch.

Reviewing code is also a lot less fun than writing or designing, at least to me. Clearly, your patch better be interesting if it's to be integrated.

The second issue is, surprise surprise, time. I don't have much free time and am not always able and willing to spend it on Yadex. And yes, sometimes a year or more will pass until I find myself with nothing more urgent and motivating to do today than processing your patch.

The third issue is timing. At this point in the development of Yadex, the top priority as I see it is not adding features, it's improving the architecture. Specifically,

These changes will bring enormous benefits, directly