| | 1014 | |
|---|
| | 1015 | m4_define([AC_LANG(Objective-C)], |
|---|
| | 1016 | [ac_ext=m |
|---|
| | 1017 | ac_cpp='$OBJCCPP $OBJCPPFLAGS' |
|---|
| | 1018 | ac_compile='$OBJC -c $OBJCFLAGS $OBJCPPFLAGS conftest.$ac_ext >&AS_MESSAGE_LOG_FD' |
|---|
| | 1019 | ac_link='$OBJC -o conftest$ac_exeext $OBJCFLAGS $OBJCPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&AS_MESSAGE_LOG_FD' |
|---|
| | 1020 | ac_compiler_gnu=$ac_cv_objc_compiler_gnu |
|---|
| | 1021 | ]) |
|---|
| | 1022 | |
|---|
| | 1023 | m4_define([_AC_LANG_ABBREV(Objective-C)], [objc]) |
|---|
| | 1024 | |
|---|
| | 1025 | m4_define([_AC_LANG_PREFIX(Objective-C)], [OBJC]) |
|---|
| | 1026 | |
|---|
| | 1027 | m4_define([AC_LANG(Objective-C++)], |
|---|
| | 1028 | [ac_ext=mm |
|---|
| | 1029 | ac_cpp='$OBJCXXCPP $OBJCXXPPFLAGS' |
|---|
| | 1030 | ac_compile='$OBJCXX -c $OBJCXXFLAGS $OBJCXXPPFLAGS conftest.$ac_ext >&AS_MESSAGE_LOG_FD' |
|---|
| | 1031 | ac_link='$CXX -o conftest$ac_exeext $OBJCXXFLAGS $OBJCXXPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&AS_MESSAGE_LOG_FD' |
|---|
| | 1032 | ac_compiler_gnu=$ac_cv_objcxx_compiler_gnu |
|---|
| | 1033 | ]) |
|---|
| | 1034 | |
|---|
| | 1035 | m4_copy([AC_LANG_SOURCE(C)], [AC_LANG_SOURCE(Objective-C)]) |
|---|
| | 1036 | |
|---|
| | 1037 | m4_copy([AC_LANG_PROGRAM(C)], [AC_LANG_PROGRAM(Objective-C)]) |
|---|
| | 1038 | |
|---|
| | 1039 | m4_define([_AC_LANG_ABBREV(Objective-C++)], [objcxx]) |
|---|
| | 1040 | |
|---|
| | 1041 | m4_define([_AC_LANG_PREFIX(Objective-C++)], [OBJCXX]) |
|---|
| | 1042 | |
|---|
| | 1043 | m4_copy([AC_LANG_SOURCE(C)], [AC_LANG_SOURCE(Objective-C++)]) |
|---|
| | 1044 | |
|---|
| | 1045 | m4_copy([AC_LANG_PROGRAM(C)], [AC_LANG_PROGRAM(Objective-C++)]) |
|---|
| | 1046 | |
|---|
| | 1047 | m4_define([_AC_PROG_OBJC_G], |
|---|
| | 1048 | [ac_test_OBJCFLAGS=${OBJCFLAGS+set} |
|---|
| | 1049 | ac_save_OBJCFLAGS=$OBJCFLAGS |
|---|
| | 1050 | OBJCFLAGS="-g" |
|---|
| | 1051 | AC_CACHE_CHECK(whether $OBJC accepts -g, ac_cv_prog_objc_g, |
|---|
| | 1052 | [_AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], |
|---|
| | 1053 | [ac_cv_prog_objc_g=yes], |
|---|
| | 1054 | [ac_cv_prog_objc_g=no])]) |
|---|
| | 1055 | if test "$ac_test_OBJCFLAGS" = set; then |
|---|
| | 1056 | OBJCFLAGS=$ac_save_OBJCFLAGS |
|---|
| | 1057 | elif test $ac_cv_prog_objc_g = yes; then |
|---|
| | 1058 | if test "$GNU_OBJC" = yes; then |
|---|
| | 1059 | OBJCFLAGS="-g -O2" |
|---|
| | 1060 | else |
|---|
| | 1061 | OBJCFLAGS="-g" |
|---|
| | 1062 | fi |
|---|
| | 1063 | else |
|---|
| | 1064 | if test "$GNU_OBJC" = yes; then |
|---|
| | 1065 | OBJCFLAGS="-O2" |
|---|
| | 1066 | else |
|---|
| | 1067 | OBJCFLAGS= |
|---|
| | 1068 | fi |
|---|
| | 1069 | fi[]dnl |
|---|
| | 1070 | ]) |
|---|
| | 1071 | |
|---|
| | 1072 | dnl --------------------------------------------------------------------------- |
|---|
| | 1073 | dnl Check for the existence and usability of an Objective-C compiler (or the |
|---|
| | 1074 | dnl given Objective-C compiler if one is specified) and how to run its |
|---|
| | 1075 | dnl preprocessor. A platform-specific hint for the Objective-C compiler can be |
|---|
| | 1076 | dnl given by setting a value for the variable $OBJC_<PLATFORM> (e.g., |
|---|
| | 1077 | dnl $OBJC_Linux). A value for the Objective-C-compiler argument overrides any |
|---|
| | 1078 | dnl hint given, however. A list of fallbacks can be provided by setting a |
|---|
| | 1079 | dnl value for the variable $OBJC_FALLBACKS. This must be in the format of an |
|---|
| | 1080 | dnl sh list. |
|---|
| | 1081 | dnl |
|---|
| | 1082 | dnl Usage: |
|---|
| | 1083 | dnl DPP_PROG_OBJC([Objective-C-compiler [, extra-flags [, action-if-not-found [, path ]]]]) |
|---|
| | 1084 | dnl |
|---|
| | 1085 | dnl Arguments: |
|---|
| | 1086 | dnl Objective-C-compiler - Force the check to look for this Objective-C |
|---|
| | 1087 | dnl compiler. This is optional. |
|---|
| | 1088 | dnl extra-flags - Extra compiler flags to use when checking. This |
|---|
| | 1089 | dnl is optional. |
|---|
| | 1090 | dnl action-if-not-found - The action to take if the Objective-C compiler |
|---|
| | 1091 | dnl cannot be found or does not work. This is |
|---|
| | 1092 | dnl optional. |
|---|
| | 1093 | dnl path - Extra path information for finding the |
|---|
| | 1094 | dnl Objective-C compiler. This is optional. |
|---|
| | 1095 | dnl --------------------------------------------------------------------------- |
|---|
| | 1096 | AC_DEFUN([DPP_PROG_OBJC], |
|---|
| | 1097 | [ |
|---|
| | 1098 | dpp_save_OBJCFLAGS="$OBJCFLAGS" |
|---|
| | 1099 | OBJCFLAGS="$OBJCFLAGS $2 $ABI_FLAGS" |
|---|
| | 1100 | |
|---|
| | 1101 | dnl Get the platform-specific compiler hint value. |
|---|
| | 1102 | dpp_objc_var="OBJC_$dpp_platform" |
|---|
| | 1103 | dpp_objc_val=`eval echo '$''{'$dpp_objc_var'}'` |
|---|
| | 1104 | |
|---|
| | 1105 | if test "x$dpp_objc_val" != "x" -a "x$OBJC" = "x" ; then |
|---|
| | 1106 | OBJC="$dpp_objc_val" |
|---|
| | 1107 | fi |
|---|
| | 1108 | |
|---|
| | 1109 | if test "x$1" != "x" -o "x$OBJC" != "x" ; then |
|---|
| | 1110 | if test "x$1" != "x" ; then |
|---|
| | 1111 | dpp_OBJC_found_val=$1 |
|---|
| | 1112 | AC_CHECK_PROG([dpp_OBJC_check_val], $1, $1, , $4) |
|---|
| | 1113 | else |
|---|
| | 1114 | dpp_OBJC_found_val="$OBJC" |
|---|
| | 1115 | AC_CHECK_PROG([dpp_OBJC_check_val], [$OBJC], [$OBJC], , $4) |
|---|
| | 1116 | fi |
|---|
| | 1117 | |
|---|
| | 1118 | if test "x$dpp_OBJC_check_val" = "x$dpp_OBJC_found_val" ; then |
|---|
| | 1119 | OBJC="$dpp_OBJC_found_val" |
|---|
| | 1120 | else |
|---|
| | 1121 | dpp_OBJC_found='no' |
|---|
| | 1122 | |
|---|
| | 1123 | dnl If the caller provided a list of fallbacks in the $OBJC_FALLBACKS |
|---|
| | 1124 | dnl variable, loop over them and try to use another Objective-C |
|---|
| | 1125 | dnl compiler. |
|---|
| | 1126 | if test "x$OBJC_FALLBACKS" != "x" ; then |
|---|
| | 1127 | for dpp_objc in $OBJC_FALLBACKS ; do |
|---|
| | 1128 | AC_CHECK_PROG([dpp_OBJC_check_val], [$dpp_objc], [$dpp_objc], , |
|---|
| | 1129 | $4) |
|---|
| | 1130 | if test "x$dpp_OBJC_check_val" = "x$dpp_objc" ; then |
|---|
| | 1131 | OBJC="$dpp_objc" |
|---|
| | 1132 | dpp_OBJC_found='yes' |
|---|
| | 1133 | break |
|---|
| | 1134 | fi |
|---|
| | 1135 | done |
|---|
| | 1136 | fi |
|---|
| | 1137 | |
|---|
| | 1138 | dnl No viable Objective-C compiler was found. |
|---|
| | 1139 | if test "x$dpp_OBJC_found" = "xno" ; then |
|---|
| | 1140 | ifelse([$3], , :, [$3]) |
|---|
| | 1141 | fi |
|---|
| | 1142 | fi |
|---|
| | 1143 | fi |
|---|
| | 1144 | |
|---|
| | 1145 | AC_LANG_PUSH([Objective-C]) |
|---|
| | 1146 | |
|---|
| | 1147 | AC_CHECK_TOOL(OBJC, gcc) |
|---|
| | 1148 | if test -z "$OBJC" ; then |
|---|
| | 1149 | AC_CHECK_TOOL(OBJC, cc) |
|---|
| | 1150 | fi |
|---|
| | 1151 | if test -z "$OBJC" ; then |
|---|
| | 1152 | AC_CHECK_PROG(OBJC, cc, cc) |
|---|
| | 1153 | fi |
|---|
| | 1154 | |
|---|
| | 1155 | test -z "$OBJC" && AC_MSG_FAILURE([no acceptable Objective-C compiler found in \$PATH]) |
|---|
| | 1156 | dnl AC_PROG_CPP |
|---|
| | 1157 | |
|---|
| | 1158 | m4_expand_once([_AC_COMPILER_EXEEXT])[]dnl |
|---|
| | 1159 | m4_expand_once([_AC_COMPILER_OBJEXT])[]dnl |
|---|
| | 1160 | _AC_LANG_COMPILER_GNU |
|---|
| | 1161 | GNU_OBJC=`test $ac_compiler_gnu = yes && echo yes` |
|---|
| | 1162 | _AC_PROG_OBJC_G |
|---|
| | 1163 | |
|---|
| | 1164 | OBJCFLAGS="$dpp_save_OBJCFLAGS" |
|---|
| | 1165 | |
|---|
| | 1166 | dnl If GCC will be the Objective-C compiler, -fPIC is the |
|---|
| | 1167 | dnl position-independent code generation option. |
|---|
| | 1168 | if test "x$GNU_OBJC" = "xyes" ; then |
|---|
| | 1169 | OBJCFLAGS_DYNLIB='-fPIC' |
|---|
| | 1170 | dnl Otherwise, get the platform-specific compiler PIC option hint value. |
|---|
| | 1171 | else |
|---|
| | 1172 | dpp_objc_pic_var="OBJC_PIC_$dpp_platform" |
|---|
| | 1173 | OBJCFLAGS_DYNLIB=`eval echo '$''{'$dpp_objc_pic_var'}'` |
|---|
| | 1174 | fi |
|---|
| | 1175 | |
|---|
| | 1176 | OBJCFLAGS_DYNLIB="$OBJCFLAGS_DYNLIB -DPIC" |
|---|
| | 1177 | |
|---|
| | 1178 | AC_LANG_POP([Objective-C]) |
|---|
| | 1179 | |
|---|
| | 1180 | AC_SUBST(OBJCFLAGS_DYNLIB) |
|---|
| | 1181 | ]) |
|---|
| | 1182 | |
|---|
| | 1183 | m4_define([_AC_PROG_OBJCXX_G], |
|---|
| | 1184 | [ac_test_OBJCXXFLAGS=${OBJCXXFLAGS+set} |
|---|
| | 1185 | ac_save_OBJCXXFLAGS=$OBJCXXFLAGS |
|---|
| | 1186 | OBJCXXFLAGS="-g" |
|---|
| | 1187 | AC_CACHE_CHECK(whether $OBJCXX accepts -g, ac_cv_prog_objcxx_g, |
|---|
| | 1188 | [_AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], |
|---|
| | 1189 | [ac_cv_prog_objcxx_g=yes], |
|---|
| | 1190 | [ac_cv_prog_objcxx_g=no])]) |
|---|
| | 1191 | if test "$ac_test_OBJCXXFLAGS" = set; then |
|---|
| | 1192 | OBJCXXFLAGS=$ac_save_OBJCXXFLAGS |
|---|
| | 1193 | elif test $ac_cv_prog_objcxx_g = yes; then |
|---|
| | 1194 | if test "$GNU_OBJCXX" = yes; then |
|---|
| | 1195 | OBJCXXFLAGS="-g -O2" |
|---|
| | 1196 | else |
|---|
| | 1197 | OBJCXXFLAGS="-g" |
|---|
| | 1198 | fi |
|---|
| | 1199 | else |
|---|
| | 1200 | if test "$GNU_OBJCXX" = yes; then |
|---|
| | 1201 | OBJCXXFLAGS="-O2" |
|---|
| | 1202 | else |
|---|
| | 1203 | OBJCXXFLAGS= |
|---|
| | 1204 | fi |
|---|
| | 1205 | fi[]dnl |
|---|
| | 1206 | ]) |
|---|
| | 1207 | |
|---|
| | 1208 | dnl --------------------------------------------------------------------------- |
|---|
| | 1209 | dnl Check for the existence and usability of an Objective-C++ compiler (or the |
|---|
| | 1210 | dnl given Objective-C++ compiler if one is specified) and how to run its |
|---|
| | 1211 | dnl preprocessor. A platform-specific hint for the Objective-C++ compiler can |
|---|
| | 1212 | dnl be given by setting a value for the variable $OBJCXX_<PLATFORM> (e.g., |
|---|
| | 1213 | dnl $OBJCXX_Linux). A value for the Objective-C++-compiler argument overrides |
|---|
| | 1214 | dnl any hint given, however. A list of fallbacks can be provided by setting a |
|---|
| | 1215 | dnl value for the variable $OBJCXX_FALLBACKS. This must be in the format of an |
|---|
| | 1216 | dnl sh list. |
|---|
| | 1217 | dnl |
|---|
| | 1218 | dnl Usage: |
|---|
| | 1219 | dnl DPP_PROG_OBJCXX([Objective-C++-compiler [, extra-flags [, action-if-not-found [, path ]]]]) |
|---|
| | 1220 | dnl |
|---|
| | 1221 | dnl Arguments: |
|---|
| | 1222 | dnl Objective-C++-compiler - Force the check to look for this Objective-C++ |
|---|
| | 1223 | dnl compiler. This is optional. |
|---|
| | 1224 | dnl extra-flags - Extra compiler flags to use when checking. |
|---|
| | 1225 | dnl This is optional. |
|---|
| | 1226 | dnl action-if-not-found - The action to take if the Objective-C++ |
|---|
| | 1227 | dnl compiler cannot be found or does not work. |
|---|
| | 1228 | dnl This is optional. |
|---|
| | 1229 | dnl path - Extra path information for finding the |
|---|
| | 1230 | dnl Objective-C++ compiler. This is optional. |
|---|
| | 1231 | dnl --------------------------------------------------------------------------- |
|---|
| | 1232 | AC_DEFUN([DPP_PROG_OBJCXX], |
|---|
| | 1233 | [ |
|---|
| | 1234 | dpp_save_OBJCXXFLAGS="$OBJCXXFLAGS" |
|---|
| | 1235 | OBJCXXFLAGS="$OBJCXXFLAGS $2 $ABI_FLAGS" |
|---|
| | 1236 | |
|---|
| | 1237 | dnl Get the platform-specific compiler hint value. |
|---|
| | 1238 | dpp_objcxx_var="OBJCXX_$dpp_platform" |
|---|
| | 1239 | dpp_objcxx_val=`eval echo '$''{'$dpp_objcxx_var'}'` |
|---|
| | 1240 | |
|---|
| | 1241 | if test "x$dpp_objcxx_val" != "x" -a "x$OBJCXX" = "x" ; then |
|---|
| | 1242 | OBJCXX="$dpp_objcxx_val" |
|---|
| | 1243 | fi |
|---|
| | 1244 | |
|---|
| | 1245 | if test "x$1" != "x" -o "x$OBJCXX" != "x" ; then |
|---|
| | 1246 | if test "x$1" != "x" ; then |
|---|
| | 1247 | dpp_OBJCXX_found_val=$1 |
|---|
| | 1248 | AC_CHECK_PROG([dpp_OBJCXX_check_val], $1, $1, , $4) |
|---|
| | 1249 | else |
|---|
| | 1250 | dpp_OBJCXX_found_val="$OBJCXX" |
|---|
| | 1251 | AC_CHECK_PROG([dpp_OBJCXX_check_val], [$OBJCXX], [$OBJCXX], , $4) |
|---|
| | 1252 | fi |
|---|
| | 1253 | |
|---|
| | 1254 | if test "x$dpp_OBJCXX_check_val" = "x$dpp_OBJCXX_found_val" ; then |
|---|
| | 1255 | OBJCXX="$dpp_OBJCXX_found_val" |
|---|
| | 1256 | else |
|---|
| | 1257 | dpp_OBJCXX_found='no' |
|---|
| | 1258 | |
|---|
| | 1259 | dnl If the caller provided a list of fallbacks in the |
|---|
| | 1260 | dnl $OBJCXX_FALLBACKS variable, loop over them and try to use another |
|---|
| | 1261 | dnl Objective-C++ compiler. |
|---|
| | 1262 | if test "x$OBJCXX_FALLBACKS" != "x" ; then |
|---|
| | 1263 | for dpp_objcxx in $OBJCXX_FALLBACKS ; do |
|---|
| | 1264 | AC_CHECK_PROG([dpp_OBJCXX_check_val], [$dpp_objcxx], |
|---|
| | 1265 | [$dpp_objcxx], , $4) |
|---|
| | 1266 | if test "x$dpp_OBJCXX_check_val" = "x$dpp_objcxx" ; then |
|---|
| | 1267 | OBJCXX="$dpp_objcxx" |
|---|
| | 1268 | dpp_OBJCXX_found='yes' |
|---|
| | 1269 | break |
|---|
| | 1270 | fi |
|---|
| | 1271 | done |
|---|
| | 1272 | fi |
|---|
| | 1273 | |
|---|
| | 1274 | dnl No viable Objective-C++ compiler was found. |
|---|
| | 1275 | if test "x$dpp_OBJCXX_found" = "xno" ; then |
|---|
| | 1276 | ifelse([$3], , :, [$3]) |
|---|
| | 1277 | fi |
|---|
| | 1278 | fi |
|---|
| | 1279 | fi |
|---|
| | 1280 | |
|---|
| | 1281 | AC_LANG_PUSH([Objective-C++]) |
|---|
| | 1282 | |
|---|
| | 1283 | AC_CHECK_TOOL(OBJCXX, gcc) |
|---|
| | 1284 | if test -z "$OBJCXX" ; then |
|---|
| | 1285 | AC_CHECK_TOOL(OBJCXX, cc) |
|---|
| | 1286 | fi |
|---|
| | 1287 | if test -z "$OBJCXX" ; then |
|---|
| | 1288 | AC_CHECK_PROG(OBJCXX, cc, cc) |
|---|
| | 1289 | fi |
|---|
| | 1290 | |
|---|
| | 1291 | test -z "$OBJCXX" && AC_MSG_FAILURE([no acceptable Objective-C++ compiler found in \$PATH]) |
|---|
| | 1292 | dnl AC_PROG_CPP |
|---|
| | 1293 | |
|---|
| | 1294 | m4_expand_once([_AC_COMPILER_EXEEXT])[]dnl |
|---|
| | 1295 | m4_expand_once([_AC_COMPILER_OBJEXT])[]dnl |
|---|
| | 1296 | _AC_LANG_COMPILER_GNU |
|---|
| | 1297 | GNU_OBJCXX=`test $ac_compiler_gnu = yes && echo yes` |
|---|
| | 1298 | _AC_PROG_OBJCXX_G |
|---|
| | 1299 | |
|---|
| | 1300 | OBJCXXFLAGS="$dpp_save_OBJCXXFLAGS" |
|---|
| | 1301 | |
|---|
| | 1302 | dnl If GCC will be the Objective-C++ compiler, -fPIC is the |
|---|
| | 1303 | dnl position-independent code generation option. |
|---|
| | 1304 | if test "x$GNU_OBJCXX" = "xyes" ; then |
|---|
| | 1305 | OBJCXXFLAGS_DYNLIB='-fPIC' |
|---|
| | 1306 | dnl Otherwise, get the platform-specific compiler PIC option hint value. |
|---|
| | 1307 | else |
|---|
| | 1308 | dpp_objcxx_pic_var="OBJCXX_PIC_$dpp_platform" |
|---|
| | 1309 | OBJCXXFLAGS_DYNLIB=`eval echo '$''{'$dpp_objcxx_pic_var'}'` |
|---|
| | 1310 | fi |
|---|
| | 1311 | |
|---|
| | 1312 | OBJCXXFLAGS_DYNLIB="$OBJCXXFLAGS_DYNLIB -DPIC" |
|---|
| | 1313 | |
|---|
| | 1314 | AC_LANG_POP([Objective-C++]) |
|---|
| | 1315 | |
|---|
| | 1316 | AC_SUBST(OBJCXXFLAGS_DYNLIB) |
|---|
| | 1317 | ]) |
|---|