diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e72c193 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/am-utils-6.2.tar.gz diff --git a/am-utils-6.2-32-bit-fixes.patch b/am-utils-6.2-32-bit-fixes.patch new file mode 100644 index 0000000..ac6cf1a --- /dev/null +++ b/am-utils-6.2-32-bit-fixes.patch @@ -0,0 +1,145 @@ +commit a6bbb7d9b098dacd2636925c232c630452e4b46e +Author: Christos Zoulas +Date: Sun Jan 18 18:03:37 2015 -0500 + + 32 bit fixes + +diff --git a/amd/amq_subr.c b/amd/amq_subr.c +index 8783611..86f0351 100644 +--- a/amd/amq_subr.c ++++ b/amd/amq_subr.c +@@ -528,6 +528,7 @@ xdr_amq_map_info_qelem(XDR *xdrs, qelem *qhead) + u_int len = 0; + int x; + char *n; ++ long modify; + + /* + * Compute length of list +@@ -552,7 +553,8 @@ xdr_amq_map_info_qelem(XDR *xdrs, qelem *qhead) + return (FALSE); + } + +- if (!xdr_long(xdrs, &m->modify)) { ++ modify = (long)m->modify; ++ if (!xdr_long(xdrs, &modify)) { + return (FALSE); + } + +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index e463ff7..7192a6a 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -1104,9 +1104,9 @@ am_nfs3_getattr_3_svc(am_GETATTR3args *argp, struct svc_req *rqstp) + result.status = AM_NFS3_OK; + + if (amuDebug(D_TRACE)) +- plog(XLOG_DEBUG, "\tstat(%s), size = %lu, mtime=%d.%d", ++ plog(XLOG_DEBUG, "\tstat(%s), size = %llu, mtime=%d.%d", + mp->am_path, +- (am_size3) fattr3->size, ++ (unsigned long long)fattr3->size, + (u_int) fattr3->mtime.seconds, + (u_int) fattr3->mtime.nseconds); + +diff --git a/amd/readdir.c b/amd/readdir.c +index 4b5e61b..57773a5 100644 +--- a/amd/readdir.c ++++ b/amd/readdir.c +@@ -635,7 +635,7 @@ static size_t needroom3(void) + + /* This one is called only if map is browsable */ + static int +-amfs_readdir3_browsable(am_node *mp, am_cookie3 cookie, ++amfs_readdir3_browsable(am_node *mp, voidp cookie, + am_dirlist3 *dp, am_entry3 *ep, u_int count, + int fully_browsable) + { +@@ -647,7 +647,8 @@ amfs_readdir3_browsable(am_node *mp, am_cookie3 cookie, + dp->eof = FALSE; /* assume readdir not done */ + + if (amuDebug(D_READDIR)) +- plog(XLOG_DEBUG, "amfs_readdir3_browsable gen=%lu, count=%d", gen, count); ++ plog(XLOG_DEBUG, "%s: gen=%llu, count=%d", __func__, ++ (unsigned long long)gen, count); + + if (gen == 0) { + size_t needed = needroom3(); +@@ -732,8 +733,9 @@ amfs_readdir3_browsable(am_node *mp, am_cookie3 cookie, + for (j = 0, ne = te; ne; ne = ne->ne_nextentry) + plog(XLOG_DEBUG, "gen2 key %4d \"%s\"", j++, ne->name); + for (j = 0, ne = ep; ne; ne = ne->ne_nextentry) { +- plog(XLOG_DEBUG, "gen2+ key %4d \"%s\" fi=%lu ck=%lu", +- j++, ne->name, ne->fileid, ne->cookie); ++ plog(XLOG_DEBUG, "gen2+ key %4d \"%s\" fi=%llu ck=%llu", ++ j++, ne->name, (unsigned long long)ne->fileid, ++ (unsigned long long)ne->cookie); + } + plog(XLOG_DEBUG, "EOF is %d", dp->eof); + } +@@ -793,14 +795,15 @@ amfs_readdir3_browsable(am_node *mp, am_cookie3 cookie, + } + + static int +-amfs_readdir3(am_node *mp, am_cookie3 cookie, ++amfs_readdir3(am_node *mp, voidp cookie, + am_dirlist3 *dp, am_entry3 *ep, u_int count) + { + uint64 gen = *(uint64 *) cookie; + am_node *xp; + + if (amuDebug(D_READDIR)) +- plog(XLOG_DEBUG, "amfs_readdir3 gen=%lu, count=%d", gen, count); ++ plog(XLOG_DEBUG, "%s: gen=%llu, count=%d", __func__, ++ (unsigned long long)gen, count); + + dp->eof = FALSE; /* assume readdir not done */ + +@@ -847,8 +850,9 @@ amfs_readdir3(am_node *mp, am_cookie3 cookie, + am_entry3 *ne; + int j; + for (j = 0, ne = ep; ne; ne = ne->nextentry) { +- plog(XLOG_DEBUG, "gen1 key %4d \"%s\" fi=%lu ck=%lu", +- j++, ne->name, ne->fileid, ne->cookie); ++ plog(XLOG_DEBUG, "gen1 key %4d \"%s\" fi=%llu ck=%llu", ++ j++, ne->name, (unsigned long long)ne->fileid, ++ (unsigned long long)ne->cookie); + } + } + return 0; +@@ -907,8 +911,9 @@ amfs_readdir3(am_node *mp, am_cookie3 cookie, + am_entry3 *ne; + int j; + for (j = 0, ne = ep; ne; ne = ne->nextentry) { +- plog(XLOG_DEBUG, "gen2 key %4d \"%s\" fi=%lu ck=%lu", +- j++, ne->name, ne->fileid, ne->cookie); ++ plog(XLOG_DEBUG, "gen2 key %4d \"%s\" fi=%llu ck=%llu", ++ j++, ne->name, (unsigned long long)ne->fileid, ++ (unsigned long long)ne->cookie); + } + } + return 0; +@@ -944,8 +949,8 @@ amfs_generic_readdir(am_node *mp, voidp cookie, voidp dp, voidp ep, u_int count) + return amfs_readdir(mp, cookie, dp, ep, count); + } else { + if (browsable) +- return amfs_readdir3_browsable(mp, (am_cookie3) cookie, dp, ep, count, full); ++ return amfs_readdir3_browsable(mp, cookie, dp, ep, count, full); + else +- return amfs_readdir3(mp, (am_cookie3) cookie, dp, ep, count); ++ return amfs_readdir3(mp, cookie, dp, ep, count); + } + } +diff --git a/amq/amq.c b/amq/amq.c +index 5d4ed7a..dc5fe02 100644 +--- a/amq/amq.c ++++ b/amq/amq.c +@@ -79,7 +79,7 @@ enum show_opt { + static void + time_print(time_type tt) + { +- time_t t = (time_t)tt; ++ time_t t = (time_t)*tt; + struct tm *tp = localtime(&t); + printf("%02d/%02d/%04d %02d:%02d:%02d", + tp->tm_mon + 1, tp->tm_mday, diff --git a/am-utils-6.2-Add-the-sys-alias-for-unix-as-well-as-none-and-null.patch b/am-utils-6.2-Add-the-sys-alias-for-unix-as-well-as-none-and-null.patch new file mode 100644 index 0000000..0762139 --- /dev/null +++ b/am-utils-6.2-Add-the-sys-alias-for-unix-as-well-as-none-and-null.patch @@ -0,0 +1,64 @@ +commit cb493f02ca3b8fbf0dba18d5a733345f54513300 +Author: zoulasc +Date: Mon Mar 7 18:03:19 2016 -0500 + + 1. Add the "sys" alias for "unix", as well as "none", and "null" + 2. Properly handle multiple flavors, although the linux kernel does not (yet?) + 3. Don't add the "sec=" field, because it is already there. + +diff --git a/libamu/mount_fs.c b/libamu/mount_fs.c +index 87f64c3..366eb8b 100644 +--- a/libamu/mount_fs.c ++++ b/libamu/mount_fs.c +@@ -1076,7 +1076,10 @@ struct { + const char *name; + int num; + } flavours[] = { ++ { "none", AUTH_NONE }, ++ { "null", AUTH_NULL }, + { "unix", AUTH_UNIX }, ++ { "sys", AUTH_SYS }, + { "krb5", RPC_AUTH_GSS_KRB5 }, + { "krb5i", RPC_AUTH_GSS_KRB5I }, + { "krb5p", RPC_AUTH_GSS_KRB5P }, +@@ -1104,12 +1107,13 @@ set_nfs4_security(nfs4_args_t *nap, mntent_t *mntp) + nap->auth_flavours = xmalloc(l * sizeof(*nap->auth_flavours)); + + s = ss = xstrdup(o); ++ l = 0; + for (;;) { + q = strchr(s, ','); + if (q) + *q = '\0'; + +- for (l = 0, i = 0; i < sizeof(flavours) / sizeof(flavours[0]); i++) ++ for (i = 0; i < sizeof(flavours) / sizeof(flavours[0]); i++) + if (strcmp(flavours[i].name, s) == 0) { + nap->auth_flavours[l++] = flavours[i].num; + break; +@@ -1125,6 +1129,9 @@ set_nfs4_security(nfs4_args_t *nap, mntent_t *mntp) + s = ++q; + } + ++ if (l == 0) { ++ nap->auth_flavours[l++] = AUTH_UNIX; ++ } + nap->auth_flavourlen = l; + return ss; + } +@@ -1172,12 +1179,15 @@ add_nfs4_mntopts(const nfs4_args_t *nap, mntent_t *mntp, char *sec) + opts = xrealloc(mntp->mnt_opts, len); + xstrlcat(opts, buf, len); + ++#ifdef notdef ++ /* Already in the options */ + if (sec) { + xstrlcat(opts, ",", len); + xstrlcat(opts, MNTTAB_OPT_SEC, len); + xstrlcat(opts, "=", len); + xstrlcat(opts, sec, len); + } ++#endif + + mntp->mnt_opts = opts; + } diff --git a/am-utils-6.2-Default-to-string-mount-options-for-NFSv4.patch b/am-utils-6.2-Default-to-string-mount-options-for-NFSv4.patch new file mode 100644 index 0000000..3057d22 --- /dev/null +++ b/am-utils-6.2-Default-to-string-mount-options-for-NFSv4.patch @@ -0,0 +1,58 @@ +commit 3369871a5e68484e231705bb0a893b4c6da85d17 +Author: zoulasc +Date: Mon Mar 7 18:05:07 2016 -0500 + + Default to "string" mount options for NFSv4 because the kernel does not + properly handle the auth_flavours[] field. Tested with nfs-utils-1.3.3 and + it always defaults to krb5i if string options are not used. Please note + that the "rw" option is not recognized by the linux kernel. + +diff --git a/conf/mount/mount_linux.c b/conf/mount/mount_linux.c +index d3841ce..de7708d 100644 +--- a/conf/mount/mount_linux.c ++++ b/conf/mount/mount_linux.c +@@ -450,7 +450,7 @@ do_mount_linux(MTYPE_TYPE type, mntent_t *mnt, int flags, caddr_t data) + return mount(mnt->mnt_fsname, + mnt->mnt_dir, + type, +- MS_MGC_VAL | flags, ++ flags, + data); + } + +@@ -566,9 +566,9 @@ mount_linux_nfs(MTYPE_TYPE type, mntent_t *mnt, int flags, caddr_t data) + plog(XLOG_DEBUG, "%s: port %d\n", __func__, + htons(mnt_data->addr.sin_port)); + } ++ flags |= MS_MGC_VAL; + if (amuDebug(D_TRACE)) { +- plog(XLOG_DEBUG, "%s: Generic mount flags 0x%x", __func__, +- MS_MGC_VAL | flags); ++ plog(XLOG_DEBUG, "%s: Generic mount flags 0x%x", __func__, flags); + plog(XLOG_DEBUG, "%s: updated nfs_args...", __func__); + print_nfs_args(mnt_data, 0); + } +@@ -610,14 +610,21 @@ mount_linux_nfs4(MTYPE_TYPE type, mntent_t *mnt, int flags, caddr_t data) + plog(XLOG_DEBUG, "%s: type %s\n", __func__, type); + plog(XLOG_DEBUG, "%s: version %d\n", __func__, mnt_data->version); + } ++#if 0 ++ flags |= MS_MGC_VAL; ++#endif + if (amuDebug(D_TRACE)) { +- plog(XLOG_DEBUG, "%s: Generic mount flags 0x%x", __func__, +- MS_MGC_VAL | flags); ++ plog(XLOG_DEBUG, "%s: Generic mount flags 0x%x", __func__, flags); + plog(XLOG_DEBUG, "%s: updated nfs_args...", __func__); + print_nfs_args(mnt_data, NFS_VERSION4); + } + ++#if 0 + errorcode = do_mount_linux(type, mnt, flags, data); ++#else ++ errorcode = do_mount_linux(type, mnt, flags, mnt->mnt_opts); ++#endif ++ + + return errorcode; + } diff --git a/am-utils-6.2-Fix-SEGV-on-amq-entries-that-print-times.patch b/am-utils-6.2-Fix-SEGV-on-amq-entries-that-print-times.patch new file mode 100644 index 0000000..ed7b9f3 --- /dev/null +++ b/am-utils-6.2-Fix-SEGV-on-amq-entries-that-print-times.patch @@ -0,0 +1,19 @@ +commit 6a12fc0acb3afb654ba5e6efdeb28b943e2efd3e +Author: zoulasc +Date: Thu Mar 31 14:56:53 2016 -0400 + + Fix SEGV on amq entries that print times. + +diff --git a/amq/amq.c b/amq/amq.c +index dc5fe02..04f9e4d 100644 +--- a/amq/amq.c ++++ b/amq/amq.c +@@ -79,7 +79,7 @@ enum show_opt { + static void + time_print(time_type tt) + { +- time_t t = (time_t)*tt; ++ time_t t = (time_t)(intptr_t)tt; + struct tm *tp = localtime(&t); + printf("%02d/%02d/%04d %02d:%02d:%02d", + tp->tm_mon + 1, tp->tm_mday, diff --git a/am-utils-6.2-Fix-nfs-args-setting-code.patch b/am-utils-6.2-Fix-nfs-args-setting-code.patch new file mode 100644 index 0000000..96d0425 --- /dev/null +++ b/am-utils-6.2-Fix-nfs-args-setting-code.patch @@ -0,0 +1,71 @@ +commit 1c4c00a489d7aef115020b903dcd10201eb56ac0 +Author: zoulasc +Date: Thu Apr 30 14:24:39 2015 -0400 + + Fix nfs args setting code (raven at the maw dot net) + +diff --git a/ChangeLog b/ChangeLog +index fd05087..64be682 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,8 @@ ++2015-04-30 Christos Zoulas ++ ++ * fix compilation error in nfs args set code. ++ (raven at themaw.net) ++ + 2015-01-17 Christos Zoulas + + * Move libtool macro functions from m4/macros to m4 and delete +diff --git a/libamu/mount_fs.c b/libamu/mount_fs.c +index b577bab..87f64c3 100644 +--- a/libamu/mount_fs.c ++++ b/libamu/mount_fs.c +@@ -1001,12 +1001,12 @@ compute_nfs23_args(nfs_args_t *nap, + + #ifdef MNTTAB_OPT_SYMTTL /* symlink cache time-to-live */ + if ((nap->symttl = hasmntval(mntp, MNTTAB_OPT_SYMTTL))) +- nap->args.flags |= MNT2_NFS_OPT_SYMTTL; ++ nap->flags |= MNT2_NFS_OPT_SYMTTL; + #endif /* MNTTAB_OPT_SYMTTL */ + + #ifdef MNT2_NFS_OPT_PGTHRESH /* paging threshold */ + if ((nap->pg_thresh = hasmntval(mntp, MNTTAB_OPT_PGTHRESH))) +- nap->args.flags |= MNT2_NFS_OPT_PGTHRESH; ++ nap->flags |= MNT2_NFS_OPT_PGTHRESH; + #endif /* MNT2_NFS_OPT_PGTHRESH */ + + #if defined(MNT2_NFS_OPT_POSIX) && defined(MNTTAB_OPT_POSIX) +@@ -1029,12 +1029,12 @@ compute_nfs23_args(nfs_args_t *nap, + return; + } + /* update the flags field for knconf */ +- nap->args.flags |= MNT2_NFS_OPT_KNCONF; ++ nap->flags |= MNT2_NFS_OPT_KNCONF; + #endif /* HAVE_TRANSPORT_TYPE_TLI */ + + #ifdef MNT2_NFS_OPT_FSNAME + nap->fsname = fs_name; +- nap->args.flags |= MNT2_NFS_OPT_FSNAME; ++ nap->flags |= MNT2_NFS_OPT_FSNAME; + #endif /* MNT2_NFS_OPT_FSNAME */ + + +@@ -1323,7 +1323,7 @@ compute_nfs4_args(nfs4_args_t *nap, + + #if defined(MNT2_NFS_OPT_POSIX) && defined(MNTTAB_OPT_POSIX) + if (amu_hasmntopt(mntp, MNTTAB_OPT_POSIX) != NULL) { +- nap->args.flags |= MNT2_NFS_OPT_POSIX; ++ nap->flags |= MNT2_NFS_OPT_POSIX; + # ifdef HAVE_NFS_ARGS_T_PATHCONF + nap->pathconf = NULL; + # endif /* HAVE_NFS_ARGS_T_PATHCONF */ +@@ -1333,7 +1333,7 @@ compute_nfs4_args(nfs4_args_t *nap, + #if defined(MNT2_NFS_OPT_MAXGRPS) && defined(MNTTAB_OPT_MAXGROUPS) + nap->maxgrouplist = hasmntval(mntp, MNTTAB_OPT_MAXGROUPS); + if (nap->maxgrouplist != 0) +- nap->args.flags |= MNT2_NFS_OPT_MAXGRPS; ++ nap->flags |= MNT2_NFS_OPT_MAXGRPS; + #endif /* defined(MNT2_NFS_OPT_MAXGRPS) && defined(MNTTAB_OPT_MAXGROUPS) */ + + #ifdef HAVE_NFS_ARGS_T_OPTSTR diff --git a/am-utils-6.2-Improve-debugging-for-unmounting.patch b/am-utils-6.2-Improve-debugging-for-unmounting.patch new file mode 100644 index 0000000..564daa5 --- /dev/null +++ b/am-utils-6.2-Improve-debugging-for-unmounting.patch @@ -0,0 +1,36 @@ +commit 227ce116a307a7f38967639c94ad74970ee83700 +Author: zoulasc +Date: Tue Mar 8 23:30:38 2016 -0500 + + Improve debugging for unmounting. + +diff --git a/amd/map.c b/amd/map.c +index bcb2156..a6df44b 100644 +--- a/amd/map.c ++++ b/amd/map.c +@@ -904,10 +904,8 @@ unmount_mp(am_node *mp) + int was_backgrounded = 0; + mntfs *mf = mp->am_al->al_mnt; + +-#ifdef notdef + plog(XLOG_INFO, "\"%s\" on %s timed out (flags 0x%x)", +- mp->am_path, mf->mf_mount, (int) mf->mf_flags); +-#endif /* notdef */ ++ mp->am_path, mf->mf_mount, (int) mf->mf_flags); + + #ifndef MNT2_NFS_OPT_SYMTTL + /* +@@ -938,11 +936,12 @@ unmount_mp(am_node *mp) + plog(XLOG_STATS, "file server %s is down - timeout of \"%s\" ignored", mf->mf_server->fs_host, mp->am_path); + mf->mf_flags |= MFF_LOGDOWN; + } ++ dlog("\"%s\" on %s server is down, deferred", mp->am_path, mf->mf_mount); + notify_child(mp, AMQ_UMNT_SERVER, 0, 0); + return 0; + } + +- dlog("\"%s\" on %s timed out", mp->am_path, mf->mf_mount); ++ dlog("\"%s\" on %s timed out, unmounting", mp->am_path, mf->mf_mount); + mf->mf_flags |= MFF_UNMOUNTING; + + #ifdef HAVE_FS_AUTOFS diff --git a/am-utils-6.2-Make-hasmntval-return-an-0-on-error-1-on-success.patch b/am-utils-6.2-Make-hasmntval-return-an-0-on-error-1-on-success.patch new file mode 100644 index 0000000..7c39f97 --- /dev/null +++ b/am-utils-6.2-Make-hasmntval-return-an-0-on-error-1-on-success.patch @@ -0,0 +1,530 @@ +commit 1c9cd2d03ab1561b7eee831af381eff781fcf41e +Author: zoulasc +Date: Fri Apr 8 15:29:33 2016 -0400 + + * Make hasmntval() return an 0 on error, 1 on success and + place the value in an argument. Update all users and + check properly for errors. Get rid of hasmntvalerr(). + * Add hasmntvaldelim() which takes a string delimiter. This + is now used to chop vers=4.1 to 4, so that we can parse the + version correctly (we don't care about the .1 part yet) + +--- + amd/autil.c | 10 ++---- + amd/ops_cdfs.c | 7 ++++ + amd/ops_nfs.c | 3 -- + amd/ops_pcfs.c | 10 ++++-- + amd/ops_ufs.c | 6 +++- + amd/srvr_nfs.c | 24 ++++++++++------ + hlfsd/hlfsd.c | 3 -- + include/am_utils.h | 4 +- + libamu/mount_fs.c | 79 ++++++++++++++++++++++++++++++++++++++--------------- + libamu/mtab.c | 41 ++++++++------------------- + 10 files changed, 109 insertions(+), 78 deletions(-) + +--- am-utils-6.2.orig/amd/autil.c ++++ am-utils-6.2/amd/autil.c +@@ -279,7 +279,7 @@ am_mounted(am_node *mp) + if (amu_hasmntopt(&mnt, "nounmount") || amu_hasmntopt(&mnt, "noumount")) + notimeout = 1; + /* utimeout=N option: user wants to unmount this option AND set timeout */ +- if ((mp->am_timeo = hasmntval(&mnt, "utimeout")) == 0) ++ if (!hasmntval(&mnt, "utimeout", &mp->am_timeo)) + mp->am_timeo = gopt.am_timeo; /* otherwise use default timeout */ + else + notimeout = 0; +@@ -480,8 +480,7 @@ amfs_mount(am_node *mp, mntfs *mf, char + mnt.mnt_type = HIDE_MOUNT_TYPE; + } + +- retry = hasmntval(&mnt, MNTTAB_OPT_RETRY); +- if (retry <= 0) ++ if (!hasmntval(&mnt, MNTTAB_OPT_RETRY, &retry) || retry <= 0) + retry = 2; /* XXX: default to 2 retries */ + + /* +@@ -526,7 +525,7 @@ again: + nfs_args_t nfs_args; + am_nfs_handle_t *fhp, anh; + #ifndef HAVE_TRANSPORT_TYPE_TLI +- u_short port; ++ int port; + struct sockaddr_in sin; + #endif /* not HAVE_TRANSPORT_TYPE_TLI */ + +@@ -547,8 +546,7 @@ again: + /* as per POSIX, sin_len need not be set (used internally by kernel) */ + sin.sin_family = AF_INET; + sin.sin_addr = myipaddr; +- port = hasmntval(&mnt, MNTTAB_OPT_PORT); +- if (port) { ++ if (hasmntval(&mnt, MNTTAB_OPT_PORT, &port) && port > 0 && port < 65536) { + sin.sin_port = htons(port); + } else { + plog(XLOG_ERROR, "no port number specified for %s", dir); +--- am-utils-6.2.orig/amd/ops_cdfs.c ++++ am-utils-6.2/amd/ops_cdfs.c +@@ -190,7 +190,12 @@ mount_cdfs(char *mntdir, char *fs_name, + #endif /* HAVE_CDFS_ARGS_T_ISO_FLAGS */ + + #ifdef HAVE_CDFS_ARGS_T_ISO_PGTHRESH +- cdfs_args.iso_pgthresh = hasmntval(&mnt, MNTTAB_OPT_PGTHRESH); ++ { ++ int thresh; ++ if (!hasmntval(&mnt, MNTTAB_OPT_PGTHRESH, &thresh) || thresh < 0) ++ thresh = 0; ++ cdfs_args.iso_pgthresh = thresh; ++ } + #endif /* HAVE_CDFS_ARGS_T_ISO_PGTHRESH */ + + #ifdef HAVE_CDFS_ARGS_T_NORRIP +--- am-utils-6.2.orig/amd/ops_nfs.c ++++ am-utils-6.2/amd/ops_nfs.c +@@ -888,8 +888,7 @@ mount_nfs_fh(am_nfs_handle_t *fhp, char + plog(XLOG_INFO, "mount_nfs_fh: NFS version %d", (int) nfs_version); + plog(XLOG_INFO, "mount_nfs_fh: using NFS transport %s", nfs_proto); + +- retry = hasmntval(&mnt, MNTTAB_OPT_RETRY); +- if (retry <= 0) ++ if (!hasmntval(&mnt, MNTTAB_OPT_RETRY, &retry) || retry <= 0) + retry = 1; /* XXX */ + + genflags = compute_mount_flags(&mnt); +--- am-utils-6.2.orig/amd/ops_pcfs.c ++++ am-utils-6.2/amd/ops_pcfs.c +@@ -139,17 +139,19 @@ mount_pcfs(char *mntdir, char *fs_name, + #endif /* HAVE_PCFS_ARGS_T_FSPEC */ + + #ifdef HAVE_PCFS_ARGS_T_MASK +- pcfs_args.mask = 0777; /* this may be the msdos file modes */ +- if ((mask = hasmntval(&mnt, MNTTAB_OPT_MASK)) > 0) ++ if (hasmntval(&mnt, MNTTAB_OPT_MASK, &mask) && mask > 0) + pcfs_args.mask = mask; ++ else ++ pcfs_args.mask = 0777; /* this may be the msdos file modes */ + if (amuDebug(D_TRACE)) + plog(XLOG_DEBUG, "mount_pcfs: mask=%o (octal)", (u_int) pcfs_args.mask); + #endif /* HAVE_PCFS_ARGS_T_MASK */ + + #ifdef HAVE_PCFS_ARGS_T_DIRMASK +- pcfs_args.dirmask = 0777; /* this may be the msdos dir modes */ +- if ((mask = hasmntval(&mnt, MNTTAB_OPT_DIRMASK)) > 0) ++ if (hasmntval(&mnt, MNTTAB_OPT_DIRMASK, &mask) && mask > 0) + pcfs_args.dirmask = mask; ++ else ++ pcfs_args.dirmask = 0777; /* this may be the msdos dir modes */ + if (amuDebug(D_TRACE)) + plog(XLOG_DEBUG, "mount_pcfs: dirmask=%o (octal)", (u_int) pcfs_args.dirmask); + #endif /* HAVE_PCFS_ARGS_T_DIRMASK */ +--- am-utils-6.2.orig/amd/ops_ufs.c ++++ am-utils-6.2/amd/ops_ufs.c +@@ -144,7 +144,11 @@ mount_ufs(char *mntdir, char *fs_name, c + #endif /* HAVE_UFS_ARGS_T_FSPEC */ + + #ifdef HAVE_UFS_ARGS_T_UFS_PGTHRESH +- ufs_args.ufs_pgthresh = hasmntval(&mnt, MNTTAB_OPT_PGTHRESH); ++ { ++ int thresh; ++ if (!hasmntval(&mnt, MNTTAB_OPT_PGTHRESH, &thresh) || thresh < 0) ++ thresh = 0; ++ ufs_args.ufs_pgthresh = thresh; + #endif /* HAVE_UFS_ARGS_T_UFS_PGTHRESH */ + + /* +--- am-utils-6.2.orig/amd/srvr_nfs.c ++++ am-utils-6.2/amd/srvr_nfs.c +@@ -704,10 +704,10 @@ find_nfs_srvr(mntfs *mf) + struct hostent *hp = NULL; + struct sockaddr_in *ip = NULL; + u_long nfs_version = 0; /* default is no version specified */ ++ int val; + u_long best_nfs_version = 0; + char *nfs_proto = NULL; /* no IP protocol either */ +- int nfs_port = 0; +- int nfs_port_opt = 0; ++ int nfs_port; + int fserver_is_down = 0; + + if (mf->mf_fo == NULL) { +@@ -721,7 +721,8 @@ find_nfs_srvr(mntfs *mf) + * are required or not. < 0 = no pings. + */ + mnt.mnt_opts = mf->mf_mopts; +- pingval = hasmntval(&mnt, "ping"); ++ if (!hasmntval(&mnt, "ping", &pingval) || pingval < 0) ++ pingval = 0; + + if (mf->mf_flags & MFF_NFS_SCALEDOWN) { + /* +@@ -739,7 +740,10 @@ find_nfs_srvr(mntfs *mf) + * to decide the highest NFS version to try. + */ + #ifdef MNTTAB_OPT_VERS +- nfs_version = hasmntval(&mnt, MNTTAB_OPT_VERS); ++ if (!hasmntvaldelim(&mnt, MNTTAB_OPT_VERS, ",.", &val) || val < 0) ++ nfs_version = 0; ++ else ++ nfs_version = val; + #endif /* MNTTAB_OPT_VERS */ + + #ifdef MNTTAB_OPT_PROTO +@@ -934,11 +938,11 @@ find_nfs_srvr(mntfs *mf) + * If the port has been determined from the portmapper, use that. + * Default to NFS_PORT otherwise (cf. RFC 2054, 3). + */ +- nfs_port_opt = hasmntval(&mnt, MNTTAB_OPT_PORT); +- if (nfs_port_opt > 0) +- nfs_port = htons(nfs_port_opt); +- if (!nfs_port) ++ if (!hasmntval(&mnt, MNTTAB_OPT_PORT, &nfs_port) ++ || nfs_port > 65535 || nfs_port <= 0) + nfs_port = htons(NFS_PORT); ++ else ++ nfs_port = htons(nfs_port); + + dlog("%s: using port %d for nfs on %s", __func__, + (int) ntohs(nfs_port), host); +@@ -1050,7 +1054,9 @@ no_dns: + fs->fs_flags |= FSF_PING_UNINIT; /* pinger hasn't been initialized */ + np = ALLOC(struct nfs_private); + memset((voidp) np, 0, sizeof(*np)); +- np->np_mountd = htons(hasmntval(&mnt, "mountport")); ++ if (!hasmntval(&mnt, "mountport", &val) || val < 0) ++ val = 0; ++ np->np_mountd = htons(val); + if (np->np_mountd == 0) { + np->np_mountd_inval = 'Y'; + np->np_xid = XID_ALLOC(); +--- am-utils-6.2.orig/hlfsd/hlfsd.c ++++ am-utils-6.2/hlfsd/hlfsd.c +@@ -530,8 +530,7 @@ main(int argc, char *argv[]) + + genflags = compute_mount_flags(&mnt); + +- retry = hasmntval(&mnt, MNTTAB_OPT_RETRY); +- if (retry <= 0) ++ if (!hasmntval(&mnt, MNTTAB_OPT_RETRY, &retry) || retry <= 0) + retry = 1; /* XXX */ + + memmove(&anh.v2, root_fhp, sizeof(*root_fhp)); +--- am-utils-6.2.orig/include/am_utils.h ++++ am-utils-6.2/include/am_utils.h +@@ -290,8 +290,8 @@ extern int compute_mount_flags(mntent_t + extern void discard_nfs_args(void *, u_long); + extern u_long get_amd_program_number(void); + extern int getcreds(struct svc_req *, uid_t *, gid_t *, SVCXPRT *); +-extern int hasmntval(mntent_t *, char *); +-extern unsigned int hasmntvalerr(mntent_t *, char *, int *); ++extern int hasmntval(mntent_t *, char *, int *); ++extern int hasmntvaldelim(mntent_t *, char *, const char *, int *); + extern char *hasmntstr(mntent_t *, char *); + extern char *hasmnteq(mntent_t *, char *); + extern char *haseq(char *); +--- am-utils-6.2.orig/libamu/mount_fs.c ++++ am-utils-6.2/libamu/mount_fs.c +@@ -188,8 +188,10 @@ static void + addvers(char *zopts, size_t l, mntent_t *mnt, u_long have_vers, + u_long want_vers) + { +- if (have_vers == want_vers && +- hasmntval(mnt, MNTTAB_OPT_VERS) != want_vers) { ++ int val; ++ if (have_vers == want_vers ++ && hasmntvaldelim(mnt, MNTTAB_OPT_VERS, ".,", &val) ++ && (u_long)val != want_vers) { + char optsbuf[48]; + xsnprintf(optsbuf, sizeof(optsbuf), + "%s=%d", MNTTAB_OPT_VERS, want_vers); +@@ -391,7 +393,7 @@ compute_nfs_attrcache_flags(struct nfs_c + * on the values of the attribute caches. + */ + #ifdef MNTTAB_OPT_ACTIMEO +- err_acval = hasmntvalerr(mntp, MNTTAB_OPT_ACTIMEO, &acval); /* attr cache timeout (sec) */ ++ err_acval = !hasmntval(mntp, MNTTAB_OPT_ACTIMEO, &acval); /* attr cache timeout (sec) */ + #endif /* MNTTAB_OPT_ACTIMEO */ + + /*** acregmin ***/ +@@ -402,7 +404,7 @@ compute_nfs_attrcache_flags(struct nfs_c + } else { + # ifdef MNTTAB_OPT_ACREGMIN + int tmp; +- err_acrdmm = hasmntvalerr(mntp, MNTTAB_OPT_ACREGMIN, &tmp); ++ err_acrdmm = !hasmntval(mntp, MNTTAB_OPT_ACREGMIN, &tmp); + nap->acregmin = tmp; + # else /* not MNTTAB_OPT_ACREGMIN */ + nap->acregmin = 0; +@@ -423,7 +425,7 @@ compute_nfs_attrcache_flags(struct nfs_c + } else { + # ifdef MNTTAB_OPT_ACREGMAX + int tmp; +- err_acrdmm = hasmntvalerr(mntp, MNTTAB_OPT_ACREGMAX, &tmp); ++ err_acrdmm = !hasmntval(mntp, MNTTAB_OPT_ACREGMAX, &tmp); + nap->acregmax = tmp; + # else /* not MNTTAB_OPT_ACREGMAX */ + nap->acregmax = 0; +@@ -444,7 +446,7 @@ compute_nfs_attrcache_flags(struct nfs_c + } else { + # ifdef MNTTAB_OPT_ACDIRMIN + int tmp; +- err_acrdmm = hasmntvalerr(mntp, MNTTAB_OPT_ACDIRMIN, &tmp); ++ err_acrdmm = !hasmntval(mntp, MNTTAB_OPT_ACDIRMIN, &tmp); + nap->acdirmin = tmp; + # else /* not MNTTAB_OPT_ACDIRMIN */ + nap->acdirmin = 0; +@@ -465,7 +467,7 @@ compute_nfs_attrcache_flags(struct nfs_c + } else { + # ifdef MNTTAB_OPT_ACDIRMAX + int tmp; +- err_acrdmm = hasmntvalerr(mntp, MNTTAB_OPT_ACDIRMAX, &tmp); ++ err_acrdmm = !hasmntval(mntp, MNTTAB_OPT_ACDIRMAX, &tmp); + nap->acdirmax = tmp; + # else /* not MNTTAB_OPT_ACDIRMAX */ + nap->acdirmax = 0; +@@ -492,6 +494,7 @@ static void + compute_nfs_common_args(struct nfs_common_args *nap, mntent_t *mntp, + const char *nfs_proto, u_long nfs_version) + { ++ int val; + #ifdef MNT2_NFS_OPT_TCP + if (nfs_proto && STREQ(nfs_proto, "tcp")) + nap->flags |= MNT2_NFS_OPT_TCP; +@@ -536,7 +539,10 @@ compute_nfs_common_args(struct nfs_commo + # endif /* not MNTTAB_OPT_RESVPORT */ + #endif /* MNT2_NFS_OPT_RESVPORT */ + +- nap->rsize = hasmntval(mntp, MNTTAB_OPT_RSIZE); ++ if (!hasmntval(mntp, MNTTAB_OPT_RSIZE, &val) || val <= 0) ++ nap->rsize = 0; ++ else ++ nap->rsize = val; + #ifdef MNT2_NFS_OPT_RSIZE + if (nap->rsize) + nap->flags |= MNT2_NFS_OPT_RSIZE; +@@ -544,7 +550,10 @@ compute_nfs_common_args(struct nfs_commo + if (nfs_version == NFS_VERSION && nap->rsize > 8192) + nap->rsize = 8192; + +- nap->wsize = hasmntval(mntp, MNTTAB_OPT_WSIZE); ++ if (!hasmntval(mntp, MNTTAB_OPT_WSIZE, &val) || val <= 0) ++ nap->wsize = 0; ++ else ++ nap->wsize = val; + #ifdef MNT2_NFS_OPT_WSIZE + if (nap->wsize) + nap->flags |= MNT2_NFS_OPT_WSIZE; +@@ -552,13 +561,19 @@ compute_nfs_common_args(struct nfs_commo + if (nfs_version == NFS_VERSION && nap->wsize > 8192) + nap->wsize = 8192; + +- nap->timeo = hasmntval(mntp, MNTTAB_OPT_TIMEO); ++ if (!hasmntval(mntp, MNTTAB_OPT_TIMEO, &val) || val <= 0) ++ nap->timeo = 0; ++ else ++ nap->timeo = val; + #ifdef MNT2_NFS_OPT_TIMEO + if (nap->timeo) + nap->flags |= MNT2_NFS_OPT_TIMEO; + #endif /* MNT2_NFS_OPT_TIMEO */ + +- nap->retrans = hasmntval(mntp, MNTTAB_OPT_RETRANS); ++ if (!hasmntval(mntp, MNTTAB_OPT_RETRANS, &val) || val <= 0) ++ nap->retrans = 0; ++ else ++ nap->retrans = val; + #ifdef MNT2_NFS_OPT_RETRANS + if (nap->retrans) + nap->flags |= MNT2_NFS_OPT_RETRANS; +@@ -861,6 +876,7 @@ compute_nfs23_args(nfs_args_t *nap, + char *host_name, + char *fs_name) + { ++ int val; + struct nfs_common_args a; + /* initialize just in case */ + memset((voidp) nap, 0, sizeof(nfs_args_t)); +@@ -995,18 +1011,30 @@ compute_nfs23_args(nfs_args_t *nap, + /************************************************************************/ + + #ifdef MNT2_NFS_OPT_BIODS +- if ((nap->biods = hasmntval(mntp, MNTTAB_OPT_BIODS))) ++ if (!hasmntval(mntp, MNTTAB_OPT_BIODS, &val) || val <= 0) ++ nap->biods = 0; ++ else { ++ nap->biods = val; + nap->flags |= MNT2_NFS_OPT_BIODS; ++ } + #endif /* MNT2_NFS_OPT_BIODS */ + + #ifdef MNTTAB_OPT_SYMTTL /* symlink cache time-to-live */ +- if ((nap->symttl = hasmntval(mntp, MNTTAB_OPT_SYMTTL))) ++ if (!hasmntval(mntp, MNTTAB_OPT_SYMTTL, &val) || val <= 0) ++ nap->symttl = 0; ++ else { ++ nap->symttl = val; + nap->flags |= MNT2_NFS_OPT_SYMTTL; ++ } + #endif /* MNTTAB_OPT_SYMTTL */ + + #ifdef MNT2_NFS_OPT_PGTHRESH /* paging threshold */ +- if ((nap->pg_thresh = hasmntval(mntp, MNTTAB_OPT_PGTHRESH))) ++ if (!hasmntval(mntp, MNTTAB_OPT_PGTHRESH, &val) || val <= 0) ++ nap->pg_thresh = 0; ++ else { ++ nap->pg_thresh = val; + nap->flags |= MNT2_NFS_OPT_PGTHRESH; ++ } + #endif /* MNT2_NFS_OPT_PGTHRESH */ + + #if defined(MNT2_NFS_OPT_POSIX) && defined(MNTTAB_OPT_POSIX) +@@ -1020,7 +1048,7 @@ compute_nfs23_args(nfs_args_t *nap, + + #ifdef HAVE_TRANSPORT_TYPE_TLI + /* set up syncaddr field */ +- nap->syncaddr = (struct netbuf *) NULL; ++ nap->syncaddr = NULL; + + /* set up knconf field */ + if (get_knetconfig(&nap->knconf, nfsncp, nfs_proto) < 0) { +@@ -1043,9 +1071,12 @@ compute_nfs23_args(nfs_args_t *nap, + #endif /* HAVE_NFS_ARGS_T_OPTSTR */ + + #if defined(MNT2_NFS_OPT_MAXGRPS) && defined(MNTTAB_OPT_MAXGROUPS) +- nap->maxgrouplist = hasmntval(mntp, MNTTAB_OPT_MAXGROUPS); +- if (nap->maxgrouplist != 0) ++ if (!hasmntval(mntp, MNTTAB_OPT_MAXGROUPS, &val) || val <= 0) ++ nap->maxgrouplist = 0; ++ else { ++ nap->maxgrouplist = val; + nap->flags |= MNT2_NFS_OPT_MAXGRPS; ++ } + #endif /* defined(MNT2_NFS_OPT_MAXGRPS) && defined(MNTTAB_OPT_MAXGROUPS) */ + + /************************************************************************/ +@@ -1267,6 +1298,7 @@ compute_nfs4_args(nfs4_args_t *nap, + { + char *s; + struct nfs_common_args a; ++ int val; + uint16_t nfs_port; + + /* initialize just in case */ +@@ -1304,11 +1336,10 @@ compute_nfs4_args(nfs4_args_t *nap, + nap->host_addr = xmalloc(nap->host_addrlen); + memcpy(nap->host_addr, ip_addr, nap->host_addrlen); + +- nfs_port = hasmntval(mntp, MNTTAB_OPT_PORT); +- if (nfs_port == 0) ++ if (!hasmntval(mntp, MNTTAB_OPT_PORT, &val) || val <= 0 || val > 65536) + nfs_port = htons(NFS_PORT); + else +- nfs_port = htons(nfs_port); ++ nfs_port = htons(val); + + ((struct sockaddr_in *)nap->host_addr)->sin_port = nfs_port; + +@@ -1341,9 +1372,13 @@ compute_nfs4_args(nfs4_args_t *nap, + #endif /* MNT2_NFS_OPT_POSIX && MNTTAB_OPT_POSIX */ + + #if defined(MNT2_NFS_OPT_MAXGRPS) && defined(MNTTAB_OPT_MAXGROUPS) +- nap->maxgrouplist = hasmntval(mntp, MNTTAB_OPT_MAXGROUPS); +- if (nap->maxgrouplist != 0) ++ nap->maxgrouplist = ++ if (!hasmntval(mntp, MNTTAB_OPT_MAXGROUPS, &val) || val <= 0) ++ nap->maxgrouplist = 0; ++ else { ++ nap->maxgrouplist = val; + nap->flags |= MNT2_NFS_OPT_MAXGRPS; ++ } + #endif /* defined(MNT2_NFS_OPT_MAXGRPS) && defined(MNTTAB_OPT_MAXGROUPS) */ + + #ifdef HAVE_NFS_ARGS_T_OPTSTR +--- am-utils-6.2.orig/libamu/mtab.c ++++ am-utils-6.2/libamu/mtab.c +@@ -133,22 +133,12 @@ hasmnteq(mntent_t *mnt, char *opt) + + + /* +- * Wrapper around hasmntvalerr(), which retains backwards compatibiliy with +- * older use of hasmntval(). +- * +- * XXX: eventually, all use of hasmntval() should be replaced with +- * hasmntvalerr(). ++ * Wrapper around hasmntvaldelim(), which uses the standard "," delim + */ + int +-hasmntval(mntent_t *mnt, char *opt) ++hasmntval(mntent_t *mnt, char *opt, int *valp) + { +- int err, val = 0; +- +- err = hasmntvalerr(mnt, opt, &val); +- if (err) /* if there was an error (hasmntvalerr returned 1) */ +- return 0; /* redundant: val==0 above, but leave here for clarity */ +- /* otherwise there was no error */ +- return val; ++ return hasmntvaldelim(mnt, opt, ",", valp); + } + + +@@ -158,36 +148,31 @@ hasmntval(mntent_t *mnt, char *opt) + * valp (argument won't be touched if no value is set, for example due to an + * error). + * +- * Returns non-zero (1) on error; returns 0 on success. +- * +- * XXX: eventually, all use of hasmntval() should be replaced with +- * hasmntvalerr(). ++ * Returns 0 on error; returns 1 on success. + */ +-unsigned int +-hasmntvalerr(mntent_t *mnt, char *opt, int *valp) ++int ++hasmntvaldelim(mntent_t *mnt, char *opt, const char *delim, int *valp) + { + char *str = amu_hasmntopt(mnt, opt); +- int err = 1; /* 1 means no good value was set (an error) */ + char *eq, *endptr; + long int i; + + /* exit if no option specificed */ +- if (!str) { +- goto out; +- } ++ if (!str) ++ return 0; + + eq = hasmnteq(mnt, opt); + + if (!eq) { /* no argument to option ('=' sign was missing) */ + plog(XLOG_MAP, "numeric option to \"%s\" missing", opt); +- goto out; ++ return 0; + } + + /* if got here, then we had an '=' after option name */ + endptr = NULL; + i = strtol(eq, &endptr, 0); /* hex and octal allowed ;-) */ + if (!endptr || +- (endptr != eq && (*endptr == ',' || *endptr == '\0'))) { ++ (endptr != eq && (*endptr == '\0' || strchr(delim, *endptr)))) { + /* + * endptr set means strtol saw a non-digit. If the non-digit is a + * comma, it's probably the start of the next option. If the comma is +@@ -198,15 +183,13 @@ hasmntvalerr(mntent_t *mnt, char *opt, i + * string. + */ + *valp = (int) i; /* set good value */ +- err = 0; /* no error */ ++ return 1; + } else { + /* whatever was after the '=' sign wasn't a number */ + plog(XLOG_MAP, "invalid numeric option in \"%s\": \"%s\"", opt, str); + /* fall through to error/exit processing */ ++ return 0; + } +- +- out: +- return err; + } + + diff --git a/am-utils-6.2-There-is-really-no-ti-rpc-nfsv4-so-dont-send-one.patch b/am-utils-6.2-There-is-really-no-ti-rpc-nfsv4-so-dont-send-one.patch new file mode 100644 index 0000000..78ba30b --- /dev/null +++ b/am-utils-6.2-There-is-really-no-ti-rpc-nfsv4-so-dont-send-one.patch @@ -0,0 +1,45 @@ +commit e7d1bd38b1d1de6b1bec603eeff915ebb57f3c37 +Author: zoulasc +Date: Thu Mar 10 17:50:34 2016 -0500 + + - There is really no ti-rpc nfsv4, so don't send one; instead send a v3 for now. + +diff --git a/amd/srvr_nfs.c b/amd/srvr_nfs.c +index b7c852c..1418a1a 100644 +--- a/amd/srvr_nfs.c ++++ b/amd/srvr_nfs.c +@@ -140,6 +140,7 @@ create_ping_payload(u_long nfs_version) + { + XDR ping_xdr; + struct rpc_msg ping_msg; ++ int rpc_version; + + /* + * Non nfs mounts like /afs/glue.umd.edu have ended up here. +@@ -150,7 +151,17 @@ create_ping_payload(u_long nfs_version) + } else + plog(XLOG_INFO, "%s: nfs_version: %d", __func__, (int) nfs_version); + +- rpc_msg_init(&ping_msg, NFS_PROGRAM, nfs_version, NFSPROC_NULL); ++ /* ++ * There is really no ti-rpc version for NFSv4; most servers respond ++ * with "program unavailable", which is ok since we don't check the ++ * payload, we just care about the pings. Some servers though are ++ * antisocial (Isilon) and don't respond (which is their right to do). ++ * Eventually we should make a new mechanism to do server pings for ++ * NFSv4, but for now it is easiest to downgrade the RPC version to 3. ++ */ ++ rpc_version = nfs_version == 4 ? 3 : nfs_version; ++ ++ rpc_msg_init(&ping_msg, NFS_PROGRAM, rpc_version, NFSPROC_NULL); + + /* + * Create an XDR endpoint +@@ -600,6 +611,7 @@ nfs_keepalive(voidp v) + case ENETUNREACH: + case EHOSTDOWN: + case EHOSTUNREACH: ++ dlog("Failed to NFS ping to %s (%d)", fs->fs_host, error); + np->np_ping = MAX_ALLOWED_PINGS; /* immediately down */ + np->np_ttl = (time_t) 0; + /* diff --git a/am-utils-6.2-Update-the-ctime-of-the-directory-too-since-it-changed.patch b/am-utils-6.2-Update-the-ctime-of-the-directory-too-since-it-changed.patch new file mode 100644 index 0000000..64fbaff --- /dev/null +++ b/am-utils-6.2-Update-the-ctime-of-the-directory-too-since-it-changed.patch @@ -0,0 +1,30 @@ +commit ad416c8656c2dff6f1bcffee8517284de94c9d92 +Author: zoulasc +Date: Thu May 12 10:21:55 2016 -0400 + + Update the ctime of the directory too, since it changed. From Mark Davies + +diff --git a/amd/autil.c b/amd/autil.c +index 35d8708..f44a0e2 100644 +--- a/amd/autil.c ++++ b/amd/autil.c +@@ -183,6 +183,7 @@ forcibly_timeout_mp(am_node *mp) + * more. + */ + clocktime(&mp->am_parent->am_fattr.na_mtime); ++ mp->am_parent->am_fattr.na_ctime = mp->am_parent->am_fattr.na_mtime; + reschedule_timeout_mp(); + } + } +@@ -312,8 +313,10 @@ am_mounted(am_node *mp) + /* + * Update mtime of parent node (copying "struct nfstime" in '=' below) + */ +- if (mp->am_parent && mp->am_parent->am_al->al_mnt) ++ if (mp->am_parent && mp->am_parent->am_al->al_mnt) { + mp->am_parent->am_fattr.na_mtime = mp->am_fattr.na_mtime; ++ mp->am_parent->am_fattr.na_ctime = mp->am_fattr.na_mtime; ++ } + + /* + * This is ugly, but essentially unavoidable diff --git a/am-utils-6.2-add-NFSv3-nfs_quick_reply-functionality.patch b/am-utils-6.2-add-NFSv3-nfs_quick_reply-functionality.patch new file mode 100644 index 0000000..8aaf65f --- /dev/null +++ b/am-utils-6.2-add-NFSv3-nfs_quick_reply-functionality.patch @@ -0,0 +1,241 @@ +am-utils-6.2 - add NFSv3 nfs_quick_reply() functionality + +From: Ian Kent + +The implementation of the NFS v3 server does not use the hack needed +by the nfs_quick_reply() function. + +Now that saving the current transort for later use by nfs_quick_reply() +avoids concurrency races it should be ok to use it. + +Signed-off-by: Ian Kent +--- + amd/nfs_prot_svc.c | 13 +++++ + amd/nfs_subr.c | 137 +++++++++++++++++++++++++++++++++++++++++----------- + 2 files changed, 120 insertions(+), 30 deletions(-) + +diff --git a/amd/nfs_prot_svc.c b/amd/nfs_prot_svc.c +index cbde172..29b7551 100644 +--- a/amd/nfs_prot_svc.c ++++ b/amd/nfs_prot_svc.c +@@ -180,7 +180,7 @@ nfs_program_2(struct svc_req *rqstp, SVCXPRT *transp) + xdr_result = (xdrproc_t) xdr_diropres; + local = (nfssvcproc_t) nfsproc_lookup_2_svc; + /* +- * Cheap way to pass transp down to amfs_auto_lookuppn so it can ++ * Cheap way to pass transp down to amfs_auto_lookup so it can + * be stored in the am_node structure and later used for + * quick_reply(). + */ +@@ -327,6 +327,8 @@ nfs_program_3(struct svc_req *rqstp, register SVCXPRT *transp) + xdrproc_t _xdr_argument, _xdr_result; + nfssvcproc_t local; + ++ current_transp = NULL; ++ + switch (rqstp->rq_proc) { + case AM_NFS3_NULL: + _xdr_argument = (xdrproc_t) xdr_void; +@@ -350,6 +352,12 @@ nfs_program_3(struct svc_req *rqstp, register SVCXPRT *transp) + _xdr_argument = (xdrproc_t) xdr_am_LOOKUP3args; + _xdr_result = (xdrproc_t) xdr_am_LOOKUP3res; + local = (nfssvcproc_t) (char *(*)(char *, struct svc_req *)) am_nfs3_lookup_3_svc; ++ /* ++ * Cheap way to pass transp down to amfs_auto_lookup so it can ++ * be stored in the am_node structure and later used for ++ * quick_reply(). ++ */ ++ current_transp = transp; + break; + + case AM_NFS3_ACCESS: +@@ -476,6 +484,9 @@ nfs_program_3(struct svc_req *rqstp, register SVCXPRT *transp) + } + + result = (*local) (&argument, rqstp); ++ ++ current_transp = NULL; ++ + if (result != NULL && !svc_sendreply(transp, (xdrproc_t) _xdr_result, result)) { + svcerr_systemerr (transp); + } +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index 07d960d..a383618 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -87,6 +87,9 @@ struct am_fh3 { + }; + + /* forward declarations */ ++static int nfs_quick_reply2(am_node *mp, int error); ++static int nfs_quick_reply3(am_node *mp, int error); ++ + /* converting am-filehandles to mount-points */ + static am_node *fh_to_mp3(am_nfs_fh *fhp, int *rp, int vop); + static am_node *fh_to_mp(am_nfs_fh *fhp); +@@ -255,46 +258,65 @@ nfsproc_lookup_2_svc(nfsdiropargs *argp, struct svc_req *rqstp) + return &res; + } + +- + void + nfs_quick_reply(am_node *mp, int error) + { +- SVCXPRT *transp = mp->am_transp; +- nfsdiropres res; +- xdrproc_t xdr_result = (xdrproc_t) xdr_diropres; ++ int ret; + + /* +- * If there's a transp structure then we can reply to the client's +- * nfs lookup request. ++ * If there's no transp structure then we can't reply to the ++ * client's nfs lookup request. + */ +- if (transp) { +- if (error == 0) { +- /* +- * Construct a valid reply to a lookup request. Same +- * code as in nfsproc_lookup_2_svc() above. +- */ +- mp_to_fh(mp, &res.dr_u.dr_drok_u.drok_fhandle); +- res.dr_u.dr_drok_u.drok_attributes = mp->am_fattr; +- res.dr_status = NFS_OK; +- } else +- /* +- * Return the error that was passed to us. +- */ +- res.dr_status = nfs_error(error); ++ if (!mp->am_transp) ++ return; ++ ++ if (nfs_dispatcher == nfs_program_2) ++ ret = nfs_quick_reply2(mp, error); ++ else ++ ret = nfs_quick_reply3(mp, error); ++ ++ if (!ret) ++ svcerr_systemerr(mp->am_transp); ++ ++ /* ++ * Free up transp. It's only used for one reply. ++ */ ++ put_nfs_xprt(mp->am_transp); ++ mp->am_transp = NULL; ++ dlog("Quick reply sent for %s", mp->am_al->al_mnt->mf_mount); ++} + ++ ++static int ++nfs_quick_reply2(am_node *mp, int error) ++{ ++ SVCXPRT *transp = mp->am_transp; ++ nfsdiropres res; ++ xdrproc_t xdr_result = (xdrproc_t) xdr_diropres; ++ int ret; ++ ++ if (error == 0) { + /* +- * Send off our reply ++ * Construct a valid reply to a lookup request. Same ++ * code as in nfsproc_lookup_2_svc() above. + */ +- if (!svc_sendreply(transp, (XDRPROC_T_TYPE) xdr_result, (SVC_IN_ARG_TYPE) & res)) +- svcerr_systemerr(transp); +- ++ mp_to_fh(mp, &res.dr_u.dr_drok_u.drok_fhandle); ++ res.dr_u.dr_drok_u.drok_attributes = mp->am_fattr; ++ res.dr_status = NFS_OK; ++ } else + /* +- * Free up transp. It's only used for one reply. ++ * Return the error that was passed to us. + */ +- put_nfs_xprt(mp->am_transp); +- mp->am_transp = NULL; +- dlog("Quick reply sent for %s", mp->am_al->al_mnt->mf_mount); +- } ++ res.dr_status = nfs_error(error); ++ ++ /* ++ * Send off our reply ++ */ ++ ret = svc_sendreply(transp, ++ (XDRPROC_T_TYPE) xdr_result, ++ (SVC_IN_ARG_TYPE) & res); ++ ++ return ret; + } + + +@@ -890,6 +912,8 @@ mp_to_fh(am_node *mp, am_nfs_fh *fhp) + /* dlog("mp_to_fh: old filehandle: %d", fp->u.s.fhh_id); */ + } + } ++ ++ + void + mp_to_fh3(am_node *mp, am_nfs_fh3 *fhp) + { +@@ -1257,6 +1281,61 @@ am_nfs3_lookup_3_svc(am_LOOKUP3args *argp, struct svc_req *rqstp) + return &result; + } + ++ ++static int ++nfs_quick_reply3(am_node *mp, int error) ++{ ++ SVCXPRT *transp = mp->am_transp; ++ xdrproc_t xdr_result = (xdrproc_t) xdr_am_LOOKUP3res; ++ am_LOOKUP3res result; ++ am_post_op_attr *post_op_dir; ++ am_post_op_attr *post_op_obj; ++ int ret; ++ ++ if (error) { ++ /* ++ * Return the error that was passed to us. ++ */ ++ post_op_dir->attributes_follow = 0; ++ result.status = nfs_error(error); ++ } else { ++ post_op_dir = &result.res_u.ok.dir_attributes; ++ post_op_obj = &result.res_u.ok.obj_attributes; ++ am_fattr3 *fattr3; ++ nfsfattr *fattr; ++ ++ /* ++ * Construct a valid reply to a lookup request. Same ++ * code as in am_nfs3_lookup_3_svc() above. ++ */ ++ ++ /* dir attributes */ ++ post_op_dir->attributes_follow = 1; ++ fattr3 = &post_op_dir->am_post_op_attr_u.attributes; ++ parent_fattr_to_fattr3(mp, fattr3); ++ ++ mp_to_fh3(mp, &result.res_u.ok.object); ++ ++ /* mount attributes */ ++ post_op_obj->attributes_follow = 1; ++ fattr = &mp->am_fattr; ++ fattr3 = &post_op_obj->am_post_op_attr_u.attributes; ++ fattr_to_fattr3(fattr, fattr3); ++ ++ result.status = AM_NFS3_OK; ++ } ++ ++ /* ++ * Send off our reply ++ */ ++ ret = svc_sendreply(transp, ++ (XDRPROC_T_TYPE) xdr_result, ++ (SVC_IN_ARG_TYPE) &result); ++ ++ return ret; ++} ++ ++ + am_ACCESS3res * + am_nfs3_access_3_svc(am_ACCESS3args *argp, struct svc_req *rqstp) + { diff --git a/am-utils-6.2-add-NFSv3-rpc-request-validation.patch b/am-utils-6.2-add-NFSv3-rpc-request-validation.patch new file mode 100644 index 0000000..f5968e1 --- /dev/null +++ b/am-utils-6.2-add-NFSv3-rpc-request-validation.patch @@ -0,0 +1,127 @@ +am-utils-6.2 - add NFSv3 rpc request validation + +From: Ian Kent + +The NFS v2 internal server uses several validation checks for each +RPC request it receives, also add this validation for the NFS v3 +internal server. + +Signed-off-by: Ian Kent +--- + amd/nfs_prot_svc.c | 65 +++++++++++++++++++++++++++++++--------------------- + 1 file changed, 39 insertions(+), 26 deletions(-) + +diff --git a/amd/nfs_prot_svc.c b/amd/nfs_prot_svc.c +index 29b7551..cae12d4 100644 +--- a/amd/nfs_prot_svc.c ++++ b/amd/nfs_prot_svc.c +@@ -71,30 +71,9 @@ dispatcher_t nfs_dispatcher = nfs_program_2; + typedef char *(*nfssvcproc_t)(voidp, struct svc_req *); + + +-void +-nfs_program_2(struct svc_req *rqstp, SVCXPRT *transp) ++static int ++validate_rpc_request(struct svc_req *rqstp, SVCXPRT *transp) + { +- union { +- am_nfs_fh nfsproc_getattr_2_arg; +- nfssattrargs nfsproc_setattr_2_arg; +- nfsdiropargs nfsproc_lookup_2_arg; +- am_nfs_fh nfsproc_readlink_2_arg; +- nfsreadargs nfsproc_read_2_arg; +- nfswriteargs nfsproc_write_2_arg; +- nfscreateargs nfsproc_create_2_arg; +- nfsdiropargs nfsproc_remove_2_arg; +- nfsrenameargs nfsproc_rename_2_arg; +- nfslinkargs nfsproc_link_2_arg; +- nfssymlinkargs nfsproc_symlink_2_arg; +- nfscreateargs nfsproc_mkdir_2_arg; +- nfsdiropargs fsproc_rmdir_2_arg; +- nfsreaddirargs nfsproc_readdir_2_arg; +- am_nfs_fh nfsproc_statfs_2_arg; +- } argument; +- char *result; +- xdrproc_t xdr_argument, xdr_result; +- nfssvcproc_t local; +- + #ifdef HAVE_TRANSPORT_TYPE_TLI + /* + * On TLI systems we don't use an INET network type, but a "ticlts" (see +@@ -109,7 +88,7 @@ nfs_program_2(struct svc_req *rqstp, SVCXPRT *transp) + extern int __rpc_get_local_uid(SVCXPRT *transp, uid_t *uid); + if (__rpc_get_local_uid(transp, &u) >= 0 && u != 0) { + plog(XLOG_WARNING, "ignoring request from UID %ld, must be 0", (long) u); +- return; ++ return 0; + } + # else /* not HAVE___RPC_GET_LOCAL_UID */ + dlog("cannot verify local uid for rpc request"); +@@ -126,7 +105,7 @@ nfs_program_2(struct svc_req *rqstp, SVCXPRT *transp) + plog(XLOG_WARNING, "ignoring request from %s:%u, port not reserved", + inet_dquad(dq, sizeof(dq), sinp->sin_addr.s_addr), + ntohs(sinp->sin_port)); +- return; ++ return 0; + } + # endif /* MNT2_NFS_OPT_RESVPORT */ + /* if the address does not match, ignore the request */ +@@ -136,16 +115,47 @@ nfs_program_2(struct svc_req *rqstp, SVCXPRT *transp) + plog(XLOG_WARNING, "ignoring request from %s:%u, not a local interface", + inet_dquad(dq, sizeof(dq), sinp->sin_addr.s_addr), + ntohs(sinp->sin_port)); ++ return 0; + } + } else { + plog(XLOG_WARNING, "ignoring request from %s:%u, expected %s", + inet_dquad(dq, sizeof(dq), sinp->sin_addr.s_addr), + ntohs(sinp->sin_port), + inet_dquad(dq2, sizeof(dq2), myipaddr.s_addr)); +- return; ++ return 0; + } + } + #endif /* not HAVE_TRANPORT_TYPE_TLI */ ++ return 1; ++} ++ ++ ++void ++nfs_program_2(struct svc_req *rqstp, SVCXPRT *transp) ++{ ++ union { ++ am_nfs_fh nfsproc_getattr_2_arg; ++ nfssattrargs nfsproc_setattr_2_arg; ++ nfsdiropargs nfsproc_lookup_2_arg; ++ am_nfs_fh nfsproc_readlink_2_arg; ++ nfsreadargs nfsproc_read_2_arg; ++ nfswriteargs nfsproc_write_2_arg; ++ nfscreateargs nfsproc_create_2_arg; ++ nfsdiropargs nfsproc_remove_2_arg; ++ nfsrenameargs nfsproc_rename_2_arg; ++ nfslinkargs nfsproc_link_2_arg; ++ nfssymlinkargs nfsproc_symlink_2_arg; ++ nfscreateargs nfsproc_mkdir_2_arg; ++ nfsdiropargs fsproc_rmdir_2_arg; ++ nfsreaddirargs nfsproc_readdir_2_arg; ++ am_nfs_fh nfsproc_statfs_2_arg; ++ } argument; ++ char *result; ++ xdrproc_t xdr_argument, xdr_result; ++ nfssvcproc_t local; ++ ++ if (!validate_rpc_request(rqstp, transp)) ++ return; + + current_transp = NULL; + +@@ -327,6 +337,9 @@ nfs_program_3(struct svc_req *rqstp, register SVCXPRT *transp) + xdrproc_t _xdr_argument, _xdr_result; + nfssvcproc_t local; + ++ if (!validate_rpc_request(rqstp, transp)) ++ return; ++ + current_transp = NULL; + + switch (rqstp->rq_proc) { diff --git a/am-utils-6.2-add-debug-log-trace-to-NFSv3-readdirplus.patch b/am-utils-6.2-add-debug-log-trace-to-NFSv3-readdirplus.patch new file mode 100644 index 0000000..41e23e3 --- /dev/null +++ b/am-utils-6.2-add-debug-log-trace-to-NFSv3-readdirplus.patch @@ -0,0 +1,25 @@ +am-utils-6.2 - add debug log trace to NFSv3 readdirplus + +From: Ian Kent + +Add log trace print to NFSv3 readdirplus for debuging purposes. + +Signed-off-by: Ian Kent +--- + amd/nfs_subr.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index 30effba..ef07a4a 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -1642,6 +1642,9 @@ am_nfs3_readdirplus_3_svc(am_READDIRPLUS3args *argp, struct svc_req *rqstp) + am_node *mp; + int retry; + ++ if (amuDebug(D_TRACE)) ++ plog(XLOG_DEBUG, "readdirplus_3:"); ++ + mp = fh3_to_mp3(dir, &retry, VLOOK_CREATE); + if (mp == NULL) { + if (retry < 0) { diff --git a/am-utils-6.2-add-get_nfs_xprt-and-put_nfs_xprt-functions.patch b/am-utils-6.2-add-get_nfs_xprt-and-put_nfs_xprt-functions.patch new file mode 100644 index 0000000..c24b20e --- /dev/null +++ b/am-utils-6.2-add-get_nfs_xprt-and-put_nfs_xprt-functions.patch @@ -0,0 +1,170 @@ +am-utils-6.2 - add get_nfs_xprt() and put_nfs_xprt() functions + +From: Ian Kent + +The nfs_quick_reply() functionality relies on taking a copy of the +current transport for later use. + +The problem with this is the context of the RPC message is kept in +the transport and if any RPC message arrives before nfs_quick_reply() +is called that context will be corrupted. + +So add a function get_nfs_xprt() to replace the current transport +with a new one returning the passed in transort so nfs_quick_reply() +can use it later. + +A function put_nfs_xprt() is also added (although not really needed +since it just destroys the now unused transport) for completeness. + +Signed-off-by: Ian Kent +--- + conf/transp/transp_sockets.c | 44 ++++++++++++++++++++++++++++++++++++++++ + conf/transp/transp_tli.c | 46 +++++++++++++++++++++++++++++++++++++++++- + include/am_utils.h | 2 ++ + 3 files changed, 91 insertions(+), 1 deletion(-) + +diff --git a/conf/transp/transp_sockets.c b/conf/transp/transp_sockets.c +index 6326007..a6e0054 100644 +--- a/conf/transp/transp_sockets.c ++++ b/conf/transp/transp_sockets.c +@@ -45,6 +45,7 @@ + #include + #include + ++static int soNFS = RPC_ANYSOCK; + + /* + * find the IP address that can be used to connect to the local host +@@ -273,9 +274,52 @@ create_nfs_service(int *soNFSp, u_short *nfs_portp, SVCXPRT **nfs_xprtp, void (* + return 3; + } + ++ soNFS = *soNFSp; ++ + return 0; /* all is well */ + } + ++/* ++ * Get a pointer to the current NFS SVCXPRT and replace it ++ * with a new one. ++ */ ++SVCXPRT * ++get_nfs_xprt(SVCXPRT *nfs_xprt) ++{ ++ SVCXPRT *newxprt; ++ int newfd; ++ ++ if (!nfs_xprt || soNFS == RPC_ANYSOCK) ++ return NULL; ++ ++ newfd = dup(soNFS); ++ if (newfd < 0) ++ return NULL; ++ ++ xprt_unregister(nfs_xprt); ++ newxprt = svcudp_create(newfd); ++ if (!newxprt) { ++ plog(XLOG_FATAL, "Can't switch to new transport"); ++ xprt_register(nfs_xprt); ++ close(newfd); ++ return NULL; ++ } ++ ++ soNFS = newfd; ++ ++ return nfs_xprt; ++} ++ ++/* ++ * Destroy a transport previously obtained by get_nfs_xprt(). ++ */ ++void put_nfs_xprt(SVCXPRT *nfs_xprt) ++{ ++ if (!nfs_xprt || soNFS == RPC_ANYSOCK) ++ return; ++ ++ svc_destroy(nfs_xprt); ++} + + /* + * Create the amq service for amd (both TCP and UDP) +diff --git a/conf/transp/transp_tli.c b/conf/transp/transp_tli.c +index d26a511..bfdb526 100644 +--- a/conf/transp/transp_tli.c ++++ b/conf/transp/transp_tli.c +@@ -45,7 +45,8 @@ + #include + #include + +-struct netconfig *nfsncp; ++struct netconfig *nfsncp = NULL; ++static int soNFS = RPC_ANYSOCK; + + + /* +@@ -456,9 +457,52 @@ create_nfs_service(int *soNFSp, u_short *nfs_portp, SVCXPRT **nfs_xprtp, void (* + return 1; + } + ++ soNFS = *soNFSp; ++ + return 0; /* all is well */ + } + ++/* ++ * Get a pointer to the current NFS SVCXPRT and replace it ++ * with a new one. ++ */ ++SVCXPRT * ++get_nfs_xprt(SVCXPRT *nfs_xprt) ++{ ++ SVCXPRT *newxprt; ++ int newfd; ++ ++ if (!nfs_xprt || soNFS == RPC_ANYSOCK) ++ return NULL; ++ ++ newfd = dup(soNFS); ++ if (newfd < 0) ++ return NULL; ++ ++ xprt_unregister(nfs_xprt); ++ newxprt = svc_tli_create(newfd, nfsncp, NULL, 0, 0); ++ if (!newxprt) { ++ plog(XLOG_FATAL, "Can't switch to new transport"); ++ xprt_register(nfs_xprt); ++ close(newfd); ++ return NULL; ++ } ++ ++ soNFS = newfd; ++ ++ return nfs_xprt; ++} ++ ++/* ++ * Destroy a transport previously obtained by get_nfs_xprt(). ++ */ ++void put_nfs_xprt(SVCXPRT *nfs_xprt) ++{ ++ if (!nfs_xprt || soNFS == RPC_ANYSOCK) ++ return; ++ ++ svc_destroy(nfs_xprt); ++} + + /* + * Bind to preferred AMQ port. +diff --git a/include/am_utils.h b/include/am_utils.h +index 0de881a..ff13c26 100644 +--- a/include/am_utils.h ++++ b/include/am_utils.h +@@ -378,6 +378,8 @@ extern void compute_nfs_args(void *nap, mntent_t *mntp, int genflags, struct net + extern void destroy_nfs_args(void *nap, u_long nfs_version); + extern int create_amq_service(int *udp_soAMQp, SVCXPRT **udp_amqpp, struct netconfig **udp_amqncpp, int *tcp_soAMQp, SVCXPRT **tcp_amqpp, struct netconfig **tcp_amqncpp, u_short preferred_amq_port); + extern int create_nfs_service(int *soNFSp, u_short *nfs_portp, SVCXPRT **nfs_xprtp, void (*dispatch_fxn)(struct svc_req *rqstp, SVCXPRT *transp), u_long nfs_version); ++extern SVCXPRT *get_nfs_xprt(SVCXPRT *nfs_xprt); ++extern void put_nfs_xprt(SVCXPRT *nfs_xprt); + extern int amu_svc_register(SVCXPRT *, u_long, u_long, void (*)(struct svc_req *, SVCXPRT *), u_long, struct netconfig *); + + #ifdef HAVE_TRANSPORT_TYPE_TLI diff --git a/am-utils-6.2-add-more-debugging-in-the-unmount-path.patch b/am-utils-6.2-add-more-debugging-in-the-unmount-path.patch new file mode 100644 index 0000000..ea310d0 --- /dev/null +++ b/am-utils-6.2-add-more-debugging-in-the-unmount-path.patch @@ -0,0 +1,94 @@ +commit a5ea57a64a1d70486e8d8ab2da944e50ca51b836 +Author: zoulasc +Date: Tue Mar 8 23:31:26 2016 -0500 + + - add more debugging in the unmount path + - if the EXPIRE_MULTI call fails, with EAGAIN, fail back to the EXPIRE call + seems to fix unmounting with nfsv4 volumes. + +diff --git a/conf/autofs/autofs_linux.c b/conf/autofs/autofs_linux.c +index d543979..5b4ac06 100644 +--- a/conf/autofs/autofs_linux.c ++++ b/conf/autofs/autofs_linux.c +@@ -365,6 +365,7 @@ autofs_expire_one(am_node *mp, char *name, autofs_wqt_t token) + + ap = find_ap(ap_path); + if (ap == NULL) { ++ dlog("%s: could not find %s", __func__, ap_path); + /* not found??? not sure what to do here... */ + send_fail(fh->ioctlfd, token); + goto out; +@@ -376,6 +377,7 @@ autofs_expire_one(am_node *mp, char *name, autofs_wqt_t token) + p->next = fh->pending_umounts; + fh->pending_umounts = p; + ++ dlog("%s: unmount for %s", __func__, ap_path); + unmount_mp(ap); + + out: +@@ -426,6 +428,7 @@ autofs_missing_one(am_node *mp, autofs_wqt_t wait_queue_token, char *name) + dlog("Mount still pending, not sending autofs reply yet"); + return; + } ++ dlog("%s: lookup failed for %s/%s", __func__, mp->am_path, name); + autofs_lookup_failed(mp, name); + } + mp->am_stats.s_lookup++; +@@ -872,15 +875,42 @@ autofs_compute_mount_flags(mntent_t *mnt) + return 0; + } + ++static int autofs_expire_4(am_node *mp) ++{ ++ struct autofs_packet_expire pkt; ++ autofs_fh_t *fh = mp->am_autofs_fh; ++ ++ dlog("Calling AUTOFS_IOC_EXPIRE"); ++ if (ioctl(fh->ioctlfd, AUTOFS_IOC_EXPIRE, &pkt) == -1) ++ { ++ dlog("AUTOFS_IOC_EXPIRE for %s failed %d", mp->am_path, errno); ++ return -1; ++ } ++ ++ autofs_handle_expire(mp, &pkt); ++ return 0; ++} ++ + + #if AUTOFS_MAX_PROTO_VERSION >= 4 + static int autofs_timeout_mp_task(void *arg) + { + am_node *mp = (am_node *)arg; + autofs_fh_t *fh = mp->am_autofs_fh; +- int now = 0; +- +- while (ioctl(fh->ioctlfd, AUTOFS_IOC_EXPIRE_MULTI, &now) == 0); ++ int how = AUTOFS_EXP_IMMEDIATE; ++ ++ for (;;) ++ { ++ dlog("Calling AUTOFS_IOC_EXPIRE_MULTI"); ++ if (ioctl(fh->ioctlfd, AUTOFS_IOC_EXPIRE_MULTI, &how) == -1) ++ { ++ dlog("AUTOFS_IOC_EXPIRE_MULTI for %s failed %d", mp->am_path, errno); ++ if (errno != EAGAIN) ++ break; ++ if (autofs_expire_4(mp) == -1) ++ break; ++ } ++ } + return 0; + } + #endif /* AUTOFS_MAX_PROTO_VERSION >= 4 */ +@@ -895,9 +925,8 @@ void autofs_timeout_mp(am_node *mp) + mp->am_autofs_ttl = now + gopt.am_timeo_w; + + if (fh->version < 4) { +- struct autofs_packet_expire pkt; +- while (ioctl(fh->ioctlfd, AUTOFS_IOC_EXPIRE, &pkt) == 0) +- autofs_handle_expire(mp, &pkt); ++ while (autofs_expire_4(mp) == 0) ++ continue; + return; + } + diff --git a/am-utils-6.2-allow-old-autoconf-version.patch b/am-utils-6.2-allow-old-autoconf-version.patch new file mode 100644 index 0000000..9b0edae --- /dev/null +++ b/am-utils-6.2-allow-old-autoconf-version.patch @@ -0,0 +1,12 @@ +diff -up am-utils-6.2/bootstrap.autoconf-version am-utils-6.2/bootstrap +--- am-utils-6.2/bootstrap.autoconf-version 2016-01-24 10:15:30.064158815 +0800 ++++ am-utils-6.2/bootstrap 2016-01-24 10:16:00.884635887 +0800 +@@ -8,7 +8,7 @@ + validateversion() { + local v="$(autoreconf --version 2>&1 | head -1)" + case "$v" in +- *2.69) ;; ++ *2.63) ;; + *) echo "am-utils requires autoconf 2.69, you have:" + echo " $v" + exit 1;; diff --git a/am-utils-6.2-dont-include-auto-generated-macros-in-aclinlude_m4.patch b/am-utils-6.2-dont-include-auto-generated-macros-in-aclinlude_m4.patch new file mode 100644 index 0000000..fef63f9 --- /dev/null +++ b/am-utils-6.2-dont-include-auto-generated-macros-in-aclinlude_m4.patch @@ -0,0 +1,8057 @@ +Move libtool macro functions from m4/macros to m4 and delete + +From: Christos Zoulas + +the repository copies. Makes am-utils work with libtool-2.4.4 +and fixes the serial number warnings (raven at themaw.net) +--- + ChangeLog | 6 + Makefile.am | 2 + configure.ac | 2 + m4/macros/libtool.m4 | 7997 -------------------------------------------------- + 4 files changed, 8 insertions(+), 7999 deletions(-) + delete mode 100644 m4/macros/libtool.m4 + +diff --git a/ChangeLog b/ChangeLog +index d996f8e..fd05087 100644 +--- a/ChangeLog ++++ b/ChangeLog +@@ -1,3 +1,9 @@ ++2015-01-17 Christos Zoulas ++ ++ * Move libtool macro functions from m4/macros to m4 and delete ++ the repository copies. Makes am-utils work with libtool-2.4.4 ++ and fixes the serial number warnings (raven at themaw.net) ++ + 2014-10-28 Christos Zoulas + + ******************************************************************* +diff --git a/Makefile.am b/Makefile.am +index 7e7082d..bae4615 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -6,7 +6,7 @@ + + @SET_MAKE@ + +-ACLOCAL_AMFLAGS = -I m4/macros ++ACLOCAL_AMFLAGS = -I m4 + + SUBDIRS = \ + libamu \ +diff --git a/configure.ac b/configure.ac +index 3d1bb00..ce61925 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -17,7 +17,7 @@ AC_INIT([am-utils], + [https://bugzilla.am-utils.org/ or am-utils@am-utils.org]) + AC_MSG_NOTICE(*** INITIALIZATION ***) + AC_CONFIG_SRCDIR([amd/amd.c]) +-AC_CONFIG_MACRO_DIR([m4/macros]) ++AC_CONFIG_MACRO_DIR([m4]) + AM_CONFIG_HEADER(config.h) + AH_TOP([ + /* +diff --git a/m4/macros/libtool.m4 b/m4/macros/libtool.m4 +deleted file mode 100644 +index d7c043f..0000000 +--- a/m4/macros/libtool.m4 ++++ /dev/null +@@ -1,7997 +0,0 @@ +-# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +-# +-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +-# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +-# Foundation, Inc. +-# Written by Gordon Matzigkeit, 1996 +-# +-# This file is free software; the Free Software Foundation gives +-# unlimited permission to copy and/or distribute it, with or without +-# modifications, as long as this notice is preserved. +- +-m4_define([_LT_COPYING], [dnl +-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +-# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +-# Foundation, Inc. +-# Written by Gordon Matzigkeit, 1996 +-# +-# This file is part of GNU Libtool. +-# +-# GNU Libtool is free software; you can redistribute it and/or +-# modify it under the terms of the GNU General Public License as +-# published by the Free Software Foundation; either version 2 of +-# the License, or (at your option) any later version. +-# +-# As a special exception to the GNU General Public License, +-# if you distribute this file as part of a program or library that +-# is built using GNU Libtool, you may include this file under the +-# same distribution terms that you use for the rest of that program. +-# +-# GNU Libtool is distributed in the hope that it will be useful, +-# but WITHOUT ANY WARRANTY; without even the implied warranty of +-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-# GNU General Public License for more details. +-# +-# You should have received a copy of the GNU General Public License +-# along with GNU Libtool; see the file COPYING. If not, a copy +-# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +-# obtained by writing to the Free Software Foundation, Inc., +-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +-]) +- +-# serial 57 LT_INIT +- +- +-# LT_PREREQ(VERSION) +-# ------------------ +-# Complain and exit if this libtool version is less that VERSION. +-m4_defun([LT_PREREQ], +-[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, +- [m4_default([$3], +- [m4_fatal([Libtool version $1 or higher is required], +- 63)])], +- [$2])]) +- +- +-# _LT_CHECK_BUILDDIR +-# ------------------ +-# Complain if the absolute build directory name contains unusual characters +-m4_defun([_LT_CHECK_BUILDDIR], +-[case `pwd` in +- *\ * | *\ *) +- AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +-esac +-]) +- +- +-# LT_INIT([OPTIONS]) +-# ------------------ +-AC_DEFUN([LT_INIT], +-[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +-AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +-AC_BEFORE([$0], [LT_LANG])dnl +-AC_BEFORE([$0], [LT_OUTPUT])dnl +-AC_BEFORE([$0], [LTDL_INIT])dnl +-m4_require([_LT_CHECK_BUILDDIR])dnl +- +-dnl Autoconf doesn't catch unexpanded LT_ macros by default: +-m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +-m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +-dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +-dnl unless we require an AC_DEFUNed macro: +-AC_REQUIRE([LTOPTIONS_VERSION])dnl +-AC_REQUIRE([LTSUGAR_VERSION])dnl +-AC_REQUIRE([LTVERSION_VERSION])dnl +-AC_REQUIRE([LTOBSOLETE_VERSION])dnl +-m4_require([_LT_PROG_LTMAIN])dnl +- +-_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) +- +-dnl Parse OPTIONS +-_LT_SET_OPTIONS([$0], [$1]) +- +-# This can be used to rebuild libtool when needed +-LIBTOOL_DEPS="$ltmain" +- +-# Always use our own libtool. +-LIBTOOL='$(SHELL) $(top_builddir)/libtool' +-AC_SUBST(LIBTOOL)dnl +- +-_LT_SETUP +- +-# Only expand once: +-m4_define([LT_INIT]) +-])# LT_INIT +- +-# Old names: +-AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +-AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +-dnl AC_DEFUN([AM_PROG_LIBTOOL], []) +- +- +-# _LT_CC_BASENAME(CC) +-# ------------------- +-# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +-m4_defun([_LT_CC_BASENAME], +-[for cc_temp in $1""; do +- case $cc_temp in +- compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; +- distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; +- \-*) ;; +- *) break;; +- esac +-done +-cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +-]) +- +- +-# _LT_FILEUTILS_DEFAULTS +-# ---------------------- +-# It is okay to use these file commands and assume they have been set +-# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. +-m4_defun([_LT_FILEUTILS_DEFAULTS], +-[: ${CP="cp -f"} +-: ${MV="mv -f"} +-: ${RM="rm -f"} +-])# _LT_FILEUTILS_DEFAULTS +- +- +-# _LT_SETUP +-# --------- +-m4_defun([_LT_SETUP], +-[AC_REQUIRE([AC_CANONICAL_HOST])dnl +-AC_REQUIRE([AC_CANONICAL_BUILD])dnl +-AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +-AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl +- +-_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl +-dnl +-_LT_DECL([], [host_alias], [0], [The host system])dnl +-_LT_DECL([], [host], [0])dnl +-_LT_DECL([], [host_os], [0])dnl +-dnl +-_LT_DECL([], [build_alias], [0], [The build system])dnl +-_LT_DECL([], [build], [0])dnl +-_LT_DECL([], [build_os], [0])dnl +-dnl +-AC_REQUIRE([AC_PROG_CC])dnl +-AC_REQUIRE([LT_PATH_LD])dnl +-AC_REQUIRE([LT_PATH_NM])dnl +-dnl +-AC_REQUIRE([AC_PROG_LN_S])dnl +-test -z "$LN_S" && LN_S="ln -s" +-_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +-dnl +-AC_REQUIRE([LT_CMD_MAX_LEN])dnl +-_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +-_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +-dnl +-m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-m4_require([_LT_CHECK_SHELL_FEATURES])dnl +-m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl +-m4_require([_LT_CMD_RELOAD])dnl +-m4_require([_LT_CHECK_MAGIC_METHOD])dnl +-m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl +-m4_require([_LT_CMD_OLD_ARCHIVE])dnl +-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +-m4_require([_LT_WITH_SYSROOT])dnl +- +-_LT_CONFIG_LIBTOOL_INIT([ +-# See if we are running on zsh, and set the options which allow our +-# commands through without removal of \ escapes INIT. +-if test -n "\${ZSH_VERSION+set}" ; then +- setopt NO_GLOB_SUBST +-fi +-]) +-if test -n "${ZSH_VERSION+set}" ; then +- setopt NO_GLOB_SUBST +-fi +- +-_LT_CHECK_OBJDIR +- +-m4_require([_LT_TAG_COMPILER])dnl +- +-case $host_os in +-aix3*) +- # AIX sometimes has problems with the GCC collect2 program. For some +- # reason, if we set the COLLECT_NAMES environment variable, the problems +- # vanish in a puff of smoke. +- if test "X${COLLECT_NAMES+set}" != Xset; then +- COLLECT_NAMES= +- export COLLECT_NAMES +- fi +- ;; +-esac +- +-# Global variables: +-ofile=libtool +-can_build_shared=yes +- +-# All known linkers require a `.a' archive for static linking (except MSVC, +-# which needs '.lib'). +-libext=a +- +-with_gnu_ld="$lt_cv_prog_gnu_ld" +- +-old_CC="$CC" +-old_CFLAGS="$CFLAGS" +- +-# Set sane defaults for various variables +-test -z "$CC" && CC=cc +-test -z "$LTCC" && LTCC=$CC +-test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +-test -z "$LD" && LD=ld +-test -z "$ac_objext" && ac_objext=o +- +-_LT_CC_BASENAME([$compiler]) +- +-# Only perform the check for file, if the check method requires it +-test -z "$MAGIC_CMD" && MAGIC_CMD=file +-case $deplibs_check_method in +-file_magic*) +- if test "$file_magic_cmd" = '$MAGIC_CMD'; then +- _LT_PATH_MAGIC +- fi +- ;; +-esac +- +-# Use C for the default configuration in the libtool script +-LT_SUPPORTED_TAG([CC]) +-_LT_LANG_C_CONFIG +-_LT_LANG_DEFAULT_CONFIG +-_LT_CONFIG_COMMANDS +-])# _LT_SETUP +- +- +-# _LT_PREPARE_SED_QUOTE_VARS +-# -------------------------- +-# Define a few sed substitution that help us do robust quoting. +-m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +-[# Backslashify metacharacters that are still active within +-# double-quoted strings. +-sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' +- +-# Same as above, but do not quote variable references. +-double_quote_subst='s/\([["`\\]]\)/\\\1/g' +- +-# Sed substitution to delay expansion of an escaped shell variable in a +-# double_quote_subst'ed string. +-delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' +- +-# Sed substitution to delay expansion of an escaped single quote. +-delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' +- +-# Sed substitution to avoid accidental globbing in evaled expressions +-no_glob_subst='s/\*/\\\*/g' +-]) +- +-# _LT_PROG_LTMAIN +-# --------------- +-# Note that this code is called both from `configure', and `config.status' +-# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +-# `config.status' has no value for ac_aux_dir unless we are using Automake, +-# so we pass a copy along to make sure it has a sensible value anyway. +-m4_defun([_LT_PROG_LTMAIN], +-[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +-_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +-ltmain="$ac_aux_dir/ltmain.sh" +-])# _LT_PROG_LTMAIN +- +- +-## ------------------------------------- ## +-## Accumulate code for creating libtool. ## +-## ------------------------------------- ## +- +-# So that we can recreate a full libtool script including additional +-# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +-# in macros and then make a single call at the end using the `libtool' +-# label. +- +- +-# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +-# ---------------------------------------- +-# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +-m4_define([_LT_CONFIG_LIBTOOL_INIT], +-[m4_ifval([$1], +- [m4_append([_LT_OUTPUT_LIBTOOL_INIT], +- [$1 +-])])]) +- +-# Initialize. +-m4_define([_LT_OUTPUT_LIBTOOL_INIT]) +- +- +-# _LT_CONFIG_LIBTOOL([COMMANDS]) +-# ------------------------------ +-# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +-m4_define([_LT_CONFIG_LIBTOOL], +-[m4_ifval([$1], +- [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], +- [$1 +-])])]) +- +-# Initialize. +-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) +- +- +-# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +-# ----------------------------------------------------- +-m4_defun([_LT_CONFIG_SAVE_COMMANDS], +-[_LT_CONFIG_LIBTOOL([$1]) +-_LT_CONFIG_LIBTOOL_INIT([$2]) +-]) +- +- +-# _LT_FORMAT_COMMENT([COMMENT]) +-# ----------------------------- +-# Add leading comment marks to the start of each line, and a trailing +-# full-stop to the whole comment if one is not present already. +-m4_define([_LT_FORMAT_COMMENT], +-[m4_ifval([$1], [ +-m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], +- [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +-)]) +- +- +- +-## ------------------------ ## +-## FIXME: Eliminate VARNAME ## +-## ------------------------ ## +- +- +-# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +-# ------------------------------------------------------------------- +-# CONFIGNAME is the name given to the value in the libtool script. +-# VARNAME is the (base) name used in the configure script. +-# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +-# VARNAME. Any other value will be used directly. +-m4_define([_LT_DECL], +-[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], +- [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], +- [m4_ifval([$1], [$1], [$2])]) +- lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) +- m4_ifval([$4], +- [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) +- lt_dict_add_subkey([lt_decl_dict], [$2], +- [tagged?], [m4_ifval([$5], [yes], [no])])]) +-]) +- +- +-# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +-# -------------------------------------------------------- +-m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) +- +- +-# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +-# ------------------------------------------------ +-m4_define([lt_decl_tag_varnames], +-[_lt_decl_filter([tagged?], [yes], $@)]) +- +- +-# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +-# --------------------------------------------------------- +-m4_define([_lt_decl_filter], +-[m4_case([$#], +- [0], [m4_fatal([$0: too few arguments: $#])], +- [1], [m4_fatal([$0: too few arguments: $#: $1])], +- [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], +- [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], +- [lt_dict_filter([lt_decl_dict], $@)])[]dnl +-]) +- +- +-# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +-# -------------------------------------------------- +-m4_define([lt_decl_quote_varnames], +-[_lt_decl_filter([value], [1], $@)]) +- +- +-# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +-# --------------------------------------------------- +-m4_define([lt_decl_dquote_varnames], +-[_lt_decl_filter([value], [2], $@)]) +- +- +-# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +-# --------------------------------------------------- +-m4_define([lt_decl_varnames_tagged], +-[m4_assert([$# <= 2])dnl +-_$0(m4_quote(m4_default([$1], [[, ]])), +- m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), +- m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +-m4_define([_lt_decl_varnames_tagged], +-[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) +- +- +-# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +-# ------------------------------------------------ +-m4_define([lt_decl_all_varnames], +-[_$0(m4_quote(m4_default([$1], [[, ]])), +- m4_if([$2], [], +- m4_quote(lt_decl_varnames), +- m4_quote(m4_shift($@))))[]dnl +-]) +-m4_define([_lt_decl_all_varnames], +-[lt_join($@, lt_decl_varnames_tagged([$1], +- lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +-]) +- +- +-# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +-# ------------------------------------ +-# Quote a variable value, and forward it to `config.status' so that its +-# declaration there will have the same value as in `configure'. VARNAME +-# must have a single quote delimited value for this to work. +-m4_define([_LT_CONFIG_STATUS_DECLARE], +-[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) +- +- +-# _LT_CONFIG_STATUS_DECLARATIONS +-# ------------------------------ +-# We delimit libtool config variables with single quotes, so when +-# we write them to config.status, we have to be sure to quote all +-# embedded single quotes properly. In configure, this macro expands +-# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +-# +-# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' +-m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +-[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), +- [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) +- +- +-# _LT_LIBTOOL_TAGS +-# ---------------- +-# Output comment and list of tags supported by the script +-m4_defun([_LT_LIBTOOL_TAGS], +-[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +-available_tags="_LT_TAGS"dnl +-]) +- +- +-# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +-# ----------------------------------- +-# Extract the dictionary values for VARNAME (optionally with TAG) and +-# expand to a commented shell variable setting: +-# +-# # Some comment about what VAR is for. +-# visible_name=$lt_internal_name +-m4_define([_LT_LIBTOOL_DECLARE], +-[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], +- [description])))[]dnl +-m4_pushdef([_libtool_name], +- m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +-m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), +- [0], [_libtool_name=[$]$1], +- [1], [_libtool_name=$lt_[]$1], +- [2], [_libtool_name=$lt_[]$1], +- [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +-m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +-]) +- +- +-# _LT_LIBTOOL_CONFIG_VARS +-# ----------------------- +-# Produce commented declarations of non-tagged libtool config variables +-# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' +-# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +-# section) are produced by _LT_LIBTOOL_TAG_VARS. +-m4_defun([_LT_LIBTOOL_CONFIG_VARS], +-[m4_foreach([_lt_var], +- m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), +- [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) +- +- +-# _LT_LIBTOOL_TAG_VARS(TAG) +-# ------------------------- +-m4_define([_LT_LIBTOOL_TAG_VARS], +-[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), +- [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) +- +- +-# _LT_TAGVAR(VARNAME, [TAGNAME]) +-# ------------------------------ +-m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) +- +- +-# _LT_CONFIG_COMMANDS +-# ------------------- +-# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +-# variables for single and double quote escaping we saved from calls +-# to _LT_DECL, we can put quote escaped variables declarations +-# into `config.status', and then the shell code to quote escape them in +-# for loops in `config.status'. Finally, any additional code accumulated +-# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +-m4_defun([_LT_CONFIG_COMMANDS], +-[AC_PROVIDE_IFELSE([LT_OUTPUT], +- dnl If the libtool generation code has been placed in $CONFIG_LT, +- dnl instead of duplicating it all over again into config.status, +- dnl then we will have config.status run $CONFIG_LT later, so it +- dnl needs to know what name is stored there: +- [AC_CONFIG_COMMANDS([libtool], +- [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], +- dnl If the libtool generation code is destined for config.status, +- dnl expand the accumulated commands and init code now: +- [AC_CONFIG_COMMANDS([libtool], +- [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +-])#_LT_CONFIG_COMMANDS +- +- +-# Initialize. +-m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +-[ +- +-# The HP-UX ksh and POSIX shell print the target directory to stdout +-# if CDPATH is set. +-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH +- +-sed_quote_subst='$sed_quote_subst' +-double_quote_subst='$double_quote_subst' +-delay_variable_subst='$delay_variable_subst' +-_LT_CONFIG_STATUS_DECLARATIONS +-LTCC='$LTCC' +-LTCFLAGS='$LTCFLAGS' +-compiler='$compiler_DEFAULT' +- +-# A function that is used when there is no print builtin or printf. +-func_fallback_echo () +-{ +- eval 'cat <<_LTECHO_EOF +-\$[]1 +-_LTECHO_EOF' +-} +- +-# Quote evaled strings. +-for var in lt_decl_all_varnames([[ \ +-]], lt_decl_quote_varnames); do +- case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in +- *[[\\\\\\\`\\"\\\$]]*) +- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" +- ;; +- *) +- eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" +- ;; +- esac +-done +- +-# Double-quote double-evaled strings. +-for var in lt_decl_all_varnames([[ \ +-]], lt_decl_dquote_varnames); do +- case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in +- *[[\\\\\\\`\\"\\\$]]*) +- eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" +- ;; +- *) +- eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" +- ;; +- esac +-done +- +-_LT_OUTPUT_LIBTOOL_INIT +-]) +- +-# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +-# ------------------------------------ +-# Generate a child script FILE with all initialization necessary to +-# reuse the environment learned by the parent script, and make the +-# file executable. If COMMENT is supplied, it is inserted after the +-# `#!' sequence but before initialization text begins. After this +-# macro, additional text can be appended to FILE to form the body of +-# the child script. The macro ends with non-zero status if the +-# file could not be fully written (such as if the disk is full). +-m4_ifdef([AS_INIT_GENERATED], +-[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +-[m4_defun([_LT_GENERATED_FILE_INIT], +-[m4_require([AS_PREPARE])]dnl +-[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +-[lt_write_fail=0 +-cat >$1 <<_ASEOF || lt_write_fail=1 +-#! $SHELL +-# Generated by $as_me. +-$2 +-SHELL=\${CONFIG_SHELL-$SHELL} +-export SHELL +-_ASEOF +-cat >>$1 <<\_ASEOF || lt_write_fail=1 +-AS_SHELL_SANITIZE +-_AS_PREPARE +-exec AS_MESSAGE_FD>&1 +-_ASEOF +-test $lt_write_fail = 0 && chmod +x $1[]dnl +-m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT +- +-# LT_OUTPUT +-# --------- +-# This macro allows early generation of the libtool script (before +-# AC_OUTPUT is called), incase it is used in configure for compilation +-# tests. +-AC_DEFUN([LT_OUTPUT], +-[: ${CONFIG_LT=./config.lt} +-AC_MSG_NOTICE([creating $CONFIG_LT]) +-_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +-[# Run this file to recreate a libtool stub with the current configuration.]) +- +-cat >>"$CONFIG_LT" <<\_LTEOF +-lt_cl_silent=false +-exec AS_MESSAGE_LOG_FD>>config.log +-{ +- echo +- AS_BOX([Running $as_me.]) +-} >&AS_MESSAGE_LOG_FD +- +-lt_cl_help="\ +-\`$as_me' creates a local libtool stub from the current configuration, +-for use in further configure time tests before the real libtool is +-generated. +- +-Usage: $[0] [[OPTIONS]] +- +- -h, --help print this help, then exit +- -V, --version print version number, then exit +- -q, --quiet do not print progress messages +- -d, --debug don't remove temporary files +- +-Report bugs to ." +- +-lt_cl_version="\ +-m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +-m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +-configured by $[0], generated by m4_PACKAGE_STRING. +- +-Copyright (C) 2011 Free Software Foundation, Inc. +-This config.lt script is free software; the Free Software Foundation +-gives unlimited permision to copy, distribute and modify it." +- +-while test $[#] != 0 +-do +- case $[1] in +- --version | --v* | -V ) +- echo "$lt_cl_version"; exit 0 ;; +- --help | --h* | -h ) +- echo "$lt_cl_help"; exit 0 ;; +- --debug | --d* | -d ) +- debug=: ;; +- --quiet | --q* | --silent | --s* | -q ) +- lt_cl_silent=: ;; +- +- -*) AC_MSG_ERROR([unrecognized option: $[1] +-Try \`$[0] --help' for more information.]) ;; +- +- *) AC_MSG_ERROR([unrecognized argument: $[1] +-Try \`$[0] --help' for more information.]) ;; +- esac +- shift +-done +- +-if $lt_cl_silent; then +- exec AS_MESSAGE_FD>/dev/null +-fi +-_LTEOF +- +-cat >>"$CONFIG_LT" <<_LTEOF +-_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +-_LTEOF +- +-cat >>"$CONFIG_LT" <<\_LTEOF +-AC_MSG_NOTICE([creating $ofile]) +-_LT_OUTPUT_LIBTOOL_COMMANDS +-AS_EXIT(0) +-_LTEOF +-chmod +x "$CONFIG_LT" +- +-# configure is writing to config.log, but config.lt does its own redirection, +-# appending to config.log, which fails on DOS, as config.log is still kept +-# open by configure. Here we exec the FD to /dev/null, effectively closing +-# config.log, so it can be properly (re)opened and appended to by config.lt. +-lt_cl_success=: +-test "$silent" = yes && +- lt_config_lt_args="$lt_config_lt_args --quiet" +-exec AS_MESSAGE_LOG_FD>/dev/null +-$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +-exec AS_MESSAGE_LOG_FD>>config.log +-$lt_cl_success || AS_EXIT(1) +-])# LT_OUTPUT +- +- +-# _LT_CONFIG(TAG) +-# --------------- +-# If TAG is the built-in tag, create an initial libtool script with a +-# default configuration from the untagged config vars. Otherwise add code +-# to config.status for appending the configuration named by TAG from the +-# matching tagged config vars. +-m4_defun([_LT_CONFIG], +-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-_LT_CONFIG_SAVE_COMMANDS([ +- m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl +- m4_if(_LT_TAG, [C], [ +- # See if we are running on zsh, and set the options which allow our +- # commands through without removal of \ escapes. +- if test -n "${ZSH_VERSION+set}" ; then +- setopt NO_GLOB_SUBST +- fi +- +- cfgfile="${ofile}T" +- trap "$RM \"$cfgfile\"; exit 1" 1 2 15 +- $RM "$cfgfile" +- +- cat <<_LT_EOF >> "$cfgfile" +-#! $SHELL +- +-# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +-# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +-# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +-# NOTE: Changes made to this file will be lost: look at ltmain.sh. +-# +-_LT_COPYING +-_LT_LIBTOOL_TAGS +- +-# ### BEGIN LIBTOOL CONFIG +-_LT_LIBTOOL_CONFIG_VARS +-_LT_LIBTOOL_TAG_VARS +-# ### END LIBTOOL CONFIG +- +-_LT_EOF +- +- case $host_os in +- aix3*) +- cat <<\_LT_EOF >> "$cfgfile" +-# AIX sometimes has problems with the GCC collect2 program. For some +-# reason, if we set the COLLECT_NAMES environment variable, the problems +-# vanish in a puff of smoke. +-if test "X${COLLECT_NAMES+set}" != Xset; then +- COLLECT_NAMES= +- export COLLECT_NAMES +-fi +-_LT_EOF +- ;; +- esac +- +- _LT_PROG_LTMAIN +- +- # We use sed instead of cat because bash on DJGPP gets confused if +- # if finds mixed CR/LF and LF-only lines. Since sed operates in +- # text mode, it properly converts lines to CR/LF. This bash problem +- # is reportedly fixed, but why not run on old versions too? +- sed '$q' "$ltmain" >> "$cfgfile" \ +- || (rm -f "$cfgfile"; exit 1) +- +- _LT_PROG_REPLACE_SHELLFNS +- +- mv -f "$cfgfile" "$ofile" || +- (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") +- chmod +x "$ofile" +-], +-[cat <<_LT_EOF >> "$ofile" +- +-dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +-dnl in a comment (ie after a #). +-# ### BEGIN LIBTOOL TAG CONFIG: $1 +-_LT_LIBTOOL_TAG_VARS(_LT_TAG) +-# ### END LIBTOOL TAG CONFIG: $1 +-_LT_EOF +-])dnl /m4_if +-], +-[m4_if([$1], [], [ +- PACKAGE='$PACKAGE' +- VERSION='$VERSION' +- TIMESTAMP='$TIMESTAMP' +- RM='$RM' +- ofile='$ofile'], []) +-])dnl /_LT_CONFIG_SAVE_COMMANDS +-])# _LT_CONFIG +- +- +-# LT_SUPPORTED_TAG(TAG) +-# --------------------- +-# Trace this macro to discover what tags are supported by the libtool +-# --tag option, using: +-# autoconf --trace 'LT_SUPPORTED_TAG:$1' +-AC_DEFUN([LT_SUPPORTED_TAG], []) +- +- +-# C support is built-in for now +-m4_define([_LT_LANG_C_enabled], []) +-m4_define([_LT_TAGS], []) +- +- +-# LT_LANG(LANG) +-# ------------- +-# Enable libtool support for the given language if not already enabled. +-AC_DEFUN([LT_LANG], +-[AC_BEFORE([$0], [LT_OUTPUT])dnl +-m4_case([$1], +- [C], [_LT_LANG(C)], +- [C++], [_LT_LANG(CXX)], +- [Go], [_LT_LANG(GO)], +- [Java], [_LT_LANG(GCJ)], +- [Fortran 77], [_LT_LANG(F77)], +- [Fortran], [_LT_LANG(FC)], +- [Windows Resource], [_LT_LANG(RC)], +- [m4_ifdef([_LT_LANG_]$1[_CONFIG], +- [_LT_LANG($1)], +- [m4_fatal([$0: unsupported language: "$1"])])])dnl +-])# LT_LANG +- +- +-# _LT_LANG(LANGNAME) +-# ------------------ +-m4_defun([_LT_LANG], +-[m4_ifdef([_LT_LANG_]$1[_enabled], [], +- [LT_SUPPORTED_TAG([$1])dnl +- m4_append([_LT_TAGS], [$1 ])dnl +- m4_define([_LT_LANG_]$1[_enabled], [])dnl +- _LT_LANG_$1_CONFIG($1)])dnl +-])# _LT_LANG +- +- +-m4_ifndef([AC_PROG_GO], [ +-############################################################ +-# NOTE: This macro has been submitted for inclusion into # +-# GNU Autoconf as AC_PROG_GO. When it is available in # +-# a released version of Autoconf we should remove this # +-# macro and use it instead. # +-############################################################ +-m4_defun([AC_PROG_GO], +-[AC_LANG_PUSH(Go)dnl +-AC_ARG_VAR([GOC], [Go compiler command])dnl +-AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +-_AC_ARG_VAR_LDFLAGS()dnl +-AC_CHECK_TOOL(GOC, gccgo) +-if test -z "$GOC"; then +- if test -n "$ac_tool_prefix"; then +- AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) +- fi +-fi +-if test -z "$GOC"; then +- AC_CHECK_PROG(GOC, gccgo, gccgo, false) +-fi +-])#m4_defun +-])#m4_ifndef +- +- +-# _LT_LANG_DEFAULT_CONFIG +-# ----------------------- +-m4_defun([_LT_LANG_DEFAULT_CONFIG], +-[AC_PROVIDE_IFELSE([AC_PROG_CXX], +- [LT_LANG(CXX)], +- [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) +- +-AC_PROVIDE_IFELSE([AC_PROG_F77], +- [LT_LANG(F77)], +- [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) +- +-AC_PROVIDE_IFELSE([AC_PROG_FC], +- [LT_LANG(FC)], +- [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) +- +-dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +-dnl pulling things in needlessly. +-AC_PROVIDE_IFELSE([AC_PROG_GCJ], +- [LT_LANG(GCJ)], +- [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], +- [LT_LANG(GCJ)], +- [AC_PROVIDE_IFELSE([LT_PROG_GCJ], +- [LT_LANG(GCJ)], +- [m4_ifdef([AC_PROG_GCJ], +- [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) +- m4_ifdef([A][M_PROG_GCJ], +- [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) +- m4_ifdef([LT_PROG_GCJ], +- [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) +- +-AC_PROVIDE_IFELSE([AC_PROG_GO], +- [LT_LANG(GO)], +- [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) +- +-AC_PROVIDE_IFELSE([LT_PROG_RC], +- [LT_LANG(RC)], +- [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +-])# _LT_LANG_DEFAULT_CONFIG +- +-# Obsolete macros: +-AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +-AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +-AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +-AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +-AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +-dnl AC_DEFUN([AC_LIBTOOL_F77], []) +-dnl AC_DEFUN([AC_LIBTOOL_FC], []) +-dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +-dnl AC_DEFUN([AC_LIBTOOL_RC], []) +- +- +-# _LT_TAG_COMPILER +-# ---------------- +-m4_defun([_LT_TAG_COMPILER], +-[AC_REQUIRE([AC_PROG_CC])dnl +- +-_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +-_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +-_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +-_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl +- +-# If no C compiler was specified, use CC. +-LTCC=${LTCC-"$CC"} +- +-# If no C compiler flags were specified, use CFLAGS. +-LTCFLAGS=${LTCFLAGS-"$CFLAGS"} +- +-# Allow CC to be a program name with arguments. +-compiler=$CC +-])# _LT_TAG_COMPILER +- +- +-# _LT_COMPILER_BOILERPLATE +-# ------------------------ +-# Check for compiler boilerplate output or warnings with +-# the simple compiler test code. +-m4_defun([_LT_COMPILER_BOILERPLATE], +-[m4_require([_LT_DECL_SED])dnl +-ac_outfile=conftest.$ac_objext +-echo "$lt_simple_compile_test_code" >conftest.$ac_ext +-eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +-_lt_compiler_boilerplate=`cat conftest.err` +-$RM conftest* +-])# _LT_COMPILER_BOILERPLATE +- +- +-# _LT_LINKER_BOILERPLATE +-# ---------------------- +-# Check for linker boilerplate output or warnings with +-# the simple link test code. +-m4_defun([_LT_LINKER_BOILERPLATE], +-[m4_require([_LT_DECL_SED])dnl +-ac_outfile=conftest.$ac_objext +-echo "$lt_simple_link_test_code" >conftest.$ac_ext +-eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +-_lt_linker_boilerplate=`cat conftest.err` +-$RM -r conftest* +-])# _LT_LINKER_BOILERPLATE +- +-# _LT_REQUIRED_DARWIN_CHECKS +-# ------------------------- +-m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ +- case $host_os in +- rhapsody* | darwin*) +- AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) +- AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) +- AC_CHECK_TOOL([LIPO], [lipo], [:]) +- AC_CHECK_TOOL([OTOOL], [otool], [:]) +- AC_CHECK_TOOL([OTOOL64], [otool64], [:]) +- _LT_DECL([], [DSYMUTIL], [1], +- [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) +- _LT_DECL([], [NMEDIT], [1], +- [Tool to change global to local symbols on Mac OS X]) +- _LT_DECL([], [LIPO], [1], +- [Tool to manipulate fat objects and archives on Mac OS X]) +- _LT_DECL([], [OTOOL], [1], +- [ldd/readelf like tool for Mach-O binaries on Mac OS X]) +- _LT_DECL([], [OTOOL64], [1], +- [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) +- +- AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], +- [lt_cv_apple_cc_single_mod=no +- if test -z "${LT_MULTI_MODULE}"; then +- # By default we will add the -single_module flag. You can override +- # by either setting the environment variable LT_MULTI_MODULE +- # non-empty at configure time, or by adding -multi_module to the +- # link flags. +- rm -rf libconftest.dylib* +- echo "int foo(void){return 1;}" > conftest.c +- echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +--dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD +- $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +- -dynamiclib -Wl,-single_module conftest.c 2>conftest.err +- _lt_result=$? +- # If there is a non-empty error log, and "single_module" +- # appears in it, assume the flag caused a linker warning +- if test -s conftest.err && $GREP single_module conftest.err; then +- cat conftest.err >&AS_MESSAGE_LOG_FD +- # Otherwise, if the output was created with a 0 exit code from +- # the compiler, it worked. +- elif test -f libconftest.dylib && test $_lt_result -eq 0; then +- lt_cv_apple_cc_single_mod=yes +- else +- cat conftest.err >&AS_MESSAGE_LOG_FD +- fi +- rm -rf libconftest.dylib* +- rm -f conftest.* +- fi]) +- +- AC_CACHE_CHECK([for -exported_symbols_list linker flag], +- [lt_cv_ld_exported_symbols_list], +- [lt_cv_ld_exported_symbols_list=no +- save_LDFLAGS=$LDFLAGS +- echo "_main" > conftest.sym +- LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" +- AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], +- [lt_cv_ld_exported_symbols_list=yes], +- [lt_cv_ld_exported_symbols_list=no]) +- LDFLAGS="$save_LDFLAGS" +- ]) +- +- AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], +- [lt_cv_ld_force_load=no +- cat > conftest.c << _LT_EOF +-int forced_loaded() { return 2;} +-_LT_EOF +- echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD +- $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD +- echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD +- $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD +- echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD +- $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD +- cat > conftest.c << _LT_EOF +-int main() { return 0;} +-_LT_EOF +- echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD +- $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err +- _lt_result=$? +- if test -s conftest.err && $GREP force_load conftest.err; then +- cat conftest.err >&AS_MESSAGE_LOG_FD +- elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then +- lt_cv_ld_force_load=yes +- else +- cat conftest.err >&AS_MESSAGE_LOG_FD +- fi +- rm -f conftest.err libconftest.a conftest conftest.c +- rm -rf conftest.dSYM +- ]) +- case $host_os in +- rhapsody* | darwin1.[[012]]) +- _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; +- darwin1.*) +- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; +- darwin*) # darwin 5.x on +- # if running on 10.5 or later, the deployment target defaults +- # to the OS version, if on x86, and 10.4, the deployment +- # target defaults to 10.4. Don't you love it? +- case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in +- 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) +- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; +- 10.[[012]]*) +- _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; +- 10.*) +- _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; +- esac +- ;; +- esac +- if test "$lt_cv_apple_cc_single_mod" = "yes"; then +- _lt_dar_single_mod='$single_module' +- fi +- if test "$lt_cv_ld_exported_symbols_list" = "yes"; then +- _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' +- else +- _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' +- fi +- if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then +- _lt_dsymutil='~$DSYMUTIL $lib || :' +- else +- _lt_dsymutil= +- fi +- ;; +- esac +-]) +- +- +-# _LT_DARWIN_LINKER_FEATURES([TAG]) +-# --------------------------------- +-# Checks for linker and compiler features on darwin +-m4_defun([_LT_DARWIN_LINKER_FEATURES], +-[ +- m4_require([_LT_REQUIRED_DARWIN_CHECKS]) +- _LT_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_TAGVAR(hardcode_direct, $1)=no +- _LT_TAGVAR(hardcode_automatic, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +- if test "$lt_cv_ld_force_load" = "yes"; then +- _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' +- m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], +- [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) +- else +- _LT_TAGVAR(whole_archive_flag_spec, $1)='' +- fi +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" +- case $cc_basename in +- ifort*) _lt_dar_can_shared=yes ;; +- *) _lt_dar_can_shared=$GCC ;; +- esac +- if test "$_lt_dar_can_shared" = "yes"; then +- output_verbose_link_cmd=func_echo_all +- _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" +- _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" +- _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" +- _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" +- m4_if([$1], [CXX], +-[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then +- _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" +- _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" +- fi +-],[]) +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +-]) +- +-# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +-# ---------------------------------- +-# Links a minimal program and checks the executable +-# for the system default hardcoded library path. In most cases, +-# this is /usr/lib:/lib, but when the MPI compilers are used +-# the location of the communication and MPI libs are included too. +-# If we don't find anything, use the default library path according +-# to the aix ld manual. +-# Store the results from the different compilers for each TAGNAME. +-# Allow to override them for all tags through lt_cv_aix_libpath. +-m4_defun([_LT_SYS_MODULE_PATH_AIX], +-[m4_require([_LT_DECL_SED])dnl +-if test "${lt_cv_aix_libpath+set}" = set; then +- aix_libpath=$lt_cv_aix_libpath +-else +- AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], +- [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ +- lt_aix_libpath_sed='[ +- /Import File Strings/,/^$/ { +- /^0/ { +- s/^0 *\([^ ]*\) *$/\1/ +- p +- } +- }]' +- _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +- # Check for a 64-bit object if we didn't find anything. +- if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then +- _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +- fi],[]) +- if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then +- _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" +- fi +- ]) +- aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +-fi +-])# _LT_SYS_MODULE_PATH_AIX +- +- +-# _LT_SHELL_INIT(ARG) +-# ------------------- +-m4_define([_LT_SHELL_INIT], +-[m4_divert_text([M4SH-INIT], [$1 +-])])# _LT_SHELL_INIT +- +- +- +-# _LT_PROG_ECHO_BACKSLASH +-# ----------------------- +-# Find how we can fake an echo command that does not interpret backslash. +-# In particular, with Autoconf 2.60 or later we add some code to the start +-# of the generated configure script which will find a shell with a builtin +-# printf (which we can use as an echo command). +-m4_defun([_LT_PROG_ECHO_BACKSLASH], +-[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +-ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO +- +-AC_MSG_CHECKING([how to print strings]) +-# Test print first, because it will be a builtin if present. +-if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ +- test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then +- ECHO='print -r --' +-elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then +- ECHO='printf %s\n' +-else +- # Use this function as a fallback that always works. +- func_fallback_echo () +- { +- eval 'cat <<_LTECHO_EOF +-$[]1 +-_LTECHO_EOF' +- } +- ECHO='func_fallback_echo' +-fi +- +-# func_echo_all arg... +-# Invoke $ECHO with all args, space-separated. +-func_echo_all () +-{ +- $ECHO "$*" +-} +- +-case "$ECHO" in +- printf*) AC_MSG_RESULT([printf]) ;; +- print*) AC_MSG_RESULT([print -r]) ;; +- *) AC_MSG_RESULT([cat]) ;; +-esac +- +-m4_ifdef([_AS_DETECT_SUGGESTED], +-[_AS_DETECT_SUGGESTED([ +- test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( +- ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +- ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +- ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO +- PATH=/empty FPATH=/empty; export PATH FPATH +- test "X`printf %s $ECHO`" = "X$ECHO" \ +- || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) +- +-_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +-_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +-])# _LT_PROG_ECHO_BACKSLASH +- +- +-# _LT_WITH_SYSROOT +-# ---------------- +-AC_DEFUN([_LT_WITH_SYSROOT], +-[AC_MSG_CHECKING([for sysroot]) +-AC_ARG_WITH([sysroot], +-[ --with-sysroot[=DIR] Search for dependent libraries within DIR +- (or the compiler's sysroot if not specified).], +-[], [with_sysroot=no]) +- +-dnl lt_sysroot will always be passed unquoted. We quote it here +-dnl in case the user passed a directory name. +-lt_sysroot= +-case ${with_sysroot} in #( +- yes) +- if test "$GCC" = yes; then +- lt_sysroot=`$CC --print-sysroot 2>/dev/null` +- fi +- ;; #( +- /*) +- lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` +- ;; #( +- no|'') +- ;; #( +- *) +- AC_MSG_RESULT([${with_sysroot}]) +- AC_MSG_ERROR([The sysroot must be an absolute path.]) +- ;; +-esac +- +- AC_MSG_RESULT([${lt_sysroot:-no}]) +-_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +-[dependent libraries, and in which our libraries should be installed.])]) +- +-# _LT_ENABLE_LOCK +-# --------------- +-m4_defun([_LT_ENABLE_LOCK], +-[AC_ARG_ENABLE([libtool-lock], +- [AS_HELP_STRING([--disable-libtool-lock], +- [avoid locking (might break parallel builds)])]) +-test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes +- +-# Some flags need to be propagated to the compiler or linker for good +-# libtool support. +-case $host in +-ia64-*-hpux*) +- # Find out which ABI we are using. +- echo 'int i;' > conftest.$ac_ext +- if AC_TRY_EVAL(ac_compile); then +- case `/usr/bin/file conftest.$ac_objext` in +- *ELF-32*) +- HPUX_IA64_MODE="32" +- ;; +- *ELF-64*) +- HPUX_IA64_MODE="64" +- ;; +- esac +- fi +- rm -rf conftest* +- ;; +-*-*-irix6*) +- # Find out which ABI we are using. +- echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext +- if AC_TRY_EVAL(ac_compile); then +- if test "$lt_cv_prog_gnu_ld" = yes; then +- case `/usr/bin/file conftest.$ac_objext` in +- *32-bit*) +- LD="${LD-ld} -melf32bsmip" +- ;; +- *N32*) +- LD="${LD-ld} -melf32bmipn32" +- ;; +- *64-bit*) +- LD="${LD-ld} -melf64bmip" +- ;; +- esac +- else +- case `/usr/bin/file conftest.$ac_objext` in +- *32-bit*) +- LD="${LD-ld} -32" +- ;; +- *N32*) +- LD="${LD-ld} -n32" +- ;; +- *64-bit*) +- LD="${LD-ld} -64" +- ;; +- esac +- fi +- fi +- rm -rf conftest* +- ;; +- +-x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +-s390*-*linux*|s390*-*tpf*|sparc*-*linux*) +- # Find out which ABI we are using. +- echo 'int i;' > conftest.$ac_ext +- if AC_TRY_EVAL(ac_compile); then +- case `/usr/bin/file conftest.o` in +- *32-bit*) +- case $host in +- x86_64-*kfreebsd*-gnu) +- LD="${LD-ld} -m elf_i386_fbsd" +- ;; +- x86_64-*linux*) +- case `/usr/bin/file conftest.o` in +- *x86-64*) +- LD="${LD-ld} -m elf32_x86_64" +- ;; +- *) +- LD="${LD-ld} -m elf_i386" +- ;; +- esac +- ;; +- powerpc64le-*) +- LD="${LD-ld} -m elf32lppclinux" +- ;; +- powerpc64-*) +- LD="${LD-ld} -m elf32ppclinux" +- ;; +- s390x-*linux*) +- LD="${LD-ld} -m elf_s390" +- ;; +- sparc64-*linux*) +- LD="${LD-ld} -m elf32_sparc" +- ;; +- esac +- ;; +- *64-bit*) +- case $host in +- x86_64-*kfreebsd*-gnu) +- LD="${LD-ld} -m elf_x86_64_fbsd" +- ;; +- x86_64-*linux*) +- LD="${LD-ld} -m elf_x86_64" +- ;; +- powerpcle-*) +- LD="${LD-ld} -m elf64lppc" +- ;; +- powerpc-*) +- LD="${LD-ld} -m elf64ppc" +- ;; +- s390*-*linux*|s390*-*tpf*) +- LD="${LD-ld} -m elf64_s390" +- ;; +- sparc*-*linux*) +- LD="${LD-ld} -m elf64_sparc" +- ;; +- esac +- ;; +- esac +- fi +- rm -rf conftest* +- ;; +- +-*-*-sco3.2v5*) +- # On SCO OpenServer 5, we need -belf to get full-featured binaries. +- SAVE_CFLAGS="$CFLAGS" +- CFLAGS="$CFLAGS -belf" +- AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, +- [AC_LANG_PUSH(C) +- AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) +- AC_LANG_POP]) +- if test x"$lt_cv_cc_needs_belf" != x"yes"; then +- # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf +- CFLAGS="$SAVE_CFLAGS" +- fi +- ;; +-*-*solaris*) +- # Find out which ABI we are using. +- echo 'int i;' > conftest.$ac_ext +- if AC_TRY_EVAL(ac_compile); then +- case `/usr/bin/file conftest.o` in +- *64-bit*) +- case $lt_cv_prog_gnu_ld in +- yes*) +- case $host in +- i?86-*-solaris*) +- LD="${LD-ld} -m elf_x86_64" +- ;; +- sparc*-*-solaris*) +- LD="${LD-ld} -m elf64_sparc" +- ;; +- esac +- # GNU ld 2.21 introduced _sol2 emulations. Use them if available. +- if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then +- LD="${LD-ld}_sol2" +- fi +- ;; +- *) +- if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then +- LD="${LD-ld} -64" +- fi +- ;; +- esac +- ;; +- esac +- fi +- rm -rf conftest* +- ;; +-esac +- +-need_locks="$enable_libtool_lock" +-])# _LT_ENABLE_LOCK +- +- +-# _LT_PROG_AR +-# ----------- +-m4_defun([_LT_PROG_AR], +-[AC_CHECK_TOOLS(AR, [ar], false) +-: ${AR=ar} +-: ${AR_FLAGS=cru} +-_LT_DECL([], [AR], [1], [The archiver]) +-_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) +- +-AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], +- [lt_cv_ar_at_file=no +- AC_COMPILE_IFELSE([AC_LANG_PROGRAM], +- [echo conftest.$ac_objext > conftest.lst +- lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' +- AC_TRY_EVAL([lt_ar_try]) +- if test "$ac_status" -eq 0; then +- # Ensure the archiver fails upon bogus file names. +- rm -f conftest.$ac_objext libconftest.a +- AC_TRY_EVAL([lt_ar_try]) +- if test "$ac_status" -ne 0; then +- lt_cv_ar_at_file=@ +- fi +- fi +- rm -f conftest.* libconftest.a +- ]) +- ]) +- +-if test "x$lt_cv_ar_at_file" = xno; then +- archiver_list_spec= +-else +- archiver_list_spec=$lt_cv_ar_at_file +-fi +-_LT_DECL([], [archiver_list_spec], [1], +- [How to feed a file listing to the archiver]) +-])# _LT_PROG_AR +- +- +-# _LT_CMD_OLD_ARCHIVE +-# ------------------- +-m4_defun([_LT_CMD_OLD_ARCHIVE], +-[_LT_PROG_AR +- +-AC_CHECK_TOOL(STRIP, strip, :) +-test -z "$STRIP" && STRIP=: +-_LT_DECL([], [STRIP], [1], [A symbol stripping program]) +- +-AC_CHECK_TOOL(RANLIB, ranlib, :) +-test -z "$RANLIB" && RANLIB=: +-_LT_DECL([], [RANLIB], [1], +- [Commands used to install an old-style archive]) +- +-# Determine commands to create old-style static archives. +-old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +-old_postinstall_cmds='chmod 644 $oldlib' +-old_postuninstall_cmds= +- +-if test -n "$RANLIB"; then +- case $host_os in +- openbsd*) +- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" +- ;; +- *) +- old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" +- ;; +- esac +- old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +-fi +- +-case $host_os in +- darwin*) +- lock_old_archive_extraction=yes ;; +- *) +- lock_old_archive_extraction=no ;; +-esac +-_LT_DECL([], [old_postinstall_cmds], [2]) +-_LT_DECL([], [old_postuninstall_cmds], [2]) +-_LT_TAGDECL([], [old_archive_cmds], [2], +- [Commands used to build an old-style archive]) +-_LT_DECL([], [lock_old_archive_extraction], [0], +- [Whether to use a lock for old archive extraction]) +-])# _LT_CMD_OLD_ARCHIVE +- +- +-# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +-# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +-# ---------------------------------------------------------------- +-# Check whether the given compiler option works +-AC_DEFUN([_LT_COMPILER_OPTION], +-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-m4_require([_LT_DECL_SED])dnl +-AC_CACHE_CHECK([$1], [$2], +- [$2=no +- m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) +- echo "$lt_simple_compile_test_code" > conftest.$ac_ext +- lt_compiler_flag="$3" +- # Insert the option either (1) after the last *FLAGS variable, or +- # (2) before a word containing "conftest.", or (3) at the end. +- # Note that $ac_compile itself does not contain backslashes and begins +- # with a dollar sign (not a hyphen), so the echo should work correctly. +- # The option is referenced via a variable to avoid confusing sed. +- lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ +- -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ +- -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) +- (eval "$lt_compile" 2>conftest.err) +- ac_status=$? +- cat conftest.err >&AS_MESSAGE_LOG_FD +- echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD +- if (exit $ac_status) && test -s "$ac_outfile"; then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings other than the usual output. +- $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp +- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 +- if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then +- $2=yes +- fi +- fi +- $RM conftest* +-]) +- +-if test x"[$]$2" = xyes; then +- m4_if([$5], , :, [$5]) +-else +- m4_if([$6], , :, [$6]) +-fi +-])# _LT_COMPILER_OPTION +- +-# Old name: +-AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) +- +- +-# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +-# [ACTION-SUCCESS], [ACTION-FAILURE]) +-# ---------------------------------------------------- +-# Check whether the given linker option works +-AC_DEFUN([_LT_LINKER_OPTION], +-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-m4_require([_LT_DECL_SED])dnl +-AC_CACHE_CHECK([$1], [$2], +- [$2=no +- save_LDFLAGS="$LDFLAGS" +- LDFLAGS="$LDFLAGS $3" +- echo "$lt_simple_link_test_code" > conftest.$ac_ext +- if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then +- # The linker can only warn and ignore the option if not recognized +- # So say no if there are warnings +- if test -s conftest.err; then +- # Append any errors to the config.log. +- cat conftest.err 1>&AS_MESSAGE_LOG_FD +- $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp +- $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 +- if diff conftest.exp conftest.er2 >/dev/null; then +- $2=yes +- fi +- else +- $2=yes +- fi +- fi +- $RM -r conftest* +- LDFLAGS="$save_LDFLAGS" +-]) +- +-if test x"[$]$2" = xyes; then +- m4_if([$4], , :, [$4]) +-else +- m4_if([$5], , :, [$5]) +-fi +-])# _LT_LINKER_OPTION +- +-# Old name: +-AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) +- +- +-# LT_CMD_MAX_LEN +-#--------------- +-AC_DEFUN([LT_CMD_MAX_LEN], +-[AC_REQUIRE([AC_CANONICAL_HOST])dnl +-# find the maximum length of command line arguments +-AC_MSG_CHECKING([the maximum length of command line arguments]) +-AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl +- i=0 +- teststring="ABCD" +- +- case $build_os in +- msdosdjgpp*) +- # On DJGPP, this test can blow up pretty badly due to problems in libc +- # (any single argument exceeding 2000 bytes causes a buffer overrun +- # during glob expansion). Even if it were fixed, the result of this +- # check would be larger than it should be. +- lt_cv_sys_max_cmd_len=12288; # 12K is about right +- ;; +- +- gnu*) +- # Under GNU Hurd, this test is not required because there is +- # no limit to the length of command line arguments. +- # Libtool will interpret -1 as no limit whatsoever +- lt_cv_sys_max_cmd_len=-1; +- ;; +- +- cygwin* | mingw* | cegcc*) +- # On Win9x/ME, this test blows up -- it succeeds, but takes +- # about 5 minutes as the teststring grows exponentially. +- # Worse, since 9x/ME are not pre-emptively multitasking, +- # you end up with a "frozen" computer, even though with patience +- # the test eventually succeeds (with a max line length of 256k). +- # Instead, let's just punt: use the minimum linelength reported by +- # all of the supported platforms: 8192 (on NT/2K/XP). +- lt_cv_sys_max_cmd_len=8192; +- ;; +- +- mint*) +- # On MiNT this can take a long time and run out of memory. +- lt_cv_sys_max_cmd_len=8192; +- ;; +- +- amigaos*) +- # On AmigaOS with pdksh, this test takes hours, literally. +- # So we just punt and use a minimum line length of 8192. +- lt_cv_sys_max_cmd_len=8192; +- ;; +- +- netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) +- # This has been around since 386BSD, at least. Likely further. +- if test -x /sbin/sysctl; then +- lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` +- elif test -x /usr/sbin/sysctl; then +- lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` +- else +- lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs +- fi +- # And add a safety zone +- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` +- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` +- ;; +- +- interix*) +- # We know the value 262144 and hardcode it with a safety zone (like BSD) +- lt_cv_sys_max_cmd_len=196608 +- ;; +- +- os2*) +- # The test takes a long time on OS/2. +- lt_cv_sys_max_cmd_len=8192 +- ;; +- +- osf*) +- # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure +- # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not +- # nice to cause kernel panics so lets avoid the loop below. +- # First set a reasonable default. +- lt_cv_sys_max_cmd_len=16384 +- # +- if test -x /sbin/sysconfig; then +- case `/sbin/sysconfig -q proc exec_disable_arg_limit` in +- *1*) lt_cv_sys_max_cmd_len=-1 ;; +- esac +- fi +- ;; +- sco3.2v5*) +- lt_cv_sys_max_cmd_len=102400 +- ;; +- sysv5* | sco5v6* | sysv4.2uw2*) +- kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` +- if test -n "$kargmax"; then +- lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` +- else +- lt_cv_sys_max_cmd_len=32768 +- fi +- ;; +- *) +- lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` +- if test -n "$lt_cv_sys_max_cmd_len" && \ +- test undefined != "$lt_cv_sys_max_cmd_len"; then +- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` +- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` +- else +- # Make teststring a little bigger before we do anything with it. +- # a 1K string should be a reasonable start. +- for i in 1 2 3 4 5 6 7 8 ; do +- teststring=$teststring$teststring +- done +- SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} +- # If test is not a shell built-in, we'll probably end up computing a +- # maximum length that is only half of the actual maximum length, but +- # we can't tell. +- while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ +- = "X$teststring$teststring"; } >/dev/null 2>&1 && +- test $i != 17 # 1/2 MB should be enough +- do +- i=`expr $i + 1` +- teststring=$teststring$teststring +- done +- # Only check the string length outside the loop. +- lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` +- teststring= +- # Add a significant safety factor because C++ compilers can tack on +- # massive amounts of additional arguments before passing them to the +- # linker. It appears as though 1/2 is a usable value. +- lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` +- fi +- ;; +- esac +-]) +-if test -n $lt_cv_sys_max_cmd_len ; then +- AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +-else +- AC_MSG_RESULT(none) +-fi +-max_cmd_len=$lt_cv_sys_max_cmd_len +-_LT_DECL([], [max_cmd_len], [0], +- [What is the maximum length of a command?]) +-])# LT_CMD_MAX_LEN +- +-# Old name: +-AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) +- +- +-# _LT_HEADER_DLFCN +-# ---------------- +-m4_defun([_LT_HEADER_DLFCN], +-[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +-])# _LT_HEADER_DLFCN +- +- +-# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +-# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +-# ---------------------------------------------------------------- +-m4_defun([_LT_TRY_DLOPEN_SELF], +-[m4_require([_LT_HEADER_DLFCN])dnl +-if test "$cross_compiling" = yes; then : +- [$4] +-else +- lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 +- lt_status=$lt_dlunknown +- cat > conftest.$ac_ext <<_LT_EOF +-[#line $LINENO "configure" +-#include "confdefs.h" +- +-#if HAVE_DLFCN_H +-#include +-#endif +- +-#include +- +-#ifdef RTLD_GLOBAL +-# define LT_DLGLOBAL RTLD_GLOBAL +-#else +-# ifdef DL_GLOBAL +-# define LT_DLGLOBAL DL_GLOBAL +-# else +-# define LT_DLGLOBAL 0 +-# endif +-#endif +- +-/* We may have to define LT_DLLAZY_OR_NOW in the command line if we +- find out it does not work in some platform. */ +-#ifndef LT_DLLAZY_OR_NOW +-# ifdef RTLD_LAZY +-# define LT_DLLAZY_OR_NOW RTLD_LAZY +-# else +-# ifdef DL_LAZY +-# define LT_DLLAZY_OR_NOW DL_LAZY +-# else +-# ifdef RTLD_NOW +-# define LT_DLLAZY_OR_NOW RTLD_NOW +-# else +-# ifdef DL_NOW +-# define LT_DLLAZY_OR_NOW DL_NOW +-# else +-# define LT_DLLAZY_OR_NOW 0 +-# endif +-# endif +-# endif +-# endif +-#endif +- +-/* When -fvisbility=hidden is used, assume the code has been annotated +- correspondingly for the symbols needed. */ +-#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +-int fnord () __attribute__((visibility("default"))); +-#endif +- +-int fnord () { return 42; } +-int main () +-{ +- void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); +- int status = $lt_dlunknown; +- +- if (self) +- { +- if (dlsym (self,"fnord")) status = $lt_dlno_uscore; +- else +- { +- if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; +- else puts (dlerror ()); +- } +- /* dlclose (self); */ +- } +- else +- puts (dlerror ()); +- +- return status; +-}] +-_LT_EOF +- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then +- (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null +- lt_status=$? +- case x$lt_status in +- x$lt_dlno_uscore) $1 ;; +- x$lt_dlneed_uscore) $2 ;; +- x$lt_dlunknown|x*) $3 ;; +- esac +- else : +- # compilation failed +- $3 +- fi +-fi +-rm -fr conftest* +-])# _LT_TRY_DLOPEN_SELF +- +- +-# LT_SYS_DLOPEN_SELF +-# ------------------ +-AC_DEFUN([LT_SYS_DLOPEN_SELF], +-[m4_require([_LT_HEADER_DLFCN])dnl +-if test "x$enable_dlopen" != xyes; then +- enable_dlopen=unknown +- enable_dlopen_self=unknown +- enable_dlopen_self_static=unknown +-else +- lt_cv_dlopen=no +- lt_cv_dlopen_libs= +- +- case $host_os in +- beos*) +- lt_cv_dlopen="load_add_on" +- lt_cv_dlopen_libs= +- lt_cv_dlopen_self=yes +- ;; +- +- mingw* | pw32* | cegcc*) +- lt_cv_dlopen="LoadLibrary" +- lt_cv_dlopen_libs= +- ;; +- +- cygwin*) +- lt_cv_dlopen="dlopen" +- lt_cv_dlopen_libs= +- ;; +- +- darwin*) +- # if libdl is installed we need to link against it +- AC_CHECK_LIB([dl], [dlopen], +- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ +- lt_cv_dlopen="dyld" +- lt_cv_dlopen_libs= +- lt_cv_dlopen_self=yes +- ]) +- ;; +- +- *) +- AC_CHECK_FUNC([shl_load], +- [lt_cv_dlopen="shl_load"], +- [AC_CHECK_LIB([dld], [shl_load], +- [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], +- [AC_CHECK_FUNC([dlopen], +- [lt_cv_dlopen="dlopen"], +- [AC_CHECK_LIB([dl], [dlopen], +- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], +- [AC_CHECK_LIB([svld], [dlopen], +- [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], +- [AC_CHECK_LIB([dld], [dld_link], +- [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) +- ]) +- ]) +- ]) +- ]) +- ]) +- ;; +- esac +- +- if test "x$lt_cv_dlopen" != xno; then +- enable_dlopen=yes +- else +- enable_dlopen=no +- fi +- +- case $lt_cv_dlopen in +- dlopen) +- save_CPPFLAGS="$CPPFLAGS" +- test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" +- +- save_LDFLAGS="$LDFLAGS" +- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" +- +- save_LIBS="$LIBS" +- LIBS="$lt_cv_dlopen_libs $LIBS" +- +- AC_CACHE_CHECK([whether a program can dlopen itself], +- lt_cv_dlopen_self, [dnl +- _LT_TRY_DLOPEN_SELF( +- lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, +- lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) +- ]) +- +- if test "x$lt_cv_dlopen_self" = xyes; then +- wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" +- AC_CACHE_CHECK([whether a statically linked program can dlopen itself], +- lt_cv_dlopen_self_static, [dnl +- _LT_TRY_DLOPEN_SELF( +- lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, +- lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) +- ]) +- fi +- +- CPPFLAGS="$save_CPPFLAGS" +- LDFLAGS="$save_LDFLAGS" +- LIBS="$save_LIBS" +- ;; +- esac +- +- case $lt_cv_dlopen_self in +- yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; +- *) enable_dlopen_self=unknown ;; +- esac +- +- case $lt_cv_dlopen_self_static in +- yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; +- *) enable_dlopen_self_static=unknown ;; +- esac +-fi +-_LT_DECL([dlopen_support], [enable_dlopen], [0], +- [Whether dlopen is supported]) +-_LT_DECL([dlopen_self], [enable_dlopen_self], [0], +- [Whether dlopen of programs is supported]) +-_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], +- [Whether dlopen of statically linked programs is supported]) +-])# LT_SYS_DLOPEN_SELF +- +-# Old name: +-AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) +- +- +-# _LT_COMPILER_C_O([TAGNAME]) +-# --------------------------- +-# Check to see if options -c and -o are simultaneously supported by compiler. +-# This macro does not hard code the compiler like AC_PROG_CC_C_O. +-m4_defun([_LT_COMPILER_C_O], +-[m4_require([_LT_DECL_SED])dnl +-m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-m4_require([_LT_TAG_COMPILER])dnl +-AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], +- [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], +- [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no +- $RM -r conftest 2>/dev/null +- mkdir conftest +- cd conftest +- mkdir out +- echo "$lt_simple_compile_test_code" > conftest.$ac_ext +- +- lt_compiler_flag="-o out/conftest2.$ac_objext" +- # Insert the option either (1) after the last *FLAGS variable, or +- # (2) before a word containing "conftest.", or (3) at the end. +- # Note that $ac_compile itself does not contain backslashes and begins +- # with a dollar sign (not a hyphen), so the echo should work correctly. +- lt_compile=`echo "$ac_compile" | $SED \ +- -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ +- -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ +- -e 's:$: $lt_compiler_flag:'` +- (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) +- (eval "$lt_compile" 2>out/conftest.err) +- ac_status=$? +- cat out/conftest.err >&AS_MESSAGE_LOG_FD +- echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD +- if (exit $ac_status) && test -s out/conftest2.$ac_objext +- then +- # The compiler can only warn and ignore the option if not recognized +- # So say no if there are warnings +- $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp +- $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 +- if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then +- _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes +- fi +- fi +- chmod u+w . 2>&AS_MESSAGE_LOG_FD +- $RM conftest* +- # SGI C++ compiler will create directory out/ii_files/ for +- # template instantiation +- test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files +- $RM out/* && rmdir out +- cd .. +- $RM -r conftest +- $RM conftest* +-]) +-_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], +- [Does compiler simultaneously support -c and -o options?]) +-])# _LT_COMPILER_C_O +- +- +-# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +-# ---------------------------------- +-# Check to see if we can do hard links to lock some files if needed +-m4_defun([_LT_COMPILER_FILE_LOCKS], +-[m4_require([_LT_ENABLE_LOCK])dnl +-m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-_LT_COMPILER_C_O([$1]) +- +-hard_links="nottested" +-if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then +- # do not overwrite the value of need_locks provided by the user +- AC_MSG_CHECKING([if we can lock with hard links]) +- hard_links=yes +- $RM conftest* +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- touch conftest.a +- ln conftest.a conftest.b 2>&5 || hard_links=no +- ln conftest.a conftest.b 2>/dev/null && hard_links=no +- AC_MSG_RESULT([$hard_links]) +- if test "$hard_links" = no; then +- AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) +- need_locks=warn +- fi +-else +- need_locks=no +-fi +-_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +-])# _LT_COMPILER_FILE_LOCKS +- +- +-# _LT_CHECK_OBJDIR +-# ---------------- +-m4_defun([_LT_CHECK_OBJDIR], +-[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +-[rm -f .libs 2>/dev/null +-mkdir .libs 2>/dev/null +-if test -d .libs; then +- lt_cv_objdir=.libs +-else +- # MS-DOS does not allow filenames that begin with a dot. +- lt_cv_objdir=_libs +-fi +-rmdir .libs 2>/dev/null]) +-objdir=$lt_cv_objdir +-_LT_DECL([], [objdir], [0], +- [The name of the directory that contains temporary libtool files])dnl +-m4_pattern_allow([LT_OBJDIR])dnl +-AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", +- [Define to the sub-directory in which libtool stores uninstalled libraries.]) +-])# _LT_CHECK_OBJDIR +- +- +-# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +-# -------------------------------------- +-# Check hardcoding attributes. +-m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +-[AC_MSG_CHECKING([how to hardcode library paths into programs]) +-_LT_TAGVAR(hardcode_action, $1)= +-if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || +- test -n "$_LT_TAGVAR(runpath_var, $1)" || +- test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then +- +- # We can hardcode non-existent directories. +- if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && +- # If the only mechanism to avoid hardcoding is shlibpath_var, we +- # have to relink, otherwise we might link with an installed library +- # when we should be linking with a yet-to-be-installed one +- ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && +- test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then +- # Linking always hardcodes the temporary library directory. +- _LT_TAGVAR(hardcode_action, $1)=relink +- else +- # We can link without hardcoding, and we can hardcode nonexisting dirs. +- _LT_TAGVAR(hardcode_action, $1)=immediate +- fi +-else +- # We cannot hardcode anything, or else we can only hardcode existing +- # directories. +- _LT_TAGVAR(hardcode_action, $1)=unsupported +-fi +-AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) +- +-if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || +- test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then +- # Fast installation is not supported +- enable_fast_install=no +-elif test "$shlibpath_overrides_runpath" = yes || +- test "$enable_shared" = no; then +- # Fast installation is not necessary +- enable_fast_install=needless +-fi +-_LT_TAGDECL([], [hardcode_action], [0], +- [How to hardcode a shared library path into an executable]) +-])# _LT_LINKER_HARDCODE_LIBPATH +- +- +-# _LT_CMD_STRIPLIB +-# ---------------- +-m4_defun([_LT_CMD_STRIPLIB], +-[m4_require([_LT_DECL_EGREP]) +-striplib= +-old_striplib= +-AC_MSG_CHECKING([whether stripping libraries is possible]) +-if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then +- test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" +- test -z "$striplib" && striplib="$STRIP --strip-unneeded" +- AC_MSG_RESULT([yes]) +-else +-# FIXME - insert some real tests, host_os isn't really good enough +- case $host_os in +- darwin*) +- if test -n "$STRIP" ; then +- striplib="$STRIP -x" +- old_striplib="$STRIP -S" +- AC_MSG_RESULT([yes]) +- else +- AC_MSG_RESULT([no]) +- fi +- ;; +- *) +- AC_MSG_RESULT([no]) +- ;; +- esac +-fi +-_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +-_LT_DECL([], [striplib], [1]) +-])# _LT_CMD_STRIPLIB +- +- +-# _LT_SYS_DYNAMIC_LINKER([TAG]) +-# ----------------------------- +-# PORTME Fill in your ld.so characteristics +-m4_defun([_LT_SYS_DYNAMIC_LINKER], +-[AC_REQUIRE([AC_CANONICAL_HOST])dnl +-m4_require([_LT_DECL_EGREP])dnl +-m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-m4_require([_LT_DECL_OBJDUMP])dnl +-m4_require([_LT_DECL_SED])dnl +-m4_require([_LT_CHECK_SHELL_FEATURES])dnl +-AC_MSG_CHECKING([dynamic linker characteristics]) +-m4_if([$1], +- [], [ +-if test "$GCC" = yes; then +- case $host_os in +- darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; +- *) lt_awk_arg="/^libraries:/" ;; +- esac +- case $host_os in +- mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; +- *) lt_sed_strip_eq="s,=/,/,g" ;; +- esac +- lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` +- case $lt_search_path_spec in +- *\;*) +- # if the path contains ";" then we assume it to be the separator +- # otherwise default to the standard path separator (i.e. ":") - it is +- # assumed that no part of a normal pathname contains ";" but that should +- # okay in the real world where ";" in dirpaths is itself problematic. +- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` +- ;; +- *) +- lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` +- ;; +- esac +- # Ok, now we have the path, separated by spaces, we can step through it +- # and add multilib dir if necessary. +- lt_tmp_lt_search_path_spec= +- lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` +- for lt_sys_path in $lt_search_path_spec; do +- if test -d "$lt_sys_path/$lt_multi_os_dir"; then +- lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" +- else +- test -d "$lt_sys_path" && \ +- lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" +- fi +- done +- lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +-BEGIN {RS=" "; FS="/|\n";} { +- lt_foo=""; +- lt_count=0; +- for (lt_i = NF; lt_i > 0; lt_i--) { +- if ($lt_i != "" && $lt_i != ".") { +- if ($lt_i == "..") { +- lt_count++; +- } else { +- if (lt_count == 0) { +- lt_foo="/" $lt_i lt_foo; +- } else { +- lt_count--; +- } +- } +- } +- } +- if (lt_foo != "") { lt_freq[[lt_foo]]++; } +- if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +-}'` +- # AWK program above erroneously prepends '/' to C:/dos/paths +- # for these hosts. +- case $host_os in +- mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ +- $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; +- esac +- sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +-else +- sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +-fi]) +-library_names_spec= +-libname_spec='lib$name' +-soname_spec= +-shrext_cmds=".so" +-postinstall_cmds= +-postuninstall_cmds= +-finish_cmds= +-finish_eval= +-shlibpath_var= +-shlibpath_overrides_runpath=unknown +-version_type=none +-dynamic_linker="$host_os ld.so" +-sys_lib_dlsearch_path_spec="/lib /usr/lib" +-need_lib_prefix=unknown +-hardcode_into_libs=no +- +-# when you set need_version to no, make sure it does not cause -set_version +-# flags to be left without arguments +-need_version=unknown +- +-case $host_os in +-aix3*) +- version_type=linux # correct to gnu/linux during the next big refactor +- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' +- shlibpath_var=LIBPATH +- +- # AIX 3 has no versioning support, so we append a major version to the name. +- soname_spec='${libname}${release}${shared_ext}$major' +- ;; +- +-aix[[4-9]]*) +- version_type=linux # correct to gnu/linux during the next big refactor +- need_lib_prefix=no +- need_version=no +- hardcode_into_libs=yes +- if test "$host_cpu" = ia64; then +- # AIX 5 supports IA64 +- library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- else +- # With GCC up to 2.95.x, collect2 would create an import file +- # for dependence libraries. The import file would start with +- # the line `#! .'. This would cause the generated library to +- # depend on `.', always an invalid library. This was fixed in +- # development snapshots of GCC prior to 3.0. +- case $host_os in +- aix4 | aix4.[[01]] | aix4.[[01]].*) +- if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' +- echo ' yes ' +- echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then +- : +- else +- can_build_shared=no +- fi +- ;; +- esac +- # AIX (on Power*) has no versioning support, so currently we can not hardcode correct +- # soname into executable. Probably we can add versioning support to +- # collect2, so additional links can be useful in future. +- if test "$aix_use_runtimelinking" = yes; then +- # If using run time linking (on AIX 4.2 or later) use lib.so +- # instead of lib.a to let people know that these are not +- # typical AIX shared libraries. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- else +- # We preserve .a as extension for shared libraries through AIX4.2 +- # and later when we are not doing run time linking. +- library_names_spec='${libname}${release}.a $libname.a' +- soname_spec='${libname}${release}${shared_ext}$major' +- fi +- shlibpath_var=LIBPATH +- fi +- ;; +- +-amigaos*) +- case $host_cpu in +- powerpc) +- # Since July 2007 AmigaOS4 officially supports .so libraries. +- # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- ;; +- m68k) +- library_names_spec='$libname.ixlibrary $libname.a' +- # Create ${libname}_ixlibrary.a entries in /sys/libs. +- finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' +- ;; +- esac +- ;; +- +-beos*) +- library_names_spec='${libname}${shared_ext}' +- dynamic_linker="$host_os ld.so" +- shlibpath_var=LIBRARY_PATH +- ;; +- +-bsdi[[45]]*) +- version_type=linux # correct to gnu/linux during the next big refactor +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" +- sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" +- # the default ld.so.conf also contains /usr/contrib/lib and +- # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow +- # libtool to hard-code these into programs +- ;; +- +-cygwin* | mingw* | pw32* | cegcc*) +- version_type=windows +- shrext_cmds=".dll" +- need_version=no +- need_lib_prefix=no +- +- case $GCC,$cc_basename in +- yes,*) +- # gcc +- library_names_spec='$libname.dll.a' +- # DLL is installed to $(libdir)/../bin by postinstall_cmds +- postinstall_cmds='base_file=`basename \${file}`~ +- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ +- dldir=$destdir/`dirname \$dlpath`~ +- test -d \$dldir || mkdir -p \$dldir~ +- $install_prog $dir/$dlname \$dldir/$dlname~ +- chmod a+x \$dldir/$dlname~ +- if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then +- eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; +- fi' +- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ +- dlpath=$dir/\$dldll~ +- $RM \$dlpath' +- shlibpath_overrides_runpath=yes +- +- case $host_os in +- cygwin*) +- # Cygwin DLLs use 'cyg' prefix rather than 'lib' +- soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +-m4_if([$1], [],[ +- sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) +- ;; +- mingw* | cegcc*) +- # MinGW DLLs use traditional 'lib' prefix +- soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +- ;; +- pw32*) +- # pw32 DLLs use 'pw' prefix rather than 'lib' +- library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +- ;; +- esac +- dynamic_linker='Win32 ld.exe' +- ;; +- +- *,cl*) +- # Native MSVC +- libname_spec='$name' +- soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +- library_names_spec='${libname}.dll.lib' +- +- case $build_os in +- mingw*) +- sys_lib_search_path_spec= +- lt_save_ifs=$IFS +- IFS=';' +- for lt_path in $LIB +- do +- IFS=$lt_save_ifs +- # Let DOS variable expansion print the short 8.3 style file name. +- lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` +- sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" +- done +- IFS=$lt_save_ifs +- # Convert to MSYS style. +- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` +- ;; +- cygwin*) +- # Convert to unix form, then to dos form, then back to unix form +- # but this time dos style (no spaces!) so that the unix form looks +- # like /cygdrive/c/PROGRA~1:/cygdr... +- sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` +- sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` +- sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` +- ;; +- *) +- sys_lib_search_path_spec="$LIB" +- if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then +- # It is most probably a Windows format PATH. +- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` +- else +- sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` +- fi +- # FIXME: find the short name or the path components, as spaces are +- # common. (e.g. "Program Files" -> "PROGRA~1") +- ;; +- esac +- +- # DLL is installed to $(libdir)/../bin by postinstall_cmds +- postinstall_cmds='base_file=`basename \${file}`~ +- dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ +- dldir=$destdir/`dirname \$dlpath`~ +- test -d \$dldir || mkdir -p \$dldir~ +- $install_prog $dir/$dlname \$dldir/$dlname' +- postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ +- dlpath=$dir/\$dldll~ +- $RM \$dlpath' +- shlibpath_overrides_runpath=yes +- dynamic_linker='Win32 link.exe' +- ;; +- +- *) +- # Assume MSVC wrapper +- library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' +- dynamic_linker='Win32 ld.exe' +- ;; +- esac +- # FIXME: first we should search . and the directory the executable is in +- shlibpath_var=PATH +- ;; +- +-darwin* | rhapsody*) +- dynamic_linker="$host_os dyld" +- version_type=darwin +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' +- soname_spec='${libname}${release}${major}$shared_ext' +- shlibpath_overrides_runpath=yes +- shlibpath_var=DYLD_LIBRARY_PATH +- shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +-m4_if([$1], [],[ +- sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) +- sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' +- ;; +- +-dgux*) +- version_type=linux # correct to gnu/linux during the next big refactor +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-freebsd* | dragonfly*) +- # DragonFly does not have aout. When/if they implement a new +- # versioning mechanism, adjust this. +- if test -x /usr/bin/objformat; then +- objformat=`/usr/bin/objformat` +- else +- case $host_os in +- freebsd[[23]].*) objformat=aout ;; +- *) objformat=elf ;; +- esac +- fi +- version_type=freebsd-$objformat +- case $version_type in +- freebsd-elf*) +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' +- need_version=no +- need_lib_prefix=no +- ;; +- freebsd-*) +- library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' +- need_version=yes +- ;; +- esac +- shlibpath_var=LD_LIBRARY_PATH +- case $host_os in +- freebsd2.*) +- shlibpath_overrides_runpath=yes +- ;; +- freebsd3.[[01]]* | freebsdelf3.[[01]]*) +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; +- freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ +- freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- ;; +- *) # from 4.6 on, and DragonFly +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; +- esac +- ;; +- +-haiku*) +- version_type=linux # correct to gnu/linux during the next big refactor +- need_lib_prefix=no +- need_version=no +- dynamic_linker="$host_os runtime_loader" +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' +- hardcode_into_libs=yes +- ;; +- +-hpux9* | hpux10* | hpux11*) +- # Give a soname corresponding to the major version so that dld.sl refuses to +- # link against other versions. +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- case $host_cpu in +- ia64*) +- shrext_cmds='.so' +- hardcode_into_libs=yes +- dynamic_linker="$host_os dld.so" +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- if test "X$HPUX_IA64_MODE" = X32; then +- sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" +- else +- sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" +- fi +- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec +- ;; +- hppa*64*) +- shrext_cmds='.sl' +- hardcode_into_libs=yes +- dynamic_linker="$host_os dld.sl" +- shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH +- shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" +- sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec +- ;; +- *) +- shrext_cmds='.sl' +- dynamic_linker="$host_os dld.sl" +- shlibpath_var=SHLIB_PATH +- shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- ;; +- esac +- # HP-UX runs *really* slowly unless shared libraries are mode 555, ... +- postinstall_cmds='chmod 555 $lib' +- # or fails outright, so override atomically: +- install_override_mode=555 +- ;; +- +-interix[[3-9]]*) +- version_type=linux # correct to gnu/linux during the next big refactor +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- ;; +- +-irix5* | irix6* | nonstopux*) +- case $host_os in +- nonstopux*) version_type=nonstopux ;; +- *) +- if test "$lt_cv_prog_gnu_ld" = yes; then +- version_type=linux # correct to gnu/linux during the next big refactor +- else +- version_type=irix +- fi ;; +- esac +- need_lib_prefix=no +- need_version=no +- soname_spec='${libname}${release}${shared_ext}$major' +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' +- case $host_os in +- irix5* | nonstopux*) +- libsuff= shlibsuff= +- ;; +- *) +- case $LD in # libtool.m4 will add one of these switches to LD +- *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") +- libsuff= shlibsuff= libmagic=32-bit;; +- *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") +- libsuff=32 shlibsuff=N32 libmagic=N32;; +- *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") +- libsuff=64 shlibsuff=64 libmagic=64-bit;; +- *) libsuff= shlibsuff= libmagic=never-match;; +- esac +- ;; +- esac +- shlibpath_var=LD_LIBRARY${shlibsuff}_PATH +- shlibpath_overrides_runpath=no +- sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" +- sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" +- hardcode_into_libs=yes +- ;; +- +-# No shared lib support for Linux oldld, aout, or coff. +-linux*oldld* | linux*aout* | linux*coff*) +- dynamic_linker=no +- ;; +- +-# This must be glibc/ELF. +-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) +- version_type=linux # correct to gnu/linux during the next big refactor +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- +- # Some binutils ld are patched to set DT_RUNPATH +- AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], +- [lt_cv_shlibpath_overrides_runpath=no +- save_LDFLAGS=$LDFLAGS +- save_libdir=$libdir +- eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ +- LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" +- AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], +- [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], +- [lt_cv_shlibpath_overrides_runpath=yes])]) +- LDFLAGS=$save_LDFLAGS +- libdir=$save_libdir +- ]) +- shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath +- +- # This implies no fast_install, which is unacceptable. +- # Some rework will be needed to allow for fast_install +- # before this can be enabled. +- hardcode_into_libs=yes +- +- # Append ld.so.conf contents to the search path +- if test -f /etc/ld.so.conf; then +- lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` +- sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" +- fi +- +- # We used to test for /lib/ld.so.1 and disable shared libraries on +- # powerpc, because MkLinux only supported shared libraries with the +- # GNU dynamic linker. Since this was broken with cross compilers, +- # most powerpc-linux boxes support dynamic linking these days and +- # people can always --disable-shared, the test was removed, and we +- # assume the GNU/Linux dynamic linker is in use. +- dynamic_linker='GNU/Linux ld.so' +- ;; +- +-netbsdelf*-gnu) +- version_type=linux +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- dynamic_linker='NetBSD ld.elf_so' +- ;; +- +-netbsd*) +- version_type=sunos +- need_lib_prefix=no +- need_version=no +- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- dynamic_linker='NetBSD (a.out) ld.so' +- else +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- dynamic_linker='NetBSD ld.elf_so' +- fi +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- ;; +- +-newsos6) +- version_type=linux # correct to gnu/linux during the next big refactor +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- ;; +- +-*nto* | *qnx*) +- version_type=qnx +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- dynamic_linker='ldqnx.so' +- ;; +- +-openbsd*) +- version_type=sunos +- sys_lib_dlsearch_path_spec="/usr/lib" +- need_lib_prefix=no +- # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. +- case $host_os in +- openbsd3.3 | openbsd3.3.*) need_version=yes ;; +- *) need_version=no ;; +- esac +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +- finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- case $host_os in +- openbsd2.[[89]] | openbsd2.[[89]].*) +- shlibpath_overrides_runpath=no +- ;; +- *) +- shlibpath_overrides_runpath=yes +- ;; +- esac +- else +- shlibpath_overrides_runpath=yes +- fi +- ;; +- +-os2*) +- libname_spec='$name' +- shrext_cmds=".dll" +- need_lib_prefix=no +- library_names_spec='$libname${shared_ext} $libname.a' +- dynamic_linker='OS/2 ld.exe' +- shlibpath_var=LIBPATH +- ;; +- +-osf3* | osf4* | osf5*) +- version_type=osf +- need_lib_prefix=no +- need_version=no +- soname_spec='${libname}${release}${shared_ext}$major' +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" +- sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" +- ;; +- +-rdos*) +- dynamic_linker=no +- ;; +- +-solaris*) +- version_type=linux # correct to gnu/linux during the next big refactor +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- # ldd complains unless libraries are executable +- postinstall_cmds='chmod +x $lib' +- ;; +- +-sunos4*) +- version_type=sunos +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +- finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- if test "$with_gnu_ld" = yes; then +- need_lib_prefix=no +- fi +- need_version=yes +- ;; +- +-sysv4 | sysv4.3*) +- version_type=linux # correct to gnu/linux during the next big refactor +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- case $host_vendor in +- sni) +- shlibpath_overrides_runpath=no +- need_lib_prefix=no +- runpath_var=LD_RUN_PATH +- ;; +- siemens) +- need_lib_prefix=no +- ;; +- motorola) +- need_lib_prefix=no +- need_version=no +- shlibpath_overrides_runpath=no +- sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' +- ;; +- esac +- ;; +- +-sysv4*MP*) +- if test -d /usr/nec ;then +- version_type=linux # correct to gnu/linux during the next big refactor +- library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' +- soname_spec='$libname${shared_ext}.$major' +- shlibpath_var=LD_LIBRARY_PATH +- fi +- ;; +- +-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) +- version_type=freebsd-elf +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=yes +- hardcode_into_libs=yes +- if test "$with_gnu_ld" = yes; then +- sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' +- else +- sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' +- case $host_os in +- sco3.2v5*) +- sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" +- ;; +- esac +- fi +- sys_lib_dlsearch_path_spec='/usr/lib' +- ;; +- +-tpf*) +- # TPF is a cross-target only. Preferred cross-host = GNU/Linux. +- version_type=linux # correct to gnu/linux during the next big refactor +- need_lib_prefix=no +- need_version=no +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- shlibpath_var=LD_LIBRARY_PATH +- shlibpath_overrides_runpath=no +- hardcode_into_libs=yes +- ;; +- +-uts4*) +- version_type=linux # correct to gnu/linux during the next big refactor +- library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +- soname_spec='${libname}${release}${shared_ext}$major' +- shlibpath_var=LD_LIBRARY_PATH +- ;; +- +-*) +- dynamic_linker=no +- ;; +-esac +-AC_MSG_RESULT([$dynamic_linker]) +-test "$dynamic_linker" = no && can_build_shared=no +- +-variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +-if test "$GCC" = yes; then +- variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +-fi +- +-if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then +- sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +-fi +-if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then +- sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +-fi +- +-_LT_DECL([], [variables_saved_for_relink], [1], +- [Variables whose values should be saved in libtool wrapper scripts and +- restored at link time]) +-_LT_DECL([], [need_lib_prefix], [0], +- [Do we need the "lib" prefix for modules?]) +-_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +-_LT_DECL([], [version_type], [0], [Library versioning type]) +-_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +-_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +-_LT_DECL([], [shlibpath_overrides_runpath], [0], +- [Is shlibpath searched before the hard-coded library search path?]) +-_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +-_LT_DECL([], [library_names_spec], [1], +- [[List of archive names. First name is the real one, the rest are links. +- The last name is the one that the linker finds with -lNAME]]) +-_LT_DECL([], [soname_spec], [1], +- [[The coded name of the library, if different from the real name]]) +-_LT_DECL([], [install_override_mode], [1], +- [Permission mode override for installation of shared libraries]) +-_LT_DECL([], [postinstall_cmds], [2], +- [Command to use after installation of a shared archive]) +-_LT_DECL([], [postuninstall_cmds], [2], +- [Command to use after uninstallation of a shared archive]) +-_LT_DECL([], [finish_cmds], [2], +- [Commands used to finish a libtool library installation in a directory]) +-_LT_DECL([], [finish_eval], [1], +- [[As "finish_cmds", except a single script fragment to be evaled but +- not shown]]) +-_LT_DECL([], [hardcode_into_libs], [0], +- [Whether we should hardcode library paths into libraries]) +-_LT_DECL([], [sys_lib_search_path_spec], [2], +- [Compile-time system search path for libraries]) +-_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], +- [Run-time system search path for libraries]) +-])# _LT_SYS_DYNAMIC_LINKER +- +- +-# _LT_PATH_TOOL_PREFIX(TOOL) +-# -------------------------- +-# find a file program which can recognize shared library +-AC_DEFUN([_LT_PATH_TOOL_PREFIX], +-[m4_require([_LT_DECL_EGREP])dnl +-AC_MSG_CHECKING([for $1]) +-AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +-[case $MAGIC_CMD in +-[[\\/*] | ?:[\\/]*]) +- lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. +- ;; +-*) +- lt_save_MAGIC_CMD="$MAGIC_CMD" +- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +-dnl $ac_dummy forces splitting on constant user-supplied paths. +-dnl POSIX.2 word splitting is done only on the output of word expansions, +-dnl not every word. This closes a longstanding sh security hole. +- ac_dummy="m4_if([$2], , $PATH, [$2])" +- for ac_dir in $ac_dummy; do +- IFS="$lt_save_ifs" +- test -z "$ac_dir" && ac_dir=. +- if test -f $ac_dir/$1; then +- lt_cv_path_MAGIC_CMD="$ac_dir/$1" +- if test -n "$file_magic_test_file"; then +- case $deplibs_check_method in +- "file_magic "*) +- file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` +- MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +- if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | +- $EGREP "$file_magic_regex" > /dev/null; then +- : +- else +- cat <<_LT_EOF 1>&2 +- +-*** Warning: the command libtool uses to detect shared libraries, +-*** $file_magic_cmd, produces output that libtool cannot recognize. +-*** The result is that libtool may fail to recognize shared libraries +-*** as such. This will affect the creation of libtool libraries that +-*** depend on shared libraries, but programs linked with such libtool +-*** libraries will work regardless of this problem. Nevertheless, you +-*** may want to report the problem to your system manager and/or to +-*** bug-libtool@gnu.org +- +-_LT_EOF +- fi ;; +- esac +- fi +- break +- fi +- done +- IFS="$lt_save_ifs" +- MAGIC_CMD="$lt_save_MAGIC_CMD" +- ;; +-esac]) +-MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +-if test -n "$MAGIC_CMD"; then +- AC_MSG_RESULT($MAGIC_CMD) +-else +- AC_MSG_RESULT(no) +-fi +-_LT_DECL([], [MAGIC_CMD], [0], +- [Used to examine libraries when file_magic_cmd begins with "file"])dnl +-])# _LT_PATH_TOOL_PREFIX +- +-# Old name: +-AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) +- +- +-# _LT_PATH_MAGIC +-# -------------- +-# find a file program which can recognize a shared library +-m4_defun([_LT_PATH_MAGIC], +-[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +-if test -z "$lt_cv_path_MAGIC_CMD"; then +- if test -n "$ac_tool_prefix"; then +- _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) +- else +- MAGIC_CMD=: +- fi +-fi +-])# _LT_PATH_MAGIC +- +- +-# LT_PATH_LD +-# ---------- +-# find the pathname to the GNU or non-GNU linker +-AC_DEFUN([LT_PATH_LD], +-[AC_REQUIRE([AC_PROG_CC])dnl +-AC_REQUIRE([AC_CANONICAL_HOST])dnl +-AC_REQUIRE([AC_CANONICAL_BUILD])dnl +-m4_require([_LT_DECL_SED])dnl +-m4_require([_LT_DECL_EGREP])dnl +-m4_require([_LT_PROG_ECHO_BACKSLASH])dnl +- +-AC_ARG_WITH([gnu-ld], +- [AS_HELP_STRING([--with-gnu-ld], +- [assume the C compiler uses GNU ld @<:@default=no@:>@])], +- [test "$withval" = no || with_gnu_ld=yes], +- [with_gnu_ld=no])dnl +- +-ac_prog=ld +-if test "$GCC" = yes; then +- # Check if gcc -print-prog-name=ld gives a path. +- AC_MSG_CHECKING([for ld used by $CC]) +- case $host in +- *-*-mingw*) +- # gcc leaves a trailing carriage return which upsets mingw +- ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; +- *) +- ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; +- esac +- case $ac_prog in +- # Accept absolute paths. +- [[\\/]]* | ?:[[\\/]]*) +- re_direlt='/[[^/]][[^/]]*/\.\./' +- # Canonicalize the pathname of ld +- ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` +- while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do +- ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` +- done +- test -z "$LD" && LD="$ac_prog" +- ;; +- "") +- # If it fails, then pretend we aren't using GCC. +- ac_prog=ld +- ;; +- *) +- # If it is relative, then search for the first ld in PATH. +- with_gnu_ld=unknown +- ;; +- esac +-elif test "$with_gnu_ld" = yes; then +- AC_MSG_CHECKING([for GNU ld]) +-else +- AC_MSG_CHECKING([for non-GNU ld]) +-fi +-AC_CACHE_VAL(lt_cv_path_LD, +-[if test -z "$LD"; then +- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for ac_dir in $PATH; do +- IFS="$lt_save_ifs" +- test -z "$ac_dir" && ac_dir=. +- if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then +- lt_cv_path_LD="$ac_dir/$ac_prog" +- # Check to see if the program is GNU ld. I'd rather use --version, +- # but apparently some variants of GNU ld only accept -v. +- # Break only if it was the GNU/non-GNU ld that we prefer. +- case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then +- lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' +- lt_cv_file_magic_cmd='func_win32_libid' +- else +- # Keep this pattern in sync with the one in func_win32_libid. +- lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' +- lt_cv_file_magic_cmd='$OBJDUMP -f' +- fi +- ;; +- +-cegcc*) +- # use the weaker test based on 'objdump'. See mingw*. +- lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' +- lt_cv_file_magic_cmd='$OBJDUMP -f' +- ;; +- +-darwin* | rhapsody*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-freebsd* | dragonfly*) +- if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then +- case $host_cpu in +- i*86 ) +- # Not sure whether the presence of OpenBSD here was a mistake. +- # Let's accept both of them until this is cleared up. +- lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` +- ;; +- esac +- else +- lt_cv_deplibs_check_method=pass_all +- fi +- ;; +- +-haiku*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-hpux10.20* | hpux11*) +- lt_cv_file_magic_cmd=/usr/bin/file +- case $host_cpu in +- ia64*) +- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' +- lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so +- ;; +- hppa*64*) +- [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] +- lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl +- ;; +- *) +- lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' +- lt_cv_file_magic_test_file=/usr/lib/libc.sl +- ;; +- esac +- ;; +- +-interix[[3-9]]*) +- # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here +- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' +- ;; +- +-irix5* | irix6* | nonstopux*) +- case $LD in +- *-32|*"-32 ") libmagic=32-bit;; +- *-n32|*"-n32 ") libmagic=N32;; +- *-64|*"-64 ") libmagic=64-bit;; +- *) libmagic=never-match;; +- esac +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-# This must be glibc/ELF. +-linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-netbsd* | netbsdelf*-gnu) +- if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then +- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' +- else +- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' +- fi +- ;; +- +-newos6*) +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' +- lt_cv_file_magic_cmd=/usr/bin/file +- lt_cv_file_magic_test_file=/usr/lib/libnls.so +- ;; +- +-*nto* | *qnx*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-openbsd*) +- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' +- else +- lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' +- fi +- ;; +- +-osf3* | osf4* | osf5*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-rdos*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-solaris*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) +- lt_cv_deplibs_check_method=pass_all +- ;; +- +-sysv4 | sysv4.3*) +- case $host_vendor in +- motorola) +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' +- lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` +- ;; +- ncr) +- lt_cv_deplibs_check_method=pass_all +- ;; +- sequent) +- lt_cv_file_magic_cmd='/bin/file' +- lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' +- ;; +- sni) +- lt_cv_file_magic_cmd='/bin/file' +- lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" +- lt_cv_file_magic_test_file=/lib/libc.so +- ;; +- siemens) +- lt_cv_deplibs_check_method=pass_all +- ;; +- pc) +- lt_cv_deplibs_check_method=pass_all +- ;; +- esac +- ;; +- +-tpf*) +- lt_cv_deplibs_check_method=pass_all +- ;; +-esac +-]) +- +-file_magic_glob= +-want_nocaseglob=no +-if test "$build" = "$host"; then +- case $host_os in +- mingw* | pw32*) +- if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then +- want_nocaseglob=yes +- else +- file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` +- fi +- ;; +- esac +-fi +- +-file_magic_cmd=$lt_cv_file_magic_cmd +-deplibs_check_method=$lt_cv_deplibs_check_method +-test -z "$deplibs_check_method" && deplibs_check_method=unknown +- +-_LT_DECL([], [deplibs_check_method], [1], +- [Method to check whether dependent libraries are shared objects]) +-_LT_DECL([], [file_magic_cmd], [1], +- [Command to use when deplibs_check_method = "file_magic"]) +-_LT_DECL([], [file_magic_glob], [1], +- [How to find potential files when deplibs_check_method = "file_magic"]) +-_LT_DECL([], [want_nocaseglob], [1], +- [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +-])# _LT_CHECK_MAGIC_METHOD +- +- +-# LT_PATH_NM +-# ---------- +-# find the pathname to a BSD- or MS-compatible name lister +-AC_DEFUN([LT_PATH_NM], +-[AC_REQUIRE([AC_PROG_CC])dnl +-AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +-[if test -n "$NM"; then +- # Let the user override the test. +- lt_cv_path_NM="$NM" +-else +- lt_nm_to_check="${ac_tool_prefix}nm" +- if test -n "$ac_tool_prefix" && test "$build" = "$host"; then +- lt_nm_to_check="$lt_nm_to_check nm" +- fi +- for lt_tmp_nm in $lt_nm_to_check; do +- lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +- for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do +- IFS="$lt_save_ifs" +- test -z "$ac_dir" && ac_dir=. +- tmp_nm="$ac_dir/$lt_tmp_nm" +- if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then +- # Check to see if the nm accepts a BSD-compat flag. +- # Adding the `sed 1q' prevents false positives on HP-UX, which says: +- # nm: unknown option "B" ignored +- # Tru64's nm complains that /dev/null is an invalid object file +- case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in +- */dev/null* | *'Invalid file or object type'*) +- lt_cv_path_NM="$tmp_nm -B" +- break +- ;; +- *) +- case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in +- */dev/null*) +- lt_cv_path_NM="$tmp_nm -p" +- break +- ;; +- *) +- lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but +- continue # so that we can try to find one that supports BSD flags +- ;; +- esac +- ;; +- esac +- fi +- done +- IFS="$lt_save_ifs" +- done +- : ${lt_cv_path_NM=no} +-fi]) +-if test "$lt_cv_path_NM" != "no"; then +- NM="$lt_cv_path_NM" +-else +- # Didn't find any BSD compatible name lister, look for dumpbin. +- if test -n "$DUMPBIN"; then : +- # Let the user override the test. +- else +- AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) +- case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in +- *COFF*) +- DUMPBIN="$DUMPBIN -symbols" +- ;; +- *) +- DUMPBIN=: +- ;; +- esac +- fi +- AC_SUBST([DUMPBIN]) +- if test "$DUMPBIN" != ":"; then +- NM="$DUMPBIN" +- fi +-fi +-test -z "$NM" && NM=nm +-AC_SUBST([NM]) +-_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl +- +-AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], +- [lt_cv_nm_interface="BSD nm" +- echo "int some_variable = 0;" > conftest.$ac_ext +- (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) +- (eval "$ac_compile" 2>conftest.err) +- cat conftest.err >&AS_MESSAGE_LOG_FD +- (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) +- (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) +- cat conftest.err >&AS_MESSAGE_LOG_FD +- (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) +- cat conftest.out >&AS_MESSAGE_LOG_FD +- if $GREP 'External.*some_variable' conftest.out > /dev/null; then +- lt_cv_nm_interface="MS dumpbin" +- fi +- rm -f conftest*]) +-])# LT_PATH_NM +- +-# Old names: +-AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +-AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AM_PROG_NM], []) +-dnl AC_DEFUN([AC_PROG_NM], []) +- +-# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +-# -------------------------------- +-# how to determine the name of the shared library +-# associated with a specific link library. +-# -- PORTME fill in with the dynamic library characteristics +-m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +-[m4_require([_LT_DECL_EGREP]) +-m4_require([_LT_DECL_OBJDUMP]) +-m4_require([_LT_DECL_DLLTOOL]) +-AC_CACHE_CHECK([how to associate runtime and link libraries], +-lt_cv_sharedlib_from_linklib_cmd, +-[lt_cv_sharedlib_from_linklib_cmd='unknown' +- +-case $host_os in +-cygwin* | mingw* | pw32* | cegcc*) +- # two different shell functions defined in ltmain.sh +- # decide which to use based on capabilities of $DLLTOOL +- case `$DLLTOOL --help 2>&1` in +- *--identify-strict*) +- lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib +- ;; +- *) +- lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback +- ;; +- esac +- ;; +-*) +- # fallback: assume linklib IS sharedlib +- lt_cv_sharedlib_from_linklib_cmd="$ECHO" +- ;; +-esac +-]) +-sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +-test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO +- +-_LT_DECL([], [sharedlib_from_linklib_cmd], [1], +- [Command to associate shared and link libraries]) +-])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +- +- +-# _LT_PATH_MANIFEST_TOOL +-# ---------------------- +-# locate the manifest tool +-m4_defun([_LT_PATH_MANIFEST_TOOL], +-[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +-test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +-AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], +- [lt_cv_path_mainfest_tool=no +- echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD +- $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out +- cat conftest.err >&AS_MESSAGE_LOG_FD +- if $GREP 'Manifest Tool' conftest.out > /dev/null; then +- lt_cv_path_mainfest_tool=yes +- fi +- rm -f conftest*]) +-if test "x$lt_cv_path_mainfest_tool" != xyes; then +- MANIFEST_TOOL=: +-fi +-_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +-])# _LT_PATH_MANIFEST_TOOL +- +- +-# LT_LIB_M +-# -------- +-# check for math library +-AC_DEFUN([LT_LIB_M], +-[AC_REQUIRE([AC_CANONICAL_HOST])dnl +-LIBM= +-case $host in +-*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) +- # These system don't have libm, or don't need it +- ;; +-*-ncr-sysv4.3*) +- AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") +- AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") +- ;; +-*) +- AC_CHECK_LIB(m, cos, LIBM="-lm") +- ;; +-esac +-AC_SUBST([LIBM]) +-])# LT_LIB_M +- +-# Old name: +-AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([AC_CHECK_LIBM], []) +- +- +-# _LT_COMPILER_NO_RTTI([TAGNAME]) +-# ------------------------------- +-m4_defun([_LT_COMPILER_NO_RTTI], +-[m4_require([_LT_TAG_COMPILER])dnl +- +-_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= +- +-if test "$GCC" = yes; then +- case $cc_basename in +- nvcc*) +- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; +- *) +- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; +- esac +- +- _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], +- lt_cv_prog_compiler_rtti_exceptions, +- [-fno-rtti -fno-exceptions], [], +- [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +-fi +-_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], +- [Compiler flag to turn off builtin functions]) +-])# _LT_COMPILER_NO_RTTI +- +- +-# _LT_CMD_GLOBAL_SYMBOLS +-# ---------------------- +-m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +-[AC_REQUIRE([AC_CANONICAL_HOST])dnl +-AC_REQUIRE([AC_PROG_CC])dnl +-AC_REQUIRE([AC_PROG_AWK])dnl +-AC_REQUIRE([LT_PATH_NM])dnl +-AC_REQUIRE([LT_PATH_LD])dnl +-m4_require([_LT_DECL_SED])dnl +-m4_require([_LT_DECL_EGREP])dnl +-m4_require([_LT_TAG_COMPILER])dnl +- +-# Check for command to grab the raw symbol name followed by C symbol from nm. +-AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +-AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +-[ +-# These are sane defaults that work on at least a few old systems. +-# [They come from Ultrix. What could be older than Ultrix?!! ;)] +- +-# Character class describing NM global symbol codes. +-symcode='[[BCDEGRST]]' +- +-# Regexp to match symbols that can be accessed directly from C. +-sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' +- +-# Define system-specific variables. +-case $host_os in +-aix*) +- symcode='[[BCDT]]' +- ;; +-cygwin* | mingw* | pw32* | cegcc*) +- symcode='[[ABCDGISTW]]' +- ;; +-hpux*) +- if test "$host_cpu" = ia64; then +- symcode='[[ABCDEGRST]]' +- fi +- ;; +-irix* | nonstopux*) +- symcode='[[BCDEGRST]]' +- ;; +-osf*) +- symcode='[[BCDEGQRST]]' +- ;; +-solaris*) +- symcode='[[BDRT]]' +- ;; +-sco3.2v5*) +- symcode='[[DT]]' +- ;; +-sysv4.2uw2*) +- symcode='[[DT]]' +- ;; +-sysv5* | sco5v6* | unixware* | OpenUNIX*) +- symcode='[[ABDT]]' +- ;; +-sysv4) +- symcode='[[DFNSTU]]' +- ;; +-esac +- +-# If we're using GNU nm, then use its standard symbol codes. +-case `$NM -V 2>&1` in +-*GNU* | *'with BFD'*) +- symcode='[[ABCDGIRSTW]]' ;; +-esac +- +-# Transform an extracted symbol line into a proper C declaration. +-# Some systems (esp. on ia64) link data and code symbols differently, +-# so use this general approach. +-lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" +- +-# Transform an extracted symbol line into symbol name and symbol address +-lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" +-lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" +- +-# Handle CRLF in mingw tool chain +-opt_cr= +-case $build_os in +-mingw*) +- opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp +- ;; +-esac +- +-# Try without a prefix underscore, then with it. +-for ac_symprfx in "" "_"; do +- +- # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. +- symxfrm="\\1 $ac_symprfx\\2 \\2" +- +- # Write the raw and C identifiers. +- if test "$lt_cv_nm_interface" = "MS dumpbin"; then +- # Fake it for dumpbin and say T for any non-static function +- # and D for any global variable. +- # Also find C++ and __fastcall symbols from MSVC++, +- # which start with @ or ?. +- lt_cv_sys_global_symbol_pipe="$AWK ['"\ +-" {last_section=section; section=\$ 3};"\ +-" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +-" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +-" \$ 0!~/External *\|/{next};"\ +-" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +-" {if(hide[section]) next};"\ +-" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +-" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +-" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +-" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +-" ' prfx=^$ac_symprfx]" +- else +- lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" +- fi +- lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" +- +- # Check to see that the pipe works correctly. +- pipe_works=no +- +- rm -f conftest* +- cat > conftest.$ac_ext <<_LT_EOF +-#ifdef __cplusplus +-extern "C" { +-#endif +-char nm_test_var; +-void nm_test_func(void); +-void nm_test_func(void){} +-#ifdef __cplusplus +-} +-#endif +-int main(){nm_test_var='a';nm_test_func();return(0);} +-_LT_EOF +- +- if AC_TRY_EVAL(ac_compile); then +- # Now try to grab the symbols. +- nlist=conftest.nm +- if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then +- # Try sorting and uniquifying the output. +- if sort "$nlist" | uniq > "$nlist"T; then +- mv -f "$nlist"T "$nlist" +- else +- rm -f "$nlist"T +- fi +- +- # Make sure that we snagged all the symbols we need. +- if $GREP ' nm_test_var$' "$nlist" >/dev/null; then +- if $GREP ' nm_test_func$' "$nlist" >/dev/null; then +- cat <<_LT_EOF > conftest.$ac_ext +-/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +-#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +-/* DATA imports from DLLs on WIN32 con't be const, because runtime +- relocations are performed -- see ld's documentation on pseudo-relocs. */ +-# define LT@&t@_DLSYM_CONST +-#elif defined(__osf__) +-/* This system does not cope well with relocations in const data. */ +-# define LT@&t@_DLSYM_CONST +-#else +-# define LT@&t@_DLSYM_CONST const +-#endif +- +-#ifdef __cplusplus +-extern "C" { +-#endif +- +-_LT_EOF +- # Now generate the symbol file. +- eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' +- +- cat <<_LT_EOF >> conftest.$ac_ext +- +-/* The mapping between symbol names and symbols. */ +-LT@&t@_DLSYM_CONST struct { +- const char *name; +- void *address; +-} +-lt__PROGRAM__LTX_preloaded_symbols[[]] = +-{ +- { "@PROGRAM@", (void *) 0 }, +-_LT_EOF +- $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext +- cat <<\_LT_EOF >> conftest.$ac_ext +- {0, (void *) 0} +-}; +- +-/* This works around a problem in FreeBSD linker */ +-#ifdef FREEBSD_WORKAROUND +-static const void *lt_preloaded_setup() { +- return lt__PROGRAM__LTX_preloaded_symbols; +-} +-#endif +- +-#ifdef __cplusplus +-} +-#endif +-_LT_EOF +- # Now try linking the two files. +- mv conftest.$ac_objext conftstm.$ac_objext +- lt_globsym_save_LIBS=$LIBS +- lt_globsym_save_CFLAGS=$CFLAGS +- LIBS="conftstm.$ac_objext" +- CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" +- if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then +- pipe_works=yes +- fi +- LIBS=$lt_globsym_save_LIBS +- CFLAGS=$lt_globsym_save_CFLAGS +- else +- echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD +- fi +- else +- echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD +- fi +- else +- echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD +- fi +- else +- echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD +- cat conftest.$ac_ext >&5 +- fi +- rm -rf conftest* conftst* +- +- # Do not use the global_symbol_pipe unless it works. +- if test "$pipe_works" = yes; then +- break +- else +- lt_cv_sys_global_symbol_pipe= +- fi +-done +-]) +-if test -z "$lt_cv_sys_global_symbol_pipe"; then +- lt_cv_sys_global_symbol_to_cdecl= +-fi +-if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then +- AC_MSG_RESULT(failed) +-else +- AC_MSG_RESULT(ok) +-fi +- +-# Response file support. +-if test "$lt_cv_nm_interface" = "MS dumpbin"; then +- nm_file_list_spec='@' +-elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then +- nm_file_list_spec='@' +-fi +- +-_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], +- [Take the output of nm and produce a listing of raw symbols and C names]) +-_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], +- [Transform the output of nm in a proper C declaration]) +-_LT_DECL([global_symbol_to_c_name_address], +- [lt_cv_sys_global_symbol_to_c_name_address], [1], +- [Transform the output of nm in a C name address pair]) +-_LT_DECL([global_symbol_to_c_name_address_lib_prefix], +- [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], +- [Transform the output of nm in a C name address pair when lib prefix is needed]) +-_LT_DECL([], [nm_file_list_spec], [1], +- [Specify filename containing input files for $NM]) +-]) # _LT_CMD_GLOBAL_SYMBOLS +- +- +-# _LT_COMPILER_PIC([TAGNAME]) +-# --------------------------- +-m4_defun([_LT_COMPILER_PIC], +-[m4_require([_LT_TAG_COMPILER])dnl +-_LT_TAGVAR(lt_prog_compiler_wl, $1)= +-_LT_TAGVAR(lt_prog_compiler_pic, $1)= +-_LT_TAGVAR(lt_prog_compiler_static, $1)= +- +-m4_if([$1], [CXX], [ +- # C++ specific cases for pic, static, wl, etc. +- if test "$GXX" = yes; then +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' +- +- case $host_os in +- aix*) +- # All AIX code is PIC. +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- fi +- ;; +- +- amigaos*) +- case $host_cpu in +- powerpc) +- # see comment about AmigaOS4 .so support +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- m68k) +- # FIXME: we need at least 68020 code to build shared libraries, but +- # adding the `-m68020' flag to GCC prevents building anything better, +- # like `-m68040'. +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' +- ;; +- esac +- ;; +- +- beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) +- # PIC is the default for these OSes. +- ;; +- mingw* | cygwin* | os2* | pw32* | cegcc*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- # Although the cygwin gcc ignores -fPIC, still need this for old-style +- # (--disable-auto-import) libraries +- m4_if([$1], [GCJ], [], +- [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) +- ;; +- darwin* | rhapsody*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' +- ;; +- *djgpp*) +- # DJGPP does not support shared libraries at all +- _LT_TAGVAR(lt_prog_compiler_pic, $1)= +- ;; +- haiku*) +- # PIC is the default for Haiku. +- # The "-static" flag exists, but is broken. +- _LT_TAGVAR(lt_prog_compiler_static, $1)= +- ;; +- interix[[3-9]]*) +- # Interix 3.x gcc -fpic/-fPIC options generate broken code. +- # Instead, we relocate shared libraries at runtime. +- ;; +- sysv4*MP*) +- if test -d /usr/nec; then +- _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic +- fi +- ;; +- hpux*) +- # PIC is the default for 64-bit PA HP-UX, but not for 32-bit +- # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag +- # sets the default TLS model and affects inlining. +- case $host_cpu in +- hppa*64*) +- ;; +- *) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- esac +- ;; +- *qnx* | *nto*) +- # QNX uses GNU C++, but need to define -shared option too, otherwise +- # it will coredump. +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' +- ;; +- *) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- esac +- else +- case $host_os in +- aix[[4-9]]*) +- # All AIX code is PIC. +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- else +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' +- fi +- ;; +- chorus*) +- case $cc_basename in +- cxch68*) +- # Green Hills C++ Compiler +- # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" +- ;; +- esac +- ;; +- mingw* | cygwin* | os2* | pw32* | cegcc*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- m4_if([$1], [GCJ], [], +- [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) +- ;; +- dgux*) +- case $cc_basename in +- ec++*) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- ;; +- ghcx*) +- # Green Hills C++ Compiler +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' +- ;; +- *) +- ;; +- esac +- ;; +- freebsd* | dragonfly*) +- # FreeBSD uses GNU C++ +- ;; +- hpux9* | hpux10* | hpux11*) +- case $cc_basename in +- CC*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' +- if test "$host_cpu" != ia64; then +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' +- fi +- ;; +- aCC*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' +- case $host_cpu in +- hppa*64*|ia64*) +- # +Z the default +- ;; +- *) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' +- ;; +- esac +- ;; +- *) +- ;; +- esac +- ;; +- interix*) +- # This is c89, which is MS Visual C++ (no shared libs) +- # Anyone wants to do a port? +- ;; +- irix5* | irix6* | nonstopux*) +- case $cc_basename in +- CC*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- # CC pic flag -KPIC is the default. +- ;; +- *) +- ;; +- esac +- ;; +- linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) +- case $cc_basename in +- KCC*) +- # KAI C++ Compiler +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- ecpc* ) +- # old Intel C++ for x86_64 which still supported -KPIC. +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' +- ;; +- icpc* ) +- # Intel C++, used to be incompatible with GCC. +- # ICC 10 doesn't accept -KPIC any more. +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' +- ;; +- pgCC* | pgcpp*) +- # Portland Group C++ compiler +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- cxx*) +- # Compaq C++ +- # Make sure the PIC flag is empty. It appears that all Alpha +- # Linux and Compaq Tru64 Unix objects are PIC. +- _LT_TAGVAR(lt_prog_compiler_pic, $1)= +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; +- xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) +- # IBM XL 8.0, 9.0 on PPC and BlueGene +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' +- ;; +- *) +- case `$CC -V 2>&1 | sed 5q` in +- *Sun\ C*) +- # Sun C++ 5.9 +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' +- ;; +- esac +- ;; +- esac +- ;; +- lynxos*) +- ;; +- m88k*) +- ;; +- mvs*) +- case $cc_basename in +- cxx*) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' +- ;; +- *) +- ;; +- esac +- ;; +- netbsd* | netbsdelf*-gnu) +- ;; +- *qnx* | *nto*) +- # QNX uses GNU C++, but need to define -shared option too, otherwise +- # it will coredump. +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' +- ;; +- osf3* | osf4* | osf5*) +- case $cc_basename in +- KCC*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' +- ;; +- RCC*) +- # Rational C++ 2.4.1 +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' +- ;; +- cxx*) +- # Digital/Compaq C++ +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- # Make sure the PIC flag is empty. It appears that all Alpha +- # Linux and Compaq Tru64 Unix objects are PIC. +- _LT_TAGVAR(lt_prog_compiler_pic, $1)= +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; +- *) +- ;; +- esac +- ;; +- psos*) +- ;; +- solaris*) +- case $cc_basename in +- CC* | sunCC*) +- # Sun C++ 4.2, 5.x and Centerline C++ +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' +- ;; +- gcx*) +- # Green Hills C++ Compiler +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' +- ;; +- *) +- ;; +- esac +- ;; +- sunos4*) +- case $cc_basename in +- CC*) +- # Sun C++ 4.x +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- lcc*) +- # Lucid +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' +- ;; +- *) +- ;; +- esac +- ;; +- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) +- case $cc_basename in +- CC*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- esac +- ;; +- tandem*) +- case $cc_basename in +- NCC*) +- # NonStop-UX NCC 3.20 +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- ;; +- *) +- ;; +- esac +- ;; +- vxworks*) +- ;; +- *) +- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no +- ;; +- esac +- fi +-], +-[ +- if test "$GCC" = yes; then +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' +- +- case $host_os in +- aix*) +- # All AIX code is PIC. +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- fi +- ;; +- +- amigaos*) +- case $host_cpu in +- powerpc) +- # see comment about AmigaOS4 .so support +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- m68k) +- # FIXME: we need at least 68020 code to build shared libraries, but +- # adding the `-m68020' flag to GCC prevents building anything better, +- # like `-m68040'. +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' +- ;; +- esac +- ;; +- +- beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) +- # PIC is the default for these OSes. +- ;; +- +- mingw* | cygwin* | pw32* | os2* | cegcc*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- # Although the cygwin gcc ignores -fPIC, still need this for old-style +- # (--disable-auto-import) libraries +- m4_if([$1], [GCJ], [], +- [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) +- ;; +- +- darwin* | rhapsody*) +- # PIC is the default on this platform +- # Common symbols not allowed in MH_DYLIB files +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' +- ;; +- +- haiku*) +- # PIC is the default for Haiku. +- # The "-static" flag exists, but is broken. +- _LT_TAGVAR(lt_prog_compiler_static, $1)= +- ;; +- +- hpux*) +- # PIC is the default for 64-bit PA HP-UX, but not for 32-bit +- # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag +- # sets the default TLS model and affects inlining. +- case $host_cpu in +- hppa*64*) +- # +Z the default +- ;; +- *) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- esac +- ;; +- +- interix[[3-9]]*) +- # Interix 3.x gcc -fpic/-fPIC options generate broken code. +- # Instead, we relocate shared libraries at runtime. +- ;; +- +- msdosdjgpp*) +- # Just because we use GCC doesn't mean we suddenly get shared libraries +- # on systems that don't support them. +- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no +- enable_shared=no +- ;; +- +- *nto* | *qnx*) +- # QNX uses GNU C++, but need to define -shared option too, otherwise +- # it will coredump. +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' +- ;; +- +- sysv4*MP*) +- if test -d /usr/nec; then +- _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic +- fi +- ;; +- +- *) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- ;; +- esac +- +- case $cc_basename in +- nvcc*) # Cuda Compiler Driver 2.2 +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' +- if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then +- _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" +- fi +- ;; +- esac +- else +- # PORTME Check for flag to pass linker flags through the system compiler. +- case $host_os in +- aix*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- if test "$host_cpu" = ia64; then +- # AIX 5 now supports IA64 processor +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- else +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' +- fi +- ;; +- +- mingw* | cygwin* | pw32* | os2* | cegcc*) +- # This hack is so that the source file can tell whether it is being +- # built for inclusion in a dll (and should export symbols for example). +- m4_if([$1], [GCJ], [], +- [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) +- ;; +- +- hpux9* | hpux10* | hpux11*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but +- # not for PA HP-UX. +- case $host_cpu in +- hppa*64*|ia64*) +- # +Z the default +- ;; +- *) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' +- ;; +- esac +- # Is there a better lt_prog_compiler_static that works with the bundled CC? +- _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' +- ;; +- +- irix5* | irix6* | nonstopux*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- # PIC (with -KPIC) is the default. +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; +- +- linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) +- case $cc_basename in +- # old Intel for x86_64 which still supported -KPIC. +- ecc*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' +- ;; +- # icc used to be incompatible with GCC. +- # ICC 10 doesn't accept -KPIC any more. +- icc* | ifort*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' +- ;; +- # Lahey Fortran 8.1. +- lf95*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' +- ;; +- nagfor*) +- # NAG Fortran compiler +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) +- # Portland Group compilers (*not* the Pentium gcc compiler, +- # which looks to be a dead project) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- ccc*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- # All Alpha code is PIC. +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; +- xl* | bgxl* | bgf* | mpixl*) +- # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' +- ;; +- *) +- case `$CC -V 2>&1 | sed 5q` in +- *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) +- # Sun Fortran 8.3 passes all unrecognized flags to the linker +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='' +- ;; +- *Sun\ F* | *Sun*Fortran*) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' +- ;; +- *Sun\ C*) +- # Sun C 5.9 +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- ;; +- *Intel*\ [[CF]]*Compiler*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' +- ;; +- *Portland\ Group*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- esac +- ;; +- esac +- ;; +- +- newsos6) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- +- *nto* | *qnx*) +- # QNX uses GNU C++, but need to define -shared option too, otherwise +- # it will coredump. +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' +- ;; +- +- osf3* | osf4* | osf5*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- # All OSF/1 code is PIC. +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; +- +- rdos*) +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' +- ;; +- +- solaris*) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- case $cc_basename in +- f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; +- *) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; +- esac +- ;; +- +- sunos4*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- +- sysv4 | sysv4.2uw2* | sysv4.3*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- +- sysv4*MP*) +- if test -d /usr/nec ;then +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- fi +- ;; +- +- sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- +- unicos*) +- _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' +- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no +- ;; +- +- uts4*) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' +- _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' +- ;; +- +- *) +- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no +- ;; +- esac +- fi +-]) +-case $host_os in +- # For platforms which do not support PIC, -DPIC is meaningless: +- *djgpp*) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)= +- ;; +- *) +- _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" +- ;; +-esac +- +-AC_CACHE_CHECK([for $compiler option to produce PIC], +- [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], +- [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +-_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) +- +-# +-# Check to make sure the PIC flag actually works. +-# +-if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then +- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], +- [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], +- [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], +- [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in +- "" | " "*) ;; +- *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; +- esac], +- [_LT_TAGVAR(lt_prog_compiler_pic, $1)= +- _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +-fi +-_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], +- [Additional compiler flags for building library objects]) +- +-_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], +- [How to pass a linker flag through the compiler]) +-# +-# Check to make sure the static flag actually works. +-# +-wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +-_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], +- _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), +- $lt_tmp_static_flag, +- [], +- [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +-_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], +- [Compiler flag to prevent dynamic linking]) +-])# _LT_COMPILER_PIC +- +- +-# _LT_LINKER_SHLIBS([TAGNAME]) +-# ---------------------------- +-# See if the linker supports building shared libraries. +-m4_defun([_LT_LINKER_SHLIBS], +-[AC_REQUIRE([LT_PATH_LD])dnl +-AC_REQUIRE([LT_PATH_NM])dnl +-m4_require([_LT_PATH_MANIFEST_TOOL])dnl +-m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-m4_require([_LT_DECL_EGREP])dnl +-m4_require([_LT_DECL_SED])dnl +-m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +-m4_require([_LT_TAG_COMPILER])dnl +-AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +-m4_if([$1], [CXX], [ +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +- _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] +- case $host_os in +- aix[[4-9]]*) +- # If we're using GNU nm, then we don't want the "-C" option. +- # -C means demangle to AIX nm, but means don't demangle with GNU nm +- # Also, AIX nm treats weak defined symbols like other global defined +- # symbols, whereas GNU nm marks them as "W". +- if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' +- else +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' +- fi +- ;; +- pw32*) +- _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" +- ;; +- cygwin* | mingw* | cegcc*) +- case $cc_basename in +- cl*) +- _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' +- ;; +- *) +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' +- _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] +- ;; +- esac +- ;; +- linux* | k*bsd*-gnu | gnu*) +- _LT_TAGVAR(link_all_deplibs, $1)=no +- ;; +- *) +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +- ;; +- esac +-], [ +- runpath_var= +- _LT_TAGVAR(allow_undefined_flag, $1)= +- _LT_TAGVAR(always_export_symbols, $1)=no +- _LT_TAGVAR(archive_cmds, $1)= +- _LT_TAGVAR(archive_expsym_cmds, $1)= +- _LT_TAGVAR(compiler_needs_object, $1)=no +- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no +- _LT_TAGVAR(export_dynamic_flag_spec, $1)= +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +- _LT_TAGVAR(hardcode_automatic, $1)=no +- _LT_TAGVAR(hardcode_direct, $1)=no +- _LT_TAGVAR(hardcode_direct_absolute, $1)=no +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +- _LT_TAGVAR(hardcode_libdir_separator, $1)= +- _LT_TAGVAR(hardcode_minus_L, $1)=no +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +- _LT_TAGVAR(inherit_rpath, $1)=no +- _LT_TAGVAR(link_all_deplibs, $1)=unknown +- _LT_TAGVAR(module_cmds, $1)= +- _LT_TAGVAR(module_expsym_cmds, $1)= +- _LT_TAGVAR(old_archive_from_new_cmds, $1)= +- _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= +- _LT_TAGVAR(thread_safe_flag_spec, $1)= +- _LT_TAGVAR(whole_archive_flag_spec, $1)= +- # include_expsyms should be a list of space-separated symbols to be *always* +- # included in the symbol list +- _LT_TAGVAR(include_expsyms, $1)= +- # exclude_expsyms can be an extended regexp of symbols to exclude +- # it will be wrapped by ` (' and `)$', so one must not match beginning or +- # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', +- # as well as any symbol that contains `d'. +- _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] +- # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out +- # platforms (ab)use it in PIC code, but their linkers get confused if +- # the symbol is explicitly referenced. Since portable code cannot +- # rely on this symbol name, it's probably fine to never include it in +- # preloaded symbol tables. +- # Exclude shared library initialization/finalization symbols. +-dnl Note also adjust exclude_expsyms for C++ above. +- extract_expsyms_cmds= +- +- case $host_os in +- cygwin* | mingw* | pw32* | cegcc*) +- # FIXME: the MSVC++ port hasn't been tested in a loooong time +- # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. +- if test "$GCC" != yes; then +- with_gnu_ld=no +- fi +- ;; +- interix*) +- # we just hope/assume this is gcc and not c89 (= MSVC++) +- with_gnu_ld=yes +- ;; +- openbsd*) +- with_gnu_ld=no +- ;; +- linux* | k*bsd*-gnu | gnu*) +- _LT_TAGVAR(link_all_deplibs, $1)=no +- ;; +- esac +- +- _LT_TAGVAR(ld_shlibs, $1)=yes +- +- # On some targets, GNU ld is compatible enough with the native linker +- # that we're better off using the native interface for both. +- lt_use_gnu_ld_interface=no +- if test "$with_gnu_ld" = yes; then +- case $host_os in +- aix*) +- # The AIX port of GNU ld has always aspired to compatibility +- # with the native linker. However, as the warning in the GNU ld +- # block says, versions before 2.19.5* couldn't really create working +- # shared libraries, regardless of the interface used. +- case `$LD -v 2>&1` in +- *\ \(GNU\ Binutils\)\ 2.19.5*) ;; +- *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; +- *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; +- *) +- lt_use_gnu_ld_interface=yes +- ;; +- esac +- ;; +- *) +- lt_use_gnu_ld_interface=yes +- ;; +- esac +- fi +- +- if test "$lt_use_gnu_ld_interface" = yes; then +- # If archive_cmds runs LD, not CC, wlarc should be empty +- wlarc='${wl}' +- +- # Set some defaults for GNU ld with shared library support. These +- # are reset later if shared libraries are not supported. Putting them +- # here allows them to be overridden if necessary. +- runpath_var=LD_RUN_PATH +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- # ancient GNU ld didn't support --whole-archive et. al. +- if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then +- _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +- else +- _LT_TAGVAR(whole_archive_flag_spec, $1)= +- fi +- supports_anon_versioning=no +- case `$LD -v 2>&1` in +- *GNU\ gold*) supports_anon_versioning=yes ;; +- *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 +- *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... +- *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... +- *\ 2.11.*) ;; # other 2.11 versions +- *) supports_anon_versioning=yes ;; +- esac +- +- # See if GNU ld supports shared libraries. +- case $host_os in +- aix[[3-9]]*) +- # On AIX/PPC, the GNU linker is very broken +- if test "$host_cpu" != ia64; then +- _LT_TAGVAR(ld_shlibs, $1)=no +- cat <<_LT_EOF 1>&2 +- +-*** Warning: the GNU linker, at least up to release 2.19, is reported +-*** to be unable to reliably create shared libraries on AIX. +-*** Therefore, libtool is disabling shared libraries support. If you +-*** really care for shared libraries, you may want to install binutils +-*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +-*** You will then need to restart the configuration process. +- +-_LT_EOF +- fi +- ;; +- +- amigaos*) +- case $host_cpu in +- powerpc) +- # see comment about AmigaOS4 .so support +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='' +- ;; +- m68k) +- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- ;; +- esac +- ;; +- +- beos*) +- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then +- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- # Joseph Beckenbach says some releases of gcc +- # support --undefined. This deserves some investigation. FIXME +- _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- +- cygwin* | mingw* | pw32* | cegcc*) +- # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, +- # as there is no search path for DLLs. +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' +- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- _LT_TAGVAR(always_export_symbols, $1)=no +- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' +- _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] +- +- if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' +- # If the export-symbols file already is a .def file (1st line +- # is EXPORTS), use it as is; otherwise, prepend... +- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then +- cp $export_symbols $output_objdir/$soname.def; +- else +- echo EXPORTS > $output_objdir/$soname.def; +- cat $export_symbols >> $output_objdir/$soname.def; +- fi~ +- $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- +- haiku*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- ;; +- +- interix[[3-9]]*) +- _LT_TAGVAR(hardcode_direct, $1)=no +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. +- # Instead, shared libraries are loaded at an image base (0x10000000 by +- # default) and relocated if they conflict, which is a slow very memory +- # consuming and fragmenting process. To avoid this, we pick a random, +- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link +- # time. Moving up from 0x10000000 also allows more sbrk(2) space. +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- ;; +- +- gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) +- tmp_diet=no +- if test "$host_os" = linux-dietlibc; then +- case $cc_basename in +- diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) +- esac +- fi +- if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ +- && test "$tmp_diet" = no +- then +- tmp_addflag=' $pic_flag' +- tmp_sharedflag='-shared' +- case $cc_basename,$host_cpu in +- pgcc*) # Portland Group C compiler +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' +- tmp_addflag=' $pic_flag' +- ;; +- pgf77* | pgf90* | pgf95* | pgfortran*) +- # Portland Group f77 and f90 compilers +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' +- tmp_addflag=' $pic_flag -Mnomain' ;; +- ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 +- tmp_addflag=' -i_dynamic' ;; +- efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 +- tmp_addflag=' -i_dynamic -nofor_main' ;; +- ifc* | ifort*) # Intel Fortran compiler +- tmp_addflag=' -nofor_main' ;; +- lf95*) # Lahey Fortran 8.1 +- _LT_TAGVAR(whole_archive_flag_spec, $1)= +- tmp_sharedflag='--shared' ;; +- xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) +- tmp_sharedflag='-qmkshrobj' +- tmp_addflag= ;; +- nvcc*) # Cuda Compiler Driver 2.2 +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' +- _LT_TAGVAR(compiler_needs_object, $1)=yes +- ;; +- esac +- case `$CC -V 2>&1 | sed 5q` in +- *Sun\ C*) # Sun C 5.9 +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' +- _LT_TAGVAR(compiler_needs_object, $1)=yes +- tmp_sharedflag='-G' ;; +- *Sun\ F*) # Sun Fortran 8.3 +- tmp_sharedflag='-G' ;; +- esac +- _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- +- if test "x$supports_anon_versioning" = xyes; then +- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ +- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +- echo "local: *; };" >> $output_objdir/$libname.ver~ +- $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' +- fi +- +- case $cc_basename in +- xlf* | bgf* | bgxlf* | mpixlf*) +- # IBM XL Fortran 10.1 on PPC cannot create shared libs itself +- _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' +- if test "x$supports_anon_versioning" = xyes; then +- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ +- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +- echo "local: *; };" >> $output_objdir/$libname.ver~ +- $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' +- fi +- ;; +- esac +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- +- netbsd* | netbsdelf*-gnu) +- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then +- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' +- wlarc= +- else +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- fi +- ;; +- +- solaris*) +- if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then +- _LT_TAGVAR(ld_shlibs, $1)=no +- cat <<_LT_EOF 1>&2 +- +-*** Warning: The releases 2.8.* of the GNU linker cannot reliably +-*** create shared libraries on Solaris systems. Therefore, libtool +-*** is disabling shared libraries support. We urge you to upgrade GNU +-*** binutils to release 2.9.1 or newer. Another option is to modify +-*** your PATH or compiler configuration so that the native linker is +-*** used, and then restart. +- +-_LT_EOF +- elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- +- sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) +- case `$LD -v 2>&1` in +- *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) +- _LT_TAGVAR(ld_shlibs, $1)=no +- cat <<_LT_EOF 1>&2 +- +-*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +-*** reliably create shared libraries on SCO systems. Therefore, libtool +-*** is disabling shared libraries support. We urge you to upgrade GNU +-*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +-*** your PATH or compiler configuration so that the native linker is +-*** used, and then restart. +- +-_LT_EOF +- ;; +- *) +- # For security reasons, it is highly recommended that you always +- # use absolute paths for naming shared libraries, and exclude the +- # DT_RUNPATH tag from executables and libraries. But doing so +- # requires that you compile everything twice, which is a pain. +- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- ;; +- +- sunos4*) +- _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- wlarc= +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- *) +- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- +- if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then +- runpath_var= +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +- _LT_TAGVAR(export_dynamic_flag_spec, $1)= +- _LT_TAGVAR(whole_archive_flag_spec, $1)= +- fi +- else +- # PORTME fill in a description of your system's linker (not GNU ld) +- case $host_os in +- aix3*) +- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- _LT_TAGVAR(always_export_symbols, $1)=yes +- _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' +- # Note: this linker hardcodes the directories in LIBPATH if there +- # are no directories specified by -L. +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then +- # Neither direct hardcoding nor static linking is supported with a +- # broken collect2. +- _LT_TAGVAR(hardcode_direct, $1)=unsupported +- fi +- ;; +- +- aix[[4-9]]*) +- if test "$host_cpu" = ia64; then +- # On IA64, the linker does run time linking by default, so we don't +- # have to do anything special. +- aix_use_runtimelinking=no +- exp_sym_flag='-Bexport' +- no_entry_flag="" +- else +- # If we're using GNU nm, then we don't want the "-C" option. +- # -C means demangle to AIX nm, but means don't demangle with GNU nm +- # Also, AIX nm treats weak defined symbols like other global +- # defined symbols, whereas GNU nm marks them as "W". +- if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' +- else +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' +- fi +- aix_use_runtimelinking=no +- +- # Test if we are trying to use run time linking or normal +- # AIX style linking. If -brtl is somewhere in LDFLAGS, we +- # need to do runtime linking. +- case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) +- for ld_flag in $LDFLAGS; do +- if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then +- aix_use_runtimelinking=yes +- break +- fi +- done +- ;; +- esac +- +- exp_sym_flag='-bexport' +- no_entry_flag='-bnoentry' +- fi +- +- # When large executables or shared objects are built, AIX ld can +- # have problems creating the table of contents. If linking a library +- # or program results in "error TOC overflow" add -mminimal-toc to +- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not +- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. +- +- _LT_TAGVAR(archive_cmds, $1)='' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes +- _LT_TAGVAR(hardcode_libdir_separator, $1)=':' +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' +- +- if test "$GCC" = yes; then +- case $host_os in aix4.[[012]]|aix4.[[012]].*) +- # We only want to do this on AIX 4.2 and lower, the check +- # below for broken collect2 doesn't work under 4.3+ +- collect2name=`${CC} -print-prog-name=collect2` +- if test -f "$collect2name" && +- strings "$collect2name" | $GREP resolve_lib_name >/dev/null +- then +- # We have reworked collect2 +- : +- else +- # We have old collect2 +- _LT_TAGVAR(hardcode_direct, $1)=unsupported +- # It fails to find uninstalled libraries when the uninstalled +- # path is not listed in the libpath. Setting hardcode_minus_L +- # to unsupported forces relinking +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)= +- fi +- ;; +- esac +- shared_flag='-shared' +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag="$shared_flag "'${wl}-G' +- fi +- _LT_TAGVAR(link_all_deplibs, $1)=no +- else +- # not using gcc +- if test "$host_cpu" = ia64; then +- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release +- # chokes on -Wl,-G. The following line is correct: +- shared_flag='-G' +- else +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag='${wl}-G' +- else +- shared_flag='${wl}-bM:SRE' +- fi +- fi +- fi +- +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' +- # It seems that -bexpall does not export symbols beginning with +- # underscore (_), so it is better to generate a list of symbols to export. +- _LT_TAGVAR(always_export_symbols, $1)=yes +- if test "$aix_use_runtimelinking" = yes; then +- # Warning - without using the other runtime loading flags (-brtl), +- # -berok will link without error, but may produce a broken library. +- _LT_TAGVAR(allow_undefined_flag, $1)='-berok' +- # Determine the default libpath from the value encoded in an +- # empty executable. +- _LT_SYS_MODULE_PATH_AIX([$1]) +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" +- else +- if test "$host_cpu" = ia64; then +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' +- _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" +- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" +- else +- # Determine the default libpath from the value encoded in an +- # empty executable. +- _LT_SYS_MODULE_PATH_AIX([$1]) +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" +- # Warning - without using the other run time loading flags, +- # -berok will link without error, but may produce a broken library. +- _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' +- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' +- if test "$with_gnu_ld" = yes; then +- # We only use this code for GNU lds that support --whole-archive. +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' +- else +- # Exported symbols can be pulled into shared objects from archives +- _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' +- fi +- _LT_TAGVAR(archive_cmds_need_lc, $1)=yes +- # This is similar to how AIX traditionally builds its shared libraries. +- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' +- fi +- fi +- ;; +- +- amigaos*) +- case $host_cpu in +- powerpc) +- # see comment about AmigaOS4 .so support +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='' +- ;; +- m68k) +- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- ;; +- esac +- ;; +- +- bsdi[[45]]*) +- _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic +- ;; +- +- cygwin* | mingw* | pw32* | cegcc*) +- # When not using gcc, we currently assume that we are using +- # Microsoft Visual C++. +- # hardcode_libdir_flag_spec is actually meaningless, as there is +- # no search path for DLLs. +- case $cc_basename in +- cl*) +- # Native MSVC +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' +- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- _LT_TAGVAR(always_export_symbols, $1)=yes +- _LT_TAGVAR(file_list_spec, $1)='@' +- # Tell ltmain to make .lib files, not .a files. +- libext=lib +- # Tell ltmain to make .dll files, not .so files. +- shrext_cmds=".dll" +- # FIXME: Setting linknames here is a bad hack. +- _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' +- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then +- sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; +- else +- sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; +- fi~ +- $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ +- linknames=' +- # The linker will not automatically build a static lib if we build a DLL. +- # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' +- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes +- _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' +- _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' +- # Don't use ranlib +- _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' +- _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ +- lt_tool_outputfile="@TOOL_OUTPUT@"~ +- case $lt_outputfile in +- *.exe|*.EXE) ;; +- *) +- lt_outputfile="$lt_outputfile.exe" +- lt_tool_outputfile="$lt_tool_outputfile.exe" +- ;; +- esac~ +- if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then +- $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; +- $RM "$lt_outputfile.manifest"; +- fi' +- ;; +- *) +- # Assume MSVC wrapper +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' +- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- # Tell ltmain to make .lib files, not .a files. +- libext=lib +- # Tell ltmain to make .dll files, not .so files. +- shrext_cmds=".dll" +- # FIXME: Setting linknames here is a bad hack. +- _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' +- # The linker will automatically build a .lib file if we build a DLL. +- _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' +- # FIXME: Should let the user specify the lib program. +- _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' +- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes +- ;; +- esac +- ;; +- +- darwin* | rhapsody*) +- _LT_DARWIN_LINKER_FEATURES($1) +- ;; +- +- dgux*) +- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor +- # support. Future versions do this automatically, but an explicit c++rt0.o +- # does not break anything, and helps significantly (at the cost of a little +- # extra space). +- freebsd2.2*) +- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- # Unfortunately, older versions of FreeBSD 2 do not have this feature. +- freebsd2.*) +- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- # FreeBSD 3 and greater uses gcc -shared to do shared libraries. +- freebsd* | dragonfly*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- hpux9*) +- if test "$GCC" = yes; then +- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' +- else +- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' +- fi +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_TAGVAR(hardcode_direct, $1)=yes +- +- # hardcode_minus_L: Not really in the search PATH, +- # but as the default location of the library. +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- ;; +- +- hpux10*) +- if test "$GCC" = yes && test "$with_gnu_ld" = no; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +- else +- _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +- fi +- if test "$with_gnu_ld" = no; then +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- # hardcode_minus_L: Not really in the search PATH, +- # but as the default location of the library. +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- fi +- ;; +- +- hpux11*) +- if test "$GCC" = yes && test "$with_gnu_ld" = no; then +- case $host_cpu in +- hppa*64*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- ia64*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- *) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- esac +- else +- case $host_cpu in +- hppa*64*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- ia64*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- *) +- m4_if($1, [], [ +- # Older versions of the 11.00 compiler do not understand -b yet +- # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) +- _LT_LINKER_OPTION([if $CC understands -b], +- _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], +- [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], +- [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], +- [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) +- ;; +- esac +- fi +- if test "$with_gnu_ld" = no; then +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- +- case $host_cpu in +- hppa*64*|ia64*) +- _LT_TAGVAR(hardcode_direct, $1)=no +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- *) +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- +- # hardcode_minus_L: Not really in the search PATH, +- # but as the default location of the library. +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- ;; +- esac +- fi +- ;; +- +- irix5* | irix6* | nonstopux*) +- if test "$GCC" = yes; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- # Try to use the -exported_symbol ld option, if it does not +- # work, assume that -exports_file does not work either and +- # implicitly export all symbols. +- # This should be the same for all languages, so no per-tag cache variable. +- AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], +- [lt_cv_irix_exported_symbol], +- [save_LDFLAGS="$LDFLAGS" +- LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" +- AC_LINK_IFELSE( +- [AC_LANG_SOURCE( +- [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], +- [C++], [[int foo (void) { return 0; }]], +- [Fortran 77], [[ +- subroutine foo +- end]], +- [Fortran], [[ +- subroutine foo +- end]])])], +- [lt_cv_irix_exported_symbol=yes], +- [lt_cv_irix_exported_symbol=no]) +- LDFLAGS="$save_LDFLAGS"]) +- if test "$lt_cv_irix_exported_symbol" = yes; then +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' +- fi +- else +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' +- fi +- _LT_TAGVAR(archive_cmds_need_lc, $1)='no' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_TAGVAR(inherit_rpath, $1)=yes +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- ;; +- +- netbsd* | netbsdelf*-gnu) +- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then +- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out +- else +- _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF +- fi +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- newsos6) +- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- *nto* | *qnx*) +- ;; +- +- openbsd*) +- if test -f /usr/libexec/ld.so; then +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes +- if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- else +- case $host_os in +- openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) +- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- ;; +- *) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- ;; +- esac +- fi +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- +- os2*) +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' +- _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' +- ;; +- +- osf3*) +- if test "$GCC" = yes; then +- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' +- fi +- _LT_TAGVAR(archive_cmds_need_lc, $1)='no' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- ;; +- +- osf4* | osf5*) # as osf3* with the addition of -msym flag +- if test "$GCC" = yes; then +- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- else +- _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ +- $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' +- +- # Both c and cxx compiler support -rpath directly +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' +- fi +- _LT_TAGVAR(archive_cmds_need_lc, $1)='no' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- ;; +- +- solaris*) +- _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' +- if test "$GCC" = yes; then +- wlarc='${wl}' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ +- $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' +- else +- case `$CC -V 2>&1` in +- *"Compilers 5.0"*) +- wlarc='' +- _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ +- $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' +- ;; +- *) +- wlarc='${wl}' +- _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ +- $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' +- ;; +- esac +- fi +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- case $host_os in +- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; +- *) +- # The compiler driver will combine and reorder linker options, +- # but understands `-z linker_flag'. GCC discards it without `$wl', +- # but is careful enough not to reorder. +- # Supported since Solaris 2.6 (maybe 2.5.1?) +- if test "$GCC" = yes; then +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' +- else +- _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' +- fi +- ;; +- esac +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- ;; +- +- sunos4*) +- if test "x$host_vendor" = xsequent; then +- # Use $CC to link under sequent, because it throws in some extra .o +- # files that make .init and .fini sections work. +- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' +- fi +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- sysv4) +- case $host_vendor in +- sni) +- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? +- ;; +- siemens) +- ## LD is ld it makes a PLAMLIB +- ## CC just makes a GrossModule. +- _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' +- _LT_TAGVAR(hardcode_direct, $1)=no +- ;; +- motorola) +- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie +- ;; +- esac +- runpath_var='LD_RUN_PATH' +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- sysv4.3*) +- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' +- ;; +- +- sysv4*MP*) +- if test -d /usr/nec; then +- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- runpath_var=LD_RUN_PATH +- hardcode_runpath_var=yes +- _LT_TAGVAR(ld_shlibs, $1)=yes +- fi +- ;; +- +- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) +- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' +- _LT_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- runpath_var='LD_RUN_PATH' +- +- if test "$GCC" = yes; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- fi +- ;; +- +- sysv5* | sco3.2v5* | sco5v6*) +- # Note: We can NOT use -z defs as we might desire, because we do not +- # link with -lc, and that would cause any symbols used from libc to +- # always be unresolved, which means just about no library would +- # ever link correctly. If we're not using GNU ld we use -z text +- # though, which does catch some bad symbols but isn't as heavy-handed +- # as -z defs. +- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' +- _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' +- _LT_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=':' +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' +- runpath_var='LD_RUN_PATH' +- +- if test "$GCC" = yes; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- else +- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- fi +- ;; +- +- uts4*) +- _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- +- *) +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- +- if test x$host_vendor = xsni; then +- case $host in +- sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' +- ;; +- esac +- fi +- fi +-]) +-AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +-test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no +- +-_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld +- +-_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +-_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +-_LT_DECL([], [extract_expsyms_cmds], [2], +- [The commands to extract the exported symbol list from a shared archive]) +- +-# +-# Do we need to explicitly link libc? +-# +-case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +-x|xyes) +- # Assume -lc should be added +- _LT_TAGVAR(archive_cmds_need_lc, $1)=yes +- +- if test "$enable_shared" = yes && test "$GCC" = yes; then +- case $_LT_TAGVAR(archive_cmds, $1) in +- *'~'*) +- # FIXME: we may have to deal with multi-command sequences. +- ;; +- '$CC '*) +- # Test whether the compiler implicitly links with -lc since on some +- # systems, -lgcc has to come before -lc. If gcc already passes -lc +- # to ld, don't add -lc before -lgcc. +- AC_CACHE_CHECK([whether -lc should be explicitly linked in], +- [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), +- [$RM conftest* +- echo "$lt_simple_compile_test_code" > conftest.$ac_ext +- +- if AC_TRY_EVAL(ac_compile) 2>conftest.err; then +- soname=conftest +- lib=conftest +- libobjs=conftest.$ac_objext +- deplibs= +- wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) +- pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) +- compiler_flags=-v +- linker_flags=-v +- verstring= +- output_objdir=. +- libname=conftest +- lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) +- _LT_TAGVAR(allow_undefined_flag, $1)= +- if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) +- then +- lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no +- else +- lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes +- fi +- _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag +- else +- cat conftest.err 1>&5 +- fi +- $RM conftest* +- ]) +- _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) +- ;; +- esac +- fi +- ;; +-esac +- +-_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], +- [Whether or not to add -lc for building shared libraries]) +-_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], +- [enable_shared_with_static_runtimes], [0], +- [Whether or not to disallow shared libs when runtime libs are static]) +-_LT_TAGDECL([], [export_dynamic_flag_spec], [1], +- [Compiler flag to allow reflexive dlopens]) +-_LT_TAGDECL([], [whole_archive_flag_spec], [1], +- [Compiler flag to generate shared objects directly from archives]) +-_LT_TAGDECL([], [compiler_needs_object], [1], +- [Whether the compiler copes with passing no objects directly]) +-_LT_TAGDECL([], [old_archive_from_new_cmds], [2], +- [Create an old-style archive from a shared archive]) +-_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], +- [Create a temporary old-style archive to link instead of a shared archive]) +-_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +-_LT_TAGDECL([], [archive_expsym_cmds], [2]) +-_LT_TAGDECL([], [module_cmds], [2], +- [Commands used to build a loadable module if different from building +- a shared archive.]) +-_LT_TAGDECL([], [module_expsym_cmds], [2]) +-_LT_TAGDECL([], [with_gnu_ld], [1], +- [Whether we are building with GNU ld or not]) +-_LT_TAGDECL([], [allow_undefined_flag], [1], +- [Flag that allows shared libraries with undefined symbols to be built]) +-_LT_TAGDECL([], [no_undefined_flag], [1], +- [Flag that enforces no undefined symbols]) +-_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], +- [Flag to hardcode $libdir into a binary during linking. +- This must work even if $libdir does not exist]) +-_LT_TAGDECL([], [hardcode_libdir_separator], [1], +- [Whether we need a single "-rpath" flag with a separated argument]) +-_LT_TAGDECL([], [hardcode_direct], [0], +- [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes +- DIR into the resulting binary]) +-_LT_TAGDECL([], [hardcode_direct_absolute], [0], +- [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes +- DIR into the resulting binary and the resulting library dependency is +- "absolute", i.e impossible to change by setting ${shlibpath_var} if the +- library is relocated]) +-_LT_TAGDECL([], [hardcode_minus_L], [0], +- [Set to "yes" if using the -LDIR flag during linking hardcodes DIR +- into the resulting binary]) +-_LT_TAGDECL([], [hardcode_shlibpath_var], [0], +- [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +- into the resulting binary]) +-_LT_TAGDECL([], [hardcode_automatic], [0], +- [Set to "yes" if building a shared library automatically hardcodes DIR +- into the library and all subsequent libraries and executables linked +- against it]) +-_LT_TAGDECL([], [inherit_rpath], [0], +- [Set to yes if linker adds runtime paths of dependent libraries +- to runtime path list]) +-_LT_TAGDECL([], [link_all_deplibs], [0], +- [Whether libtool must link a program against all its dependency libraries]) +-_LT_TAGDECL([], [always_export_symbols], [0], +- [Set to "yes" if exported symbols are required]) +-_LT_TAGDECL([], [export_symbols_cmds], [2], +- [The commands to list exported symbols]) +-_LT_TAGDECL([], [exclude_expsyms], [1], +- [Symbols that should not be listed in the preloaded symbols]) +-_LT_TAGDECL([], [include_expsyms], [1], +- [Symbols that must always be exported]) +-_LT_TAGDECL([], [prelink_cmds], [2], +- [Commands necessary for linking programs (against libraries) with templates]) +-_LT_TAGDECL([], [postlink_cmds], [2], +- [Commands necessary for finishing linking programs]) +-_LT_TAGDECL([], [file_list_spec], [1], +- [Specify filename containing input files]) +-dnl FIXME: Not yet implemented +-dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +-dnl [Compiler flag to generate thread safe objects]) +-])# _LT_LINKER_SHLIBS +- +- +-# _LT_LANG_C_CONFIG([TAG]) +-# ------------------------ +-# Ensure that the configuration variables for a C compiler are suitably +-# defined. These variables are subsequently used by _LT_CONFIG to write +-# the compiler configuration to `libtool'. +-m4_defun([_LT_LANG_C_CONFIG], +-[m4_require([_LT_DECL_EGREP])dnl +-lt_save_CC="$CC" +-AC_LANG_PUSH(C) +- +-# Source file extension for C test sources. +-ac_ext=c +- +-# Object file extension for compiled C test sources. +-objext=o +-_LT_TAGVAR(objext, $1)=$objext +- +-# Code to be used in simple compile tests +-lt_simple_compile_test_code="int some_variable = 0;" +- +-# Code to be used in simple link tests +-lt_simple_link_test_code='int main(){return(0);}' +- +-_LT_TAG_COMPILER +-# Save the default compiler, since it gets overwritten when the other +-# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +-compiler_DEFAULT=$CC +- +-# save warnings/boilerplate of simple test code +-_LT_COMPILER_BOILERPLATE +-_LT_LINKER_BOILERPLATE +- +-## CAVEAT EMPTOR: +-## There is no encapsulation within the following macros, do not change +-## the running order or otherwise move them around unless you know exactly +-## what you are doing... +-if test -n "$compiler"; then +- _LT_COMPILER_NO_RTTI($1) +- _LT_COMPILER_PIC($1) +- _LT_COMPILER_C_O($1) +- _LT_COMPILER_FILE_LOCKS($1) +- _LT_LINKER_SHLIBS($1) +- _LT_SYS_DYNAMIC_LINKER($1) +- _LT_LINKER_HARDCODE_LIBPATH($1) +- LT_SYS_DLOPEN_SELF +- _LT_CMD_STRIPLIB +- +- # Report which library types will actually be built +- AC_MSG_CHECKING([if libtool supports shared libraries]) +- AC_MSG_RESULT([$can_build_shared]) +- +- AC_MSG_CHECKING([whether to build shared libraries]) +- test "$can_build_shared" = "no" && enable_shared=no +- +- # On AIX, shared libraries and static libraries use the same namespace, and +- # are all built from PIC. +- case $host_os in +- aix3*) +- test "$enable_shared" = yes && enable_static=no +- if test -n "$RANLIB"; then +- archive_cmds="$archive_cmds~\$RANLIB \$lib" +- postinstall_cmds='$RANLIB $lib' +- fi +- ;; +- +- aix[[4-9]]*) +- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then +- test "$enable_shared" = yes && enable_static=no +- fi +- ;; +- esac +- AC_MSG_RESULT([$enable_shared]) +- +- AC_MSG_CHECKING([whether to build static libraries]) +- # Make sure either enable_shared or enable_static is yes. +- test "$enable_shared" = yes || enable_static=yes +- AC_MSG_RESULT([$enable_static]) +- +- _LT_CONFIG($1) +-fi +-AC_LANG_POP +-CC="$lt_save_CC" +-])# _LT_LANG_C_CONFIG +- +- +-# _LT_LANG_CXX_CONFIG([TAG]) +-# -------------------------- +-# Ensure that the configuration variables for a C++ compiler are suitably +-# defined. These variables are subsequently used by _LT_CONFIG to write +-# the compiler configuration to `libtool'. +-m4_defun([_LT_LANG_CXX_CONFIG], +-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-m4_require([_LT_DECL_EGREP])dnl +-m4_require([_LT_PATH_MANIFEST_TOOL])dnl +-if test -n "$CXX" && ( test "X$CXX" != "Xno" && +- ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || +- (test "X$CXX" != "Xg++"))) ; then +- AC_PROG_CXXCPP +-else +- _lt_caught_CXX_error=yes +-fi +- +-AC_LANG_PUSH(C++) +-_LT_TAGVAR(archive_cmds_need_lc, $1)=no +-_LT_TAGVAR(allow_undefined_flag, $1)= +-_LT_TAGVAR(always_export_symbols, $1)=no +-_LT_TAGVAR(archive_expsym_cmds, $1)= +-_LT_TAGVAR(compiler_needs_object, $1)=no +-_LT_TAGVAR(export_dynamic_flag_spec, $1)= +-_LT_TAGVAR(hardcode_direct, $1)=no +-_LT_TAGVAR(hardcode_direct_absolute, $1)=no +-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +-_LT_TAGVAR(hardcode_libdir_separator, $1)= +-_LT_TAGVAR(hardcode_minus_L, $1)=no +-_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +-_LT_TAGVAR(hardcode_automatic, $1)=no +-_LT_TAGVAR(inherit_rpath, $1)=no +-_LT_TAGVAR(module_cmds, $1)= +-_LT_TAGVAR(module_expsym_cmds, $1)= +-_LT_TAGVAR(link_all_deplibs, $1)=unknown +-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +-_LT_TAGVAR(reload_flag, $1)=$reload_flag +-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +-_LT_TAGVAR(no_undefined_flag, $1)= +-_LT_TAGVAR(whole_archive_flag_spec, $1)= +-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no +- +-# Source file extension for C++ test sources. +-ac_ext=cpp +- +-# Object file extension for compiled C++ test sources. +-objext=o +-_LT_TAGVAR(objext, $1)=$objext +- +-# No sense in running all these tests if we already determined that +-# the CXX compiler isn't working. Some variables (like enable_shared) +-# are currently assumed to apply to all compilers on this platform, +-# and will be corrupted by setting them based on a non-working compiler. +-if test "$_lt_caught_CXX_error" != yes; then +- # Code to be used in simple compile tests +- lt_simple_compile_test_code="int some_variable = 0;" +- +- # Code to be used in simple link tests +- lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' +- +- # ltmain only uses $CC for tagged configurations so make sure $CC is set. +- _LT_TAG_COMPILER +- +- # save warnings/boilerplate of simple test code +- _LT_COMPILER_BOILERPLATE +- _LT_LINKER_BOILERPLATE +- +- # Allow CC to be a program name with arguments. +- lt_save_CC=$CC +- lt_save_CFLAGS=$CFLAGS +- lt_save_LD=$LD +- lt_save_GCC=$GCC +- GCC=$GXX +- lt_save_with_gnu_ld=$with_gnu_ld +- lt_save_path_LD=$lt_cv_path_LD +- if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then +- lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +- else +- $as_unset lt_cv_prog_gnu_ld +- fi +- if test -n "${lt_cv_path_LDCXX+set}"; then +- lt_cv_path_LD=$lt_cv_path_LDCXX +- else +- $as_unset lt_cv_path_LD +- fi +- test -z "${LDCXX+set}" || LD=$LDCXX +- CC=${CXX-"c++"} +- CFLAGS=$CXXFLAGS +- compiler=$CC +- _LT_TAGVAR(compiler, $1)=$CC +- _LT_CC_BASENAME([$compiler]) +- +- if test -n "$compiler"; then +- # We don't want -fno-exception when compiling C++ code, so set the +- # no_builtin_flag separately +- if test "$GXX" = yes; then +- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' +- else +- _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= +- fi +- +- if test "$GXX" = yes; then +- # Set up default GNU C++ configuration +- +- LT_PATH_LD +- +- # Check if GNU C++ uses GNU ld as the underlying linker, since the +- # archiving commands below assume that GNU ld is being used. +- if test "$with_gnu_ld" = yes; then +- _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- +- # If archive_cmds runs LD, not CC, wlarc should be empty +- # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to +- # investigate it a little bit more. (MM) +- wlarc='${wl}' +- +- # ancient GNU ld didn't support --whole-archive et. al. +- if eval "`$CC -print-prog-name=ld` --help 2>&1" | +- $GREP 'no-whole-archive' > /dev/null; then +- _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +- else +- _LT_TAGVAR(whole_archive_flag_spec, $1)= +- fi +- else +- with_gnu_ld=no +- wlarc= +- +- # A generic and very simple default shared library creation +- # command for GNU C++ for the case where it uses the native +- # linker, instead of GNU ld. If possible, this setting should +- # overridden to take advantage of the native linker features on +- # the platform it is being used on. +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' +- fi +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' +- +- else +- GXX=no +- with_gnu_ld=no +- wlarc= +- fi +- +- # PORTME: fill in a description of your system's C++ link characteristics +- AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +- _LT_TAGVAR(ld_shlibs, $1)=yes +- case $host_os in +- aix3*) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- aix[[4-9]]*) +- if test "$host_cpu" = ia64; then +- # On IA64, the linker does run time linking by default, so we don't +- # have to do anything special. +- aix_use_runtimelinking=no +- exp_sym_flag='-Bexport' +- no_entry_flag="" +- else +- aix_use_runtimelinking=no +- +- # Test if we are trying to use run time linking or normal +- # AIX style linking. If -brtl is somewhere in LDFLAGS, we +- # need to do runtime linking. +- case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) +- for ld_flag in $LDFLAGS; do +- case $ld_flag in +- *-brtl*) +- aix_use_runtimelinking=yes +- break +- ;; +- esac +- done +- ;; +- esac +- +- exp_sym_flag='-bexport' +- no_entry_flag='-bnoentry' +- fi +- +- # When large executables or shared objects are built, AIX ld can +- # have problems creating the table of contents. If linking a library +- # or program results in "error TOC overflow" add -mminimal-toc to +- # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not +- # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. +- +- _LT_TAGVAR(archive_cmds, $1)='' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes +- _LT_TAGVAR(hardcode_libdir_separator, $1)=':' +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' +- +- if test "$GXX" = yes; then +- case $host_os in aix4.[[012]]|aix4.[[012]].*) +- # We only want to do this on AIX 4.2 and lower, the check +- # below for broken collect2 doesn't work under 4.3+ +- collect2name=`${CC} -print-prog-name=collect2` +- if test -f "$collect2name" && +- strings "$collect2name" | $GREP resolve_lib_name >/dev/null +- then +- # We have reworked collect2 +- : +- else +- # We have old collect2 +- _LT_TAGVAR(hardcode_direct, $1)=unsupported +- # It fails to find uninstalled libraries when the uninstalled +- # path is not listed in the libpath. Setting hardcode_minus_L +- # to unsupported forces relinking +- _LT_TAGVAR(hardcode_minus_L, $1)=yes +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)= +- fi +- esac +- shared_flag='-shared' +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag="$shared_flag "'${wl}-G' +- fi +- else +- # not using gcc +- if test "$host_cpu" = ia64; then +- # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release +- # chokes on -Wl,-G. The following line is correct: +- shared_flag='-G' +- else +- if test "$aix_use_runtimelinking" = yes; then +- shared_flag='${wl}-G' +- else +- shared_flag='${wl}-bM:SRE' +- fi +- fi +- fi +- +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' +- # It seems that -bexpall does not export symbols beginning with +- # underscore (_), so it is better to generate a list of symbols to +- # export. +- _LT_TAGVAR(always_export_symbols, $1)=yes +- if test "$aix_use_runtimelinking" = yes; then +- # Warning - without using the other runtime loading flags (-brtl), +- # -berok will link without error, but may produce a broken library. +- _LT_TAGVAR(allow_undefined_flag, $1)='-berok' +- # Determine the default libpath from the value encoded in an empty +- # executable. +- _LT_SYS_MODULE_PATH_AIX([$1]) +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" +- +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" +- else +- if test "$host_cpu" = ia64; then +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' +- _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" +- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" +- else +- # Determine the default libpath from the value encoded in an +- # empty executable. +- _LT_SYS_MODULE_PATH_AIX([$1]) +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" +- # Warning - without using the other run time loading flags, +- # -berok will link without error, but may produce a broken library. +- _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' +- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' +- if test "$with_gnu_ld" = yes; then +- # We only use this code for GNU lds that support --whole-archive. +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' +- else +- # Exported symbols can be pulled into shared objects from archives +- _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' +- fi +- _LT_TAGVAR(archive_cmds_need_lc, $1)=yes +- # This is similar to how AIX traditionally builds its shared +- # libraries. +- _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' +- fi +- fi +- ;; +- +- beos*) +- if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then +- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- # Joseph Beckenbach says some releases of gcc +- # support --undefined. This deserves some investigation. FIXME +- _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- +- chorus*) +- case $cc_basename in +- *) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- ;; +- +- cygwin* | mingw* | pw32* | cegcc*) +- case $GXX,$cc_basename in +- ,cl* | no,cl*) +- # Native MSVC +- # hardcode_libdir_flag_spec is actually meaningless, as there is +- # no search path for DLLs. +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' +- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- _LT_TAGVAR(always_export_symbols, $1)=yes +- _LT_TAGVAR(file_list_spec, $1)='@' +- # Tell ltmain to make .lib files, not .a files. +- libext=lib +- # Tell ltmain to make .dll files, not .so files. +- shrext_cmds=".dll" +- # FIXME: Setting linknames here is a bad hack. +- _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' +- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then +- $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; +- else +- $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; +- fi~ +- $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ +- linknames=' +- # The linker will not automatically build a static lib if we build a DLL. +- # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' +- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes +- # Don't use ranlib +- _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' +- _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ +- lt_tool_outputfile="@TOOL_OUTPUT@"~ +- case $lt_outputfile in +- *.exe|*.EXE) ;; +- *) +- lt_outputfile="$lt_outputfile.exe" +- lt_tool_outputfile="$lt_tool_outputfile.exe" +- ;; +- esac~ +- func_to_tool_file "$lt_outputfile"~ +- if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then +- $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; +- $RM "$lt_outputfile.manifest"; +- fi' +- ;; +- *) +- # g++ +- # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, +- # as there is no search path for DLLs. +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' +- _LT_TAGVAR(allow_undefined_flag, $1)=unsupported +- _LT_TAGVAR(always_export_symbols, $1)=no +- _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes +- +- if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' +- # If the export-symbols file already is a .def file (1st line +- # is EXPORTS), use it as is; otherwise, prepend... +- _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then +- cp $export_symbols $output_objdir/$soname.def; +- else +- echo EXPORTS > $output_objdir/$soname.def; +- cat $export_symbols >> $output_objdir/$soname.def; +- fi~ +- $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- ;; +- darwin* | rhapsody*) +- _LT_DARWIN_LINKER_FEATURES($1) +- ;; +- +- dgux*) +- case $cc_basename in +- ec++*) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- ghcx*) +- # Green Hills C++ Compiler +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- ;; +- +- freebsd2.*) +- # C++ shared libraries reported to be fairly broken before +- # switch to ELF +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- +- freebsd-elf*) +- _LT_TAGVAR(archive_cmds_need_lc, $1)=no +- ;; +- +- freebsd* | dragonfly*) +- # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF +- # conventions +- _LT_TAGVAR(ld_shlibs, $1)=yes +- ;; +- +- haiku*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- ;; +- +- hpux9*) +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, +- # but as the default +- # location of the library. +- +- case $cc_basename in +- CC*) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- aCC*) +- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' +- ;; +- *) +- if test "$GXX" = yes; then +- _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' +- else +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- ;; +- +- hpux10*|hpux11*) +- if test $with_gnu_ld = no; then +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- +- case $host_cpu in +- hppa*64*|ia64*) +- ;; +- *) +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- ;; +- esac +- fi +- case $host_cpu in +- hppa*64*|ia64*) +- _LT_TAGVAR(hardcode_direct, $1)=no +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- ;; +- *) +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes +- _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, +- # but as the default +- # location of the library. +- ;; +- esac +- +- case $cc_basename in +- CC*) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- aCC*) +- case $host_cpu in +- hppa*64*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- ia64*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- *) +- _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- esac +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' +- ;; +- *) +- if test "$GXX" = yes; then +- if test $with_gnu_ld = no; then +- case $host_cpu in +- hppa*64*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- ia64*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- *) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- ;; +- esac +- fi +- else +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- ;; +- +- interix[[3-9]]*) +- _LT_TAGVAR(hardcode_direct, $1)=no +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. +- # Instead, shared libraries are loaded at an image base (0x10000000 by +- # default) and relocated if they conflict, which is a slow very memory +- # consuming and fragmenting process. To avoid this, we pick a random, +- # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link +- # time. Moving up from 0x10000000 also allows more sbrk(2) space. +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +- ;; +- irix5* | irix6*) +- case $cc_basename in +- CC*) +- # SGI C++ +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' +- +- # Archives containing C++ object files must be created using +- # "CC -ar", where "CC" is the IRIX C++ compiler. This is +- # necessary to make sure instantiated templates are included +- # in the archive. +- _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' +- ;; +- *) +- if test "$GXX" = yes; then +- if test "$with_gnu_ld" = no; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- else +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' +- fi +- fi +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- ;; +- esac +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- _LT_TAGVAR(inherit_rpath, $1)=yes +- ;; +- +- linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) +- case $cc_basename in +- KCC*) +- # Kuck and Associates, Inc. (KAI) C++ Compiler +- +- # KCC will only create a shared library if the output file +- # ends with ".so" (or ".sl" for HP-UX), so rename the library +- # to its proper name (with version) after linking. +- _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' +- +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- +- # Archives containing C++ object files must be created using +- # "CC -Bstatic", where "CC" is the KAI C++ compiler. +- _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' +- ;; +- icpc* | ecpc* ) +- # Intel C++ +- with_gnu_ld=yes +- # version 8.0 and above of icpc choke on multiply defined symbols +- # if we add $predep_objects and $postdep_objects, however 7.1 and +- # earlier do not add the objects themselves. +- case `$CC -V 2>&1` in +- *"Version 7."*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- ;; +- *) # Version 8.0 or newer +- tmp_idyn= +- case $host_cpu in +- ia64*) tmp_idyn=' -i_dynamic';; +- esac +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +- ;; +- esac +- _LT_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' +- ;; +- pgCC* | pgcpp*) +- # Portland Group C++ compiler +- case `$CC -V` in +- *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) +- _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ +- rm -rf $tpldir~ +- $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ +- compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' +- _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ +- rm -rf $tpldir~ +- $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ +- $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ +- $RANLIB $oldlib' +- _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ +- rm -rf $tpldir~ +- $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ +- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ +- rm -rf $tpldir~ +- $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ +- $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' +- ;; +- *) # Version 6 and above use weak symbols +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' +- ;; +- esac +- +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' +- ;; +- cxx*) +- # Compaq C++ +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' +- +- runpath_var=LD_RUN_PATH +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' +- ;; +- xl* | mpixl* | bgxl*) +- # IBM XL 8.0 on PPC, with GNU ld +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' +- _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +- if test "x$supports_anon_versioning" = xyes; then +- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ +- cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +- echo "local: *; };" >> $output_objdir/$libname.ver~ +- $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' +- fi +- ;; +- *) +- case `$CC -V 2>&1 | sed 5q` in +- *Sun\ C*) +- # Sun C++ 5.9 +- _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' +- _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' +- _LT_TAGVAR(compiler_needs_object, $1)=yes +- +- # Not sure whether something based on +- # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 +- # would be better. +- output_verbose_link_cmd='func_echo_all' +- +- # Archives containing C++ object files must be created using +- # "CC -xar", where "CC" is the Sun C++ compiler. This is +- # necessary to make sure instantiated templates are included +- # in the archive. +- _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' +- ;; +- esac +- ;; +- esac +- ;; +- +- lynxos*) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- +- m88k*) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- +- mvs*) +- case $cc_basename in +- cxx*) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- ;; +- +- netbsd*) +- if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then +- _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' +- wlarc= +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- fi +- # Workaround some broken pre-1.5 toolchains +- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' +- ;; +- +- *nto* | *qnx*) +- _LT_TAGVAR(ld_shlibs, $1)=yes +- ;; +- +- openbsd2*) +- # C++ shared libraries are fairly broken +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- +- openbsd*) +- if test -f /usr/libexec/ld.so; then +- _LT_TAGVAR(hardcode_direct, $1)=yes +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_TAGVAR(hardcode_direct_absolute, $1)=yes +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' +- _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +- fi +- output_verbose_link_cmd=func_echo_all +- else +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- +- osf3* | osf4* | osf5*) +- case $cc_basename in +- KCC*) +- # Kuck and Associates, Inc. (KAI) C++ Compiler +- +- # KCC will only create a shared library if the output file +- # ends with ".so" (or ".sl" for HP-UX), so rename the library +- # to its proper name (with version) after linking. +- _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' +- +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- +- # Archives containing C++ object files must be created using +- # the KAI C++ compiler. +- case $host in +- osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; +- *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; +- esac +- ;; +- RCC*) +- # Rational C++ 2.4.1 +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- cxx*) +- case $host in +- osf3*) +- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- ;; +- *) +- _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ +- echo "-hidden">> $lib.exp~ +- $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ +- $RM $lib.exp' +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' +- ;; +- esac +- +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- # +- # There doesn't appear to be a way to prevent this compiler from +- # explicitly linking system object files so we need to strip them +- # from the output so that they don't get included in the library +- # dependencies. +- output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' +- ;; +- *) +- if test "$GXX" = yes && test "$with_gnu_ld" = no; then +- _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' +- case $host in +- osf3*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- ;; +- *) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +- ;; +- esac +- +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=: +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' +- +- else +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- fi +- ;; +- esac +- ;; +- +- psos*) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- +- sunos4*) +- case $cc_basename in +- CC*) +- # Sun C++ 4.x +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- lcc*) +- # Lucid +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- ;; +- +- solaris*) +- case $cc_basename in +- CC* | sunCC*) +- # Sun C++ 4.2, 5.x and Centerline C++ +- _LT_TAGVAR(archive_cmds_need_lc,$1)=yes +- _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' +- _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ +- $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' +- +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- case $host_os in +- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; +- *) +- # The compiler driver will combine and reorder linker options, +- # but understands `-z linker_flag'. +- # Supported since Solaris 2.6 (maybe 2.5.1?) +- _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' +- ;; +- esac +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- +- output_verbose_link_cmd='func_echo_all' +- +- # Archives containing C++ object files must be created using +- # "CC -xar", where "CC" is the Sun C++ compiler. This is +- # necessary to make sure instantiated templates are included +- # in the archive. +- _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' +- ;; +- gcx*) +- # Green Hills C++ Compiler +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' +- +- # The C++ compiler must be used to create the archive. +- _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' +- ;; +- *) +- # GNU C++ compiler with Solaris linker +- if test "$GXX" = yes && test "$with_gnu_ld" = no; then +- _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' +- if $CC --version | $GREP -v '^2\.7' > /dev/null; then +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ +- $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' +- else +- # g++ 2.7 appears to require `-G' NOT `-shared' on this +- # platform. +- _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' +- _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ +- $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' +- +- # Commands to make compiler produce verbose output that lists +- # what "hidden" libraries, object files and flags are used when +- # linking a shared library. +- output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' +- fi +- +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' +- case $host_os in +- solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; +- *) +- _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' +- ;; +- esac +- fi +- ;; +- esac +- ;; +- +- sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) +- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' +- _LT_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- runpath_var='LD_RUN_PATH' +- +- case $cc_basename in +- CC*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- *) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- esac +- ;; +- +- sysv5* | sco3.2v5* | sco5v6*) +- # Note: We can NOT use -z defs as we might desire, because we do not +- # link with -lc, and that would cause any symbols used from libc to +- # always be unresolved, which means just about no library would +- # ever link correctly. If we're not using GNU ld we use -z text +- # though, which does catch some bad symbols but isn't as heavy-handed +- # as -z defs. +- _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' +- _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' +- _LT_TAGVAR(archive_cmds_need_lc, $1)=no +- _LT_TAGVAR(hardcode_shlibpath_var, $1)=no +- _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' +- _LT_TAGVAR(hardcode_libdir_separator, $1)=':' +- _LT_TAGVAR(link_all_deplibs, $1)=yes +- _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' +- runpath_var='LD_RUN_PATH' +- +- case $cc_basename in +- CC*) +- _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ +- '"$_LT_TAGVAR(old_archive_cmds, $1)" +- _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ +- '"$_LT_TAGVAR(reload_cmds, $1)" +- ;; +- *) +- _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +- ;; +- esac +- ;; +- +- tandem*) +- case $cc_basename in +- NCC*) +- # NonStop-UX NCC 3.20 +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- *) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- ;; +- +- vxworks*) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- +- *) +- # FIXME: insert proper C++ library support +- _LT_TAGVAR(ld_shlibs, $1)=no +- ;; +- esac +- +- AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +- test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no +- +- _LT_TAGVAR(GCC, $1)="$GXX" +- _LT_TAGVAR(LD, $1)="$LD" +- +- ## CAVEAT EMPTOR: +- ## There is no encapsulation within the following macros, do not change +- ## the running order or otherwise move them around unless you know exactly +- ## what you are doing... +- _LT_SYS_HIDDEN_LIBDEPS($1) +- _LT_COMPILER_PIC($1) +- _LT_COMPILER_C_O($1) +- _LT_COMPILER_FILE_LOCKS($1) +- _LT_LINKER_SHLIBS($1) +- _LT_SYS_DYNAMIC_LINKER($1) +- _LT_LINKER_HARDCODE_LIBPATH($1) +- +- _LT_CONFIG($1) +- fi # test -n "$compiler" +- +- CC=$lt_save_CC +- CFLAGS=$lt_save_CFLAGS +- LDCXX=$LD +- LD=$lt_save_LD +- GCC=$lt_save_GCC +- with_gnu_ld=$lt_save_with_gnu_ld +- lt_cv_path_LDCXX=$lt_cv_path_LD +- lt_cv_path_LD=$lt_save_path_LD +- lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +- lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +-fi # test "$_lt_caught_CXX_error" != yes +- +-AC_LANG_POP +-])# _LT_LANG_CXX_CONFIG +- +- +-# _LT_FUNC_STRIPNAME_CNF +-# ---------------------- +-# func_stripname_cnf prefix suffix name +-# strip PREFIX and SUFFIX off of NAME. +-# PREFIX and SUFFIX must not contain globbing or regex special +-# characters, hashes, percent signs, but SUFFIX may contain a leading +-# dot (in which case that matches only a dot). +-# +-# This function is identical to the (non-XSI) version of func_stripname, +-# except this one can be used by m4 code that may be executed by configure, +-# rather than the libtool script. +-m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +-AC_REQUIRE([_LT_DECL_SED]) +-AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +-func_stripname_cnf () +-{ +- case ${2} in +- .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; +- *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; +- esac +-} # func_stripname_cnf +-])# _LT_FUNC_STRIPNAME_CNF +- +-# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +-# --------------------------------- +-# Figure out "hidden" library dependencies from verbose +-# compiler output when linking a shared library. +-# Parse the compiler output and extract the necessary +-# objects, libraries and library flags. +-m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +-[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +-AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +-# Dependencies to place before and after the object being linked: +-_LT_TAGVAR(predep_objects, $1)= +-_LT_TAGVAR(postdep_objects, $1)= +-_LT_TAGVAR(predeps, $1)= +-_LT_TAGVAR(postdeps, $1)= +-_LT_TAGVAR(compiler_lib_search_path, $1)= +- +-dnl we can't use the lt_simple_compile_test_code here, +-dnl because it contains code intended for an executable, +-dnl not a library. It's possible we should let each +-dnl tag define a new lt_????_link_test_code variable, +-dnl but it's only used here... +-m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +-int a; +-void foo (void) { a = 0; } +-_LT_EOF +-], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +-class Foo +-{ +-public: +- Foo (void) { a = 0; } +-private: +- int a; +-}; +-_LT_EOF +-], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF +- subroutine foo +- implicit none +- integer*4 a +- a=0 +- return +- end +-_LT_EOF +-], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF +- subroutine foo +- implicit none +- integer a +- a=0 +- return +- end +-_LT_EOF +-], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +-public class foo { +- private int a; +- public void bar (void) { +- a = 0; +- } +-}; +-_LT_EOF +-], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +-package foo +-func foo() { +-} +-_LT_EOF +-]) +- +-_lt_libdeps_save_CFLAGS=$CFLAGS +-case "$CC $CFLAGS " in #( +-*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +-*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +-*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +-esac +- +-dnl Parse the compiler output and extract the necessary +-dnl objects, libraries and library flags. +-if AC_TRY_EVAL(ac_compile); then +- # Parse the compiler output and extract the necessary +- # objects, libraries and library flags. +- +- # Sentinel used to keep track of whether or not we are before +- # the conftest object file. +- pre_test_object_deps_done=no +- +- for p in `eval "$output_verbose_link_cmd"`; do +- case ${prev}${p} in +- +- -L* | -R* | -l*) +- # Some compilers place space between "-{L,R}" and the path. +- # Remove the space. +- if test $p = "-L" || +- test $p = "-R"; then +- prev=$p +- continue +- fi +- +- # Expand the sysroot to ease extracting the directories later. +- if test -z "$prev"; then +- case $p in +- -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; +- -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; +- -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; +- esac +- fi +- case $p in +- =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; +- esac +- if test "$pre_test_object_deps_done" = no; then +- case ${prev} in +- -L | -R) +- # Internal compiler library paths should come after those +- # provided the user. The postdeps already come after the +- # user supplied libs so there is no need to process them. +- if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then +- _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" +- else +- _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" +- fi +- ;; +- # The "-l" case would never come before the object being +- # linked, so don't bother handling this case. +- esac +- else +- if test -z "$_LT_TAGVAR(postdeps, $1)"; then +- _LT_TAGVAR(postdeps, $1)="${prev}${p}" +- else +- _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" +- fi +- fi +- prev= +- ;; +- +- *.lto.$objext) ;; # Ignore GCC LTO objects +- *.$objext) +- # This assumes that the test object file only shows up +- # once in the compiler output. +- if test "$p" = "conftest.$objext"; then +- pre_test_object_deps_done=yes +- continue +- fi +- +- if test "$pre_test_object_deps_done" = no; then +- if test -z "$_LT_TAGVAR(predep_objects, $1)"; then +- _LT_TAGVAR(predep_objects, $1)="$p" +- else +- _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" +- fi +- else +- if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then +- _LT_TAGVAR(postdep_objects, $1)="$p" +- else +- _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" +- fi +- fi +- ;; +- +- *) ;; # Ignore the rest. +- +- esac +- done +- +- # Clean up. +- rm -f a.out a.exe +-else +- echo "libtool.m4: error: problem compiling $1 test program" +-fi +- +-$RM -f confest.$objext +-CFLAGS=$_lt_libdeps_save_CFLAGS +- +-# PORTME: override above test on systems where it is broken +-m4_if([$1], [CXX], +-[case $host_os in +-interix[[3-9]]*) +- # Interix 3.5 installs completely hosed .la files for C++, so rather than +- # hack all around it, let's just trust "g++" to DTRT. +- _LT_TAGVAR(predep_objects,$1)= +- _LT_TAGVAR(postdep_objects,$1)= +- _LT_TAGVAR(postdeps,$1)= +- ;; +- +-linux*) +- case `$CC -V 2>&1 | sed 5q` in +- *Sun\ C*) +- # Sun C++ 5.9 +- +- # The more standards-conforming stlport4 library is +- # incompatible with the Cstd library. Avoid specifying +- # it if it's in CXXFLAGS. Ignore libCrun as +- # -library=stlport4 depends on it. +- case " $CXX $CXXFLAGS " in +- *" -library=stlport4 "*) +- solaris_use_stlport4=yes +- ;; +- esac +- +- if test "$solaris_use_stlport4" != yes; then +- _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' +- fi +- ;; +- esac +- ;; +- +-solaris*) +- case $cc_basename in +- CC* | sunCC*) +- # The more standards-conforming stlport4 library is +- # incompatible with the Cstd library. Avoid specifying +- # it if it's in CXXFLAGS. Ignore libCrun as +- # -library=stlport4 depends on it. +- case " $CXX $CXXFLAGS " in +- *" -library=stlport4 "*) +- solaris_use_stlport4=yes +- ;; +- esac +- +- # Adding this requires a known-good setup of shared libraries for +- # Sun compiler versions before 5.6, else PIC objects from an old +- # archive will be linked into the output, leading to subtle bugs. +- if test "$solaris_use_stlport4" != yes; then +- _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' +- fi +- ;; +- esac +- ;; +-esac +-]) +- +-case " $_LT_TAGVAR(postdeps, $1) " in +-*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +-esac +- _LT_TAGVAR(compiler_lib_search_dirs, $1)= +-if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then +- _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +-fi +-_LT_TAGDECL([], [compiler_lib_search_dirs], [1], +- [The directories searched by this compiler when creating a shared library]) +-_LT_TAGDECL([], [predep_objects], [1], +- [Dependencies to place before and after the objects being linked to +- create a shared library]) +-_LT_TAGDECL([], [postdep_objects], [1]) +-_LT_TAGDECL([], [predeps], [1]) +-_LT_TAGDECL([], [postdeps], [1]) +-_LT_TAGDECL([], [compiler_lib_search_path], [1], +- [The library search path used internally by the compiler when linking +- a shared library]) +-])# _LT_SYS_HIDDEN_LIBDEPS +- +- +-# _LT_LANG_F77_CONFIG([TAG]) +-# -------------------------- +-# Ensure that the configuration variables for a Fortran 77 compiler are +-# suitably defined. These variables are subsequently used by _LT_CONFIG +-# to write the compiler configuration to `libtool'. +-m4_defun([_LT_LANG_F77_CONFIG], +-[AC_LANG_PUSH(Fortran 77) +-if test -z "$F77" || test "X$F77" = "Xno"; then +- _lt_disable_F77=yes +-fi +- +-_LT_TAGVAR(archive_cmds_need_lc, $1)=no +-_LT_TAGVAR(allow_undefined_flag, $1)= +-_LT_TAGVAR(always_export_symbols, $1)=no +-_LT_TAGVAR(archive_expsym_cmds, $1)= +-_LT_TAGVAR(export_dynamic_flag_spec, $1)= +-_LT_TAGVAR(hardcode_direct, $1)=no +-_LT_TAGVAR(hardcode_direct_absolute, $1)=no +-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +-_LT_TAGVAR(hardcode_libdir_separator, $1)= +-_LT_TAGVAR(hardcode_minus_L, $1)=no +-_LT_TAGVAR(hardcode_automatic, $1)=no +-_LT_TAGVAR(inherit_rpath, $1)=no +-_LT_TAGVAR(module_cmds, $1)= +-_LT_TAGVAR(module_expsym_cmds, $1)= +-_LT_TAGVAR(link_all_deplibs, $1)=unknown +-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +-_LT_TAGVAR(reload_flag, $1)=$reload_flag +-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +-_LT_TAGVAR(no_undefined_flag, $1)= +-_LT_TAGVAR(whole_archive_flag_spec, $1)= +-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no +- +-# Source file extension for f77 test sources. +-ac_ext=f +- +-# Object file extension for compiled f77 test sources. +-objext=o +-_LT_TAGVAR(objext, $1)=$objext +- +-# No sense in running all these tests if we already determined that +-# the F77 compiler isn't working. Some variables (like enable_shared) +-# are currently assumed to apply to all compilers on this platform, +-# and will be corrupted by setting them based on a non-working compiler. +-if test "$_lt_disable_F77" != yes; then +- # Code to be used in simple compile tests +- lt_simple_compile_test_code="\ +- subroutine t +- return +- end +-" +- +- # Code to be used in simple link tests +- lt_simple_link_test_code="\ +- program t +- end +-" +- +- # ltmain only uses $CC for tagged configurations so make sure $CC is set. +- _LT_TAG_COMPILER +- +- # save warnings/boilerplate of simple test code +- _LT_COMPILER_BOILERPLATE +- _LT_LINKER_BOILERPLATE +- +- # Allow CC to be a program name with arguments. +- lt_save_CC="$CC" +- lt_save_GCC=$GCC +- lt_save_CFLAGS=$CFLAGS +- CC=${F77-"f77"} +- CFLAGS=$FFLAGS +- compiler=$CC +- _LT_TAGVAR(compiler, $1)=$CC +- _LT_CC_BASENAME([$compiler]) +- GCC=$G77 +- if test -n "$compiler"; then +- AC_MSG_CHECKING([if libtool supports shared libraries]) +- AC_MSG_RESULT([$can_build_shared]) +- +- AC_MSG_CHECKING([whether to build shared libraries]) +- test "$can_build_shared" = "no" && enable_shared=no +- +- # On AIX, shared libraries and static libraries use the same namespace, and +- # are all built from PIC. +- case $host_os in +- aix3*) +- test "$enable_shared" = yes && enable_static=no +- if test -n "$RANLIB"; then +- archive_cmds="$archive_cmds~\$RANLIB \$lib" +- postinstall_cmds='$RANLIB $lib' +- fi +- ;; +- aix[[4-9]]*) +- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then +- test "$enable_shared" = yes && enable_static=no +- fi +- ;; +- esac +- AC_MSG_RESULT([$enable_shared]) +- +- AC_MSG_CHECKING([whether to build static libraries]) +- # Make sure either enable_shared or enable_static is yes. +- test "$enable_shared" = yes || enable_static=yes +- AC_MSG_RESULT([$enable_static]) +- +- _LT_TAGVAR(GCC, $1)="$G77" +- _LT_TAGVAR(LD, $1)="$LD" +- +- ## CAVEAT EMPTOR: +- ## There is no encapsulation within the following macros, do not change +- ## the running order or otherwise move them around unless you know exactly +- ## what you are doing... +- _LT_COMPILER_PIC($1) +- _LT_COMPILER_C_O($1) +- _LT_COMPILER_FILE_LOCKS($1) +- _LT_LINKER_SHLIBS($1) +- _LT_SYS_DYNAMIC_LINKER($1) +- _LT_LINKER_HARDCODE_LIBPATH($1) +- +- _LT_CONFIG($1) +- fi # test -n "$compiler" +- +- GCC=$lt_save_GCC +- CC="$lt_save_CC" +- CFLAGS="$lt_save_CFLAGS" +-fi # test "$_lt_disable_F77" != yes +- +-AC_LANG_POP +-])# _LT_LANG_F77_CONFIG +- +- +-# _LT_LANG_FC_CONFIG([TAG]) +-# ------------------------- +-# Ensure that the configuration variables for a Fortran compiler are +-# suitably defined. These variables are subsequently used by _LT_CONFIG +-# to write the compiler configuration to `libtool'. +-m4_defun([_LT_LANG_FC_CONFIG], +-[AC_LANG_PUSH(Fortran) +- +-if test -z "$FC" || test "X$FC" = "Xno"; then +- _lt_disable_FC=yes +-fi +- +-_LT_TAGVAR(archive_cmds_need_lc, $1)=no +-_LT_TAGVAR(allow_undefined_flag, $1)= +-_LT_TAGVAR(always_export_symbols, $1)=no +-_LT_TAGVAR(archive_expsym_cmds, $1)= +-_LT_TAGVAR(export_dynamic_flag_spec, $1)= +-_LT_TAGVAR(hardcode_direct, $1)=no +-_LT_TAGVAR(hardcode_direct_absolute, $1)=no +-_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +-_LT_TAGVAR(hardcode_libdir_separator, $1)= +-_LT_TAGVAR(hardcode_minus_L, $1)=no +-_LT_TAGVAR(hardcode_automatic, $1)=no +-_LT_TAGVAR(inherit_rpath, $1)=no +-_LT_TAGVAR(module_cmds, $1)= +-_LT_TAGVAR(module_expsym_cmds, $1)= +-_LT_TAGVAR(link_all_deplibs, $1)=unknown +-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +-_LT_TAGVAR(reload_flag, $1)=$reload_flag +-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +-_LT_TAGVAR(no_undefined_flag, $1)= +-_LT_TAGVAR(whole_archive_flag_spec, $1)= +-_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no +- +-# Source file extension for fc test sources. +-ac_ext=${ac_fc_srcext-f} +- +-# Object file extension for compiled fc test sources. +-objext=o +-_LT_TAGVAR(objext, $1)=$objext +- +-# No sense in running all these tests if we already determined that +-# the FC compiler isn't working. Some variables (like enable_shared) +-# are currently assumed to apply to all compilers on this platform, +-# and will be corrupted by setting them based on a non-working compiler. +-if test "$_lt_disable_FC" != yes; then +- # Code to be used in simple compile tests +- lt_simple_compile_test_code="\ +- subroutine t +- return +- end +-" +- +- # Code to be used in simple link tests +- lt_simple_link_test_code="\ +- program t +- end +-" +- +- # ltmain only uses $CC for tagged configurations so make sure $CC is set. +- _LT_TAG_COMPILER +- +- # save warnings/boilerplate of simple test code +- _LT_COMPILER_BOILERPLATE +- _LT_LINKER_BOILERPLATE +- +- # Allow CC to be a program name with arguments. +- lt_save_CC="$CC" +- lt_save_GCC=$GCC +- lt_save_CFLAGS=$CFLAGS +- CC=${FC-"f95"} +- CFLAGS=$FCFLAGS +- compiler=$CC +- GCC=$ac_cv_fc_compiler_gnu +- +- _LT_TAGVAR(compiler, $1)=$CC +- _LT_CC_BASENAME([$compiler]) +- +- if test -n "$compiler"; then +- AC_MSG_CHECKING([if libtool supports shared libraries]) +- AC_MSG_RESULT([$can_build_shared]) +- +- AC_MSG_CHECKING([whether to build shared libraries]) +- test "$can_build_shared" = "no" && enable_shared=no +- +- # On AIX, shared libraries and static libraries use the same namespace, and +- # are all built from PIC. +- case $host_os in +- aix3*) +- test "$enable_shared" = yes && enable_static=no +- if test -n "$RANLIB"; then +- archive_cmds="$archive_cmds~\$RANLIB \$lib" +- postinstall_cmds='$RANLIB $lib' +- fi +- ;; +- aix[[4-9]]*) +- if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then +- test "$enable_shared" = yes && enable_static=no +- fi +- ;; +- esac +- AC_MSG_RESULT([$enable_shared]) +- +- AC_MSG_CHECKING([whether to build static libraries]) +- # Make sure either enable_shared or enable_static is yes. +- test "$enable_shared" = yes || enable_static=yes +- AC_MSG_RESULT([$enable_static]) +- +- _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" +- _LT_TAGVAR(LD, $1)="$LD" +- +- ## CAVEAT EMPTOR: +- ## There is no encapsulation within the following macros, do not change +- ## the running order or otherwise move them around unless you know exactly +- ## what you are doing... +- _LT_SYS_HIDDEN_LIBDEPS($1) +- _LT_COMPILER_PIC($1) +- _LT_COMPILER_C_O($1) +- _LT_COMPILER_FILE_LOCKS($1) +- _LT_LINKER_SHLIBS($1) +- _LT_SYS_DYNAMIC_LINKER($1) +- _LT_LINKER_HARDCODE_LIBPATH($1) +- +- _LT_CONFIG($1) +- fi # test -n "$compiler" +- +- GCC=$lt_save_GCC +- CC=$lt_save_CC +- CFLAGS=$lt_save_CFLAGS +-fi # test "$_lt_disable_FC" != yes +- +-AC_LANG_POP +-])# _LT_LANG_FC_CONFIG +- +- +-# _LT_LANG_GCJ_CONFIG([TAG]) +-# -------------------------- +-# Ensure that the configuration variables for the GNU Java Compiler compiler +-# are suitably defined. These variables are subsequently used by _LT_CONFIG +-# to write the compiler configuration to `libtool'. +-m4_defun([_LT_LANG_GCJ_CONFIG], +-[AC_REQUIRE([LT_PROG_GCJ])dnl +-AC_LANG_SAVE +- +-# Source file extension for Java test sources. +-ac_ext=java +- +-# Object file extension for compiled Java test sources. +-objext=o +-_LT_TAGVAR(objext, $1)=$objext +- +-# Code to be used in simple compile tests +-lt_simple_compile_test_code="class foo {}" +- +-# Code to be used in simple link tests +-lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' +- +-# ltmain only uses $CC for tagged configurations so make sure $CC is set. +-_LT_TAG_COMPILER +- +-# save warnings/boilerplate of simple test code +-_LT_COMPILER_BOILERPLATE +-_LT_LINKER_BOILERPLATE +- +-# Allow CC to be a program name with arguments. +-lt_save_CC=$CC +-lt_save_CFLAGS=$CFLAGS +-lt_save_GCC=$GCC +-GCC=yes +-CC=${GCJ-"gcj"} +-CFLAGS=$GCJFLAGS +-compiler=$CC +-_LT_TAGVAR(compiler, $1)=$CC +-_LT_TAGVAR(LD, $1)="$LD" +-_LT_CC_BASENAME([$compiler]) +- +-# GCJ did not exist at the time GCC didn't implicitly link libc in. +-_LT_TAGVAR(archive_cmds_need_lc, $1)=no +- +-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +-_LT_TAGVAR(reload_flag, $1)=$reload_flag +-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +- +-## CAVEAT EMPTOR: +-## There is no encapsulation within the following macros, do not change +-## the running order or otherwise move them around unless you know exactly +-## what you are doing... +-if test -n "$compiler"; then +- _LT_COMPILER_NO_RTTI($1) +- _LT_COMPILER_PIC($1) +- _LT_COMPILER_C_O($1) +- _LT_COMPILER_FILE_LOCKS($1) +- _LT_LINKER_SHLIBS($1) +- _LT_LINKER_HARDCODE_LIBPATH($1) +- +- _LT_CONFIG($1) +-fi +- +-AC_LANG_RESTORE +- +-GCC=$lt_save_GCC +-CC=$lt_save_CC +-CFLAGS=$lt_save_CFLAGS +-])# _LT_LANG_GCJ_CONFIG +- +- +-# _LT_LANG_GO_CONFIG([TAG]) +-# -------------------------- +-# Ensure that the configuration variables for the GNU Go compiler +-# are suitably defined. These variables are subsequently used by _LT_CONFIG +-# to write the compiler configuration to `libtool'. +-m4_defun([_LT_LANG_GO_CONFIG], +-[AC_REQUIRE([LT_PROG_GO])dnl +-AC_LANG_SAVE +- +-# Source file extension for Go test sources. +-ac_ext=go +- +-# Object file extension for compiled Go test sources. +-objext=o +-_LT_TAGVAR(objext, $1)=$objext +- +-# Code to be used in simple compile tests +-lt_simple_compile_test_code="package main; func main() { }" +- +-# Code to be used in simple link tests +-lt_simple_link_test_code='package main; func main() { }' +- +-# ltmain only uses $CC for tagged configurations so make sure $CC is set. +-_LT_TAG_COMPILER +- +-# save warnings/boilerplate of simple test code +-_LT_COMPILER_BOILERPLATE +-_LT_LINKER_BOILERPLATE +- +-# Allow CC to be a program name with arguments. +-lt_save_CC=$CC +-lt_save_CFLAGS=$CFLAGS +-lt_save_GCC=$GCC +-GCC=yes +-CC=${GOC-"gccgo"} +-CFLAGS=$GOFLAGS +-compiler=$CC +-_LT_TAGVAR(compiler, $1)=$CC +-_LT_TAGVAR(LD, $1)="$LD" +-_LT_CC_BASENAME([$compiler]) +- +-# Go did not exist at the time GCC didn't implicitly link libc in. +-_LT_TAGVAR(archive_cmds_need_lc, $1)=no +- +-_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +-_LT_TAGVAR(reload_flag, $1)=$reload_flag +-_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +- +-## CAVEAT EMPTOR: +-## There is no encapsulation within the following macros, do not change +-## the running order or otherwise move them around unless you know exactly +-## what you are doing... +-if test -n "$compiler"; then +- _LT_COMPILER_NO_RTTI($1) +- _LT_COMPILER_PIC($1) +- _LT_COMPILER_C_O($1) +- _LT_COMPILER_FILE_LOCKS($1) +- _LT_LINKER_SHLIBS($1) +- _LT_LINKER_HARDCODE_LIBPATH($1) +- +- _LT_CONFIG($1) +-fi +- +-AC_LANG_RESTORE +- +-GCC=$lt_save_GCC +-CC=$lt_save_CC +-CFLAGS=$lt_save_CFLAGS +-])# _LT_LANG_GO_CONFIG +- +- +-# _LT_LANG_RC_CONFIG([TAG]) +-# ------------------------- +-# Ensure that the configuration variables for the Windows resource compiler +-# are suitably defined. These variables are subsequently used by _LT_CONFIG +-# to write the compiler configuration to `libtool'. +-m4_defun([_LT_LANG_RC_CONFIG], +-[AC_REQUIRE([LT_PROG_RC])dnl +-AC_LANG_SAVE +- +-# Source file extension for RC test sources. +-ac_ext=rc +- +-# Object file extension for compiled RC test sources. +-objext=o +-_LT_TAGVAR(objext, $1)=$objext +- +-# Code to be used in simple compile tests +-lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' +- +-# Code to be used in simple link tests +-lt_simple_link_test_code="$lt_simple_compile_test_code" +- +-# ltmain only uses $CC for tagged configurations so make sure $CC is set. +-_LT_TAG_COMPILER +- +-# save warnings/boilerplate of simple test code +-_LT_COMPILER_BOILERPLATE +-_LT_LINKER_BOILERPLATE +- +-# Allow CC to be a program name with arguments. +-lt_save_CC="$CC" +-lt_save_CFLAGS=$CFLAGS +-lt_save_GCC=$GCC +-GCC= +-CC=${RC-"windres"} +-CFLAGS= +-compiler=$CC +-_LT_TAGVAR(compiler, $1)=$CC +-_LT_CC_BASENAME([$compiler]) +-_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes +- +-if test -n "$compiler"; then +- : +- _LT_CONFIG($1) +-fi +- +-GCC=$lt_save_GCC +-AC_LANG_RESTORE +-CC=$lt_save_CC +-CFLAGS=$lt_save_CFLAGS +-])# _LT_LANG_RC_CONFIG +- +- +-# LT_PROG_GCJ +-# ----------- +-AC_DEFUN([LT_PROG_GCJ], +-[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], +- [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], +- [AC_CHECK_TOOL(GCJ, gcj,) +- test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" +- AC_SUBST(GCJFLAGS)])])[]dnl +-]) +- +-# Old name: +-AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([LT_AC_PROG_GCJ], []) +- +- +-# LT_PROG_GO +-# ---------- +-AC_DEFUN([LT_PROG_GO], +-[AC_CHECK_TOOL(GOC, gccgo,) +-]) +- +- +-# LT_PROG_RC +-# ---------- +-AC_DEFUN([LT_PROG_RC], +-[AC_CHECK_TOOL(RC, windres,) +-]) +- +-# Old name: +-AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([LT_AC_PROG_RC], []) +- +- +-# _LT_DECL_EGREP +-# -------------- +-# If we don't have a new enough Autoconf to choose the best grep +-# available, choose the one first in the user's PATH. +-m4_defun([_LT_DECL_EGREP], +-[AC_REQUIRE([AC_PROG_EGREP])dnl +-AC_REQUIRE([AC_PROG_FGREP])dnl +-test -z "$GREP" && GREP=grep +-_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +-_LT_DECL([], [EGREP], [1], [An ERE matcher]) +-_LT_DECL([], [FGREP], [1], [A literal string matcher]) +-dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +-AC_SUBST([GREP]) +-]) +- +- +-# _LT_DECL_OBJDUMP +-# -------------- +-# If we don't have a new enough Autoconf to choose the best objdump +-# available, choose the one first in the user's PATH. +-m4_defun([_LT_DECL_OBJDUMP], +-[AC_CHECK_TOOL(OBJDUMP, objdump, false) +-test -z "$OBJDUMP" && OBJDUMP=objdump +-_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +-AC_SUBST([OBJDUMP]) +-]) +- +-# _LT_DECL_DLLTOOL +-# ---------------- +-# Ensure DLLTOOL variable is set. +-m4_defun([_LT_DECL_DLLTOOL], +-[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +-test -z "$DLLTOOL" && DLLTOOL=dlltool +-_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +-AC_SUBST([DLLTOOL]) +-]) +- +-# _LT_DECL_SED +-# ------------ +-# Check for a fully-functional sed program, that truncates +-# as few characters as possible. Prefer GNU sed if found. +-m4_defun([_LT_DECL_SED], +-[AC_PROG_SED +-test -z "$SED" && SED=sed +-Xsed="$SED -e 1s/^X//" +-_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +-_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], +- [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +-])# _LT_DECL_SED +- +-m4_ifndef([AC_PROG_SED], [ +-############################################################ +-# NOTE: This macro has been submitted for inclusion into # +-# GNU Autoconf as AC_PROG_SED. When it is available in # +-# a released version of Autoconf we should remove this # +-# macro and use it instead. # +-############################################################ +- +-m4_defun([AC_PROG_SED], +-[AC_MSG_CHECKING([for a sed that does not truncate output]) +-AC_CACHE_VAL(lt_cv_path_SED, +-[# Loop through the user's path and test for sed and gsed. +-# Then use that list of sed's as ones to test for truncation. +-as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +-for as_dir in $PATH +-do +- IFS=$as_save_IFS +- test -z "$as_dir" && as_dir=. +- for lt_ac_prog in sed gsed; do +- for ac_exec_ext in '' $ac_executable_extensions; do +- if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then +- lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" +- fi +- done +- done +-done +-IFS=$as_save_IFS +-lt_ac_max=0 +-lt_ac_count=0 +-# Add /usr/xpg4/bin/sed as it is typically found on Solaris +-# along with /bin/sed that truncates output. +-for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do +- test ! -f $lt_ac_sed && continue +- cat /dev/null > conftest.in +- lt_ac_count=0 +- echo $ECHO_N "0123456789$ECHO_C" >conftest.in +- # Check for GNU sed and select it if it is found. +- if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then +- lt_cv_path_SED=$lt_ac_sed +- break +- fi +- while true; do +- cat conftest.in conftest.in >conftest.tmp +- mv conftest.tmp conftest.in +- cp conftest.in conftest.nl +- echo >>conftest.nl +- $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break +- cmp -s conftest.out conftest.nl || break +- # 10000 chars as input seems more than enough +- test $lt_ac_count -gt 10 && break +- lt_ac_count=`expr $lt_ac_count + 1` +- if test $lt_ac_count -gt $lt_ac_max; then +- lt_ac_max=$lt_ac_count +- lt_cv_path_SED=$lt_ac_sed +- fi +- done +-done +-]) +-SED=$lt_cv_path_SED +-AC_SUBST([SED]) +-AC_MSG_RESULT([$SED]) +-])#AC_PROG_SED +-])#m4_ifndef +- +-# Old name: +-AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +-dnl aclocal-1.4 backwards compatibility: +-dnl AC_DEFUN([LT_AC_PROG_SED], []) +- +- +-# _LT_CHECK_SHELL_FEATURES +-# ------------------------ +-# Find out whether the shell is Bourne or XSI compatible, +-# or has some other useful features. +-m4_defun([_LT_CHECK_SHELL_FEATURES], +-[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) +-# Try some XSI features +-xsi_shell=no +-( _lt_dummy="a/b/c" +- test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ +- = c,a/b,b/c, \ +- && eval 'test $(( 1 + 1 )) -eq 2 \ +- && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ +- && xsi_shell=yes +-AC_MSG_RESULT([$xsi_shell]) +-_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) +- +-AC_MSG_CHECKING([whether the shell understands "+="]) +-lt_shell_append=no +-( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ +- >/dev/null 2>&1 \ +- && lt_shell_append=yes +-AC_MSG_RESULT([$lt_shell_append]) +-_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) +- +-if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +- lt_unset=unset +-else +- lt_unset=false +-fi +-_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl +- +-# test EBCDIC or ASCII +-case `echo X|tr X '\101'` in +- A) # ASCII based system +- # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr +- lt_SP2NL='tr \040 \012' +- lt_NL2SP='tr \015\012 \040\040' +- ;; +- *) # EBCDIC based system +- lt_SP2NL='tr \100 \n' +- lt_NL2SP='tr \r\n \100\100' +- ;; +-esac +-_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +-_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +-])# _LT_CHECK_SHELL_FEATURES +- +- +-# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) +-# ------------------------------------------------------ +-# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and +-# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. +-m4_defun([_LT_PROG_FUNCTION_REPLACE], +-[dnl { +-sed -e '/^$1 ()$/,/^} # $1 /c\ +-$1 ()\ +-{\ +-m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) +-} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ +- && mv -f "$cfgfile.tmp" "$cfgfile" \ +- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +-test 0 -eq $? || _lt_function_replace_fail=: +-]) +- +- +-# _LT_PROG_REPLACE_SHELLFNS +-# ------------------------- +-# Replace existing portable implementations of several shell functions with +-# equivalent extended shell implementations where those features are available.. +-m4_defun([_LT_PROG_REPLACE_SHELLFNS], +-[if test x"$xsi_shell" = xyes; then +- _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl +- case ${1} in +- */*) func_dirname_result="${1%/*}${2}" ;; +- * ) func_dirname_result="${3}" ;; +- esac]) +- +- _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl +- func_basename_result="${1##*/}"]) +- +- _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl +- case ${1} in +- */*) func_dirname_result="${1%/*}${2}" ;; +- * ) func_dirname_result="${3}" ;; +- esac +- func_basename_result="${1##*/}"]) +- +- _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl +- # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are +- # positional parameters, so assign one to ordinary parameter first. +- func_stripname_result=${3} +- func_stripname_result=${func_stripname_result#"${1}"} +- func_stripname_result=${func_stripname_result%"${2}"}]) +- +- _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl +- func_split_long_opt_name=${1%%=*} +- func_split_long_opt_arg=${1#*=}]) +- +- _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl +- func_split_short_opt_arg=${1#??} +- func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) +- +- _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl +- case ${1} in +- *.lo) func_lo2o_result=${1%.lo}.${objext} ;; +- *) func_lo2o_result=${1} ;; +- esac]) +- +- _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) +- +- _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) +- +- _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) +-fi +- +-if test x"$lt_shell_append" = xyes; then +- _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) +- +- _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl +- func_quote_for_eval "${2}" +-dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ +- eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) +- +- # Save a `func_append' function call where possible by direct use of '+=' +- sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ +- && mv -f "$cfgfile.tmp" "$cfgfile" \ +- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +- test 0 -eq $? || _lt_function_replace_fail=: +-else +- # Save a `func_append' function call even when '+=' is not available +- sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ +- && mv -f "$cfgfile.tmp" "$cfgfile" \ +- || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +- test 0 -eq $? || _lt_function_replace_fail=: +-fi +- +-if test x"$_lt_function_replace_fail" = x":"; then +- AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) +-fi +-]) +- +-# _LT_PATH_CONVERSION_FUNCTIONS +-# ----------------------------- +-# Determine which file name conversion functions should be used by +-# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +-# for certain cross-compile configurations and native mingw. +-m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +-[AC_REQUIRE([AC_CANONICAL_HOST])dnl +-AC_REQUIRE([AC_CANONICAL_BUILD])dnl +-AC_MSG_CHECKING([how to convert $build file names to $host format]) +-AC_CACHE_VAL(lt_cv_to_host_file_cmd, +-[case $host in +- *-*-mingw* ) +- case $build in +- *-*-mingw* ) # actually msys +- lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 +- ;; +- *-*-cygwin* ) +- lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 +- ;; +- * ) # otherwise, assume *nix +- lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 +- ;; +- esac +- ;; +- *-*-cygwin* ) +- case $build in +- *-*-mingw* ) # actually msys +- lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin +- ;; +- *-*-cygwin* ) +- lt_cv_to_host_file_cmd=func_convert_file_noop +- ;; +- * ) # otherwise, assume *nix +- lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin +- ;; +- esac +- ;; +- * ) # unhandled hosts (and "normal" native builds) +- lt_cv_to_host_file_cmd=func_convert_file_noop +- ;; +-esac +-]) +-to_host_file_cmd=$lt_cv_to_host_file_cmd +-AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +-_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], +- [0], [convert $build file names to $host format])dnl +- +-AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +-AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +-[#assume ordinary cross tools, or native build. +-lt_cv_to_tool_file_cmd=func_convert_file_noop +-case $host in +- *-*-mingw* ) +- case $build in +- *-*-mingw* ) # actually msys +- lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 +- ;; +- esac +- ;; +-esac +-]) +-to_tool_file_cmd=$lt_cv_to_tool_file_cmd +-AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +-_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], +- [0], [convert $build files to toolchain format])dnl +-])# _LT_PATH_CONVERSION_FUNCTIONS diff --git a/am-utils-6.2-dont-use-logical-double-ampersand-when-ampersand-is-meant.patch b/am-utils-6.2-dont-use-logical-double-ampersand-when-ampersand-is-meant.patch new file mode 100644 index 0000000..6271797 --- /dev/null +++ b/am-utils-6.2-dont-use-logical-double-ampersand-when-ampersand-is-meant.patch @@ -0,0 +1,19 @@ +commit a187041e062c5b656def30a3ec282156360003f3 +Author: Christos Zoulas +Date: Wed Jan 21 23:28:46 2015 -0500 + + don't use logical && when & is meant + +diff --git a/amd/map.c b/amd/map.c +index fce8273..0d404cf 100644 +--- a/amd/map.c ++++ b/amd/map.c +@@ -752,7 +752,7 @@ umount_exported(void) + } else { + am_unmounted(mp); + } +- if (!(mf->mf_flags && (MFF_UNMOUNTING|MFF_MOUNTED))) ++ if (!(mf->mf_flags & (MFF_UNMOUNTING|MFF_MOUNTED))) + exported_ap[i] = NULL; + } else { + /* diff --git a/am-utils-6.2-fix-Linux-NFS-recognition-of-umounts.patch b/am-utils-6.2-fix-Linux-NFS-recognition-of-umounts.patch new file mode 100644 index 0000000..6513e19 --- /dev/null +++ b/am-utils-6.2-fix-Linux-NFS-recognition-of-umounts.patch @@ -0,0 +1,39 @@ +am-utils-6.2 - fix Linux NFS recognition of umounts + +From: Ian Kent + +Recent Linux NFS uses a simulated attibute cache change detection +method based on ctime. Consequenty the amd use of mtime for this +doesn't work properly for some kernel versions. + +The problem seen with some kernel versions is a failure to recognize +umounts. + +Updating the parent ctime in step with mtime during umount appears +to fix the problem. + +Signed-off-by: Ian Kent +--- + amd/autil.c | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/amd/autil.c b/amd/autil.c +index cd9514d..efd18ef 100644 +--- a/amd/autil.c ++++ b/amd/autil.c +@@ -709,10 +709,13 @@ am_unmounted(am_node *mp) + --mp->am_parent->am_fattr.na_nlink; + + /* +- * Update mtime of parent node ++ * Update mtime and ctime of parent node (as ctime is needed for some ++ * Linux NFS kernel versions to properly recognize attribute changes). + */ +- if (mp->am_parent && mp->am_parent->am_al->al_mnt) ++ if (mp->am_parent && mp->am_parent->am_al->al_mnt) { + clocktime(&mp->am_parent->am_fattr.na_mtime); ++ mp->am_parent->am_fattr.na_ctime = mp->am_parent->am_fattr.na_mtime; ++ } + + if (mp->am_parent && (mp->am_flags & AMF_REMOUNT)) { + char *fname = xstrdup(mp->am_name); diff --git a/am-utils-6.2-fix-NFSv3-access-method-return-on-non-existent-mount-point.patch b/am-utils-6.2-fix-NFSv3-access-method-return-on-non-existent-mount-point.patch new file mode 100644 index 0000000..85dcf79 --- /dev/null +++ b/am-utils-6.2-fix-NFSv3-access-method-return-on-non-existent-mount-point.patch @@ -0,0 +1,32 @@ +am-utils-6.2 - fix NFSv3 access method return on non-existent mount point + +From: Ian Kent + +When the NFS v3 access method is called and there is no mount point +corresponding to the path ESTALE needs to be returned the kernel NFS +client so an NFS lookup will be done and the mount point re-mounted. + +If there is no map entry to mount the NFS v3 lookup method can then +return the failure. + +Signed-off-by: Ian Kent +--- + amd/nfs_subr.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index ef07a4a..85cf98c 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -1239,9 +1239,9 @@ am_nfs3_access_3_svc(am_ACCESS3args *argp, struct svc_req *rqstp) + if (!mp) { + post_op_obj = &result.res_u.fail.obj_attributes; + post_op_obj->attributes_follow = 0; +- result.status = nfs_error(ENOENT); ++ result.status = nfs_error(ESTALE); + if (amuDebug(D_TRACE)) +- plog(XLOG_DEBUG, "access_3: ENOENT"); ++ plog(XLOG_DEBUG, "access_3: ESTALE"); + } else { + nfsfattr *fattr = &mp->am_fattr; + am_fattr3 *fattr3; diff --git a/am-utils-6.2-fix-NFSv3-lookup-dir-attribute-return-value.patch b/am-utils-6.2-fix-NFSv3-lookup-dir-attribute-return-value.patch new file mode 100644 index 0000000..85b1801 --- /dev/null +++ b/am-utils-6.2-fix-NFSv3-lookup-dir-attribute-return-value.patch @@ -0,0 +1,76 @@ +am-utils-6.2 - fix NFSv3 lookup dir attribute return value + +From: Ian Kent + +The NFS v3 lookup method, which returns attributes for the directory +containing the object to be looked up, used incorrect mount point +attributes which was causing unusual file system object visibility +problems. + +Signed-off-by: Ian Kent +--- + amd/nfs_subr.c | 29 +++++++++++++++++++++++++++-- + 1 file changed, 27 insertions(+), 2 deletions(-) + +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index 85cf98c..6a1b717 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -978,6 +978,29 @@ static void fattr_to_wcc_attr(nfsfattr *fattr, am_wcc_attr *wcc_attr) + nfstime_to_am_nfstime3(&fattr->na_ctime, &wcc_attr->ctime); + } + ++static nfsfattr *get_parent_fattr(am_node *mp) ++{ ++ nfsfattr *fattr; ++ ++ /* Set attributes to those of the parent only if this ++ * isn't topvol otherwise just use the mp attributes. ++ */ ++ fattr = &mp->am_fattr; ++ if (mp->am_parent && mp->am_parent->am_parent && ++ !(mp->am_parent->am_parent->am_flags & AMF_ROOT)) ++ fattr = &mp->am_parent->am_fattr; ++ ++ return fattr; ++} ++ ++static void parent_fattr_to_fattr3(am_node *mp, am_fattr3 *fattr3) ++{ ++ nfsfattr *fattr; ++ ++ fattr = get_parent_fattr(mp); ++ fattr_to_fattr3(fattr, fattr3); ++} ++ + static am_nfsstat3 return_estale_or_rofs(am_nfs_fh3 *fh, + am_pre_op_attr *pre_op, + am_post_op_attr *post_op) +@@ -1177,9 +1200,7 @@ am_nfs3_lookup_3_svc(am_LOOKUP3args *argp, struct svc_req *rqstp) + + /* dir attributes */ + post_op_dir->attributes_follow = 1; +- fattr = &mp->am_fattr; + fattr3 = &post_op_dir->am_post_op_attr_u.attributes; +- fattr_to_fattr3(fattr, fattr3); + + post_op_obj->attributes_follow = 0; + +@@ -1196,6 +1217,7 @@ am_nfs3_lookup_3_svc(am_LOOKUP3args *argp, struct svc_req *rqstp) + amd_stats.d_drops++; + return 0; + } ++ parent_fattr_to_fattr3(mp, fattr3); + result.status = nfs_error(error); + } else { + /* +@@ -1206,6 +1228,9 @@ am_nfs3_lookup_3_svc(am_LOOKUP3args *argp, struct svc_req *rqstp) + if (ap->am_ttl < mp->am_ttl) + ap->am_ttl = mp->am_ttl; + ++ /* dir attrs, update after mount */ ++ parent_fattr_to_fattr3(mp, fattr3); ++ + mp_to_fh3(ap, &result.res_u.ok.object); + + /* mount attributes */ diff --git a/am-utils-6.2-fix-NFSv3-readdir-post_op_dir-attributes-return.patch b/am-utils-6.2-fix-NFSv3-readdir-post_op_dir-attributes-return.patch new file mode 100644 index 0000000..8260cbf --- /dev/null +++ b/am-utils-6.2-fix-NFSv3-readdir-post_op_dir-attributes-return.patch @@ -0,0 +1,53 @@ +am-utils-6.2 - fix NFSv3 readdir post_op_dir attributes return + +From: Ian Kent + +The NFS v3 readdir method is expected to return the attributes of +the directory being read for both success and fail cases. + +Signed-off-by: Ian Kent +--- + amd/nfs_subr.c | 15 ++++++++------- + 1 file changed, 8 insertions(+), 7 deletions(-) + +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index 6a1b717..00a1dc0 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -1627,28 +1627,29 @@ am_nfs3_readdir_3_svc(am_READDIR3args *argp, struct svc_req *rqstp) + result.status = nfs_error(retry); + } else { + am_dirlist3 *list = &result.res_u.ok.reply; ++ nfsfattr *fattr; ++ am_fattr3 *fattr3; + am_nfsstat3 status; + + if (amuDebug(D_TRACE)) + plog(XLOG_DEBUG, "\treaddir_3(%s)", mp->am_path); + ++ fattr = &mp->am_fattr; ++ + status = mp->am_al->al_mnt->mf_ops->readdir(mp, + (voidp)&cookie, list, entries, count); + if (status == 0) { + post_op_dir = &result.res_u.ok.dir_attributes; +- nfsfattr *fattr; +- am_fattr3 *fattr3; +- +- fattr = &mp->am_fattr; +- fattr3 = &post_op_dir->am_post_op_attr_u.attributes; + post_op_dir->attributes_follow = 1; +- fattr_to_fattr3(fattr, fattr3); ++ fattr3 = &post_op_dir->am_post_op_attr_u.attributes; + result.status = AM_NFS3_OK; + } else { + post_op_dir = &result.res_u.fail.dir_attributes; +- post_op_dir->attributes_follow = 0; ++ post_op_dir->attributes_follow = 1; ++ fattr3 = &post_op_dir->am_post_op_attr_u.attributes; + result.status = nfs_error(status); + } ++ fattr_to_fattr3(fattr, fattr3); + + mp->am_stats.s_readdir++; + } diff --git a/am-utils-6.2-fix-NFSv3-unlink3_or_rmdir3-post_op-attributes-return.patch b/am-utils-6.2-fix-NFSv3-unlink3_or_rmdir3-post_op-attributes-return.patch new file mode 100644 index 0000000..93b7c35 --- /dev/null +++ b/am-utils-6.2-fix-NFSv3-unlink3_or_rmdir3-post_op-attributes-return.patch @@ -0,0 +1,62 @@ +am-utils-6.2 - fix NFSv3 unlink3_or_rmdir3() post_op attributes return + +From: Ian Kent + +The function unlink3_or_rmdir3() is called by both NFS v3 remove and +rmdir methods. Both of these methods require post op wcc attributes +to be returned but unlink3_or_rmdir3() was returning only the pre op +wcc attributes. + +Signed-off-by: Ian Kent +--- + amd/nfs_subr.c | 16 +++++++++++++--- + 1 file changed, 13 insertions(+), 3 deletions(-) + +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index 00a1dc0..0a43b98 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -1033,7 +1033,7 @@ static am_nfsstat3 unlink3_or_rmdir3(am_diropargs3 *argp, + am_pre_op_attr *pre_op_dir = &wcc_data->before; + am_post_op_attr *post_op_dir = &wcc_data->after; + nfsfattr *fattr; +- am_wcc_attr *wcc_attr; ++ am_wcc_attr *pre_op_wcc_attr, *post_op_wcc_attr; + am_node *mp, *ap; + int retry; + +@@ -1050,12 +1050,17 @@ static am_nfsstat3 unlink3_or_rmdir3(am_diropargs3 *argp, + goto out; + } + ++ post_op_dir->attributes_follow = 1; ++ post_op_wcc_attr = &post_op_dir->am_post_op_attr_u.attributes; ++ + pre_op_dir->attributes_follow = 1; ++ pre_op_wcc_attr = &pre_op_dir->am_pre_op_attr_u.attributes; ++ + fattr = &mp->am_fattr; +- wcc_attr = &pre_op_dir->am_pre_op_attr_u.attributes; +- fattr_to_wcc_attr(fattr, wcc_attr); ++ fattr_to_wcc_attr(fattr, pre_op_wcc_attr); + + if (mp->am_fattr.na_type != NFDIR) { ++ fattr_to_wcc_attr(fattr, post_op_wcc_attr); + res = nfs_error(ENOTDIR); + goto out; + } +@@ -1075,9 +1080,14 @@ static am_nfsstat3 unlink3_or_rmdir3(am_diropargs3 *argp, + */ + else if (retry == ENOENT) + retry = 0; ++ fattr_to_wcc_attr(fattr, post_op_wcc_attr); + res = nfs_error(retry); + } else { + forcibly_timeout_mp(mp); ++ /* we can't wait for the expire so use the attributes as ++ * they are now for the post op wcc attributes. ++ */ ++ fattr_to_wcc_attr(fattr, post_op_wcc_attr); + res = AM_NFS3_OK; + } + diff --git a/am-utils-6.2-fix-autoconf-check-in-bootstrap.patch b/am-utils-6.2-fix-autoconf-check-in-bootstrap.patch new file mode 100644 index 0000000..325621a --- /dev/null +++ b/am-utils-6.2-fix-autoconf-check-in-bootstrap.patch @@ -0,0 +1,13 @@ +diff -up am-utils-6.2/bootstrap.autoconf am-utils-6.2/bootstrap +--- am-utils-6.2/bootstrap.autoconf 2016-11-30 14:57:05.419388173 +0800 ++++ am-utils-6.2/bootstrap 2016-11-30 14:57:40.177131005 +0800 +@@ -9,7 +9,8 @@ validateversion() { + local v="$(autoreconf --version 2>&1 | head -1)" + case "$v" in + *2.63) ;; +- *) echo "am-utils requires autoconf 2.69, you have:" ++ *2.69) ;; ++ *) echo "am-utils requires autoconf 2.69 or 2.63, you have:" + echo " $v" + exit 1;; + esac diff --git a/am-utils-6.2-fix-compiler-assignment-warning-due-to-libtirpc.patch b/am-utils-6.2-fix-compiler-assignment-warning-due-to-libtirpc.patch new file mode 100644 index 0000000..2ddb6d1 --- /dev/null +++ b/am-utils-6.2-fix-compiler-assignment-warning-due-to-libtirpc.patch @@ -0,0 +1,57 @@ +am-utils-6.2 - fix compiler assignment warning due to libtirpc + +From: Ian Kent + +When using libtirpc there is a compiler warning on an assignment in +the amq_program_1() function. + +This warning was due to libtirpc using struct sockaddr_in6 for some +address fields in the transport structure as it is backward compatible +with struct sockaddr_in when IPv4 is in use. + +But if TLI is in use svc_getcaller() may not be defined or, if it is, +doesn't work as expected. + +So change to using amu_svc_getcaller(), which deals with the needed +cast for libtirpc, and handle the NULL return if TLI is being used. + +Signed-off-by: Ian Kent +--- + amd/amq_svc.c | 24 +++++++++++++++--------- + 1 file changed, 15 insertions(+), 9 deletions(-) + +diff --git a/amd/amq_svc.c b/amd/amq_svc.c +index 1f2b3d6..40f79fa 100644 +--- a/amd/amq_svc.c ++++ b/amd/amq_svc.c +@@ -162,15 +162,21 @@ amq_program_1(struct svc_req *rqstp, SVCXPRT *transp) + + #if defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP) + if (gopt.flags & CFM_USE_TCPWRAPPERS) { +- struct sockaddr_in *remote_addr = svc_getcaller(rqstp->rq_xprt); +- char *remote_hostname = inet_ntoa(remote_addr->sin_addr); +- +- if (!amqsvc_is_client_allowed(remote_addr)) { +- plog(XLOG_WARNING, "Amd denied remote amq service to %s", remote_hostname); +- svcerr_auth(transp, AUTH_FAILED); +- return; +- } else { +- dlog("Amd allowed remote amq service to %s", remote_hostname); ++ struct sockaddr_in *remote_addr = amu_svc_getcaller(rqstp->rq_xprt); ++ char *remote_hostname; ++ ++ /* Check the return from amu_svc_getcaller() becuase it's always NULL ++ * if TLI is in use. ++ */ ++ if (remote_addr) { ++ remote_hostname = inet_ntoa(remote_addr->sin_addr); ++ if (!amqsvc_is_client_allowed(remote_addr)) { ++ plog(XLOG_WARNING, "Amd denied remote amq service to %s", remote_hostname); ++ svcerr_auth(transp, AUTH_FAILED); ++ return; ++ } else { ++ dlog("Amd allowed remote amq service to %s", remote_hostname); ++ } + } + } + #endif /* defined(HAVE_TCPD_H) && defined(HAVE_LIBWRAP) */ diff --git a/am-utils-6.2-fix-logical-not-comparison-in-get_ldap_timestamp.patch b/am-utils-6.2-fix-logical-not-comparison-in-get_ldap_timestamp.patch new file mode 100644 index 0000000..6c5c026 --- /dev/null +++ b/am-utils-6.2-fix-logical-not-comparison-in-get_ldap_timestamp.patch @@ -0,0 +1,24 @@ +am-utils-6.2 - fix logical not comparison in get_ldap_timestamp() + +From: Ian Kent + +Looks like the not in this comparison is not meant to be applied to *ts. + +Signed-off-by: Ian Kent +--- + amd/info_ldap.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/amd/info_ldap.c b/amd/info_ldap.c +index cfed6fd..ecfc210 100644 +--- a/amd/info_ldap.c ++++ b/amd/info_ldap.c +@@ -446,7 +446,7 @@ get_ldap_timestamp(ALD *a, char *map, time_t *ts) + vals[0], map); + err = ENOENT; + } +- if (!*ts > 0) { ++ if (!(*ts > 0)) { + plog(XLOG_USER, "Nonpositive timestamp %ld for map %s\n", + (u_long) *ts, map); + err = ENOENT; diff --git a/am-utils-6.2-fix-nfsv3-fh-length-in-NFS_FH_DREF.patch b/am-utils-6.2-fix-nfsv3-fh-length-in-NFS_FH_DREF.patch new file mode 100644 index 0000000..0c2a873 --- /dev/null +++ b/am-utils-6.2-fix-nfsv3-fh-length-in-NFS_FH_DREF.patch @@ -0,0 +1,26 @@ +am-utils-6.2 - fix nfsv3 fh length in NFS_FH_DREF() + +From: Ian Kent + +The NFS_FH_DREF() macro for linux uses sizeof(struct nfs_fh) for the +length of the file handle copy regardless of the version of NFS used. + +But NFSv3 file handles are 64 bytes and not copying the whole file +handle can cause automounts to fail. + +Changing this to use the size of the passed nfs file handle fixes +the problem. + +Signed-off-by: Ian Kent +--- + conf/fh_dref/fh_dref_linux.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/conf/fh_dref/fh_dref_linux.h b/conf/fh_dref/fh_dref_linux.h +index 7ffa5b50..f8fb1a89 100644 +--- a/conf/fh_dref/fh_dref_linux.h ++++ b/conf/fh_dref/fh_dref_linux.h +@@ -1,2 +1,2 @@ + /* $srcdir/conf/fh_dref/fh_dref_linux.h */ +-#define NFS_FH_DREF(dst, src) memcpy((char *) &(dst.data), (char *) src, sizeof(struct nfs_fh)) ++#define NFS_FH_DREF(dst, src) memcpy((char *) &(dst.data), (char *) src, sizeof(*src)) diff --git a/am-utils-6.2-fix-umount-to-mount-race.patch b/am-utils-6.2-fix-umount-to-mount-race.patch new file mode 100644 index 0000000..fb8d77d --- /dev/null +++ b/am-utils-6.2-fix-umount-to-mount-race.patch @@ -0,0 +1,123 @@ +am-utils-6.2 - fix umount to mount race + +From: Ian Kent + +If a mount request arrives while its mount fs is being umounted the +the reference count of the mount fs never reaches 1 so the location +MF_MOUNTED is not cleared and the mount fs instance is not freed. + +This leads to amd thinking the mount fs is still mounted and the +mount request succeeds without its corresponding target being +mounted. + +Signed-off-by: Ian Kent +--- + amd/amd.h | 1 + + amd/amfs_generic.c | 10 +++++++--- + amd/autil.c | 9 +++++++++ + amd/map.c | 13 ++++++++++++- + 4 files changed, 29 insertions(+), 4 deletions(-) + +diff --git a/amd/amd.h b/amd/amd.h +index f66f5b7..504bcf7 100644 +--- a/amd/amd.h ++++ b/amd/amd.h +@@ -112,6 +112,7 @@ + #define AMF_AUTOFS 0x0004 /* This node is part of an autofs filesystem */ + #define AMF_REMOUNT 0x0008 /* This node needs to be remounted */ + #define AMF_SOFTLOOKUP 0x0010 /* This node returns EIO if server is down */ ++#define AMF_SOFTUNMOUNT 0x0020 /* unmount_node() returned EAGAIN, mount still referenced */ + + /* + * macros for struct mntfs (list of mounted filesystems) +diff --git a/amd/amfs_generic.c b/amd/amfs_generic.c +index 86d0ab7..7ab2829 100644 +--- a/amd/amfs_generic.c ++++ b/amd/amfs_generic.c +@@ -178,7 +178,7 @@ amfs_lookup_node(am_node *mp, char *fname, int *error_return) + error = mf->mf_error; + continue; + } +- if (!(mf->mf_flags & MFF_MOUNTED) || (mf->mf_flags & MFF_UNMOUNTING)) { ++ if (mf->mf_flags & (MFF_MOUNTING | MFF_UNMOUNTING)) { + in_progrss: + /* + * If the fs is not mounted or it is unmounting then there +@@ -743,9 +743,13 @@ amfs_bgmount(struct continuation *cp) + + if (mf->mf_flags & (MFF_MOUNTING | MFF_UNMOUNTING)) { + /* +- * Still mounting - retry later ++ * Still mounting or umounting - retry later + */ +- dlog("mount of \"%s\" already pending", mf->mf_info); ++ if (mf->mf_flags & MFF_MOUNTING) { ++ dlog("mount of \"%s\" already pending", mf->mf_info); ++ } else { ++ dlog("unmount of \"%s\" already pending", mf->mf_info); ++ } + goto retry; + } + +diff --git a/amd/autil.c b/amd/autil.c +index f44a0e2..1962c71 100644 +--- a/amd/autil.c ++++ b/amd/autil.c +@@ -703,6 +703,15 @@ am_unmounted(am_node *mp) + } + + /* ++ * Clear the mounted flag in case there is a pending mount with ++ * the same target fs and this is the last reference to it. ++ */ ++ if (mp->am_flags & AMF_SOFTUNMOUNT) ++ mp->am_flags &= ~AMF_SOFTUNMOUNT; ++ else ++ mf->mf_flags &= ~MFF_MOUNTED; ++ ++ /* + * If this is a pseudo-directory then adjust the link count + * in the parent + */ +diff --git a/amd/map.c b/amd/map.c +index a6df44b..cf5263e 100644 +--- a/amd/map.c ++++ b/amd/map.c +@@ -819,11 +819,17 @@ unmount_node(opaque_t arg) + #endif /* HAVE_FS_AUTOFS */ + if (mf->mf_refc == 1) + error = mf->mf_ops->umount_fs(mp, mf); ++ ++ /* Mount was not actually unmounted, soft umount. ++ * Tell the caller about it. ++ */ ++ if (!error && mf->mf_refc > 1) ++ error = EAGAIN; + } + + /* do this again, it might have changed */ + mf = mp->am_al->al_mnt; +- if (error) { ++ if (error && error != EAGAIN) { + errno = error; /* XXX */ + dlog("%s: unmount: %m", mf->mf_mount); + } +@@ -870,6 +876,10 @@ free_map_if_success(int rc, int term, opaque_t arg) + #endif /* HAVE_FS_AUTOFS */ + amd_stats.d_uerr++; + } else if (rc) { ++ if (rc == EAGAIN) { ++ mp->am_flags |= AMF_SOFTUNMOUNT; ++ goto done; ++ } + notify_child(mp, AMQ_UMNT_FAILED, rc, 0); + if (mf->mf_ops == &amfs_program_ops || rc == EBUSY) + plog(XLOG_STATS, "\"%s\" on %s still active", mp->am_path, mf->mf_mount); +@@ -885,6 +895,7 @@ free_map_if_success(int rc, int term, opaque_t arg) + #endif /* HAVE_FS_AUTOFS */ + amd_stats.d_uerr++; + } else { ++done: + /* + * am_unmounted() will call notify_child() appropriately. + */ diff --git a/am-utils-6.2-fix-wcc-attr-usage-in-unlink3_or_rmdir3.patch b/am-utils-6.2-fix-wcc-attr-usage-in-unlink3_or_rmdir3.patch new file mode 100644 index 0000000..6239c9f --- /dev/null +++ b/am-utils-6.2-fix-wcc-attr-usage-in-unlink3_or_rmdir3.patch @@ -0,0 +1,52 @@ +am-utils-6.2 - fix wcc attr usage in unlink3_or_rmdir3() + +From: Ian Kent + +The definition of the wcc post op attributes should be am_fattr3 not +am_wcc_attr in unlink3_or_rmdir3(). + +Signed-off-by: Ian Kent +--- + amd/nfs_subr.c | 9 +++++---- + 1 file changed, 5 insertions(+), 4 deletions(-) + +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index a383618..b88a40c 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -1058,7 +1058,8 @@ static am_nfsstat3 unlink3_or_rmdir3(am_diropargs3 *argp, + am_pre_op_attr *pre_op_dir = &wcc_data->before; + am_post_op_attr *post_op_dir = &wcc_data->after; + nfsfattr *fattr; +- am_wcc_attr *pre_op_wcc_attr, *post_op_wcc_attr; ++ am_wcc_attr *pre_op_wcc_attr; ++ am_fattr3 *post_op_wcc_attr; + am_node *mp, *ap; + int retry; + +@@ -1085,7 +1086,7 @@ static am_nfsstat3 unlink3_or_rmdir3(am_diropargs3 *argp, + fattr_to_wcc_attr(fattr, pre_op_wcc_attr); + + if (mp->am_fattr.na_type != NFDIR) { +- fattr_to_wcc_attr(fattr, post_op_wcc_attr); ++ fattr_to_fattr3(fattr, post_op_wcc_attr); + res = nfs_error(ENOTDIR); + goto out; + } +@@ -1105,14 +1106,14 @@ static am_nfsstat3 unlink3_or_rmdir3(am_diropargs3 *argp, + */ + else if (retry == ENOENT) + retry = 0; +- fattr_to_wcc_attr(fattr, post_op_wcc_attr); ++ fattr_to_fattr3(fattr, post_op_wcc_attr); + res = nfs_error(retry); + } else { + forcibly_timeout_mp(mp); + /* we can't wait for the expire so use the attributes as + * they are now for the post op wcc attributes. + */ +- fattr_to_wcc_attr(fattr, post_op_wcc_attr); ++ fattr_to_fattr3(fattr, post_op_wcc_attr); + res = AM_NFS3_OK; + } + diff --git a/am-utils-6.2-make-sure-variables-are-initialized.patch b/am-utils-6.2-make-sure-variables-are-initialized.patch new file mode 100644 index 0000000..b5449de --- /dev/null +++ b/am-utils-6.2-make-sure-variables-are-initialized.patch @@ -0,0 +1,20 @@ +commit 54da7c8206e38d0bf08a250835553754a1235360 +Author: Christos Zoulas +Date: Wed Jan 21 23:28:33 2015 -0500 + + make sure variables are initialized + +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index 7192a6a..30effba 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -1711,6 +1711,9 @@ am_nfs3_fsstat_3_svc(am_FSSTAT3args *argp, struct svc_req *rqstp) + if ((gopt.flags & CFM_SHOW_STATFS_ENTRIES) && + mp->am_al->al_mnt && mp->am_al->al_mnt->mf_mopts) { + mnt.mnt_opts = mp->am_al->al_mnt->mf_mopts; ++ blocks = 0; ++ bfree = 0; ++ bavail = 0; + if (amu_hasmntopt(&mnt, "browsable")) { + count_map_entries(mp, &blocks, &bfree, &bavail); + } diff --git a/am-utils-6.2-print_nfs_common_args-is-only-needed-with-DEBUG.patch b/am-utils-6.2-print_nfs_common_args-is-only-needed-with-DEBUG.patch new file mode 100644 index 0000000..404e51f --- /dev/null +++ b/am-utils-6.2-print_nfs_common_args-is-only-needed-with-DEBUG.patch @@ -0,0 +1,26 @@ +commit 116309607c437e302dafa1efb60330f54f815761 +Author: Christos Zoulas +Date: Sat Jan 17 12:21:24 2015 -0500 + + print_nfs_common_args() is only needed with DEBUG + +diff --git a/libamu/mount_fs.c b/libamu/mount_fs.c +index b5576bd..b577bab 100644 +--- a/libamu/mount_fs.c ++++ b/libamu/mount_fs.c +@@ -647,6 +647,7 @@ compute_nfs_common_args(struct nfs_common_args *nap, mntent_t *mntp, + #endif /* defined(MNT2_NFS_OPT_XLATECOOKIE) && defined(MNTTAB_OPT_XLATECOOKIE) */ + } + ++#ifdef DEBUG + static void + print_nfs_common_args(const struct nfs_common_args *a) + { +@@ -664,6 +665,7 @@ print_nfs_common_args(const struct nfs_common_args *a) + plog(XLOG_DEBUG, "NA->acdirmax = %lu", a->acdirmax); + #endif /* HAVE_NFS_ARGS_T_ACREGMIN */ + } ++#endif + + static void + discard_nfs23_args(nfs_args_t *nap) diff --git a/am-utils-6.2-remove-set-but-not-used-variable-again.patch b/am-utils-6.2-remove-set-but-not-used-variable-again.patch new file mode 100644 index 0000000..b4dcf94 --- /dev/null +++ b/am-utils-6.2-remove-set-but-not-used-variable-again.patch @@ -0,0 +1,26 @@ +commit a87188b9f0596651ce987253a6af23aca4b08b75 +Author: Christos Zoulas +Date: Sat Jan 17 12:42:55 2015 -0500 + + remove set but not used variable + +diff --git a/conf/transp/transp_sockets.c b/conf/transp/transp_sockets.c +index b3ad5fc..6326007 100644 +--- a/conf/transp/transp_sockets.c ++++ b/conf/transp/transp_sockets.c +@@ -418,7 +418,6 @@ u_long + get_nfs_version(char *host, struct sockaddr_in *sin, u_long nfs_version, const char *proto, u_long def) + { + CLIENT *clnt; +- int again = 0; + enum clnt_stat clnt_stat; + struct timeval tv; + int sock; +@@ -433,7 +432,6 @@ get_nfs_version(char *host, struct sockaddr_in *sin, u_long nfs_version, const c + nfs_version = def; + else + nfs_version = NFS_VERS_MAX; +- again = 1; + } + tv.tv_sec = 2; /* retry every 2 seconds, but also timeout */ + tv.tv_usec = 0; diff --git a/am-utils-6.2-remove-set-but-not-used-variable-mp_error.patch b/am-utils-6.2-remove-set-but-not-used-variable-mp_error.patch new file mode 100644 index 0000000..1f08d8a --- /dev/null +++ b/am-utils-6.2-remove-set-but-not-used-variable-mp_error.patch @@ -0,0 +1,28 @@ +commit ed717dad0fee421744a24e6fb43e09d62b3f898d +Author: Christos Zoulas +Date: Sat Jan 17 12:45:22 2015 -0500 + + remove set but not used variable + +diff --git a/amd/amfs_generic.c b/amd/amfs_generic.c +index 25d734b..c352a32 100644 +--- a/amd/amfs_generic.c ++++ b/amd/amfs_generic.c +@@ -1153,7 +1153,6 @@ amfs_generic_lookup_child(am_node *mp, char *fname, int *error_return, int op) + { + am_node *new_mp; + am_loc **al_array; +- int mp_error; + + dlog("in amfs_generic_lookup_child"); + +@@ -1178,9 +1177,6 @@ amfs_generic_lookup_child(am_node *mp, char *fname, int *error_return, int op) + return new_mp; + } + +- /* save error_return */ +- mp_error = *error_return; +- + al_array = amfs_lookup_loc(new_mp, error_return); + if (!al_array) { + new_mp->am_error = new_mp->am_al->al_mnt->mf_error = *error_return; diff --git a/am-utils-6.2-remove-set-but-not-used-variable-s.patch b/am-utils-6.2-remove-set-but-not-used-variable-s.patch new file mode 100644 index 0000000..20f5911 --- /dev/null +++ b/am-utils-6.2-remove-set-but-not-used-variable-s.patch @@ -0,0 +1,38 @@ +commit 79bb90caf12d2713b4736c3820135f0f00424f10 +Author: Christos Zoulas +Date: Sat Jan 17 12:29:03 2015 -0500 + + remove set but not used variable + +diff --git a/hlfsd/hlfsd.c b/hlfsd/hlfsd.c +index 686bb63..701abcd 100644 +--- a/hlfsd/hlfsd.c ++++ b/hlfsd/hlfsd.c +@@ -144,7 +144,6 @@ main(int argc, char *argv[]) + int opterrs = 0; + int retry; + int soNFS; /* NFS socket */ +- int s = -99; + mntent_t mnt; + nfs_args_t nfs_args; + am_nfs_handle_t anh; +@@ -449,17 +448,16 @@ main(int argc, char *argv[]) + * set this signal handler. + */ + if (amuDebug(D_DAEMON)) { +- s = -99; + while (stoplight != SIGUSR2) { + plog(XLOG_INFO, "parent waits for child to setup (stoplight=%d)", stoplight); + #ifdef HAVE_SIGSUSPEND + { + sigset_t mask; + sigemptyset(&mask); +- s = sigsuspend(&mask); /* wait for child to set up */ ++ (void)sigsuspend(&mask); /* wait for child to set up */ + } + #else /* not HAVE_SIGSUSPEND */ +- s = sigpause(0); /* wait for child to set up */ ++ (void)sigpause(0); /* wait for child to set up */ + #endif /* not HAVE_SIGSUSPEND */ + sleep(1); + } diff --git a/am-utils-6.2-remove-unused-function-show_map.patch b/am-utils-6.2-remove-unused-function-show_map.patch new file mode 100644 index 0000000..f7b6648 --- /dev/null +++ b/am-utils-6.2-remove-unused-function-show_map.patch @@ -0,0 +1,22 @@ +commit f61becdba8df1d6d515f5476d312d3cf4e933946 +Author: Christos Zoulas +Date: Sat Jan 17 12:43:32 2015 -0500 + + remove unused function + +diff --git a/amq/amq.c b/amq/amq.c +index e99732f..5d4ed7a 100644 +--- a/amq/amq.c ++++ b/amq/amq.c +@@ -256,11 +256,6 @@ show_mi(amq_mount_info_list *ml, enum show_opt e, int *mwid, int *dwid, int *twi + } + + static void +-show_map(amq_map_info *mi) +-{ +-} +- +-static void + show_mapinfo(amq_map_info_list *ml, enum show_opt e, int *nwid, int *wwid) + { + u_int i; diff --git a/am-utils-6.2-uid_t-might-be-a-different-size-than-unsigned-int.patch b/am-utils-6.2-uid_t-might-be-a-different-size-than-unsigned-int.patch new file mode 100644 index 0000000..9b5fbc4 --- /dev/null +++ b/am-utils-6.2-uid_t-might-be-a-different-size-than-unsigned-int.patch @@ -0,0 +1,59 @@ +commit 76e1a5ddc9ef9730205b2da2ed6b654d8fbaef40 +Author: Christos Zoulas +Date: Sat Jan 17 12:27:56 2015 -0500 + + uid_t might be a different size than unsigned int, so XXX: truncate. + +diff --git a/hlfsd/stubs.c b/hlfsd/stubs.c +index b26e5f4..70876b7 100644 +--- a/hlfsd/stubs.c ++++ b/hlfsd/stubs.c +@@ -60,6 +60,21 @@ static int started; + static am_nfs_fh slink; + static am_nfs_fh un_fhandle; + ++static void ++xgetuid(uid_t *uid, const void *p) ++{ ++ u_int xuid; ++ (void)memcpy(&xuid, p, sizeof(xuid)); ++ *uid = xuid; ++} ++ ++static void ++xputuid(void *p, uid_t uid) ++{ ++ u_int xuid = uid; ++ (void)memcpy(p, &xuid, sizeof(xuid)); ++} ++ + /* + * GLOBALS: + */ +@@ -160,7 +175,7 @@ nfsproc_getattr_2_svc(am_nfs_fh *argp, struct svc_req *rqstp) + if (gid != hlfs_gid) { + res.ns_status = NFSERR_STALE; + } else { +- (void)memcpy(&uid, argp->fh_data, sizeof(uid)); ++ xgetuid(&uid, argp->fh_data); + if (plt_search(uid) != (uid2home_t *) NULL) { + res.ns_status = NFS_OK; + un_fattr.na_fileid = uid; +@@ -278,7 +293,7 @@ nfsproc_lookup_2_svc(nfsdiropargs *argp, struct svc_req *rqstp) + un_fattr.na_fileid = untab[idx].uid; + res.dr_u.dr_drok_u.drok_attributes = un_fattr; + memset(&un_fhandle, 0, sizeof(un_fhandle)); +- memcpy(un_fhandle.fh_data, &untab[idx].uid, sizeof(untab[idx].uid)); ++ xputuid(un_fhandle.fh_data, untab[idx].uid); + xstrlcpy((char *) &un_fhandle.fh_data[sizeof(int)], + untab[idx].username, + sizeof(am_nfs_fh) - sizeof(int)); +@@ -333,7 +348,7 @@ nfsproc_readlink_2_svc(am_nfs_fh *argp, struct svc_req *rqstp) + } + + if (groupid == hlfs_gid) { +- memcpy(&userid, argp->fh_data, sizeof(userid)); ++ xgetuid(&userid, argp->fh_data); + username = (char *) &argp->fh_data[sizeof(int)]; + if (!(res.rlr_u.rlr_data_u = mailbox(userid, username))) + return (nfsreadlinkres *) NULL; diff --git a/am-utils-6.2-use-linux-libtirpc-if-present.patch b/am-utils-6.2-use-linux-libtirpc-if-present.patch new file mode 100644 index 0000000..df20d5c --- /dev/null +++ b/am-utils-6.2-use-linux-libtirpc-if-present.patch @@ -0,0 +1,93 @@ +am-utils-6.2 - use Linux libtirpc if present + +From: Ian Kent + +For Linux systems, if the header files and shared libraries of libtirpc +are present use them instead of the glibc RPC implementation. + +Signed-off-by: Ian Kent +--- + Makefile.am | 3 ++- + configure.ac | 4 ++++ + include/am_compat.h | 8 ++++++-- + m4/macros/check_linux_libtirpc.m4 | 13 +++++++++++++ + 4 files changed, 25 insertions(+), 3 deletions(-) + create mode 100644 m4/macros/check_linux_libtirpc.m4 + +diff --git a/Makefile.am b/Makefile.am +index bae4615..e094e95 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -146,7 +146,8 @@ EXTRA_DIST_M4 = \ + m4/macros/type_xdrproc_t.m4 \ + m4/macros/type_xfs_args.m4 \ + m4/macros/type_yp_order_outorder.m4 \ +- m4/macros/with_addon.m4 ++ m4/macros/with_addon.m4 \ ++ m4/macros/check_linux_libtirpc.m4 + + EXTRA_DIST_CONF = \ + conf/autofs/autofs_default.h \ +diff --git a/configure.ac b/configure.ac +index ce61925..98b444d 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -222,6 +222,9 @@ dnl lots of code. So I am forced to use a special purpose macro that sets + dnl the libraries based on the OS. Sigh. -Erez. + AMU_CHECK_OS_LIBS + ++dnl use Linux libtirpc if possible ++AMU_CHECK_LIBTIRPC ++ + dnl librpc and librpcsvc are needed on Solaris + AC_CHECK_LIB(rpc, clnt_sperrno) + AC_CHECK_LIB(rpcsvc, xdr_fhandle) +@@ -433,6 +436,7 @@ AC_CHECK_HEADERS( \ + arpa/nameser.h \ + arpa/inet.h \ + bsd/rpc/rpc.h \ ++ tirpc/netconfig.h \ + cdfs/cdfsmount.h \ + cdfs/cdfs_mount.h \ + fs/udf/udf_mount.h \ +diff --git a/include/am_compat.h b/include/am_compat.h +index 3463f3f..d6826fc 100644 +--- a/include/am_compat.h ++++ b/include/am_compat.h +@@ -454,11 +454,15 @@ struct hsfs_args { + /* + * Define a dummy struct netconfig for non-TLI systems + */ +-#if !defined(HAVE_NETCONFIG_H) && !defined(HAVE_SYS_NETCONFIG_H) ++#if !defined(HAVE_NETCONFIG_H) ++# if !defined(HAVE_SYS_NETCONFIG_H) ++# if !defined(HAVE_TIRPC_NETCONFIG_H) + struct netconfig { + int dummy; + }; +-#endif /* not HAVE_NETCONFIG_H and not HAVE_SYS_NETCONFIG_H */ ++# endif /* not HAVE_TIRPC_NETCONFIG_H */ ++# endif /* not HAVE_SYS_NETCONFIG_H */ ++#endif /* not HAVE_NETCONFIG_H */ + + /* some OSs don't define INADDR_NONE and assume it's unsigned -1 */ + #ifndef INADDR_NONE +diff --git a/m4/macros/check_linux_libtirpc.m4 b/m4/macros/check_linux_libtirpc.m4 +new file mode 100644 +index 0000000..918423c +--- /dev/null ++++ b/m4/macros/check_linux_libtirpc.m4 +@@ -0,0 +1,13 @@ ++dnl ###################################################################### ++dnl Check for Linux libtirpc library ++AC_DEFUN([AMU_CHECK_LIBTIRPC],[ ++TIRPC_CPPFLAGS="" ++TIRPC_LIBS="" ++ ++AC_CHECK_HEADER(tirpc/netconfig.h,[ ++ TIRPC_CPPFLAGS="-I/usr/include/tirpc" ++ AC_DEFINE(HAVE_LIBTIRPC, 1, [Define to 1 if you have libtirpc headers installed]) ++ AC_CHECK_LIB(tirpc, clnt_tli_create, [TIRPC_LIBS="-ltirpc"], [TIRPC_CPPFLAGS=""])]) ++ AMU_CFLAGS="$AMU_CFLAGS $TIRPC_CPPFLAGS" ++ LIBS="$LIBS $TIRPC_LIBS" ++]) diff --git a/am-utils-6.2-use-new-get_nfs_xprt-and-put_nfs_xprt-functions.patch b/am-utils-6.2-use-new-get_nfs_xprt-and-put_nfs_xprt-functions.patch new file mode 100644 index 0000000..8594739 --- /dev/null +++ b/am-utils-6.2-use-new-get_nfs_xprt-and-put_nfs_xprt-functions.patch @@ -0,0 +1,60 @@ +am-utils-6.2 - use new get_nfs_xprt() and put_nfs_xprt() functions + +From: Ian Kent + +The nfs_quick_reply() function needs to know the current RPC transport +outside of the NFS LOOKUP method call. It needs this to reply to the +NFS LOOKUP call that initiated the mount. + +Now there are functions that avoid transport corruption if another +request comes in during the backgroud mount make nfs_quick_reply() +use them. + +Signed-off-by: Ian Kent +--- + amd/amfs_generic.c | 3 +-- + amd/map.c | 2 +- + amd/nfs_subr.c | 3 ++- + 3 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/amd/amfs_generic.c b/amd/amfs_generic.c +index c352a32..86d0ab7 100644 +--- a/amd/amfs_generic.c ++++ b/amd/amfs_generic.c +@@ -1129,8 +1129,7 @@ amfs_generic_mount_child(am_node *new_mp, int *error_return) + */ + if (current_transp && !new_mp->am_transp) { + dlog("Saving RPC transport for %s", new_mp->am_path); +- new_mp->am_transp = (SVCXPRT *) xmalloc(sizeof(SVCXPRT)); +- *(new_mp->am_transp) = *current_transp; ++ new_mp->am_transp = get_nfs_xprt(current_transp); + } + if (error && new_mp->am_al && new_mp->am_al->al_mnt && + (new_mp->am_al->al_mnt->mf_ops == &amfs_error_ops)) +diff --git a/amd/map.c b/amd/map.c +index 0d404cf..bcb2156 100644 +--- a/amd/map.c ++++ b/amd/map.c +@@ -471,7 +471,7 @@ free_map(am_node *mp) + XFREE(mp->am_name); + XFREE(mp->am_path); + XFREE(mp->am_pref); +- XFREE(mp->am_transp); ++ put_nfs_xprt(mp->am_transp); + + if (mp->am_al) + free_loc(mp->am_al); +diff --git a/amd/nfs_subr.c b/amd/nfs_subr.c +index 0a43b98..07d960d 100644 +--- a/amd/nfs_subr.c ++++ b/amd/nfs_subr.c +@@ -291,7 +291,8 @@ nfs_quick_reply(am_node *mp, int error) + /* + * Free up transp. It's only used for one reply. + */ +- XFREE(mp->am_transp); ++ put_nfs_xprt(mp->am_transp); ++ mp->am_transp = NULL; + dlog("Quick reply sent for %s", mp->am_al->al_mnt->mf_mount); + } + } diff --git a/am-utils.conf b/am-utils.conf new file mode 100644 index 0000000..388e673 --- /dev/null +++ b/am-utils.conf @@ -0,0 +1,35 @@ +# +# amd default config file +# +# check amd.conf(5) man page for details about options in this file +# + +# GLOBAL OPTIONS SECTION +[ global ] +normalize_hostnames = no +print_pid = yes +pid_file = /var/run/amd.pid +restart_mounts = yes +auto_dir = /.automount +#log_file = /var/log/amd +log_file = syslog +log_options = all +#debug_options = all +plock = no +selectors_on_default = yes +print_version = no +# set map_type to "nis" for NIS maps, or comment it out to search for all +# types +map_type = file +search_path = /etc +browsable_dirs = yes +show_statfs_entries = no +fully_qualified_hosts = no +cache_duration = 300 +# Fedora doesn't support NFSv2, use the amd NFSv3 server. +auto_nfs_version = 3 + +# DEFINE AN AMD MOUNT POINT +[ /net ] +map_name = amd.net +map_type = file diff --git a/am-utils.init b/am-utils.init new file mode 100755 index 0000000..f508817 --- /dev/null +++ b/am-utils.init @@ -0,0 +1,95 @@ +#!/bin/bash +# +# Version: 1.3 +# +# chkconfig: - 72 28 +# description: Runs the automount daemon that mounts devices and NFS hosts \ +# on demand. +# processname: amd +# config: /etc/amd.conf +# + +# We require the /etc/amd.conf file, but supply it in the package, so it +# should always be there. +[ -f /etc/amd.conf ] || exit $? +[ -f /etc/sysconfig/amd ] || exit $? + +# Source function library. +. /etc/init.d/functions + +# Recover AMDOPTS from /etc/sysconfig/amd. +if [ -f /etc/sysconfig/amd ] ; then + . /etc/sysconfig/amd +fi + +RETVAL=0 +prog=amd +amd=/usr/sbin/amd + +start() { + echo -n $"Starting $prog: " + daemon $amd -F /etc/amd.conf $AMDOPTS $OPTIONS $MOUNTPTS + RETVAL=$? + echo + [ $RETVAL = 0 ] && touch /var/lock/subsys/amd + return $RETVAL +} + +stop() { + echo -n $"Stopping $prog: " + killproc $amd -TERM + # this part is from wait4amd2die + delay=3 + count=10 + i=1 + maxcount=`expr $count + 1` + while [ $i != $maxcount ]; do + # run amq + /usr/sbin/amq > /dev/null 2>&1 + if [ $? != 0 ] + then + # amq failed to run (because amd is dead) + rm -f /var/lock/subsys/amd /var/run/amd.pid + echo + return 0 + fi + sleep $delay + i=`expr $i + 1` + done + failure $"amd shutdown" + echo + echo "amd is still up" + return 1 +} + +# See how we were called. +case "$1" in + start) + start + ;; + stop) + stop + ;; + status) + status $amd + RETVAL=$? + ;; + restart) + stop + start + ;; + condrestart) + if [ -f /var/lock/subsys/amd ]; then + stop + start + fi + ;; + reload) + action $"Reloading $prog:" killall -HUP $amd + ;; + *) + echo $"Usage: $0 {start|stop|restart|reload|condrestart|status}" + exit 1 +esac + +exit $RETVAL diff --git a/am-utils.net.map b/am-utils.net.map new file mode 100644 index 0000000..2307d9a --- /dev/null +++ b/am-utils.net.map @@ -0,0 +1,5 @@ +localhost type:=link;fs:=/ +* host==${key};type:=link;fs:=/ \ + hostd==${key};type:=link;fs:=/ \ + fs:=${autodir}/${rhost}/root/${rfs};type:=host;rhost:=${key};rfs:=/;opts:=nosuid,nodev + diff --git a/am-utils.spec b/am-utils.spec new file mode 100644 index 0000000..c2baa69 --- /dev/null +++ b/am-utils.spec @@ -0,0 +1,702 @@ +Summary: Automount utilities including an updated version of Amd +Name: am-utils +Version: 6.2.0 +%define upstream_version 6.2 +Release: 27%{?dist} +License: BSD +Epoch: 5 +Group: System Environment/Daemons +URL: http://am-utils.org +# Git repository git://git.fsl.cs.sunysb.edu/am-utils-6.2.git +Source: ftp://ftp.am-utils.org/pub/am-utils/am-utils-%{upstream_version}.tar.gz +Source1: am-utils.init +Source2: am-utils.conf +Source3: am-utils.sysconf +Source4: am-utils.net.map + +BuildRequires: gdbm-devel +BuildRequires: hesiod-devel +BuildRequires: openldap-devel +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: libtool +BuildRequires: bison +BuildRequires: flex +BuildRequires: tcp_wrappers-devel +BuildRequires: texinfo +BuildRequires: gcc +BuildRequires: m4 +BuildRequires: libtirpc-devel + +Requires: portmap +Requires: grep +Requires: gawk +Requires: findutils +Requires: libtirpc + +Requires(pre): /bin/grep +Requires(post): /sbin/install-info +Requires(preun): /sbin/install-info + +# Fix problems with possible future libtool rebases (#1181698) +Patch1: am-utils-6.2-dont-include-auto-generated-macros-in-aclinlude_m4.patch +Patch2: am-utils-6.2-print_nfs_common_args-is-only-needed-with-DEBUG.patch +Patch3: am-utils-6.2-uid_t-might-be-a-different-size-than-unsigned-int.patch +Patch4: am-utils-6.2-remove-set-but-not-used-variable-s.patch +Patch5: am-utils-6.2-remove-set-but-not-used-variable-again.patch +Patch6: am-utils-6.2-remove-unused-function-show_map.patch +Patch7: am-utils-6.2-remove-set-but-not-used-variable-mp_error.patch +Patch8: am-utils-6.2-32-bit-fixes.patch +Patch9: am-utils-6.2-make-sure-variables-are-initialized.patch +Patch10: am-utils-6.2-dont-use-logical-double-ampersand-when-ampersand-is-meant.patch +Patch11: am-utils-6.2-Fix-nfs-args-setting-code.patch + +Patch12: am-utils-6.2-add-debug-log-trace-to-NFSv3-readdirplus.patch +Patch13: am-utils-6.2-fix-NFSv3-access-method-return-on-non-existent-mount-point.patch +Patch14: am-utils-6.2-fix-NFSv3-lookup-dir-attribute-return-value.patch +Patch15: am-utils-6.2-fix-NFSv3-readdir-post_op_dir-attributes-return.patch +Patch16: am-utils-6.2-fix-NFSv3-unlink3_or_rmdir3-post_op-attributes-return.patch + +# The git changelog entry doesn't say why autoconf 2.69 is required. +# Changing the check to require RHEL-6 autoconf version 2.63 does +# build cleanly and appears to work ok. Perhaps the libtool change +# (ie. patch1 above) resolves whatever problem that commit was meant +# to deal with. +Patch17: am-utils-6.2-allow-old-autoconf-version.patch + +Patch18: am-utils-6.2-fix-Linux-NFS-recognition-of-umounts.patch +Patch19: am-utils-6.2-add-get_nfs_xprt-and-put_nfs_xprt-functions.patch +Patch20: am-utils-6.2-use-new-get_nfs_xprt-and-put_nfs_xprt-functions.patch +Patch21: am-utils-6.2-add-NFSv3-nfs_quick_reply-functionality.patch +Patch22: am-utils-6.2-add-NFSv3-rpc-request-validation.patch +Patch23: am-utils-6.2-fix-wcc-attr-usage-in-unlink3_or_rmdir3.patch + +Patch24: am-utils-6.2-Add-the-sys-alias-for-unix-as-well-as-none-and-null.patch +Patch25: am-utils-6.2-Default-to-string-mount-options-for-NFSv4.patch +Patch26: am-utils-6.2-Improve-debugging-for-unmounting.patch +Patch27: am-utils-6.2-add-more-debugging-in-the-unmount-path.patch +Patch28: am-utils-6.2-There-is-really-no-ti-rpc-nfsv4-so-dont-send-one.patch +Patch29: am-utils-6.2-Fix-SEGV-on-amq-entries-that-print-times.patch +Patch30: am-utils-6.2-Make-hasmntval-return-an-0-on-error-1-on-success.patch +Patch31: am-utils-6.2-Update-the-ctime-of-the-directory-too-since-it-changed.patch + +Patch32: am-utils-6.2-use-linux-libtirpc-if-present.patch +Patch33: am-utils-6.2-fix-compiler-assignment-warning-due-to-libtirpc.patch +Patch34: am-utils-6.2-fix-logical-not-comparison-in-get_ldap_timestamp.patch +Patch35: am-utils-6.2-fix-umount-to-mount-race.patch + +# So I can work on this with other than RHEL-6. +Patch36: am-utils-6.2-fix-autoconf-check-in-bootstrap.patch + +Patch37: am-utils-6.2-fix-nfsv3-fh-length-in-NFS_FH_DREF.patch + +# Not needed since autoreconf/libtool appear to do this automatically +# Leaving it set doesn't appear to be a problem so leave it set in +# case this changes. +%global _hardened_build 1 + +# We need to filter out some perl requirements for now. +%define _use_internal_dependency_generator 0 +%define old_find_requires %{__find_requires} + +%description +Am-utils includes an updated version of Amd, the popular BSD +automounter. An automounter is a program which maintains a cache +of mounted filesystems. Filesystems are mounted when they are +first referenced by the user and unmounted after a certain period of +inactivity. Amd supports a variety of filesystems, including NFS, UFS, +CD-ROMS and local drives. + +You should install am-utils if you need a program for automatically +mounting and unmounting filesystems. + +%prep +%setup -q -n %{name}-%{upstream_version} + +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 +%patch4 -p1 +%patch5 -p1 +%patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 +%patch10 -p1 +%patch11 -p1 +%patch12 -p1 +%patch13 -p1 +%patch14 -p1 +%patch15 -p1 +%patch16 -p1 +%patch17 -p1 +%patch18 -p1 +%patch19 -p1 +%patch20 -p1 +%patch21 -p1 +%patch22 -p1 +%patch23 -p1 +%patch24 -p1 +%patch25 -p1 +%patch26 -p1 +%patch27 -p1 +%patch28 -p1 +%patch29 -p1 +%patch30 -p1 +%patch31 -p1 +%patch32 -p1 +%patch33 -p1 +%patch34 -p1 +%patch35 -p1 +%patch36 -p1 +%patch37 -p1 + +./bootstrap + +find_requires=%{old_find_requires} +echo "$find_requires | grep -v lostaltmail.conf" > find-requires +chmod +x find-requires + +%build +%configure \ + --enable-shared \ + --enable-am-cflags="-DHAVE_LINUX_NFS_MOUNT_H" \ + --enable-libs="-lnsl -lresolv" \ + --enable-debug + +sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool +sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool + +make %{?_smp_flags} + +%install +%makeinstall + +mkdir -p ${RPM_BUILD_ROOT}/%{_sysconfdir}/{sysconfig,rc.d/init.d} + +install -m 755 $RPM_SOURCE_DIR/am-utils.init $RPM_BUILD_ROOT/etc/rc.d/init.d/amd +install -m 644 %{SOURCE2} ${RPM_BUILD_ROOT}/%{_sysconfdir}/amd.conf +install -m 644 %{SOURCE3} ${RPM_BUILD_ROOT}/%{_sysconfdir}/sysconfig/amd +install -m 640 %{SOURCE4} ${RPM_BUILD_ROOT}/%{_sysconfdir}/amd.net + +gzip -q9f ${RPM_BUILD_ROOT}/%{_infodir}/*info* +mkdir -p ${RPM_BUILD_ROOT}/.automount + +rm -f ${RPM_BUILD_ROOT}/usr/sbin/ctl-amd + +# add symlinks to shared libs +/sbin/ldconfig -n ${RPM_BUILD_ROOT}/%{_libdir} + +# deprecated files +for I in %{_libdir}/libamu.a \ + %{_libdir}/libamu.la \ + %{_libdir}/libamu.so \ + %{_infodir}/dir \ + %{_sysconfdir}/amd.conf-sample \ + %{_sysconfdir}/lostaltmail.conf-sample; do + + rm -f $RPM_BUILD_ROOT$I +done + +%define __find_requires %{_builddir}/%{name}-%{version}/find-requires + +%pre +# Check if we have an old fashioned amd.conf and rename if to amd.net +if test "$1" -ne 0; then + if test -r /etc/amd.conf; then + if grep -v -q "auto_dir" /etc/amd.conf; then + if test ! -e /etc/amd.net; then + mv -f /etc/amd.conf /etc/amd.net + fi + fi + fi +fi + +%post +/sbin/ldconfig +/sbin/chkconfig --add amd +if [ -f %{_infodir}/am-utils.info.gz ]; then + /sbin/install-info %{_infodir}/am-utils.info.gz %{_infodir}/dir || : +fi + +%preun +if [ $1 -eq 0 ]; then + # Package removal, not upgrade + if [ -f %{_infodir}/am-utils.info.gz ]; then + /sbin/install-info --delete %{_infodir}/am-utils.info.gz %{_infodir}/dir || : + fi + /sbin/service amd stop >/dev/null 2>&1 + /sbin/chkconfig --del amd +fi + +%postun +if [ $1 -ge 1 ]; then + /sbin/service amd condrestart >/dev/null 2>&1 +fi +/sbin/ldconfig + +%files +%doc doc/*.ps AUTHORS BUGS ChangeLog NEWS README* scripts/*-sample +%dir /.automount +%{_bindir}/pawd +%{_sbindir}/* +%{_mandir}/man[58]/* +%{_mandir}/man1/pawd.1* +%config(noreplace) %{_sysconfdir}/amd.net +%config(noreplace) %{_sysconfdir}/amd.conf +%config(noreplace) %{_sysconfdir}/sysconfig/amd +%config /etc/rc.d/init.d/amd +%{_infodir}/*info*.gz +%{_libdir}/libamu.so* + +%changelog +* Thu Aug 29 2017 Ian Kent - 5:6.2.0-27 +- fix nfsv3 fh length in NFS_FH_DREF(). + +* Thu Dec 1 2016 Ian Kent - 5:6.2.0-23 +- change bootstrap script to not object to different autoconf version. +- fix fix-umount-to-mount-race patch (bug 1399213). + +* Mon Oct 3 2016 Ian Kent - 5:6.2.0-22 +- fix ambiguous else due to dlog() macro usage. + +* Mon Oct 3 2016 Ian Kent - 5:6.2.0-21 +- fix typo in libtirpc configure macro. + +* Mon Oct 3 2016 Ian Kent - 5:6.2.0-20 +- print_nfs_common_args() is only needed with DEBUG. +- uid_t might be a different size than unsigned int. +- remove set but not used variable s. +- remove set but not used variable again. +- remove unused function show_map(). +- remove set but not used variable mp_error. +- 32 bit fixes. +- make sure variables are initialized. +- dont use logical double ampersand when ampersand is meant. +- Fix nfs args setting code. +- Add the sys alias for unix as well as none and null. +- Default to string mount options for NFSv4. +- Improve debugging for unmounting. +- add more debugging in the unmount path. +- There is really no ti-rpc nfsv4 so dont send one. +- Fix SEGV on amq entries that print times. +- Make hasmntval return an 0 on error 1 on success. +- Update the ctime of the directory too since it changed. +- fix compiler assignment warning due to libtirpc. +- fix logical not comparison in get_ldap_timestamp(). +- fix umount to mount race. + +* Wed Mar 2 2016 Ian Kent - 5:6.2.0-8 +- add get_nfs_xprt() and put_nfs_xprt() functions. +- use new get_nfs_xprt() and put_nfs_xprt() functions. +- add NFSv3 nfs_quick_reply() functionality. +- add NFSv3 rpc request validation. +- fix wcc attr usage in unlink3_or_rmdir3(). +- use Linux libtirpc if present. + +* Mon Feb 29 2016 Ian Kent - 5:6.2.0-7 +- fix Linux NFS recognition of umounts. + +* Tue Feb 2 2016 Ian Kent - 5:6.2.0-6 +- fix permissions on amd.conf. + +* Sun Jan 24 2016 Ian Kent - 5:6.2.0-5 +- update to upstream source release 6.2. +- use starting revision 5 to ensure package will update from previous package. +- add configure option enable-debug so we can get logs of any problems with + the new amd NFS v3 service. +- remove BuildRequires: perl-Unicode-EastAsianWidth. +- move libtool macro functions from m4/macros to m4 and delete. +- add debug log trace to NFSv3 readdirplus +- fix NFSv3 access method return on non-existent mount point. +- fix NFSv3 lookup dir attribute return value. +- fix NFSv3 readdir post_op_dir attributes return. +- fix NFSv3 unlink3_or_rmdir3() post_op attributes return. +- fix mtime update on NFSv3 lookup. +- allow old autoconf version. + +* Tue Jun 16 2015 Fedora Release Engineering - 5:6.2.0-4.20140906gitbb13dea6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Fri Jun 12 2015 Ian Kent - 5:6.2.0-3.20140906gitbb13dea6 +- add build requires for gcc and m4. + +* Tue Oct 21 2014 Ian Kent - 5:6.2.0-2.20140906gitbb13dea6 +- fix libtool-2.4.4 build failure, bug 1181698. + +* Tue Oct 21 2014 Ian Kent - 5:6.2.0-1.20140906gitbb13dea6 +- add perl-Unicode-EastAsianWidth to BuildRequires. + +* Tue Oct 21 2014 Ian Kent - 5:6.2.0-1.20140906gitbb13dea6 +- Update am-utils to current git to get needed NFSv3 functionality. + +* Fri Aug 15 2014 Fedora Release Engineering - 5:6.1.5-32 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 5:6.1.5-31 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Fri Mar 20 2014 Ian Kent - 5:6.1.5-30 +- bz1074376 - am-utils will no longer start due to missing NFSv2 + - dont background autofs umount. + - check fh on umount succeeded. + - handle ENOENT umount return for autofs mounts. + - fix get_nfs_version() message. + - fix debug log deadlock. + - linux umount wait on ebusy. + - make sure to remove nodes in the proper order when going down. + - fix handle failed umount on exit. + - fix autofs proto version define. + +* Sat Aug 03 2013 Fedora Release Engineering - 5:6.1.5-29 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Sun Apr 28 2013 Ian Kent - 5:6.1.5-28 +- texinfo documentation build fixes. + +* Sun Apr 28 2013 Ian Kent - 5:6.1.5-27 +- bz955445 - am-utils package should be built with PIE flags + - use _hardened_build flag. + +* Mon Feb 18 2013 Ian Kent - 5:6.1.5-26 +- add BuildRequires for texinfo. + +* Wed Feb 13 2013 Fedora Release Engineering - 5:6.1.5-25 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Wed Aug 22 2012 Václav Pavlín - 5:6.1.5-24 +- Scriptlets replaced with new systemd macros (#850023) + +* Wed Jul 18 2012 Fedora Release Engineering - 5:6.1.5-23 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Tue Jan 24 2012 Karel Zak - 5:6.1.5-22 +- fix #784235 - amd immediately exits after starting with systemd + +* Thu Jan 12 2012 Fedora Release Engineering - 5:6.1.5-21 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Fri Sep 09 2011 Tom Callaway - 5:6.1.5-20 +- add missing systemd scriptlets + +* Thu Sep 08 2011 Tom Callaway - 5:6.1.5-19 +- convert from sysvinit to systemd + +* Mon Feb 07 2011 Fedora Release Engineering - 5:6.1.5-18 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Wed Oct 6 2010 Karel Zak 5:6.1.5-17 +- fix #602938 - am-utils fails on f13 with amfs_toplvl_mount +- fix #640383 - am-utils doesn't work in Fedora 13 + +* Mon Mar 1 2010 Karel Zak 5:6.1.5-16 +- fix #566711 - am-utils: incorrect use of tcp_wrapper + +* Wed Feb 24 2010 Karel Zak 5:6.1.5-15 +- fix #523221 - initscript collected problems LSB-compilant + +* Fri Jul 24 2009 Fedora Release Engineering - 5:6.1.5-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Mon Feb 23 2009 Fedora Release Engineering - 5:6.1.5-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Tue Dec 2 2008 Karel Zak 5:6.1.5-12 +- fix #450754 - Amd does not work with 2.6.25 (thanks to Philippe Troin) + +* Thu May 29 2008 Karel Zak 5:6.1.5-11 +- review & cleanup init script + +* Thu May 29 2008 Karel Zak 5:6.1.5-10 +- fix #435420 - CVE-2008-1078 am-utils: insecure usage of temporary files + +* Tue May 20 2008 Karel Zak 5:6.1.5-9 +- spec file cleanup according to rpmlint +- fix autotools stuff + +* Tue Feb 19 2008 Fedora Release Engineering - 5:6.1.5-8 +- Autorebuild for GCC 4.3 + +* Wed Dec 05 2007 Release Engineering - 6.1.5-7 + - Rebuild for deps + +* Tue Mar 13 2007 Karel Zak 5:6.1.5-6 +- fix #223675 - am-utils: non-failsafe install-info +- fix #231843 - missing build dependency on tcp_wrappers +- cleanup spec file + +* Mon Dec 18 2006 Karel Zak 5:6.1.5-5 +- fix #219437 - amd: stopping service will pop up an error dialog in + system-config-services app. +- fix build (m4 stuff) of the package (UTS_RELEASE macro has been removed + from the latest kernel-headers) + +* Tue Aug 24 2006 Karel Zak 5:6.1.5-4 +- fix #203193 - tmpfile usage +- fix #202180 - amd service doesn't work + +* Wed Jul 12 2006 Jesse Keating - 5:6.1.5-3 +- rebuild +- Add missing br flex + +* Thu Jun 01 2006 Peter Vrabec 5:6.1.5-2 +- force to use HAVE_LINUX_NFS_MOUNT_H macro, because linux/nfs_mount.h + check in configure fails on s390x + +* Mon May 29 2006 Peter Vrabec 5:6.1.5-1 +- upgrade +- add build depency + +* Fri Feb 10 2006 Jesse Keating - 5:6.1.3-1.2.1 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating - 5:6.1.3-1.2 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Fri Oct 20 2005 Peter Vrabec 6.1.3-1 +- upgrade + +* Wed Oct 04 2005 Peter Vrabec 6.1.2.1-1 +- upgrade +- fix amd shutdown(#158268,#54246) +- enhancement, /host/localhost and /host/ + are symlinks to / (#11843) + +* Thu Aug 25 2005 Peter Vrabec 6.1.1-2 +- use generic linux/nfs_mount.h check + +* Fri Aug 19 2005 Peter Vrabec 6.1.1-1 +- upgrade 6.1.1 + +* Wed Aug 17 2005 Peter Vrabec 6.0.9-13 +- fix the regression introduced with (#143118) fix + +* Thu Mar 24 2005 Peter Vrabec 6.0.9-12 +- fix the am-utils part of #143118 by implementing the util-linux + mtab locking scheme into am-utils automounter, patch and testing + by Daniel Berrange , improved locking + algorithm by (which allows for several + hundred or even thousand of parallel makes to finish + successfully and keep /etc/mtab in sync with /proc/mounts as well) + +* Thu Mar 17 2005 Peter Vrabec +- rebuild by gcc4 + +* Tue Oct 12 2004 Adrian Havill 6.0.9-10 +- cleanup %%pre script so amd.conf won't get stat()ed if it doesn't + exist (#126656) + +* Wed Sep 1 2004 Nalin Dahyabhai 6.0.9-9 +- really fix %%preun this time + +* Tue Aug 31 2004 Nalin Dahyabhai 6.0.9-8 +- rebuild + +* Tue Jun 15 2004 Elliot Lee +- rebuilt + +* Mon Mar 15 2004 Nalin Dahyabhai +- fix incorrect invocation of test in %%pre and %%preun + +* Tue Mar 02 2004 Elliot Lee +- rebuilt + +* Fri Feb 13 2004 Elliot Lee +- rebuilt + +* Tue Nov 11 2003 Nalin Dahyabhai 6.0.9-5 +- change permissions on /etc/sysconfig/amd from 0755 to 0644 (#109681) + +* Tue Aug 5 2003 Elliot Lee 6.0.9-4 +- Fix libtool + +* Wed Jun 04 2003 Elliot Lee +- rebuilt + +* Tue Feb 04 2003 Florian La Roche +- add symlink to shared lib + +* Fri Jan 31 2003 Nalin Dahyabhai 6.0.9-1 +- update to 6.0.9 +- disable RPM's internal dependency calculation so that we can filter out + dependencies which are expected to be filled in by the site administrator + +* Wed Jan 22 2003 Tim Powers +- rebuilt + +* Tue Jan 7 2003 Nalin Dahyabhai 6.0.8-3 +- rebuild + +* Wed Oct 30 2002 Nalin Dahyabhai 6.0.8-1 +- update to 6.0.8 + +* Tue Aug 27 2002 Nalin Dahyabhai 6.0.7-9 +- rebuild + +* Fri Jun 21 2002 Tim Powers +- automated rebuild + +* Wed May 29 2002 Nalin Dahyabhai 6.0.7-7 +- adjust the perl reqs so that the lostaltmail config files aren't required + by RPM + +* Sun May 26 2002 Tim Powers +- automated rebuild + +* Thu May 9 2002 Nalin Dahyabhai 6.0.7-5 +- rebuild in new environment + +* Fri Feb 22 2002 Nalin Dahyabhai 6.0.7-4 +- rebuild in new environment + +* Sat Jan 26 2002 Jeff Johnson +- add Provides: to white out certain perl Requires: + +* Wed Jan 23 2002 Nalin Dahyabhai 6.0.7-2 +- rebuild in new environment +- require gdbm-devel at build-time instead of db1-devel + +* Thu Sep 6 2001 Nalin Dahyabhai 6.0.7-1 +- update to 6.0.7, fixing EIO on access bugs (#53251) +- back out nfs3 patch; no longer needed for current kernels +- don't explicitly strip binaries; let the buildroot policies handle it + +* Wed Jul 18 2001 Nalin Dahyabhai +- rebuild + +* Mon Jun 25 2001 Nalin Dahyabhai +- add BuildPrereq: db1-devel (#44987) +- use FHS macros +- return error codes correctly from init script (#44597) + +* Tue May 22 2001 Nalin Dahyabhai +- update to 6.0.6 + +* Sat Apr 7 2001 Nalin Dahyabhai +- update to 6.0.5 +- remove /net from the default MOUNTPTS + +* Tue Mar 13 2001 Nalin Dahyabhai +- use MOUNTPTS when starting + +* Fri Mar 2 2001 Nalin Dahyabhai +- rebuild in new environment + +* Wed Feb 14 2001 Nalin Dahyabhai +- redo i18n for the init script (#24082) + +* Tue Jan 23 2001 Nalin Dahyabhai +- re-do workaround from advice from the am-utils maintainers +- redo i18n for the init script + +* Sat Jan 20 2001 Nalin Dahyabhai +- work around clash with nfs3_fh definition in 2.4 + +* Tue Jan 16 2001 Nalin Dahyabhai +- gettextize the init script (#24087) + +* Tue Dec 19 2000 Nalin Dahyabhai +- add ldconfig to %%postun +- chuck the hesiod patch -- new bind-utils doesn't have the support for it + +* Fri Sep 8 2000 Nalin Dahyabhai +- rebuild in new environment + +* Sat Jul 15 2000 Bill Nottingham +- move initscript back + +* Wed Jul 12 2000 Prospector +- automatic rebuild + +* Thu Jul 6 2000 Nalin Dahyabhai +- only create /var/lock/subsys/amd if startup succeeds +- revamp shutdown procedure to minimize time spent just spinning +- change initscripts dependency to /etc/init.d + +* Tue Jul 4 2000 Florian La Roche +- delete noreplace from initscript + +* Wed Jun 28 2000 Nalin Dahyabhai +- fix postun script +- add requires: initscripts + +* Tue Jun 27 2000 Nalin Dahyabhai +- remove unnecessary libamu.so symlink + +* Mon Jun 26 2000 Nalin Dahyabhai +- move init script to /etc/init.d +- add URL: tag + +* Wed Jun 21 2000 Preston Brown +- noreplace config files +- gracefully stop/restart service + +* Fri Jun 16 2000 Matt Wilson +- FHS paths +- 6.0.4 snapshot (as it builds against kernel 2.4 headers) + +* Wed Feb 16 2000 Cristian Gafton +- version 6.0.3 +- enhance init script to be more wait4amd2die-like +- make default map type to be file (#9185) +- get rid of the kludges + +* Thu Feb 03 2000 Cristian Gafton +- man pages are compressed +- version 6.0.2 +- fix descriptions + +* Mon Sep 13 1999 Cristian Gafton +- version 6.0.1 final + +* Tue Aug 24 1999 Cristian Gafton +- remove the noldap patch +- add amd.net file as the default config map file +- change the config file to teh new config file format instead of a + simple map file name. +- try to avoid some damage with a new %%pre script +- prereq grep now +- modify the init file so it calls amd -F /etc/amd.conf now + +* Tue Aug 24 1999 Bill Nottingham +- update to 6.0.1s11 + +* Fri Jun 19 1999 Bill Nottingham +- don't run by default + +* Mon May 31 1999 Kenneth Skaar +- Fixed amd -F core dump and related dumps by other programs + +* Thu Apr 08 1999 Preston Brown +- kill -HUP on reload, restart does a real restart. + +* Fri Mar 26 1999 Bill Nottingham +- twiddle an echo in initscript + +* Tue Mar 23 1999 Cristian Gafton +- version 6.0 proper +- Serial:1 because to enforce versioning + +* Sun Mar 21 1999 Cristian Gafton +- auto rebuild in the new build environment (release 6) + +* Wed Jan 06 1999 Cristian Gafton +- rebuild for glibc 2.1 +- strip all binaries + +* Thu Aug 13 1998 Jeff Johnson +- add missing ':' to default 'opts:=nosuid,nodev' +- install info pages + +* Mon Jul 13 1998 Cristian Gafton +- added the NIS support that the broken configure script failed to detect + +* Tue May 05 1998 Cristian Gafton +- disabled autofs support on alpha +- run ldconfig in postinstall + +* Mon May 04 1998 Cristian Gafton +- new package to replace the old and unmaintained amd diff --git a/am-utils.sysconf b/am-utils.sysconf new file mode 100644 index 0000000..ee8b718 --- /dev/null +++ b/am-utils.sysconf @@ -0,0 +1,3 @@ +#MOUNTPTS='/net /etc/amd.net' +ADIR=/.automount +AMDOPTS= diff --git a/sources b/sources index e69de29..8907255 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +4b2ada9cadd24f8a231601274d6fb036 am-utils-6.2.tar.gz