0

I have a project that I am working on converting over to autotools.

Here are the relevant files

configure.ac

AC_INIT([opengl-es-demo], [1])
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
AC_LANG(C++)
AC_PROG_CXX
PKG_CHECK_MODULES(LIBPNG, libpng >= 1.6.34)
PKG_CHECK_MODULES(FREETYPE2, freetype2 >= 21.0.15)
PKG_CHECK_MODULES(EGL, egl > 0)
PKG_CHECK_MODULES(GLES2, glesv2 > 0)
PKG_CHECK_MODULES(PTHREAD, pthread-stubs > 0)
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

Makefile.am

bin_PROGRAMS = main
main_SOURCES = main.cpp eglManager.cpp shaderManager.cpp imageUtils.cpp freetypeUtils.cpp texture.cpp shader.cpp camera.cpp
main_CPPFLAGS = $(FREETYPE2_CFLAGS) $(LIBPNG_CFLAGS) $(EGL_CFLAGS) $(GLES2_CFLAGS) $(PTHREAD_CFLAGS)
main_LDFLAGS = $(FREETYPE2_LIBS) $(LIBPNG_LIBS) $(EGL_LIBS) $(GLES2_LIBS) $(PTHREAD_LIBS)

The linker calls this step...

g++  -g -O2 -lfreetype -lpng16 -lz -lEGL -lGLESv2   -o main main-main.o main-eglManager.o main-shaderManager.o main-imageUtils.o main-freetypeUtils.o main-texture.o main-shader.o main-camera.o

...and then fails with a bunch of undefined reference errors to functions found in OpenGL(-GLESv2), png(-lpng16), and freetype(-lfreetype) libraries.

It compiled fine when I wasn't using autotools (only a makefile) so I know the problem is with my autotools usage.

Where did I mess up the configuration?

user8908459
  • 537
  • 5
  • 24

1 Answers1

0

Changing main_LDFLAGS to main_LDADD solved the problem.

Correcting the GCC command line ordering using Automake

user8908459
  • 537
  • 5
  • 24