Fancy logo
Yadex 1.7.0 (2021-07-24)

Yadex FAQ




Compilation problems

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.

Misc.

I don't have an iwad

You can download certain iwads for free ;

What about a 3D preview ?

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

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.

How many people use Yadex ?

I don't know for sure. Each new release gets a few hundred downloads.

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.


AYM 2003-12-28