apramc
apramc

Reputation: 1386

how to set a compiler flag by enabling a feature in autoconf

I am very new to Autoconf, I would like to have a configure file that when I call: configure --enable-gtest=yes, such that it adds a compiler flag. The following code that I put up after searching looks as follow, but does not do the trick.

Thanks a lot

this is how my makefile looks like.

-include Makefile.config

SRC = $(wildcard *.cpp)
OBJ = $(SRC:.cpp=.o)

install: $(OBJ)
    $(CC) $(CXXFLAGS) $(DEBUGFLAG) $(OBJ) -o run

%.o:%.cpp
    $(CC) $(CXXFLAGS) $(DEBUGFLAG) -c $<

clean:
    rm -f *.o

this is my configure.ac

AC_INIT([test], [1.7.0])

AC_PREREQ([2.59])

AC_CONFIG_MACRO_DIR([m4])

AC_CHECK_PROGS(CXX, [g++ c++ clang], ":")
AC_PROG_CXX
AC_SUBST(CXX)

AC_ARG_ENABLE([debug],
[  --enable-debug    Turn on debugging],
[case "${enableval}" in
  yes) debug=true ;;
  no)  debug=false ;;
  *) AC_MSG_ERROR([bad value ${enableval} for --enable-debug]) ;;
esac],[debug=false])
AM_CONDITIONAL([DEBUG], [test x$debug = xtrue])


AC_CONFIG_FILES(Makefile.config)
AC_OUTPUT

and my

Makefile.config.in

CC = @CXX@
CXXFLAGS = -std=c++14 

if DEBUG
DBG = debug
else
DBG =
endif

thanks

Upvotes: 0

Views: 676

Answers (1)

Tom Tromey
Tom Tromey

Reputation: 22549

Pretty close! But not quite.

You're probably best off using Automake, which automates a lot of the Makefile drudgery for you. But if you really want to avoid it, then you have to write your Makefile correctly according to what you write in configure.ac.

AM_CONDITIONAL([DEBUG], [test x$debug = xtrue])

This defines a couple of autoconf substitutions, like DEBUG_TRUE and DEBUG_FALSE. The if form you've chosen only works in Automake, in an ordinary Makefile you have to write something like:

@[email protected] when
@[email protected]

Alternatively you can test the values of the substitutions using GNU make's if statement.

Another approach is not to use AM_CONDITIONAL at all but rather AC_SUBST the thing you want to use in your Makefile.config.in.

Upvotes: 1

Related Questions