sdsc meme application fails to compile

The meme 3.5.3 application, available from http://meme.sdsc.edu/meme/intro.html fails to compile the source file init.c, with error message:

usculus403-6:src$ pgcc -DHAVE_CONFIG_H -I. -I.. -I./include -I./libadd     -DUNIX -D__USE_FIXE_PROTOTYPES -O -c init.c
PGC-S-0204-Actual parameters too long for DO_STANDARD_COMMAND_LINE (init.c: 237)
PGC-S-0204-Actual parameters too long for DO_STANDARD_COMMAND_LINE (init.c: 237)
PGC-S-0204-Actual parameters too long for DO_STANDARD_COMMAND_LINE (init.c: 237)
PGC-S-0204-Actual parameters too long for DO_STANDARD_COMMAND_LINE (init.c: 237)
PGC-S-0204-Actual parameters too long for DO_STANDARD_COMMAND_LINE (init.c: 237)
PGC-S-0204-Actual parameters too long for DO_STANDARD_COMMAND_LINE (init.c: 237)
PGC-S-0204-Actual parameters too long for DO_STANDARD_COMMAND_LINE (init.c: 237)
PGC-S-0204-Actual parameters too long for DO_STANDARD_COMMAND_LINE (init.c: 237)
PGC-S-0204-Actual parameters too long for DO_STANDARD_COMMAND_LINE (init.c: 237)
PGC-S-0204-Actual parameters too long for DO_STANDARD_COMMAND_LINE (init.c: 237)
PGC-S-0204-Actual parameters too long for DO_STANDARD_COMMAND_LINE (init.c: 237)
PGC-S-0204-Actual parameters too long for DO_STANDARD_COMMAND_LINE (init.c: 237)
PGC-S-0204-Actual parameters too long for DO_STANDARD_COMMAND_LINE (init.c: 237)
PGC-S-0204-Actual parameters too long for DO_STANDARD_COMMAND_LINE (init.c: 237)
PGC-S-0204-Actual parameters too long for DO_STANDARD_COMMAND_LINE (init.c: 237)
PGC-S-0204-Actual parameters too long for DO_STANDARD_COMMAND_LINE (init.c: 237)
PGC-S-0204-Actual parameters too long for DO_STANDARD_COMMAND_LINE (init.c: 237)
PGC-S-0204-Actual parameters too long for DO_STANDARD_COMMAND_LINE (init.c: 237)
PGC-S-0204-Actual parameters too long for DO_STANDARD_COMMAND_LINE (init.c: 237)
PGC-S-0204-Actual parameters too long for DO_STANDARD_COMMAND_LINE (init.c: 237)
PGC-S-0204-Actual parameters too long for DO_STANDARD_COMMAND_LINE (init.c: 237)
PGC-S-0204-Actual parameters too long for DO_STANDARD_COMMAND_LINE (init.c: 237)
PGC-S-0204-Actual parameters too long for DO_STANDARD_COMMAND_LINE (init.c: 237)
PGC-S-0204-Actual parameters too long for DO_STANDARD_COMMAND_LINE (init.c: 237)
PGC-S-0204-Actual parameters too long for DO_STANDARD_COMMAND_LINE (init.c: 237)
PGC-F-0008-Error limit exceeded (init.c)
PGC/x86-64 Linux/x86-64 6.1-4: compilation aborted

The application is configured with

CC=pgcc ./configure --enable-opt --disable-server

The file compiles w/o problems with gcc. Looks like a PGI cpp problem to mee. Anybody who have manage to compile and run meme with pgi compilers ? Thanks in advance for any feedback.[/code][/url]

Hi Jaa,

Unfortunately, you’ve hit a preprocessor limit where macro arguments can’t exceed a particular length. This REALLY BIG macro hits this limit and then some. I’ve put in a feature request (TPR#3831) to have this limit expanded or removed and hopefully we can add this to a future release. Until then, you can add a preprocessing step the “src/Makefile”. For example, add the following just after the “COMPILE=” at line 226.

PRECOMP = $(CPP) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
	$(CPPFLAGS) $(AM_CFLAGS)

And modify the “.o.c” rule at line 309 to include the preprocessing step.

.c.o:
	$(PRECOMP) `test -f '$<' || echo '$(srcdir)/'`$< > $*.i
	$(COMPILE) -c $*.i

Move the “-DUNIX -D__USE_FIXED_PROTOTYPES__” variables from the “CFLAGS” to the “CPPFLAGS”. Finally, set your environment variable “CPP=cpp” and type ‘make’.

I was was able compile and run successfully using this method. Note that you can also change the CFLAGS to use “-fastsse” instead of “-O” to give you better performance.

  • Mat