ranlib: fix it
[odcctools-svp.git] / configure.ac
blobc038d2ce5df834c86432cc74824c4cf4b7b3ce59
1 AC_INIT([odcctools], [590.36od13], [odcctools@opendarwin.org])
2 AC_PREREQ([2.57])
3 AC_REVISION([$Revision: 1.44 $])
5 AC_CONFIG_SRCDIR([APPLE_LICENSE])
6 AC_CONFIG_HEADERS([include/config.h])
8 AC_CANONICAL_BUILD
9 AC_CANONICAL_HOST
10 AC_CANONICAL_TARGET
12 AC_ARG_PROGRAM
14 case $target_os in
15 darwin*)
16         :
17         ;;
19         AC_MSG_ERROR([$PACKAGE_NAME only supports targeting Darwin])
20         ;;
21 esac
23 case $target_cpu in
24      powerpc|powerpc64)
25         AC_DEFINE(EMULATED_HOST_CPU_TYPE, 18, [Emulated CPU type])        
26         AC_DEFINE(EMULATED_HOST_CPU_SUBTYPE, 100, [Emulated CPU subtype])        
27         ;;
28      i?86|x86_64)
29         AC_DEFINE(EMULATED_HOST_CPU_TYPE, 7, [Emulated CPU type])        
30         AC_DEFINE(EMULATED_HOST_CPU_SUBTYPE, 10, [Emulated CPU subtype])        
31         ;;
32      *)
33         AC_MSG_ERROR([Unsupported target $target_cpu])
34         ;;
35 esac
38 AC_PROG_INSTALL
39 AC_PROG_LN_S
40 AC_PROG_CC
41 AC_PROG_CXX
43 AC_CHECK_TOOL([HOST_RANLIB], [ranlib], :)
44 AC_CHECK_TOOL([HOST_AR], [ar], :)
46 ASTARGETS=""
47 conftargets=""
48 AC_MSG_CHECKING([for configured assembler targets])
49 AC_ARG_ENABLE([as-targets],
50                 AC_HELP_STRING([--enable-as-targets],
51                                 [space-separated list ("ppc", "ppc64", "i386", "x86_64", "all")]),
52                 [conftargets="$enableval"],
53                 [conftargets="default"])
55 case "$conftargets" in
56      all)
57         ASTARGETS="ppc ppc64 i386 x86_64"
58         ;;
59      default)
60         ASTARGETS="ppc ppc64 i386 x86_64"
61         ;;
62      yes)
63         AC_MSG_ERROR([no assembler targets configured])
64         ;;
65      no)
66         AC_MSG_ERROR([no assembler targets configured])
67         ;;
68      *)
69         if [[ -z "$conftargets" ]]; then
70            AC_MSG_ERROR([no assembler targets configured])
71         fi
72         ASTARGETS="$conftargets"
73         ;;
74 esac
76 AC_MSG_RESULT([$ASTARGETS])
77 AC_SUBST([ASTARGETS], [$ASTARGETS]) 
79 AC_SUBST([ASLIBEXECDIR], ['${libexecdir}/as'])
81 AC_ARG_WITH([sysroot],
82                 AC_HELP_STRING([--with-sysroot],
83                                 [filesystem root of cross build environment]),
84                 [AC_DEFINE_UNQUOTED([CROSS_SYSROOT],["$withval"],[filesystem root of cross build environment])])
86 ORIGCFLAGS=$CFLAGS
87 CFLAGS="$CFLAGS -mdynamic-no-pic"
88 AC_MSG_CHECKING([if -mdynamic-no-pic is supported])
89 AC_COMPILE_IFELSE(
90    [AC_LANG_SOURCE([[const char hw[] = "Hello, World\n";]])],
91    [AC_SUBST([MDYNAMICNOPIC],[-mdynamic-no-pic])
92     AC_MSG_RESULT([yes])],
93    [AC_SUBST([MDYNAMICNOPIC],[])
94     AC_MSG_RESULT([no])]
96 CFLAGS=$ORIGCFLAGS
98 ORIGCFLAGS=$CFLAGS
99 CFLAGS="$CFLAGS -fno-builtin-round"
100 AC_MSG_CHECKING([if -fno-builtin-round is supported])
101 AC_COMPILE_IFELSE(
102    [AC_LANG_SOURCE([[const char hw[] = "Hello, World\n";]])],
103    [AC_MSG_RESULT([yes])],
104    [CFLAGS=$ORIGCFLAGS
105     AC_MSG_RESULT([no])]
108 ORIGCFLAGS=$CFLAGS
109 CFLAGS="$CFLAGS -fno-builtin-trunc"
110 AC_MSG_CHECKING([if -fno-builtin-trunc is supported])
111 AC_COMPILE_IFELSE(
112    [AC_LANG_SOURCE([[const char hw[] = "Hello, World\n";]])],
113    [AC_MSG_RESULT([yes])],
114    [CFLAGS=$ORIGCFLAGS
115     AC_MSG_RESULT([no])]
118 ORIGCFLAGS=$CFLAGS
119 CFLAGS="$CFLAGS -no-cpp-precomp"
120 supported=0
121 AC_MSG_CHECKING([if -no-cpp-precomp is supported])
122 AC_LANG_CONFTEST([[const char hw[] = "Hello, World\n";]])
123 rm -f conftest.$ac_objext conftest$ac_exeext
124 out=`$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext 2>&1`
125 if [[ $? -ne 0 ]]; then
126    supported=0;
127 else
128    unrecog=`echo $out | grep unrecog | wc -l`
129    if [[ $unrecog -gt 0 ]]; then
130       supported=0;
131    else
132       supported=1;
133    fi
136 if [[ $supported -eq 1 ]]; then
137    AC_MSG_RESULT([yes])
138 else
139    CFLAGS="$ORIGCFLAGS"
140    AC_MSG_RESULT([no])
142 rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext
144 WARNINGS=""
146 ORIGCFLAGS=$CFLAGS
147 CFLAGS="$CFLAGS -Wall"
148 AC_MSG_CHECKING([if -Wall is supported])
149 AC_COMPILE_IFELSE(
150    [AC_LANG_SOURCE([[const char hw[] = "Hello, World\n";]])],
151    [WARNINGS="$WARNINGS -Wall"
152     AC_MSG_RESULT([yes])],
153    [AC_MSG_RESULT([no])]
155 CFLAGS=$ORIGCFLAGS
157 ORIGCFLAGS=$CFLAGS
158 CFLAGS="$CFLAGS -Wno-long-double"
159 AC_MSG_CHECKING([if -Wno-long-double is supported])
160 AC_COMPILE_IFELSE(
161    [AC_LANG_SOURCE([[const char hw[] = "Hello, World\n";]])],
162    [WARNINGS="$WARNINGS -Wno-long-double"
163     AC_MSG_RESULT([yes])],
164    [AC_MSG_RESULT([no])]
166 CFLAGS=$ORIGCFLAGS
168 ORIGCFLAGS=$CFLAGS
169 CFLAGS="$CFLAGS -Wno-import"
170 AC_MSG_CHECKING([if -Wno-import is supported])
171 AC_COMPILE_IFELSE(
172    [AC_LANG_SOURCE([[const char hw[] = "Hello, World\n";]])],
173    [WARNINGS="$WARNINGS -Wno-import"
174     AC_MSG_RESULT([yes])],
175    [AC_MSG_RESULT([no])]
177 CFLAGS=$ORIGCFLAGS
179 AC_SUBST([WARNINGS], [$WARNINGS])
181 ORIGCFLAGS=$CFLAGS
182 CFLAGS="$CFLAGS -x objective-c"
183 OBJC="-x objective-c"
184 AC_MSG_CHECKING([if -x objective-c is supported])
185 AC_COMPILE_IFELSE(
186    [AC_LANG_SOURCE([[@class foo;
187 void bar(void) {
188      [foo alloc];
190 ]])],
191    [AC_DEFINE(HAVE_OBJC, 1, [Have Objective-C support])
192     AC_MSG_RESULT([yes])],
193    [OBJC=""
194     AC_MSG_RESULT([no])]
196 AC_SUBST([OBJC], [$OBJC])
197 CFLAGS=$ORIGCFLAGS
200 AC_MSG_CHECKING([if __private_extern__ is supported])
201 AC_COMPILE_IFELSE(
202    [AC_LANG_SOURCE([[__private_extern__ int foo;]])],
203    [AC_SUBST([HAVE_PRIVEXT], [YES])
204     AC_MSG_RESULT([yes])],
205    [AC_SUBST([HAVE_PRIVEXT], [NO])
206     AC_MSG_RESULT([no])]
209 ORIGLDFLAGS=$LDFLAGS
210 LDFLAGS="-multiply_defined suppress"
211 AC_MSG_CHECKING([if -multiply_defined suppress is supported])
212 AC_LINK_IFELSE([AC_LANG_PROGRAM()],
213         [AC_MSG_RESULT([yes])],
214         [LDFLAGS="$ORIGLDFLAGS"
215          AC_MSG_RESULT([no])]
218 AC_HEADER_STDC
219 AC_CHECK_HEADERS([stdio.h errno.h limits.h])
220 if [[ "x$OBJC" != "x" ]]; then
221    ORIGCFLAGS=$CFLAGS
222    CFLAGS="$CFLAGS $OBJC"
223    AC_CHECK_HEADERS([objc/objc-runtime.h])
224    CFLAGS="$ORIGCFLAGS"
227 AC_MSG_CHECKING([for max unsigned long long])
228 AC_COMPILE_IFELSE(
229    [AC_LANG_SOURCE([[#if HAVE_LIMITS_H
230                          #include <limits.h>
231                      #endif
232                      unsigned long long a = ULLONG_MAX;]])],
233    [AC_MSG_RESULT([ULLONG_MAX])],
234    [AC_COMPILE_IFELSE(
235         [AC_LANG_SOURCE([[#if HAVE_LIMITS_H
236                               #include <limits.h>
237                          #endif
238                          unsigned long long a = 18446744073709551615ULL;]])],
239         [AC_DEFINE(ULLONG_MAX, [18446744073709551615ULL], [max unsigned long long])
240          AC_MSG_RESULT([18446744073709551615ULL])],
241         [AC_MSG_RESULT([none]) ]
242         )
243     ]
246 AC_CHECK_FUNCS([strmode qsort_r qsort getattrlist NSIsSymbolNameDefined])
248 AC_CHECK_DECLS([getc_unlocked])
249 AH_VERBATIM([HAVE_DECL_GETC_UNLOCKED_REPLACEMENT],
250 [/* For systems that don't have getc_unlocked, use getc  */
251 #if !HAVE_DECL_GETC_UNLOCKED
252 # define getc_unlocked(a) getc(a)
253 #endif])
257 case $host_os in
258      darwin*)
259         AC_SUBST([HAVE_FOREIGN_HEADERS],[NO])
260         ;;
261      *)
262         AC_SUBST([HAVE_FOREIGN_HEADERS],[YES])
263         AC_SUBST([EMULATED_OBJ], [emulated.c])
264         AC_C_BIGENDIAN([AC_SUBST([ENDIAN_FLAG],[-D__BIG_ENDIAN__=1])],
265                         [AC_SUBST([ENDIAN_FLAG],[-D__LITTLE_ENDIAN__=1])])
266         ;;
267 esac
269 COMPONENTS="ar as include libstuff libmacho ld ld64 man misc otool"
270 AC_SUBST([COMPONENTS], [$COMPONENTS])
272 AC_CONFIG_FILES([Makefile include/Makefile libstuff/Makefile libmacho/Makefile])
273 AC_CONFIG_FILES([ar/Makefile])
274 AC_CONFIG_FILES([as/Makefile])
275 for ast in $ASTARGETS; do
276     case $ast in
277     ppc)
278         AC_CONFIG_FILES([as/ppc/Makefile:as/ppc/Makefile.in:as/Makefile.arch.in])
279         ;;
280     ppc64)
281         AC_CONFIG_FILES([as/ppc64/Makefile:as/ppc64/Makefile.in:as/Makefile.arch.in])
282         ;;
283     i386)
284         AC_CONFIG_FILES([as/i386/Makefile:as/i386/Makefile.in:as/Makefile.arch.in])
285         ;;
286     x86_64)
287         AC_CONFIG_FILES([as/x86_64/Makefile:as/x86_64/Makefile.in:as/Makefile.arch.in])
288         ;;
289     *)
290         AC_MSG_ERROR([Unrecognized assembler target $ast])
291         ;;
292     esac
293 done
294 AC_CONFIG_FILES([ld/Makefile])
295 AC_CONFIG_FILES([ld64/Makefile])
296 AC_CONFIG_FILES([man/Makefile])
297 AC_CONFIG_FILES([misc/Makefile])
298 AC_CONFIG_FILES([otool/Makefile])
299 AC_OUTPUT