]>
Commit | Line | Data |
---|---|---|
bb368aad VM |
1 | dnl Process this file with autoconf to produce a configure script. |
2 | dnl | |
76bdc726 | 3 | dnl Copyright (C) 2021-2023 Free Software Foundation, Inc. |
bb368aad VM |
4 | dnl |
5 | dnl This file is free software; you can redistribute it and/or modify | |
6 | dnl it under the terms of the GNU General Public License as published by | |
7 | dnl the Free Software Foundation; either version 3 of the License, or | |
8 | dnl (at your option) any later version. | |
9 | dnl | |
10 | dnl This program is distributed in the hope that it will be useful, | |
11 | dnl but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | dnl MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 | dnl GNU General Public License for more details. | |
14 | dnl | |
15 | dnl You should have received a copy of the GNU General Public License | |
16 | dnl along with this program; see the file COPYING3. If not see | |
17 | dnl <http://www.gnu.org/licenses/>. | |
18 | ||
19 | m4_include([../bfd/version.m4]) | |
c10622fe | 20 | m4_include([../config/zlib.m4]) |
bb368aad | 21 | AC_INIT([gprofng], BFD_VERSION) |
6109e902 | 22 | AC_CANONICAL_TARGET |
bb368aad VM |
23 | AM_INIT_AUTOMAKE([subdir-objects]) |
24 | AM_MAINTAINER_MODE | |
25 | ||
26 | AC_USE_SYSTEM_EXTENSIONS | |
27 | AC_PROG_CC | |
28 | AC_PROG_CXX | |
29 | AC_PROG_INSTALL | |
30 | AC_PROG_RANLIB | |
31 | AM_PROG_AR | |
50192212 | 32 | gl_PROG_BISON([BISON],[3.0.4]) |
bb368aad VM |
33 | |
34 | AC_DISABLE_SHARED | |
35 | LT_INIT | |
36 | ||
47f72fdb VM |
37 | GPROFNG_LIBADD="-L../../libiberty -liberty" |
38 | if test "$enable_shared" = "yes"; then | |
39 | GPROFNG_LIBADD="-L../../libiberty/pic -liberty" | |
40 | fi | |
41 | AC_SUBST(GPROFNG_LIBADD) | |
42 | ||
bb368aad VM |
43 | # Figure out what compiler warnings we can enable. |
44 | # See config/warnings.m4 for details. | |
45 | ||
46 | ACX_PROG_CC_WARNINGS_ARE_ERRORS([manual]) | |
47 | ACX_PROG_CC_WARNING_OPTS([-Wall], [gprofng_cflags]) | |
61a1f2e7 | 48 | ACX_PROG_CC_WARNING_OPTS([-Wno-switch], [GPROFNG_NO_SWITCH_CFLAGS]) |
bb368aad VM |
49 | gprofng_cppflags="-U_ASM" |
50 | build_collector= | |
51 | build_src= | |
52 | ||
1653ae5b | 53 | case "${host}" in |
bb368aad VM |
54 | x86_64-*-linux*) |
55 | build_src=true | |
56 | build_collector=true | |
57 | ;; | |
58 | i?86-*-linux*) | |
1653ae5b | 59 | build_src=true |
bb368aad VM |
60 | build_collector=true |
61 | ;; | |
62 | aarch64-*-linux*) | |
63 | build_src=true | |
64 | build_collector=true | |
65 | ;; | |
66 | esac | |
67 | AC_ARG_ENABLE(gprofng-tools, | |
68 | AS_HELP_STRING([--disable-gprofng-tools], [do not build gprofng/src directory]), | |
69 | build_src=$enableval) | |
70 | ||
71 | AM_CONDITIONAL([BUILD_COLLECTOR], [test x$build_collector = xtrue]) | |
72 | AM_CONDITIONAL([BUILD_SRC], [test x$build_src = xtrue]) | |
73 | ||
bb368aad VM |
74 | if test x$build_collector = xtrue; then |
75 | AC_CONFIG_SUBDIRS([libcollector]) | |
bb368aad | 76 | fi |
bb368aad VM |
77 | AX_PTHREAD |
78 | ||
79 | # Specify a location for JDK | |
80 | enable_gprofng_jp= | |
81 | jdk_inc= | |
82 | AC_ARG_WITH(jdk, | |
83 | [AS_HELP_STRING([--with-jdk=PATH], | |
84 | [specify prefix directory for installed JDK.])]) | |
85 | ||
86 | if test "x$with_jdk" != x; then | |
87 | jdk_inc="-I$with_jdk/include -I$with_jdk/include/linux" | |
88 | enable_gprofng_jp=yes | |
89 | else | |
90 | AC_PATH_PROG([JAVAC], [javac], [javac]) | |
91 | if test -f $JAVAC; then | |
92 | x=`readlink -f $JAVAC` | |
93 | x=`dirname $x` | |
94 | x=`dirname $x` | |
95 | if ! test -f $x/include/jni.h; then | |
96 | x=`dirname $x` | |
97 | fi | |
98 | if test -f $x/include/jni.h; then | |
99 | jdk_inc="-I$x/include -I$x/include/linux" | |
100 | enable_gprofng_jp=yes | |
101 | fi | |
102 | fi | |
103 | fi | |
104 | if test "x$enable_gprofng_jp" = x; then | |
105 | AC_PATH_PROG([JAVA], [java], [java]) | |
106 | if test -f $JAVA; then | |
107 | x=`readlink -f $JAVA` | |
108 | x=`dirname $x` | |
109 | x=`dirname $x` | |
110 | if ! test -f $x/include/jni.h; then | |
111 | x=`dirname $x` | |
112 | fi | |
113 | if test -f $x/include/jni.h; then | |
114 | jdk_inc="-I$x/include -I$x/include/linux" | |
115 | enable_gprofng_jp=yes | |
116 | fi | |
117 | fi | |
118 | fi | |
119 | if test "x$enable_gprofng_jp" = x; then | |
120 | AC_CHECK_HEADER([jni.h], [ enable_gprofng_jp=yes ], [], [] ) | |
121 | fi | |
cac97c41 | 122 | GPROFNG_BROKEN_JAVAC=no |
bb368aad VM |
123 | if test "x$enable_gprofng_jp" = x; then |
124 | AC_MSG_WARN([ Cannot find the JDK include directory. | |
125 | gprofng will be build without support for profiling Java applications. | |
126 | Use --with-jdk=PATH to specify directory for the installed JDK]) | |
127 | else | |
128 | AC_DEFINE(GPROFNG_JAVA_PROFILING, 1, [Enable java profiling]) | |
cac97c41 | 129 | if test "x$JAVAC" != x; then |
e5b3bfa5 | 130 | cat > Simple.java << EOF |
cac97c41 L |
131 | class Simple{ |
132 | public static void main(String args[]){ | |
133 | System.out.println("Hello Java"); | |
134 | } | |
135 | } | |
136 | EOF | |
e5b3bfa5 | 137 | if AC_TRY_COMMAND($JAVAC Simple.java >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD); then |
cac97c41 L |
138 | GPROFNG_BROKEN_JAVAC=no |
139 | else | |
140 | GPROFNG_BROKEN_JAVAC=yes | |
141 | fi | |
e5b3bfa5 | 142 | rm -f Simple.* |
cac97c41 | 143 | fi |
bb368aad | 144 | fi |
cac97c41 | 145 | AC_SUBST(GPROFNG_BROKEN_JAVAC) |
bb368aad VM |
146 | AC_SUBST(jdk_inc) |
147 | ||
148 | DEBUG= | |
149 | GCC_ENABLE([gprofng-debug], [no], [], [Enable debugging output]) | |
150 | if test "${enable_gprofng_debug}" = yes; then | |
151 | AC_DEFINE(DEBUG, 1, [Enable debugging output.]) | |
152 | fi | |
153 | ||
fe39ffdc VM |
154 | cat > "dummy.c" << EOF |
155 | #include <features.h> | |
156 | #if defined(__UCLIBC__) | |
157 | LIBC=uclibc | |
158 | #elif defined(__dietlibc__) | |
159 | LIBC=dietlibc | |
160 | #elif defined(__GLIBC__) | |
161 | LIBC=gnu | |
162 | #else | |
163 | #include <stdarg.h> | |
164 | /* First heuristic to detect musl libc. */ | |
165 | #ifdef __DEFINED_va_list | |
166 | LIBC=musl | |
167 | #else | |
168 | LIBC=gnu | |
169 | #endif | |
170 | #endif | |
171 | EOF | |
172 | cc_set_libc=`$CC -E "dummy.c" 2>/dev/null | grep '^LIBC=' | sed 's, ,,g'` | |
173 | eval "$cc_set_libc" | |
174 | if test "$LIBC" = musl; then | |
175 | AC_DEFINE(__MUSL_LIBC, 1, [Build with musl-libc.]) | |
176 | fi | |
e5b3bfa5 | 177 | rm -f dummy.c |
fe39ffdc | 178 | |
bb368aad VM |
179 | # Check if linker supports --as-needed and --no-as-needed options. |
180 | AC_CACHE_CHECK(linker --as-needed support, bfd_cv_ld_as_needed, | |
181 | [bfd_cv_ld_as_needed=no | |
182 | if $LD --help 2>/dev/null | grep as-needed > /dev/null; then | |
183 | bfd_cv_ld_as_needed=yes | |
184 | fi | |
185 | ]) | |
186 | ||
187 | no_as_needed= | |
188 | if test x"$bfd_cv_ld_as_needed" = xyes; then | |
189 | no_as_needed='-Wl,--no-as-needed' | |
190 | fi | |
191 | ||
192 | AC_PATH_PROG([EXPECT], [expect]) | |
193 | AC_CACHE_CHECK([for Tcl supporting try/catch], [ac_cv_libctf_tcl_try], | |
194 | [ac_cv_libctf_tcl_try=`if test -z $EXPECT; then echo no; else $EXPECT << EOF | |
195 | if @<:@llength @<:@info commands try@:>@@:>@ then { puts yes } else { puts no } | |
196 | EOF | |
197 | fi` | |
198 | ]) | |
9d9f26d8 VM |
199 | |
200 | # Only native testing and only on supported platforms: | |
201 | AM_CONDITIONAL(TCL_TRY, [test "${ac_cv_libctf_tcl_try}" = yes \ | |
202 | -a "x${build_src}" = xtrue -a "x${build_collector}" = xtrue \ | |
203 | -a "x${host}" = "x${target}"]) | |
bb368aad | 204 | |
c10622fe | 205 | AM_ZLIB |
bb368aad VM |
206 | |
207 | # Generate manpages, if possible. | |
9c6dd688 | 208 | build_man=false |
b1a41f59 | 209 | build_doc=false |
bb368aad | 210 | if test $cross_compiling = no; then |
b1a41f59 VM |
211 | AC_CHECK_PROGS([MAKEINFO], makeinfo, [$MISSING makeinfo]) |
212 | case "x$MAKEINFO" in | |
213 | x | */missing\ makeinfo*) | |
9c6dd688 VM |
214 | AC_MSG_WARN([gprofng: makeinfo is missing. Info documentation will not be built.]) |
215 | ;; | |
216 | *) | |
217 | case x"`$MAKEINFO --version | grep 'GNU texinfo'`" in | |
218 | x*\ [[1-5]].*|x*\ 6.[[0-4]].* ) | |
219 | AC_MSG_WARN([gprofng: $MAKEINFO is too old. Info documentation will not be built.]) | |
220 | MAKEINFO="@echo $MAKEINFO is too old, 6.5 or newer required; true" | |
221 | ;; | |
b1a41f59 | 222 | x* ) build_doc=true ;; |
9c6dd688 VM |
223 | esac |
224 | ;; | |
225 | esac | |
226 | AC_SUBST(MAKEINFO) | |
bb368aad VM |
227 | fi |
228 | AM_CONDITIONAL([BUILD_MAN], [test x$build_man = xtrue]) | |
b1a41f59 | 229 | AM_CONDITIONAL([BUILD_DOC], [test x$build_doc = xtrue]) |
bb368aad VM |
230 | |
231 | AC_SUBST(LD_NO_AS_NEEDED, [${no_as_needed}]) | |
232 | AC_SUBST(GPROFNG_CFLAGS, [${gprofng_cflags}]) | |
61a1f2e7 L |
233 | AC_SUBST(GPROFNG_NO_FORMAT_TRUNCATION_CFLAGS) |
234 | AC_SUBST(GPROFNG_NO_SWITCH_CFLAGS) | |
bb368aad | 235 | AC_SUBST(GPROFNG_CPPFLAGS, [${gprofng_cppflags}]) |
bb368aad VM |
236 | |
237 | AC_CHECK_DECLS([basename]) | |
4ec39c4b | 238 | AC_CHECK_FUNCS(clock_gettime strsignal) |
bb368aad | 239 | |
0a30596c NC |
240 | clock_gettime_link= |
241 | # At least for glibc, clock_gettime is in librt. But don't | |
242 | # pull that in if it still doesn't give us the function we want. This | |
243 | # test is copied from libgomp, and modified to not link in -lrt as | |
244 | # we're using this for test timing only. | |
245 | if test "$ac_cv_func_clock_gettime" = no; then | |
246 | AC_CHECK_LIB(rt, clock_gettime, | |
247 | [CLOCK_GETTIME_LINK=-lrt | |
248 | AC_DEFINE(HAVE_CLOCK_GETTIME, 1, | |
249 | [Define to 1 if you have the `clock_gettime' function.])]) | |
250 | fi | |
251 | AC_SUBST(CLOCK_GETTIME_LINK) | |
252 | ||
bb368aad VM |
253 | AC_SUBST(BUILD_SUBDIRS) |
254 | ||
255 | AC_CONFIG_FILES([Makefile src/Makefile gp-display-html/Makefile doc/Makefile]) | |
256 | AC_CONFIG_HEADERS([config.h:common/config.h.in]) | |
257 | ||
258 | AC_OUTPUT | |
259 |