summaryrefslogtreecommitdiff
path: root/m4/openbox.m4
blob: 0c37a58423ff5524805acd7ade7c83ccd877d37d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# OB_DEBUG()
#
# Check if the user has requested a debug build.
# Sets the DEBUG or NDEBUG variables as appropriate
# Sets the CVS environment variable when building CVS sources.
AC_DEFUN([OB_DEBUG],
[
    AC_MSG_CHECKING([build type])

    AC_ARG_ENABLE([strict-ansi],
    AC_HELP_STRING([--enable-strict-ansi],[Enable strict ANSI compliance build [[default=no]]]),
    [STRICT=$enableval], [STRICT="no"])

    AC_ARG_ENABLE([super-warnings],
    AC_HELP_STRING([--enable-super-warnings],[Enable extra compiler warnings [[default=no]]]),
    [SUPERWARN=$enableval], [SUPERWARN="no"])

    AC_ARG_ENABLE([debug],
    AC_HELP_STRING([--enable-debug],[build a debug version [[default=no]]]),
    [DEBUG=$enableval], [DEBUG="no"])

    AC_ARG_ENABLE([gprof],
    AC_HELP_STRING([--enable-gprof],[Enable gprof profiling output [[default=no]]]),
    [PROF=$enableval], [PROF="no"])

    AC_ARG_ENABLE([gprof-libc],
    AC_HELP_STRING([--enable-gprof-libc],[Link against libc with profiling support [[default=no]]]),
    [PROFLC=$enableval], [PROFLC="no"])

    if test "$PROFLC" = "yes"; then
        PROF="yes" # always enable profiling then
    fi

    TEST=""
    test "${PACKAGE_VERSION%*alpha*}" != "$PACKAGE_VERSION" && TEST="yes"
    test "${PACKAGE_VERSION%*beta*}" != "$PACKAGE_VERSION" && TEST="yes"
    test "$TEST" = "yes" && DEBUG="yes"

    if test "$DEBUG" = "yes"; then
	MSG="DEBUG"
    else
	MSG="RELEASE"
    fi
    if test "$TEST" = "yes"; then
	MSG="$MSG (test release)"
    fi
    if test "$STRICT" = "yes"; then
	MSG="$MSG with strict ANSI compliance"
    fi
    if test "$SUPERWARN" = "yes"; then
	MSG="$MSG with super warnings"
    fi
    AC_MSG_RESULT([$MSG])
    
    test "$DEBUG" = "yes" && \
	AC_DEFINE([DEBUG], [1], [Creating a debug build])
])


# OB_COMPILER_FLAGS()
#
# Check what compiler is being used for compilation.
# It sets the CFLAGS variable appropriately for the compiler, including flags
# for debug builds.
AC_DEFUN([OB_COMPILER_FLAGS],
[
    AC_REQUIRE([AC_PROG_CPP])
    AC_REQUIRE([AC_PROG_CC])

    FLAGS=""
    L=""

    if test "$DEBUG" = "yes"; then
        FLAGS="-DDEBUG"
    else
        FLAGS="-DNDEBUG -DG_DISABLE_ASSERT"
    fi

    # Check what compiler we are using
    AC_MSG_CHECKING([for GNU CC])
    if test "$GCC" = "yes"; then
	AC_MSG_RESULT([yes])
	if test "$DEBUG" = "yes"; then
	    FLAGS="$FLAGS -O0 -ggdb -fno-inline -Wwrite-strings"
	    FLAGS="$FLAGS -Wall -Wsign-compare -Waggregate-return"
	    FLAGS="$FLAGS -Wbad-function-cast -Wpointer-arith"
	    FLAGS="$FLAGS -Wno-write-strings"
            # for Python.h
	    #FLAGS="$FLAGS -Wno-long-long"
	fi
	if test "$SUPERWARN" = "yes"; then
	    # glib can't handle -Wcast-qual
	    FLAGS="$FLAGS -Wcast-qual -Wextra"
	fi
	if test "$STRICT" = "yes"; then
	    FLAGS="$FLAGS -ansi -pedantic -D_XOPEN_SOURCE"
	fi
	if test "$PROF" = "yes"; then
	    FLAGS="$FLAGS -pg -fno-inline"
	fi
	if test "$PROFLC" = "yes"; then
	    L="$L -lc_p -lm_p"
	fi
	FLAGS="$FLAGS -fno-strict-aliasing"
    fi
    AC_MSG_CHECKING([for compiler specific flags])
    AC_MSG_RESULT([$FLAGS])
    CFLAGS="$CFLAGS $FLAGS"
    LIBS="$LIBS $L"
])

AC_DEFUN([OB_NLS],
[
    AC_ARG_ENABLE([nls],
    AC_HELP_STRING([--enable-nls],[Enable NLS translations [[default=yes]]]),
    [NLS=$enableval], [NLS="yes"])

    if test "$NLS" = yes; then
	DEFS="$DEFS -DENABLE_NLS"
    fi
])