diff --git a/iscsi-initiator-utils-add-rh-ver.patch b/iscsi-initiator-utils-add-rh-ver.patch index 2dd36b2..af493ef 100644 --- a/iscsi-initiator-utils-add-rh-ver.patch +++ b/iscsi-initiator-utils-add-rh-ver.patch @@ -5,7 +5,7 @@ * some other maintainer could merge a patch without going through us */ -#define ISCSI_VERSION_STR "2.0-873" -+#define ISCSI_VERSION_STR "6.2.0-873.2.el6" ++#define ISCSI_VERSION_STR "6.2.0-873.2" #define ISCSI_VERSION_FILE "/sys/module/scsi_transport_iscsi/version" #endif diff --git a/iscsi-initiator-utils-brcm-man.patch b/iscsi-initiator-utils-brcm-man.patch deleted file mode 100644 index c421d1b..0000000 --- a/iscsi-initiator-utils-brcm-man.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff -aurp open-iscsi-2.0-872-rc4-bnx2i/iscsi_uio/docs/iscsiuio.8 open-iscsi-2.0-872-rc4-bnx2i.work/iscsiuio/docs/iscsiuio.8 ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/docs/iscsiuio.8 2011-01-31 19:38:19.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.work/iscsiuio/docs/iscsiuio.8 2011-01-31 19:38:44.000000000 -0600 -@@ -67,6 +67,15 @@ into the background. - .TP - .BI -v - This is to print the version. -+.PP -+.TP -+.BI -p -+Use pidfile (default /var/run/iscsiuio.pid ) -+.PP -+.TP -+.BI -h -+Display this help and exit. -+ - - .\" - .\" AUTHOR part diff --git a/iscsi-initiator-utils-dont-use-openssl.patch b/iscsi-initiator-utils-dont-use-openssl.patch deleted file mode 100644 index e8894a9..0000000 --- a/iscsi-initiator-utils-dont-use-openssl.patch +++ /dev/null @@ -1,47 +0,0 @@ -diff -aurp open-iscsi-2.0-872-rc4-bnx2i/utils/open-isns/db-policy.c open-iscsi-2.0-872-rc4-bnx2i.build/utils/open-isns/db-policy.c ---- open-iscsi-2.0-872-rc4-bnx2i/utils/open-isns/db-policy.c 2011-09-01 20:28:53.000000000 -0500 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/utils/open-isns/db-policy.c 2011-09-01 20:31:39.000000000 -0500 -@@ -7,8 +7,10 @@ - #include - #include - #include -+#ifdef WITH_SECURITY - #include - #include -+#endif - #include "isns.h" - #include "security.h" - #include "objects.h" -diff -aurp open-iscsi-2.0-872-rc4-bnx2i/utils/open-isns/security.h open-iscsi-2.0-872-rc4-bnx2i.build/utils/open-isns/security.h ---- open-iscsi-2.0-872-rc4-bnx2i/utils/open-isns/security.h 2011-09-01 20:28:53.000000000 -0500 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/utils/open-isns/security.h 2011-09-01 20:31:39.000000000 -0500 -@@ -6,11 +6,16 @@ - - #ifndef ISNS_SECURITY_H - #define ISNS_SECURITY_H -- --#include - #include "buffer.h" - #include "util.h" - -+ -+#ifdef WITH_SECURITY -+#include -+#else -+#define EVP_PKEY void -+#endif -+ - /* - * Security context - */ -diff -aurp open-iscsi-2.0-872-rc4-bnx2i/utils/open-isns/util.h open-iscsi-2.0-872-rc4-bnx2i.build/utils/open-isns/util.h ---- open-iscsi-2.0-872-rc4-bnx2i/utils/open-isns/util.h 2011-09-01 20:28:53.000000000 -0500 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/utils/open-isns/util.h 2011-09-01 20:31:39.000000000 -0500 -@@ -9,6 +9,7 @@ - - #include - #include -+#include - #include - #include - #include // for strdup diff --git a/iscsi-initiator-utils-fix-default-bindings.patch b/iscsi-initiator-utils-fix-default-bindings.patch deleted file mode 100644 index 79161c4..0000000 --- a/iscsi-initiator-utils-fix-default-bindings.patch +++ /dev/null @@ -1,172 +0,0 @@ -commit ac38eee2083821eb29d098227ad044c950d115e4 -Author: Mike Christie -Date: Sun Aug 14 22:14:04 2011 -0500 - - iscsi tools: fix default iface binding setup - - If a driver supports multiple ifaces only one is getting - auto created. This modifies the default iface setup code - so that it creates a iface per kernel iface or a iface per - host if kernel ifaces are not supported. - -diff --git a/usr/iface.c b/usr/iface.c -index 5d5f7bf..9c70d09 100644 ---- a/usr/iface.c -+++ b/usr/iface.c -@@ -424,12 +424,61 @@ int iface_get_by_net_binding(struct iface_rec *pattern, - return ISCSI_ERR_NO_OBJS_FOUND; - } - -+static int iface_get_iptype(struct iface_rec *iface) -+{ -+ if (strcmp(iface->bootproto, "dhcp") && !strstr(iface->ipaddress, ".")) -+ return ISCSI_IFACE_TYPE_IPV6; -+ else -+ return ISCSI_IFACE_TYPE_IPV4; -+} -+ -+static int iface_setup_binding_from_kern_iface(void *data, -+ struct iface_rec *kern_iface) -+{ -+ struct host_info *hinfo = data; -+ struct iface_rec iface; -+ -+ if (!strlen(hinfo->iface.hwaddress)) { -+ log_error("Invalid offload iSCSI host %u. Missing " -+ "hwaddress. Try upgrading %s driver.\n", -+ hinfo->host_no, hinfo->iface.transport_name); -+ return 0; -+ } -+ -+ memset(&iface, 0, sizeof(struct iface_rec)); -+ strcpy(iface.hwaddress, hinfo->iface.hwaddress); -+ strcpy(iface.transport_name, hinfo->iface.transport_name); -+ -+ if (kern_iface) { -+ iface.iface_num = kern_iface->iface_num; -+ -+ snprintf(iface.name, sizeof(iface.name), "%s.%s.%s.%u", -+ kern_iface->transport_name, -+ kern_iface->hwaddress, -+ iface_get_iptype(kern_iface) == ISCSI_IFACE_TYPE_IPV4 ? -+ "ipv4" : "ipv6", kern_iface->iface_num); -+ } else { -+ snprintf(iface.name, sizeof(iface.name), "%s.%s", -+ hinfo->iface.transport_name, hinfo->iface.hwaddress); -+ } -+ -+ if (iface_conf_read(&iface)) { -+ /* not found so create it */ -+ if (iface_conf_write(&iface)) { -+ log_error("Could not create default iface conf %s.", -+ iface.name); -+ /* fall through - will not be persistent */ -+ } -+ } -+ -+ return 0; -+} -+ - static int __iface_setup_host_bindings(void *data, struct host_info *hinfo) - { - struct iface_rec *def_iface; -- struct iface_rec iface; - struct iscsi_transport *t; -- int i = 0; -+ int i = 0, nr_found; - - t = iscsi_sysfs_get_transport_by_hba(hinfo->host_no); - if (!t) -@@ -441,26 +490,12 @@ static int __iface_setup_host_bindings(void *data, struct host_info *hinfo) - return 0; - } - -- if (iface_get_by_net_binding(&hinfo->iface, &iface) == -- ISCSI_ERR_NO_OBJS_FOUND) { -- /* Must be a new port */ -- if (!strlen(hinfo->iface.hwaddress)) { -- log_error("Invalid offload iSCSI host %u. Missing " -- "hwaddress. Try upgrading %s driver.\n", -- hinfo->host_no, t->name); -- return 0; -- } -- -- memset(&iface, 0, sizeof(struct iface_rec)); -- strcpy(iface.hwaddress, hinfo->iface.hwaddress); -- strcpy(iface.transport_name, hinfo->iface.transport_name); -- snprintf(iface.name, sizeof(iface.name), "%s.%s", -- t->name, hinfo->iface.hwaddress); -- if (iface_conf_write(&iface)) -- log_error("Could not create default iface conf %s.", -- iface.name); -- /* fall through - will not be persistent */ -- } -+ nr_found = 0; -+ iscsi_sysfs_for_each_iface_on_host(hinfo, hinfo->host_no, -+ &nr_found, -+ iface_setup_binding_from_kern_iface); -+ if (!nr_found) -+ iface_setup_binding_from_kern_iface(hinfo, NULL); - return 0; - } - -@@ -843,7 +878,6 @@ int iface_setup_from_boot_context(struct iface_rec *iface, - memset(iface->name, 0, sizeof(iface->name)); - snprintf(iface->name, sizeof(iface->name), "%s.%s", - iface->transport_name, context->mac); -- - strlcpy(iface->hwaddress, context->mac, - sizeof(iface->hwaddress)); - strlcpy(iface->ipaddress, context->ipaddr, -@@ -921,9 +955,7 @@ static int __iface_get_param_count(void *data, struct iface_rec *iface) - if (strcmp(iface_params->primary->hwaddress, iface->hwaddress)) - return 0; - -- if (strcmp(iface->bootproto, "dhcp") && !strstr(iface->ipaddress, ".")) -- iptype = ISCSI_IFACE_TYPE_IPV6; -- -+ iptype = iface_get_iptype(iface); - if (iptype == ISCSI_IFACE_TYPE_IPV4) { - - if (strcmp(iface->state, "disable")) { -@@ -1466,12 +1498,10 @@ static int __iface_build_net_config(void *data, struct iface_rec *iface) - if (strcmp(net_config->primary->hwaddress, iface->hwaddress)) - return 0; - -- if (strcmp(iface->bootproto, "dhcp") && !strstr(iface->ipaddress, ".")) -- iptype = ISCSI_IFACE_TYPE_IPV6; -- - /* start at 2, because 0 is for nlmsghdr and 1 for event */ - iov = net_config->iovs + 2; - -+ iptype = iface_get_iptype(iface); - if (iptype == ISCSI_IFACE_TYPE_IPV4) { - if (!strcmp(iface->state, "disable")) { - if (!iface_fill_net_state(&iov[net_config->count], -diff --git a/usr/iscsi_sysfs.c b/usr/iscsi_sysfs.c -index 995549e..961cefd 100644 ---- a/usr/iscsi_sysfs.c -+++ b/usr/iscsi_sysfs.c -@@ -425,9 +425,10 @@ uint32_t iscsi_sysfs_get_host_no_from_hwinfo(struct iface_rec *iface, int *rc) - static int iscsi_sysfs_read_iface(struct iface_rec *iface, int host_no, - char *session, char *iface_kern_id) - { -+ uint32_t tmp_host_no, iface_num; - char host_id[NAME_SIZE]; - struct iscsi_transport *t; -- int ret; -+ int ret, iface_type; - - t = iscsi_sysfs_get_transport_by_hba(host_no); - if (!t) -@@ -582,6 +583,10 @@ static int iscsi_sysfs_read_iface(struct iface_rec *iface, int host_no, - &iface->vlan_id); - sysfs_get_uint8(iface_kern_id, ISCSI_IFACE_SUBSYS, "vlan_priority", - &iface->vlan_priority); -+ -+ if (sscanf(iface_kern_id, "ipv%d-iface-%u-%u", &iface_type, -+ &tmp_host_no, &iface_num) == 3) -+ iface->iface_num = iface_num; - done: - if (ret) - return ISCSI_ERR_SYSFS_LOOKUP; diff --git a/iscsi-initiator-utils-fix-iscsiadm-return.patch b/iscsi-initiator-utils-fix-iscsiadm-return.patch deleted file mode 100644 index ed5ec6d..0000000 --- a/iscsi-initiator-utils-fix-iscsiadm-return.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff -aurp open-iscsi-2.0-872-rc4-bnx2i/usr/initiator.c open-iscsi-2.0-872-rc4-bnx2i.build/usr/initiator.c ---- open-iscsi-2.0-872-rc4-bnx2i/usr/initiator.c 2011-09-01 20:28:53.000000000 -0500 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/usr/initiator.c 2011-09-01 20:29:49.000000000 -0500 -@@ -484,8 +484,7 @@ cleanup: - if (session->id != -1) { - log_debug(2, "kdestroy session %u", session->id); - session->r_stage = R_STAGE_SESSION_DESTOYED; -- err = ipc->destroy_session(session->t->handle, session->id); -- if (err) { -+ if (ipc->destroy_session(session->t->handle, session->id)) { - log_error("can not safely destroy session %d", - session->id); - return ISCSI_ERR_INTERNAL; diff --git a/iscsi-initiator-utils-fix-nlmsglen.patch b/iscsi-initiator-utils-fix-nlmsglen.patch deleted file mode 100644 index 5f61d03..0000000 --- a/iscsi-initiator-utils-fix-nlmsglen.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -aurp open-iscsi-2.0-872-rc4-bnx2i/usr/netlink.c open-iscsi-2.0-872-rc4-bnx2i.test/usr/netlink.c ---- open-iscsi-2.0-872-rc4-bnx2i/usr/netlink.c 2011-09-20 18:01:34.000000000 -0500 -+++ open-iscsi-2.0-872-rc4-bnx2i.test/usr/netlink.c 2011-09-20 18:01:54.000000000 -0500 -@@ -185,7 +185,7 @@ kwritev(enum iscsi_uevent_e type, struct - for (i = 1; i < count; i++) - datalen += iovp[i].iov_len; - -- nlh->nlmsg_len = NLMSG_ALIGN(datalen); -+ nlh->nlmsg_len = datalen + sizeof(*nlh); - nlh->nlmsg_pid = getpid(); - nlh->nlmsg_flags = 0; - nlh->nlmsg_type = type; diff --git a/iscsi-initiator-utils-ofl-iface-fixes.patch b/iscsi-initiator-utils-ofl-iface-fixes.patch deleted file mode 100644 index 12a5b35..0000000 --- a/iscsi-initiator-utils-ofl-iface-fixes.patch +++ /dev/null @@ -1,471 +0,0 @@ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/include/iscsi_if.h open-iscsi-2.0-872-rc4-bnx2i.work/include/iscsi_if.h ---- open-iscsi-2.0-872-rc4-bnx2i/include/iscsi_if.h 2011-10-10 13:57:38.000000000 -0500 -+++ open-iscsi-2.0-872-rc4-bnx2i.work/include/iscsi_if.h 2011-10-11 00:40:49.000000000 -0500 -@@ -320,10 +320,11 @@ enum iscsi_net_param { - ISCSI_NET_PARAM_VLAN_ID = 13, - ISCSI_NET_PARAM_VLAN_PRIORITY = 14, - ISCSI_NET_PARAM_VLAN_ENABLED = 15, -- ISCSI_NET_PARAM_IFACE_TYPE = 16, -- ISCSI_NET_PARAM_IFACE_NAME = 17, -- ISCSI_NET_PARAM_MTU = 18, -- ISCSI_NET_PARAM_PORT = 19, -+ ISCSI_NET_PARAM_VLAN_TAG = 16, -+ ISCSI_NET_PARAM_IFACE_TYPE = 17, -+ ISCSI_NET_PARAM_IFACE_NAME = 18, -+ ISCSI_NET_PARAM_MTU = 19, -+ ISCSI_NET_PARAM_PORT = 20, - }; - - enum iscsi_conn_state { -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/usr/host.c open-iscsi-2.0-872-rc4-bnx2i.work/usr/host.c ---- open-iscsi-2.0-872-rc4-bnx2i/usr/host.c 2011-10-10 13:57:38.000000000 -0500 -+++ open-iscsi-2.0-872-rc4-bnx2i.work/usr/host.c 2011-10-11 00:41:01.000000000 -0500 -@@ -132,22 +132,67 @@ static int print_host_iface(void *data, - printf("%sIPaddress: %s\n", prefix, UNKNOWN_VALUE); - else if (strchr(iface->ipaddress, '.')) { - printf("%sIPaddress: %s\n", prefix, iface->ipaddress); -- printf("%sGateway: %s\n", prefix, iface->gateway); -- printf("%sSubnet: %s\n", prefix, iface->subnet_mask); -- printf("%sBootProto: %s\n", prefix, iface->bootproto); -+ -+ if (!strlen(iface->gateway)) -+ printf("%sGateway: %s\n", prefix, UNKNOWN_VALUE); -+ else -+ printf("%sGateway: %s\n", prefix, iface->gateway); -+ if (!strlen(iface->subnet_mask)) -+ printf("%sSubnet: %s\n", prefix, UNKNOWN_VALUE); -+ else -+ printf("%sSubnet: %s\n", prefix, iface->subnet_mask); -+ if (!strlen(iface->bootproto)) -+ printf("%sBootProto: %s\n", prefix, UNKNOWN_VALUE); -+ else -+ printf("%sBootProto: %s\n", prefix, iface->bootproto); - } else { - printf("%sIPaddress: [%s]\n", prefix, iface->ipaddress); -- printf("%sIPaddress Autocfg: %s\n", prefix, iface->ipv6_autocfg); -- printf("%sLink Local Address: [%s]\n", prefix, -- iface->ipv6_linklocal); -- printf("%sLink Local Autocfg: %s\n", prefix, -- iface->linklocal_autocfg); -- printf("%sRouter Address: [%s]\n", prefix, iface->ipv6_router); -+ -+ if (!strlen(iface->ipv6_autocfg)) -+ printf("%sIPaddress Autocfg: %s\n", prefix, -+ UNKNOWN_VALUE); -+ else -+ printf("%sIPaddress Autocfg: %s\n", prefix, -+ iface->ipv6_autocfg); -+ if (!strlen(iface->ipv6_linklocal)) -+ printf("%sLink Local Address: %s\n", prefix, -+ UNKNOWN_VALUE); -+ else -+ printf("%sLink Local Address: [%s]\n", prefix, -+ iface->ipv6_linklocal); -+ if (!strlen(iface->linklocal_autocfg)) -+ printf("%sLink Local Autocfg: %s\n", prefix, -+ UNKNOWN_VALUE); -+ else -+ printf("%sLink Local Autocfg: %s\n", prefix, -+ iface->linklocal_autocfg); -+ if (!strlen(iface->ipv6_router)) -+ printf("%sRouter Address: %s\n", prefix, -+ UNKNOWN_VALUE); -+ else -+ printf("%sRouter Address: [%s]\n", prefix, -+ iface->ipv6_router); - } - -- printf("%sMTU: %u\n", prefix, iface->mtu); -- printf("%svlan ID: %u\n", prefix, iface->vlan_id); -- printf("%svlan priority: %u\n", prefix, iface->vlan_priority); -+ if (!iface->port) -+ printf("%sPort: %s\n", prefix, UNKNOWN_VALUE); -+ else -+ printf("%sPort: %u\n", prefix, iface->port); -+ -+ if (!iface->mtu) -+ printf("%sMTU: %s\n", prefix, UNKNOWN_VALUE); -+ else -+ printf("%sMTU: %u\n", prefix, iface->mtu); -+ -+ if (iface->vlan_id == UINT16_MAX) -+ printf("%sVLAN ID: %s\n", prefix, UNKNOWN_VALUE); -+ else -+ printf("%sVLAN ID: %u\n", prefix, iface->vlan_id); -+ -+ if (iface->vlan_priority == UINT8_MAX) -+ printf("%sVLAN priority: %s\n", prefix, UNKNOWN_VALUE); -+ else -+ printf("%sVLAN priority: %u\n", prefix, iface->vlan_priority); - return 0; - } - -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/usr/iface.c open-iscsi-2.0-872-rc4-bnx2i.work/usr/iface.c ---- open-iscsi-2.0-872-rc4-bnx2i/usr/iface.c 2011-10-10 13:57:38.000000000 -0500 -+++ open-iscsi-2.0-872-rc4-bnx2i.work/usr/iface.c 2011-10-11 00:40:49.000000000 -0500 -@@ -41,6 +41,7 @@ - #include "fw_context.h" - #include "sysdeps.h" - #include "iscsi_err.h" -+#include "iscsi_netlink.h" - - /* - * Default ifaces for use with transports that do not bind to hardware -@@ -1141,14 +1142,16 @@ static int iface_fill_port(struct iovec - int len; - struct iscsi_iface_param_info *net_param; - uint16_t port = 3260; -+ struct nlattr *attr; - -- len = sizeof(struct iscsi_iface_param_info) + 2; -- iov->iov_base = calloc(len, sizeof(char)); -- if (!(iov->iov_base)) -+ len = sizeof(struct iscsi_iface_param_info) + sizeof(port); -+ iov->iov_base = iscsi_nla_alloc(ISCSI_NET_PARAM_PORT, len); -+ if (!iov->iov_base) - return 1; -+ attr = iov->iov_base; -+ iov->iov_len = NLA_ALIGN(attr->nla_len); - -- iov->iov_len = len; -- net_param = (struct iscsi_iface_param_info *)(iov->iov_base); -+ net_param = (struct iscsi_iface_param_info *)ISCSI_NLA_DATA(attr); - net_param->param = ISCSI_NET_PARAM_PORT; - net_param->iface_type = iface_type; - net_param->iface_num = iface->iface_num; -@@ -1166,14 +1169,16 @@ static int iface_fill_mtu(struct iovec * - int len; - struct iscsi_iface_param_info *net_param; - uint16_t mtu = 0; -+ struct nlattr *attr; - - len = sizeof(struct iscsi_iface_param_info) + 2; -- iov->iov_base = calloc(len, sizeof(char)); -+ iov->iov_base = iscsi_nla_alloc(ISCSI_NET_PARAM_MTU, len); - if (!(iov->iov_base)) - return 1; -+ attr = iov->iov_base; -+ iov->iov_len = NLA_ALIGN(attr->nla_len); - -- iov->iov_len = len; -- net_param = (struct iscsi_iface_param_info *)(iov->iov_base); -+ net_param = (struct iscsi_iface_param_info *)ISCSI_NLA_DATA(attr); - net_param->param = ISCSI_NET_PARAM_MTU; - net_param->iface_type = iface_type; - net_param->iface_num = iface->iface_num; -@@ -1191,15 +1196,17 @@ static int iface_fill_vlan_id(struct iov - int len; - struct iscsi_iface_param_info *net_param; - uint16_t vlan = 0; -+ struct nlattr *attr; - - len = sizeof(struct iscsi_iface_param_info) + 2; -- iov->iov_base = calloc(len, sizeof(char)); -+ iov->iov_base = iscsi_nla_alloc(ISCSI_NET_PARAM_VLAN_TAG, len); - if (!(iov->iov_base)) - return 1; - -- iov->iov_len = len; -- net_param = (struct iscsi_iface_param_info *)(iov->iov_base); -- net_param->param = ISCSI_NET_PARAM_VLAN_ID; -+ attr = iov->iov_base; -+ iov->iov_len = NLA_ALIGN(attr->nla_len); -+ net_param = (struct iscsi_iface_param_info *)ISCSI_NLA_DATA(attr); -+ net_param->param = ISCSI_NET_PARAM_VLAN_TAG; - net_param->iface_type = iface_type; - net_param->iface_num = iface->iface_num; - net_param->param_type = ISCSI_NET_PARAM; -@@ -1222,14 +1229,16 @@ static int iface_fill_vlan_state(struct - { - int len; - struct iscsi_iface_param_info *net_param; -+ struct nlattr *attr; - - len = sizeof(struct iscsi_iface_param_info) + 1; -- iov->iov_base = calloc(len, sizeof(char)); -+ iov->iov_base = iscsi_nla_alloc(ISCSI_NET_PARAM_VLAN_ENABLED, len); - if (!(iov->iov_base)) - return 1; - -- iov->iov_len = len; -- net_param = (struct iscsi_iface_param_info *)(iov->iov_base); -+ attr = iov->iov_base; -+ iov->iov_len = NLA_ALIGN(attr->nla_len); -+ net_param = (struct iscsi_iface_param_info *)ISCSI_NLA_DATA(attr); - net_param->param = ISCSI_NET_PARAM_VLAN_ENABLED; - net_param->iface_type = iface_type; - net_param->iface_num = iface->iface_num; -@@ -1248,14 +1257,16 @@ static int iface_fill_net_state(struct i - { - int len; - struct iscsi_iface_param_info *net_param; -+ struct nlattr *attr; - - len = sizeof(struct iscsi_iface_param_info) + 1; -- iov->iov_base = calloc(len, sizeof(char)); -+ iov->iov_base = iscsi_nla_alloc(ISCSI_NET_PARAM_IFACE_ENABLE, len); - if (!(iov->iov_base)) - return 1; - -- iov->iov_len = len; -- net_param = (struct iscsi_iface_param_info *)(iov->iov_base); -+ attr = iov->iov_base; -+ iov->iov_len = NLA_ALIGN(attr->nla_len); -+ net_param = (struct iscsi_iface_param_info *)ISCSI_NLA_DATA(attr); - net_param->param = ISCSI_NET_PARAM_IFACE_ENABLE; - net_param->iface_type = iface_type; - net_param->iface_num = iface->iface_num; -@@ -1273,14 +1284,16 @@ static int iface_fill_net_bootproto(stru - { - int len; - struct iscsi_iface_param_info *net_param; -+ struct nlattr *attr; - - len = sizeof(struct iscsi_iface_param_info) + 1; -- iov->iov_base = calloc(len, sizeof(char)); -+ iov->iov_base = iscsi_nla_alloc(ISCSI_NET_PARAM_IPV4_BOOTPROTO, len); - if (!(iov->iov_base)) - return 1; - -- iov->iov_len = len; -- net_param = (struct iscsi_iface_param_info *)(iov->iov_base); -+ attr = iov->iov_base; -+ iov->iov_len = NLA_ALIGN(attr->nla_len); -+ net_param = (struct iscsi_iface_param_info *)ISCSI_NLA_DATA(attr); - net_param->param = ISCSI_NET_PARAM_IPV4_BOOTPROTO; - net_param->iface_type = ISCSI_IFACE_TYPE_IPV4; - net_param->iface_num = iface->iface_num; -@@ -1298,14 +1311,16 @@ static int iface_fill_net_autocfg(struct - { - int len; - struct iscsi_iface_param_info *net_param; -+ struct nlattr *attr; - - len = sizeof(struct iscsi_iface_param_info) + 1; -- iov->iov_base = calloc(len, sizeof(char)); -+ iov->iov_base = iscsi_nla_alloc(ISCSI_NET_PARAM_IPV6_ADDR_AUTOCFG, len); - if (!(iov->iov_base)) - return 1; - -- iov->iov_len = len; -- net_param = (struct iscsi_iface_param_info *)(iov->iov_base); -+ attr = iov->iov_base; -+ iov->iov_len = NLA_ALIGN(attr->nla_len); -+ net_param = (struct iscsi_iface_param_info *)ISCSI_NLA_DATA(attr); - net_param->param = ISCSI_NET_PARAM_IPV6_ADDR_AUTOCFG; - net_param->iface_type = ISCSI_IFACE_TYPE_IPV6; - net_param->param_type = ISCSI_NET_PARAM; -@@ -1327,14 +1342,17 @@ static int iface_fill_linklocal_autocfg( - { - int len; - struct iscsi_iface_param_info *net_param; -+ struct nlattr *attr; - - len = sizeof(struct iscsi_iface_param_info) + 1; -- iov->iov_base = calloc(len, sizeof(char)); -+ iov->iov_base = iscsi_nla_alloc(ISCSI_NET_PARAM_IPV6_LINKLOCAL_AUTOCFG, -+ len); - if (!(iov->iov_base)) - return 1; - -- iov->iov_len = len; -- net_param = (struct iscsi_iface_param_info *)(iov->iov_base); -+ attr = iov->iov_base; -+ iov->iov_len = NLA_ALIGN(attr->nla_len); -+ net_param = (struct iscsi_iface_param_info *)ISCSI_NLA_DATA(attr); - net_param->param = ISCSI_NET_PARAM_IPV6_LINKLOCAL_AUTOCFG; - net_param->iface_type = ISCSI_IFACE_TYPE_IPV6; - net_param->param_type = ISCSI_NET_PARAM; -@@ -1353,14 +1371,17 @@ static int iface_fill_router_autocfg(str - { - int len; - struct iscsi_iface_param_info *net_param; -+ struct nlattr *attr; - - len = sizeof(struct iscsi_iface_param_info) + 1; -- iov->iov_base = calloc(len, sizeof(char)); -+ iov->iov_base = iscsi_nla_alloc(ISCSI_NET_PARAM_IPV6_ROUTER_AUTOCFG, -+ len); - if (!(iov->iov_base)) - return 1; - -- iov->iov_len = len; -- net_param = (struct iscsi_iface_param_info *)(iov->iov_base); -+ attr = iov->iov_base; -+ iov->iov_len = NLA_ALIGN(attr->nla_len); -+ net_param = (struct iscsi_iface_param_info *)ISCSI_NLA_DATA(attr); - net_param->param = ISCSI_NET_PARAM_IPV6_ROUTER_AUTOCFG; - net_param->iface_type = ISCSI_IFACE_TYPE_IPV6; - net_param->param_type = ISCSI_NET_PARAM; -@@ -1381,14 +1402,16 @@ static int iface_fill_net_ipv4_addr(stru - int rc = 1; - int len; - struct iscsi_iface_param_info *net_param; -+ struct nlattr *attr; - - len = sizeof(struct iscsi_iface_param_info) + 4; -- iov->iov_base = calloc(len, sizeof(char)); -+ iov->iov_base = iscsi_nla_alloc(param, len); - if (!(iov->iov_base)) - return 1; - -- iov->iov_len = len; -- net_param = (struct iscsi_iface_param_info *)(iov->iov_base); -+ attr = iov->iov_base; -+ iov->iov_len = NLA_ALIGN(attr->nla_len); -+ net_param = (struct iscsi_iface_param_info *)ISCSI_NLA_DATA(attr); - net_param->param = param; - net_param->iface_type = ISCSI_IFACE_TYPE_IPV4; - net_param->iface_num = iface->iface_num; -@@ -1435,14 +1458,16 @@ static int iface_fill_net_ipv6_addr(stru - int rc; - int len; - struct iscsi_iface_param_info *net_param; -+ struct nlattr *attr; - - len = sizeof(struct iscsi_iface_param_info) + 16; -- iov->iov_base = calloc(len, sizeof(char)); -+ iov->iov_base = iscsi_nla_alloc(param, len); - if (!(iov->iov_base)) - return 1; - -- iov->iov_len = len; -- net_param = (struct iscsi_iface_param_info *)(iov->iov_base); -+ attr = iov->iov_base; -+ iov->iov_len = NLA_ALIGN(attr->nla_len); -+ net_param = (struct iscsi_iface_param_info *)ISCSI_NLA_DATA(attr); - net_param->param = param; - net_param->iface_type = ISCSI_IFACE_TYPE_IPV6; - net_param->iface_num = iface->iface_num; -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/usr/initiator.c open-iscsi-2.0-872-rc4-bnx2i.work/usr/initiator.c ---- open-iscsi-2.0-872-rc4-bnx2i/usr/initiator.c 2011-10-10 13:57:38.000000000 -0500 -+++ open-iscsi-2.0-872-rc4-bnx2i.work/usr/initiator.c 2011-10-11 00:39:57.000000000 -0500 -@@ -1682,9 +1682,10 @@ static void session_conn_process_login(v - session->nrec.conn[conn->id].address, - session->nrec.conn[conn->id].port, - session->nrec.iface.name); -- } else -+ } else { - session->notify_qtask = NULL; -- -+ mgmt_ipc_write_rsp(c->qtask, ISCSI_SUCCESS); -+ } - - /* - * reset ERL=0 reopen counter -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/usr/iscsi_netlink.h open-iscsi-2.0-872-rc4-bnx2i.work/usr/iscsi_netlink.h ---- open-iscsi-2.0-872-rc4-bnx2i/usr/iscsi_netlink.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.work/usr/iscsi_netlink.h 2011-10-11 00:40:34.000000000 -0500 -@@ -0,0 +1,33 @@ -+/* -+ * iSCSI Netlink attr helpers -+ * -+ * Copyright (C) 2011 Red Hat, Inc. All rights reserved. -+ * -+ * This program 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. -+ * -+ * This program 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. -+ * -+ * See the file COPYING included with this distribution for more details. -+ */ -+ -+#ifndef ISCSI_NLA_H -+#define ISCSI_NLA_H -+ -+#include -+ -+struct iovec; -+ -+#define ISCSI_NLA_HDRLEN ((int) NLA_ALIGN(sizeof(struct nlattr))) -+#define ISCSI_NLA_DATA(nla) ((void *)((char*)(nla) + ISCSI_NLA_HDRLEN)) -+#define ISCSI_NLA_LEN(len) ((len) + NLA_ALIGN(ISCSI_NLA_HDRLEN)) -+#define ISCSI_NLA_TOTAL_LEN(len) (NLA_ALIGN(ISCSI_NLA_LEN(len))) -+ -+extern struct nlattr *iscsi_nla_alloc(uint16_t type, uint16_t len); -+ -+#endif -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/usr/iscsi_sysfs.c open-iscsi-2.0-872-rc4-bnx2i.work/usr/iscsi_sysfs.c ---- open-iscsi-2.0-872-rc4-bnx2i/usr/iscsi_sysfs.c 2011-10-10 13:57:38.000000000 -0500 -+++ open-iscsi-2.0-872-rc4-bnx2i.work/usr/iscsi_sysfs.c 2011-10-11 00:41:01.000000000 -0500 -@@ -561,28 +561,28 @@ static int iscsi_sysfs_read_iface(struct - "link_local_addr", iface->ipv6_linklocal, - sizeof(iface->ipv6_linklocal)); - -- if (sysfs_get_str(iface_kern_id, ISCSI_IFACE_SUBSYS, -- "linklocal_autocfg", -- iface->linklocal_autocfg, -- sizeof(iface->linklocal_autocfg))) { -- /* misspelled in some test kernels */ -- sysfs_get_str(iface_kern_id, ISCSI_IFACE_SUBSYS, -- "link_local_autocfg", -- iface->linklocal_autocfg, -- sizeof(iface->linklocal_autocfg)); -- } -+ sysfs_get_str(iface_kern_id, ISCSI_IFACE_SUBSYS, -+ "link_local_autocfg", iface->linklocal_autocfg, -+ sizeof(iface->linklocal_autocfg)); - - sysfs_get_str(iface_kern_id, ISCSI_IFACE_SUBSYS, "router_addr", - iface->ipv6_router, - sizeof(iface->ipv6_router)); - } - -- sysfs_get_uint16(iface_kern_id, ISCSI_IFACE_SUBSYS, "mtu", -- &iface->mtu); -- sysfs_get_uint16(iface_kern_id, ISCSI_IFACE_SUBSYS, "vlan", -- &iface->vlan_id); -- sysfs_get_uint8(iface_kern_id, ISCSI_IFACE_SUBSYS, "vlan_priority", -- &iface->vlan_priority); -+ if (sysfs_get_uint16(iface_kern_id, ISCSI_IFACE_SUBSYS, "port", -+ &iface->port)) -+ iface->port = 0; -+ if (sysfs_get_uint16(iface_kern_id, ISCSI_IFACE_SUBSYS, "mtu", -+ &iface->mtu)) -+ iface->mtu = 0; -+ if (sysfs_get_uint16(iface_kern_id, ISCSI_IFACE_SUBSYS, "vlan_id", -+ &iface->vlan_id)) -+ iface->vlan_id = UINT16_MAX; -+ -+ if (sysfs_get_uint8(iface_kern_id, ISCSI_IFACE_SUBSYS, "vlan_priority", -+ &iface->vlan_priority)) -+ iface->vlan_priority = UINT8_MAX; - - if (sscanf(iface_kern_id, "ipv%d-iface-%u-%u", &iface_type, - &tmp_host_no, &iface_num) == 3) -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/usr/netlink.c open-iscsi-2.0-872-rc4-bnx2i.work/usr/netlink.c ---- open-iscsi-2.0-872-rc4-bnx2i/usr/netlink.c 2011-10-10 13:57:38.000000000 -0500 -+++ open-iscsi-2.0-872-rc4-bnx2i.work/usr/netlink.c 2011-10-11 00:40:34.000000000 -0500 -@@ -38,6 +38,7 @@ - #include "initiator.h" - #include "iscsi_sysfs.h" - #include "transport.h" -+#include "iscsi_netlink.h" - - static int ctrl_fd; - static struct sockaddr_nl src_addr, dest_addr; -@@ -63,6 +64,19 @@ static int ctldev_handle(void); - - #define NLM_SETPARAM_DEFAULT_MAX (NI_MAXHOST + 1 + sizeof(struct iscsi_uevent)) - -+struct nlattr *iscsi_nla_alloc(uint16_t type, uint16_t len) -+{ -+ struct nlattr *attr; -+ -+ attr = calloc(1, ISCSI_NLA_TOTAL_LEN(len)); -+ if (!attr) -+ return NULL; -+ -+ attr->nla_len = ISCSI_NLA_LEN(len); -+ attr->nla_type = type; -+ return attr; -+} -+ - static int - kread(char *data, int count) - { diff --git a/iscsi-initiator-utils-sync-uio-0.7.0.14.patch b/iscsi-initiator-utils-sync-uio-0.7.0.14.patch deleted file mode 100644 index dc7870c..0000000 --- a/iscsi-initiator-utils-sync-uio-0.7.0.14.patch +++ /dev/null @@ -1,371 +0,0 @@ -diff -aurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/configure open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/configure ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/configure 2011-09-01 20:28:53.000000000 -0500 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/configure 2011-09-01 20:33:58.000000000 -0500 -@@ -1,6 +1,6 @@ - #! /bin/sh - # Guess values for system-dependent variables and create Makefiles. --# Generated by GNU Autoconf 2.59 for iscsiuio 0.7.0.12. -+# Generated by GNU Autoconf 2.59 for iscsiuio 0.7.0.14. - # - # Report bugs to . - # -@@ -423,8 +423,8 @@ SHELL=${CONFIG_SHELL-/bin/sh} - # Identity of this package. - PACKAGE_NAME='iscsiuio' - PACKAGE_TARNAME='iscsiuio' --PACKAGE_VERSION='0.7.0.12' --PACKAGE_STRING='iscsiuio 0.7.0.12' -+PACKAGE_VERSION='0.7.0.14' -+PACKAGE_STRING='iscsiuio 0.7.0.14' - PACKAGE_BUGREPORT='eddie.wai@broadcom.com' - - # Factoring default headers for most tests. -@@ -954,7 +954,7 @@ if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF --\`configure' configures iscsiuio 0.7.0.12 to adapt to many kinds of systems. -+\`configure' configures iscsiuio 0.7.0.14 to adapt to many kinds of systems. - - Usage: $0 [OPTION]... [VAR=VALUE]... - -@@ -1020,7 +1020,7 @@ fi - - if test -n "$ac_init_help"; then - case $ac_init_help in -- short | recursive ) echo "Configuration of iscsiuio 0.7.0.12:";; -+ short | recursive ) echo "Configuration of iscsiuio 0.7.0.14:";; - esac - cat <<\_ACEOF - -@@ -1161,7 +1161,7 @@ fi - test -n "$ac_init_help" && exit 0 - if $ac_init_version; then - cat <<\_ACEOF --iscsiuio configure 0.7.0.12 -+iscsiuio configure 0.7.0.14 - generated by GNU Autoconf 2.59 - - Copyright (C) 2003 Free Software Foundation, Inc. -@@ -1175,7 +1175,7 @@ cat >&5 <<_ACEOF - This file contains any messages produced by compilers while - running configure, to aid debugging if configure makes a mistake. - --It was created by iscsiuio $as_me 0.7.0.12, which was -+It was created by iscsiuio $as_me 0.7.0.14, which was - generated by GNU Autoconf 2.59. Invocation command line was - - $ $0 $@ -@@ -21726,7 +21726,7 @@ _ASBOX - } >&5 - cat >&5 <<_CSEOF - --This file was extended by iscsiuio $as_me 0.7.0.12, which was -+This file was extended by iscsiuio $as_me 0.7.0.14, which was - generated by GNU Autoconf 2.59. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES -@@ -21789,7 +21789,7 @@ _ACEOF - - cat >>$CONFIG_STATUS <<_ACEOF - ac_cs_version="\\ --iscsiuio config.status 0.7.0.12 -+iscsiuio config.status 0.7.0.14 - configured by $0, generated by GNU Autoconf 2.59, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" - -diff -aurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/configure.ac open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/configure.ac ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/configure.ac 2011-09-01 20:28:53.000000000 -0500 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/configure.ac 2011-09-01 20:33:58.000000000 -0500 -@@ -11,9 +11,9 @@ dnl Maintained by: Eddie Wai (eddie.wai@ - dnl - - PACKAGE=iscsiuio --VERSION=0.7.0.12 -+VERSION=0.7.0.14 - --AC_INIT(iscsiuio, 0.7.0.12, eddie.wai@broadcom.com) -+AC_INIT(iscsiuio, 0.7.0.14, eddie.wai@broadcom.com) - - AM_INIT_AUTOMAKE($PACKAGE, $VERSION) - AC_CONFIG_HEADER(config.h) -diff -aurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/docs/iscsiuio.8 open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/docs/iscsiuio.8 ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/docs/iscsiuio.8 2011-09-01 20:28:53.000000000 -0500 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/docs/iscsiuio.8 2011-09-01 20:33:58.000000000 -0500 -@@ -3,9 +3,9 @@ - .\" modify it under the terms of the GNU General Public License as - .\" published by the Free Software Foundation. - .\" --.\" bnx2.4,v 0.7.0.12 -+.\" bnx2.4,v 0.7.0.14 - .\" --.TH iscsiuio 8 "08/04/2011" "Broadcom Corporation" -+.TH iscsiuio 8 "08/23/2011" "Broadcom Corporation" - .\" - .\" NAME part - .\" -diff -aurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/include/uip_mgmt_ipc.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/include/uip_mgmt_ipc.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/include/uip_mgmt_ipc.h 2011-09-01 20:28:53.000000000 -0500 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/include/uip_mgmt_ipc.h 2011-09-01 20:33:47.000000000 -0500 -@@ -50,11 +50,11 @@ typedef struct iscsid_uip_broadcast { - - typedef enum iscsid_uip_mgmt_ipc_err { - ISCSID_UIP_MGMT_IPC_OK = 0, -- ISCISD_UIP_MGMT_IPC_ERR = 1, -- ISCISD_UIP_MGMT_IPC_ERR_NOT_FOUND = 2, -- ISCISD_UIP_MGMT_IPC_ERR_NOMEM = 3, -- ISCISD_UIP_MGMT_IPC_DEVICE_UP = 4, -- ISCISD_UIP_MGMT_IPC_DEVICE_INITIALIZING = 5, -+ ISCSID_UIP_MGMT_IPC_ERR = 1, -+ ISCSID_UIP_MGMT_IPC_ERR_NOT_FOUND = 2, -+ ISCSID_UIP_MGMT_IPC_ERR_NOMEM = 3, -+ ISCSID_UIP_MGMT_IPC_DEVICE_UP = 4, -+ ISCSID_UIP_MGMT_IPC_DEVICE_INITIALIZING = 5, - } iscsid_uip_mgmt_ipc_err_e; - - /* IPC Response */ -diff -aurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/README open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/README ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/README 2011-09-01 20:28:53.000000000 -0500 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/README 2011-09-01 20:33:58.000000000 -0500 -@@ -1,6 +1,6 @@ --Broadcom iSCSI Userspace Tools --Version 0.7.0.12 --Aug 04, 2011 -+iscsiuio Userspace Tools -+Version 0.7.0.14 -+Aug 23, 2011 - ------------------------------------------------------ - - This tools is to be used in conjunction with the Broadcom NetXtreme II Linux -diff -aurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/RELEASE.TXT open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/RELEASE.TXT ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/RELEASE.TXT 2011-09-01 20:28:53.000000000 -0500 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/RELEASE.TXT 2011-09-01 20:33:58.000000000 -0500 -@@ -1,7 +1,7 @@ - Release Notes - Broadcom uIP Linux Driver -- Version 0.7.0.12 -- 08/04/2011 -+ Version 0.7.0.14 -+ 08/23/2011 - - Broadcom Corporation - 5300 California Avenue, -@@ -10,6 +10,36 @@ - Copyright (c) 2004 - 2011 Broadcom Corporation - All rights reserved - -+uIP v0.7.0.14 (Aug 23, 2011) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Cont00057840 - RHEL6.2 inbox: Unable to connect to -+ targets with 5709 -+ Cause: For cases when the bnx2/bnx2x driver gets removed, the -+ uio database that was built by cnic would have the device -+ ->net reference removed. This has caused an unnecessary -+ timeout of 5s for each stale uio entry in the database. -+ Change: Adjusted the routine which seeks the device->net entry -+ to include more logic instead of hard waiting for 5s. -+ -+ Enhancements -+ ------------ -+ 1. Change: Added support for RHEL6.2 for out-of-box release -+ 2. Change: Updated the man page with -h and -p info -+ 3. Change: Updated the -h info -+ -+ -+uIP v0.7.0.13 (Aug 10, 2011) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Cont00057768 - iscsiuio logrotate causes daemon failure -+ Cause: The logrotate script will send a SIGUSR1 signal to notify -+ the iscsiuio daemon of such action. However, the daemon -+ wasn't programmed to catch this signal. -+ Change: Restored the catching of this signal -+ - - uIP v0.7.0.12 (Aug 04, 2011) - ======================================================= -diff -aurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/iscsid_ipc.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/iscsid_ipc.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/iscsid_ipc.c 2011-09-01 20:28:53.000000000 -0500 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/iscsid_ipc.c 2011-09-01 20:33:53.000000000 -0500 -@@ -217,18 +217,23 @@ static int parse_iface(void *arg) - struct in_addr netmask; - int i, prefix_len = 64; - struct ip_addr_mask ipam; -+ struct iface_rec *rec; - - data = (iscsid_uip_broadcast_t *) arg; - -+ rec = &data->u.iface_rec.rec; - LOG_INFO(PFX "Received request for '%s' to set IP address: '%s' " -- "VLAN: '%d'", -- data->u.iface_rec.rec.netdev, -- data->u.iface_rec.rec.ipaddress, data->u.iface_rec.rec.vlan_id); -+ "VLAN: '%d'", rec->netdev, rec->ipaddress, rec->vlan_id); - -- vlan = data->u.iface_rec.rec.vlan_id; -+ vlan = rec->vlan_id; -+ if (vlan && valid_vlan(vlan) == 0) { -+ LOG_ERR(PFX "Invalid VLAN tag: %d", rec->vlan_id); -+ rc = -EIO; -+ goto early_exit; -+ } - - /* Detect for CIDR notation and strip off the netmask if present */ -- rc = decode_cidr(data->u.iface_rec.rec.ipaddress, &ipam, &prefix_len); -+ rc = decode_cidr(rec->ipaddress, &ipam, &prefix_len); - if (rc && !ipam.ip_type) { - LOG_ERR(PFX "decode_cidr: rc=%d, ipam.ip_type=%d", - rc, ipam.ip_type) -@@ -251,30 +256,29 @@ static int parse_iface(void *arg) - - if (i >= 10) { - LOG_WARN(PFX "Could not aquire nic_list_mutex lock"); -- - rc = -EIO; - goto early_exit; - } - - /* Check if we can find the NIC device using the netdev - * name */ -- rc = from_netdev_name_find_nic(data->u.iface_rec.rec.netdev, &nic); -+ rc = from_netdev_name_find_nic(rec->netdev, &nic); - - if (rc != 0) { - LOG_WARN(PFX "Couldn't find NIC: %s, creating an instance", -- data->u.iface_rec.rec.netdev); -+ rec->netdev); - - nic = nic_init(); - if (nic == NULL) { - LOG_ERR(PFX "Couldn't allocate space for NIC %s", -- data->u.iface_rec.rec.netdev); -+ rec->netdev); - - rc = -ENOMEM; - goto done; - } - - strncpy(nic->eth_device_name, -- data->u.iface_rec.rec.netdev, -+ rec->netdev, - sizeof(nic->eth_device_name)); - nic->config_device_name = nic->eth_device_name; - nic->log_name = nic->eth_device_name; -@@ -288,7 +292,7 @@ static int parse_iface(void *arg) - nic_add(nic); - } else { - LOG_INFO(PFX " %s, using existing NIC", -- data->u.iface_rec.rec.netdev); -+ rec->netdev); - } - - if (nic->flags & NIC_GOING_DOWN) { -@@ -335,12 +339,12 @@ static int parse_iface(void *arg) - &transport_name_size); - - if (strncmp(transport_name, -- data->u.iface_rec.rec.transport_name, -+ rec->transport_name, - transport_name_size) != 0) { - LOG_ERR(PFX "%s Transport name is not equal " - "expected: %s got: %s", - nic->log_name, -- data->u.iface_rec.rec.transport_name, -+ rec->transport_name, - transport_name); - } - } else { -@@ -548,11 +552,10 @@ enable_nic: - - LOG_INFO(PFX "ISCSID_UIP_IPC_GET_IFACE: command: %x " - "name: %s, netdev: %s ipaddr: %s vlan: %d transport_name:%s", -- data->header.command, data->u.iface_rec.rec.name, -- data->u.iface_rec.rec.netdev, -- (ipam.ip_type == -- AF_INET) ? inet_ntoa(ipam.addr4) : ipv6_buf_str, vlan, -- data->u.iface_rec.rec.transport_name); -+ data->header.command, rec->name, rec->netdev, -+ (ipam.ip_type == AF_INET) ? inet_ntoa(ipam.addr4) : -+ ipv6_buf_str, -+ vlan, rec->transport_name); - - done: - pthread_mutex_unlock(&nic_list_mutex); -@@ -617,15 +620,15 @@ int process_iscsid_broadcast(int s2) - switch (rc) { - case 0: - rsp.command = cmd; -- rsp.err = ISCISD_UIP_MGMT_IPC_DEVICE_UP; -+ rsp.err = ISCSID_UIP_MGMT_IPC_DEVICE_UP; - break; - case -EAGAIN: - rsp.command = cmd; -- rsp.err = ISCISD_UIP_MGMT_IPC_DEVICE_INITIALIZING; -+ rsp.err = ISCSID_UIP_MGMT_IPC_DEVICE_INITIALIZING; - break; - default: - rsp.command = cmd; -- rsp.err = ISCISD_UIP_MGMT_IPC_ERR; -+ rsp.err = ISCSID_UIP_MGMT_IPC_ERR; - } - - break; -diff -aurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/main.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/main.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/main.c 2011-09-01 20:28:53.000000000 -0500 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/main.c 2011-09-01 20:33:42.000000000 -0500 -@@ -172,10 +172,10 @@ static void main_usage() - - printf("\nUsage: %s [OPTION]\n", APP_NAME); - printf("\ --Broadcom uIP daemon.\n\ -+iscsiuio daemon.\n\ - -f, --foreground make the program run in the foreground\n\ - -d, --debug debuglevel print debugging information\n\ -- -p, --pid=pidfile use pid file (default %s ).\n\ -+ -p, --pid=pidfile use pid file (default %s).\n\ - -h, --help display this help and exit\n\ - -v, --version display version and exit\n\ - ", default_pid_filepath); -@@ -336,6 +336,7 @@ int main(int argc, char *argv[]) - sigaddset(&set, SIGINT); - sigaddset(&set, SIGQUIT); - sigaddset(&set, SIGTERM); -+ sigaddset(&set, SIGUSR1); - rc = pthread_sigmask(SIG_SETMASK, &set, NULL); - - /* Spin off the signal handling thread */ -diff -aurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/nic_utils.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/nic_utils.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/nic_utils.c 2011-09-01 20:28:53.000000000 -0500 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/nic_utils.c 2011-09-01 20:33:37.000000000 -0500 -@@ -473,6 +473,7 @@ static int from_uio_find_associated_eth_ - char *search_paths[] = { "/sys/class/uio/uio%i/device/", - "/sys/class/uio/uio%i/device/net" - }; -+ int path_to[] = { 5, 1 }; - int (*search_filters[]) (const struct dirent *) = { - filter_net_name, filter_dot_out,}; - char *(*extract_name[]) (struct dirent ** files) = { -@@ -492,7 +493,7 @@ static int from_uio_find_associated_eth_ - /* Build the path to determine uio name */ - rc = sprintf(path, search_paths[path_iterator], uio_minor); - -- wait_for_file_node_timed(nic, path, 5); -+ wait_for_file_node_timed(nic, path, path_to[path_iterator]); - - count = scandir(path, &files, - search_filters[path_iterator], alphasort); -diff -aurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/options.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/options.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/options.h 2011-09-01 20:28:53.000000000 -0500 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/options.h 2011-09-01 20:33:42.000000000 -0500 -@@ -78,7 +78,7 @@ - #define ETHERTYPE_VLAN 0x8100 /* IEEE 802.1Q VLAN tagging */ - #endif /* ETHERTYPE_VLAN */ - --#define APP_NAME "uIP" -+#define APP_NAME "iscsiuio" - /* BUILD_DATE is automatically generated from the Makefile */ - - #define DEBUG_OFF 0x1 diff --git a/iscsi-initiator-utils-sync-uio-0.7.0.8.patch b/iscsi-initiator-utils-sync-uio-0.7.0.8.patch deleted file mode 100644 index 9f59671..0000000 --- a/iscsi-initiator-utils-sync-uio-0.7.0.8.patch +++ /dev/null @@ -1,74274 +0,0 @@ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/aclocal.m4 open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/aclocal.m4 ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/aclocal.m4 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/aclocal.m4 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,7277 @@ -+# generated automatically by aclocal 1.9.6 -*- Autoconf -*- -+ -+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -+# 2005 Free Software Foundation, Inc. -+# 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. -+ -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -+# PARTICULAR PURPOSE. -+ -+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -+ -+# serial 48 AC_PROG_LIBTOOL -+ -+ -+# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) -+# ----------------------------------------------------------- -+# If this macro is not defined by Autoconf, define it here. -+m4_ifdef([AC_PROVIDE_IFELSE], -+ [], -+ [m4_define([AC_PROVIDE_IFELSE], -+ [m4_ifdef([AC_PROVIDE_$1], -+ [$2], [$3])])]) -+ -+ -+# AC_PROG_LIBTOOL -+# --------------- -+AC_DEFUN([AC_PROG_LIBTOOL], -+[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl -+dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX -+dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. -+ AC_PROVIDE_IFELSE([AC_PROG_CXX], -+ [AC_LIBTOOL_CXX], -+ [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX -+ ])]) -+dnl And a similar setup for Fortran 77 support -+ AC_PROVIDE_IFELSE([AC_PROG_F77], -+ [AC_LIBTOOL_F77], -+ [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 -+])]) -+ -+dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. -+dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run -+dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. -+ AC_PROVIDE_IFELSE([AC_PROG_GCJ], -+ [AC_LIBTOOL_GCJ], -+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], -+ [AC_LIBTOOL_GCJ], -+ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], -+ [AC_LIBTOOL_GCJ], -+ [ifdef([AC_PROG_GCJ], -+ [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) -+ ifdef([A][M_PROG_GCJ], -+ [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) -+ ifdef([LT_AC_PROG_GCJ], -+ [define([LT_AC_PROG_GCJ], -+ defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) -+])])# AC_PROG_LIBTOOL -+ -+ -+# _AC_PROG_LIBTOOL -+# ---------------- -+AC_DEFUN([_AC_PROG_LIBTOOL], -+[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl -+AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl -+AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl -+AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl -+ -+# This can be used to rebuild libtool when needed -+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" -+ -+# Always use our own libtool. -+LIBTOOL='$(SHELL) $(top_builddir)/libtool' -+AC_SUBST(LIBTOOL)dnl -+ -+# Prevent multiple expansion -+define([AC_PROG_LIBTOOL], []) -+])# _AC_PROG_LIBTOOL -+ -+ -+# AC_LIBTOOL_SETUP -+# ---------------- -+AC_DEFUN([AC_LIBTOOL_SETUP], -+[AC_PREREQ(2.50)dnl -+AC_REQUIRE([AC_ENABLE_SHARED])dnl -+AC_REQUIRE([AC_ENABLE_STATIC])dnl -+AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl -+AC_REQUIRE([AC_CANONICAL_HOST])dnl -+AC_REQUIRE([AC_CANONICAL_BUILD])dnl -+AC_REQUIRE([AC_PROG_CC])dnl -+AC_REQUIRE([AC_PROG_LD])dnl -+AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl -+AC_REQUIRE([AC_PROG_NM])dnl -+ -+AC_REQUIRE([AC_PROG_LN_S])dnl -+AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl -+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! -+AC_REQUIRE([AC_OBJEXT])dnl -+AC_REQUIRE([AC_EXEEXT])dnl -+dnl -+ -+AC_LIBTOOL_SYS_MAX_CMD_LEN -+AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE -+AC_LIBTOOL_OBJDIR -+ -+AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl -+_LT_AC_PROG_ECHO_BACKSLASH -+ -+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 -+ -+# Sed substitution that helps us do robust quoting. It backslashifies -+# metacharacters that are still active within double-quoted strings. -+Xsed='sed -e 1s/^X//' -+[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 avoid accidental globbing in evaled expressions -+no_glob_subst='s/\*/\\\*/g' -+ -+# Constants: -+rm="rm -f" -+ -+# Global variables: -+default_ofile=libtool -+can_build_shared=yes -+ -+# All known linkers require a `.a' archive for static linking (except MSVC, -+# which needs '.lib'). -+libext=a -+ltmain="$ac_aux_dir/ltmain.sh" -+ofile="$default_ofile" -+with_gnu_ld="$lt_cv_prog_gnu_ld" -+ -+AC_CHECK_TOOL(AR, ar, false) -+AC_CHECK_TOOL(RANLIB, ranlib, :) -+AC_CHECK_TOOL(STRIP, strip, :) -+ -+old_CC="$CC" -+old_CFLAGS="$CFLAGS" -+ -+# Set sane defaults for various variables -+test -z "$AR" && AR=ar -+test -z "$AR_FLAGS" && AR_FLAGS=cru -+test -z "$AS" && AS=as -+test -z "$CC" && CC=cc -+test -z "$LTCC" && LTCC=$CC -+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -+test -z "$DLLTOOL" && DLLTOOL=dlltool -+test -z "$LD" && LD=ld -+test -z "$LN_S" && LN_S="ln -s" -+test -z "$MAGIC_CMD" && MAGIC_CMD=file -+test -z "$NM" && NM=nm -+test -z "$SED" && SED=sed -+test -z "$OBJDUMP" && OBJDUMP=objdump -+test -z "$RANLIB" && RANLIB=: -+test -z "$STRIP" && STRIP=: -+test -z "$ac_objext" && ac_objext=o -+ -+# Determine commands to create old-style static archives. -+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' -+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 \$oldlib" -+ ;; -+ *) -+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" -+ ;; -+ esac -+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -+fi -+ -+_LT_CC_BASENAME([$compiler]) -+ -+# Only perform the check for file, if the check method requires it -+case $deplibs_check_method in -+file_magic*) -+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then -+ AC_PATH_MAGIC -+ fi -+ ;; -+esac -+ -+AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) -+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], -+enable_win32_dll=yes, enable_win32_dll=no) -+ -+AC_ARG_ENABLE([libtool-lock], -+ [AC_HELP_STRING([--disable-libtool-lock], -+ [avoid locking (might break parallel builds)])]) -+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes -+ -+AC_ARG_WITH([pic], -+ [AC_HELP_STRING([--with-pic], -+ [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], -+ [pic_mode="$withval"], -+ [pic_mode=default]) -+test -z "$pic_mode" && pic_mode=default -+ -+# Use C for the default configuration in the libtool script -+tagname= -+AC_LIBTOOL_LANG_C_CONFIG -+_LT_AC_TAGCONFIG -+])# AC_LIBTOOL_SETUP -+ -+ -+# _LT_AC_SYS_COMPILER -+# ------------------- -+AC_DEFUN([_LT_AC_SYS_COMPILER], -+[AC_REQUIRE([AC_PROG_CC])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_AC_SYS_COMPILER -+ -+ -+# _LT_CC_BASENAME(CC) -+# ------------------- -+# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -+AC_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 "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` -+]) -+ -+ -+# _LT_COMPILER_BOILERPLATE -+# ------------------------ -+# Check for compiler boilerplate output or warnings with -+# the simple compiler test code. -+AC_DEFUN([_LT_COMPILER_BOILERPLATE], -+[ac_outfile=conftest.$ac_objext -+printf "$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. -+AC_DEFUN([_LT_LINKER_BOILERPLATE], -+[ac_outfile=conftest.$ac_objext -+printf "$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 conftest* -+])# _LT_LINKER_BOILERPLATE -+ -+ -+# _LT_AC_SYS_LIBPATH_AIX -+# ---------------------- -+# 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. -+AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], -+[AC_LINK_IFELSE(AC_LANG_PROGRAM,[ -+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -+}'` -+# Check for a 64-bit object if we didn't find anything. -+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -+}'`; fi],[]) -+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi -+])# _LT_AC_SYS_LIBPATH_AIX -+ -+ -+# _LT_AC_SHELL_INIT(ARG) -+# ---------------------- -+AC_DEFUN([_LT_AC_SHELL_INIT], -+[ifdef([AC_DIVERSION_NOTICE], -+ [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], -+ [AC_DIVERT_PUSH(NOTICE)]) -+$1 -+AC_DIVERT_POP -+])# _LT_AC_SHELL_INIT -+ -+ -+# _LT_AC_PROG_ECHO_BACKSLASH -+# -------------------------- -+# Add some code to the start of the generated configure script which -+# will find an echo command which doesn't interpret backslashes. -+AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], -+[_LT_AC_SHELL_INIT([ -+# Check that we are running under the correct shell. -+SHELL=${CONFIG_SHELL-/bin/sh} -+ -+case X$ECHO in -+X*--fallback-echo) -+ # Remove one level of quotation (which was required for Make). -+ ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` -+ ;; -+esac -+ -+echo=${ECHO-echo} -+if test "X[$]1" = X--no-reexec; then -+ # Discard the --no-reexec flag, and continue. -+ shift -+elif test "X[$]1" = X--fallback-echo; then -+ # Avoid inline document here, it may be left over -+ : -+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then -+ # Yippee, $echo works! -+ : -+else -+ # Restart under the correct shell. -+ exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} -+fi -+ -+if test "X[$]1" = X--fallback-echo; then -+ # used as fallback echo -+ shift -+ cat </dev/null 2>&1 && unset CDPATH -+ -+if test -z "$ECHO"; then -+if test "X${echo_test_string+set}" != Xset; then -+# find a string as large as possible, as long as the shell can cope with it -+ for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do -+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... -+ if (echo_test_string=`eval $cmd`) 2>/dev/null && -+ echo_test_string=`eval $cmd` && -+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null -+ then -+ break -+ fi -+ done -+fi -+ -+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && -+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && -+ test "X$echo_testing_string" = "X$echo_test_string"; then -+ : -+else -+ # The Solaris, AIX, and Digital Unix default echo programs unquote -+ # backslashes. This makes it impossible to quote backslashes using -+ # echo "$something" | sed 's/\\/\\\\/g' -+ # -+ # So, first we look for a working echo in the user's PATH. -+ -+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -+ for dir in $PATH /usr/ucb; do -+ IFS="$lt_save_ifs" -+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && -+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && -+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && -+ test "X$echo_testing_string" = "X$echo_test_string"; then -+ echo="$dir/echo" -+ break -+ fi -+ done -+ IFS="$lt_save_ifs" -+ -+ if test "X$echo" = Xecho; then -+ # We didn't find a better echo, so look for alternatives. -+ if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && -+ echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && -+ test "X$echo_testing_string" = "X$echo_test_string"; then -+ # This shell has a builtin print -r that does the trick. -+ echo='print -r' -+ elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && -+ test "X$CONFIG_SHELL" != X/bin/ksh; then -+ # If we have ksh, try running configure again with it. -+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} -+ export ORIGINAL_CONFIG_SHELL -+ CONFIG_SHELL=/bin/ksh -+ export CONFIG_SHELL -+ exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} -+ else -+ # Try using printf. -+ echo='printf %s\n' -+ if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && -+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && -+ test "X$echo_testing_string" = "X$echo_test_string"; then -+ # Cool, printf works -+ : -+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && -+ test "X$echo_testing_string" = 'X\t' && -+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && -+ test "X$echo_testing_string" = "X$echo_test_string"; then -+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL -+ export CONFIG_SHELL -+ SHELL="$CONFIG_SHELL" -+ export SHELL -+ echo="$CONFIG_SHELL [$]0 --fallback-echo" -+ elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && -+ test "X$echo_testing_string" = 'X\t' && -+ echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && -+ test "X$echo_testing_string" = "X$echo_test_string"; then -+ echo="$CONFIG_SHELL [$]0 --fallback-echo" -+ else -+ # maybe with a smaller string... -+ prev=: -+ -+ for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do -+ if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null -+ then -+ break -+ fi -+ prev="$cmd" -+ done -+ -+ if test "$prev" != 'sed 50q "[$]0"'; then -+ echo_test_string=`eval $prev` -+ export echo_test_string -+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} -+ else -+ # Oops. We lost completely, so just stick with echo. -+ echo=echo -+ fi -+ fi -+ fi -+ fi -+fi -+fi -+ -+# Copy echo and quote the copy suitably for passing to libtool from -+# the Makefile, instead of quoting the original, which is used later. -+ECHO=$echo -+if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then -+ ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" -+fi -+ -+AC_SUBST(ECHO) -+])])# _LT_AC_PROG_ECHO_BACKSLASH -+ -+ -+# _LT_AC_LOCK -+# ----------- -+AC_DEFUN([_LT_AC_LOCK], -+[AC_ARG_ENABLE([libtool-lock], -+ [AC_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 __oline__ "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-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|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-*linux*) -+ LD="${LD-ld} -m elf_i386" -+ ;; -+ ppc64-*linux*|powerpc64-*linux*) -+ 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-*linux*) -+ LD="${LD-ld} -m elf_x86_64" -+ ;; -+ ppc*-*linux*|powerpc*-*linux*) -+ LD="${LD-ld} -m elf64ppc" -+ ;; -+ s390*-*linux*) -+ 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_TRY_LINK([],[],[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 -+ ;; -+sparc*-*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*) LD="${LD-ld} -m elf64_sparc" ;; -+ *) LD="${LD-ld} -64" ;; -+ esac -+ ;; -+ esac -+ fi -+ rm -rf conftest* -+ ;; -+ -+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], -+[*-*-cygwin* | *-*-mingw* | *-*-pw32*) -+ AC_CHECK_TOOL(DLLTOOL, dlltool, false) -+ AC_CHECK_TOOL(AS, as, false) -+ AC_CHECK_TOOL(OBJDUMP, objdump, false) -+ ;; -+ ]) -+esac -+ -+need_locks="$enable_libtool_lock" -+ -+])# _LT_AC_LOCK -+ -+ -+# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -+# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -+# ---------------------------------------------------------------- -+# Check whether the given compiler option works -+AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], -+[AC_REQUIRE([LT_AC_PROG_SED]) -+AC_CACHE_CHECK([$1], [$2], -+ [$2=no -+ ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) -+ printf "$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:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) -+ (eval "$lt_compile" 2>conftest.err) -+ ac_status=$? -+ cat conftest.err >&AS_MESSAGE_LOG_FD -+ echo "$as_me:__oline__: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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 -+ ifelse([$5], , :, [$5]) -+else -+ ifelse([$6], , :, [$6]) -+fi -+])# AC_LIBTOOL_COMPILER_OPTION -+ -+ -+# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -+# [ACTION-SUCCESS], [ACTION-FAILURE]) -+# ------------------------------------------------------------ -+# Check whether the given compiler option works -+AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], -+[AC_CACHE_CHECK([$1], [$2], -+ [$2=no -+ save_LDFLAGS="$LDFLAGS" -+ LDFLAGS="$LDFLAGS $3" -+ printf "$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 "X$_lt_linker_boilerplate" | $Xsed -e '/^$/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 conftest* -+ LDFLAGS="$save_LDFLAGS" -+]) -+ -+if test x"[$]$2" = xyes; then -+ ifelse([$4], , :, [$4]) -+else -+ ifelse([$5], , :, [$5]) -+fi -+])# AC_LIBTOOL_LINKER_OPTION -+ -+ -+# AC_LIBTOOL_SYS_MAX_CMD_LEN -+# -------------------------- -+AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], -+[# 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*) -+ # 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; -+ ;; -+ -+ 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 -+ ;; -+ -+ 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 -+ ;; -+ *) -+ # 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. -+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} -+ while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ -+ = "XX$teststring") >/dev/null 2>&1 && -+ new_result=`expr "X$teststring" : ".*" 2>&1` && -+ lt_cv_sys_max_cmd_len=$new_result && -+ test $i != 17 # 1/2 MB should be enough -+ do -+ i=`expr $i + 1` -+ teststring=$teststring$teststring -+ done -+ 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` -+ ;; -+ 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 -+])# AC_LIBTOOL_SYS_MAX_CMD_LEN -+ -+ -+# _LT_AC_CHECK_DLFCN -+# ------------------ -+AC_DEFUN([_LT_AC_CHECK_DLFCN], -+[AC_CHECK_HEADERS(dlfcn.h)dnl -+])# _LT_AC_CHECK_DLFCN -+ -+ -+# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -+# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -+# --------------------------------------------------------------------- -+AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], -+[AC_REQUIRE([_LT_AC_CHECK_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 < -+#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 -+ -+#ifdef __cplusplus -+extern "C" void exit (int); -+#endif -+ -+void fnord() { int i=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; -+ /* dlclose (self); */ -+ } -+ else -+ puts (dlerror ()); -+ -+ exit (status); -+}] -+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_AC_TRY_DLOPEN_SELF -+ -+ -+# AC_LIBTOOL_DLOPEN_SELF -+# ---------------------- -+AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], -+[AC_REQUIRE([_LT_AC_CHECK_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*) -+ 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="-dld"], -+ [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="-dld"]) -+ ]) -+ ]) -+ ]) -+ ]) -+ ]) -+ ;; -+ 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_AC_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_AC_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 -+])# AC_LIBTOOL_DLOPEN_SELF -+ -+ -+# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) -+# --------------------------------- -+# Check to see if options -c and -o are simultaneously supported by compiler -+AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], -+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl -+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], -+ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], -+ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no -+ $rm -r conftest 2>/dev/null -+ mkdir conftest -+ cd conftest -+ mkdir out -+ printf "$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:__oline__: $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:__oline__: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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_AC_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 .. -+ rmdir conftest -+ $rm conftest* -+]) -+])# AC_LIBTOOL_PROG_CC_C_O -+ -+ -+# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) -+# ----------------------------------------- -+# Check to see if we can do hard links to lock some files if needed -+AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], -+[AC_REQUIRE([_LT_AC_LOCK])dnl -+ -+hard_links="nottested" -+if test "$_LT_AC_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 -+])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS -+ -+ -+# AC_LIBTOOL_OBJDIR -+# ----------------- -+AC_DEFUN([AC_LIBTOOL_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 -+])# AC_LIBTOOL_OBJDIR -+ -+ -+# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) -+# ---------------------------------------------- -+# Check hardcoding attributes. -+AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], -+[AC_MSG_CHECKING([how to hardcode library paths into programs]) -+_LT_AC_TAGVAR(hardcode_action, $1)= -+if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ -+ test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ -+ test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then -+ -+ # We can hardcode non-existant directories. -+ if test "$_LT_AC_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_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && -+ test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then -+ # Linking always hardcodes the temporary library directory. -+ _LT_AC_TAGVAR(hardcode_action, $1)=relink -+ else -+ # We can link without hardcoding, and we can hardcode nonexisting dirs. -+ _LT_AC_TAGVAR(hardcode_action, $1)=immediate -+ fi -+else -+ # We cannot hardcode anything, or else we can only hardcode existing -+ # directories. -+ _LT_AC_TAGVAR(hardcode_action, $1)=unsupported -+fi -+AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) -+ -+if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; 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 -+])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH -+ -+ -+# AC_LIBTOOL_SYS_LIB_STRIP -+# ------------------------ -+AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], -+[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" -+ AC_MSG_RESULT([yes]) -+ else -+ AC_MSG_RESULT([no]) -+fi -+ ;; -+ *) -+ AC_MSG_RESULT([no]) -+ ;; -+ esac -+fi -+])# AC_LIBTOOL_SYS_LIB_STRIP -+ -+ -+# AC_LIBTOOL_SYS_DYNAMIC_LINKER -+# ----------------------------- -+# PORTME Fill in your ld.so characteristics -+AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], -+[AC_MSG_CHECKING([dynamic linker characteristics]) -+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" -+if test "$GCC" = yes; then -+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` -+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then -+ # 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. -+ 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 -+else -+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -+fi -+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 -+ 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' -+ ;; -+ -+aix4* | aix5*) -+ version_type=linux -+ 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*) -+ 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=`$echo "X$lib" | $Xsed -e '\''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' -+ ;; -+ -+beos*) -+ library_names_spec='${libname}${shared_ext}' -+ dynamic_linker="$host_os ld.so" -+ shlibpath_var=LIBRARY_PATH -+ ;; -+ -+bsdi[[45]]*) -+ version_type=linux -+ 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*) -+ version_type=windows -+ shrext_cmds=".dll" -+ need_version=no -+ need_lib_prefix=no -+ -+ case $GCC,$host_os in -+ yes,cygwin* | yes,mingw* | yes,pw32*) -+ 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' -+ 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}' -+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" -+ ;; -+ mingw*) -+ # MinGW DLLs use traditional 'lib' prefix -+ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' -+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` -+ if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then -+ # It is most probably a Windows format PATH printed by -+ # mingw gcc, but we are running on Cygwin. Gcc prints its search -+ # path with ; separators, and with drive letters. We can handle the -+ # drive letters (cygwin fileutils understands them), so leave them, -+ # especially as we might pass files found there to a mingw objdump, -+ # which wouldn't understand a cygwinified path. Ahh. -+ 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 -+ ;; -+ 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 -+ ;; -+ -+ *) -+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' -+ ;; -+ esac -+ dynamic_linker='Win32 ld.exe' -+ # 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}${versuffix}$shared_ext ${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`' -+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. -+ if test "$GCC" = yes; then -+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` -+ else -+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' -+ fi -+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' -+ ;; -+ -+dgux*) -+ 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 -+ ;; -+ -+freebsd1*) -+ dynamic_linker=no -+ ;; -+ -+kfreebsd*-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='GNU ld.so' -+ ;; -+ -+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[[123]]*) 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 -+ ;; -+ freebsd*) # from 4.6 on -+ shlibpath_overrides_runpath=yes -+ hardcode_into_libs=yes -+ ;; -+ esac -+ ;; -+ -+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 -+ 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' -+ ;; -+ -+interix3*) -+ 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' -+ 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 -+ 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 Linux ELF. -+linux*) -+ 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' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ # 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 -+ -+ # find out which ABI we are using -+ libsuff= -+ case "$host_cpu" in -+ x86_64*|s390x*|powerpc64*) -+ echo '[#]line __oline__ "configure"' > conftest.$ac_ext -+ if AC_TRY_EVAL(ac_compile); then -+ case `/usr/bin/file conftest.$ac_objext` in -+ *64-bit*) -+ libsuff=64 -+ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" -+ ;; -+ esac -+ fi -+ rm -rf conftest* -+ ;; -+ esac -+ -+ # 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/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` -+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $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' -+ ;; -+ -+knetbsd*-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='GNU ld.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 -+ 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=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=yes -+ ;; -+ -+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" -+ ;; -+ -+solaris*) -+ 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=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 -+ 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 -+ export_dynamic_flag_spec='${wl}-Blargedynsym' -+ 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 -+ 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 -+ 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' -+ shlibpath_overrides_runpath=no -+ else -+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' -+ shlibpath_overrides_runpath=yes -+ 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' -+ ;; -+ -+uts4*) -+ version_type=linux -+ 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 -+])# AC_LIBTOOL_SYS_DYNAMIC_LINKER -+ -+ -+# _LT_AC_TAGCONFIG -+# ---------------- -+AC_DEFUN([_LT_AC_TAGCONFIG], -+[AC_ARG_WITH([tags], -+ [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], -+ [include additional configurations @<:@automatic@:>@])], -+ [tagnames="$withval"]) -+ -+if test -f "$ltmain" && test -n "$tagnames"; then -+ if test ! -f "${ofile}"; then -+ AC_MSG_WARN([output file `$ofile' does not exist]) -+ fi -+ -+ if test -z "$LTCC"; then -+ eval "`$SHELL ${ofile} --config | grep '^LTCC='`" -+ if test -z "$LTCC"; then -+ AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) -+ else -+ AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) -+ fi -+ fi -+ if test -z "$LTCFLAGS"; then -+ eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" -+ fi -+ -+ # Extract list of available tagged configurations in $ofile. -+ # Note that this assumes the entire list is on one line. -+ available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` -+ -+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," -+ for tagname in $tagnames; do -+ IFS="$lt_save_ifs" -+ # Check whether tagname contains only valid characters -+ case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in -+ "") ;; -+ *) AC_MSG_ERROR([invalid tag name: $tagname]) -+ ;; -+ esac -+ -+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null -+ then -+ AC_MSG_ERROR([tag name \"$tagname\" already exists]) -+ fi -+ -+ # Update the list of available tags. -+ if test -n "$tagname"; then -+ echo appending configuration tag \"$tagname\" to $ofile -+ -+ case $tagname in -+ CXX) -+ if test -n "$CXX" && ( test "X$CXX" != "Xno" && -+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || -+ (test "X$CXX" != "Xg++"))) ; then -+ AC_LIBTOOL_LANG_CXX_CONFIG -+ else -+ tagname="" -+ fi -+ ;; -+ -+ F77) -+ if test -n "$F77" && test "X$F77" != "Xno"; then -+ AC_LIBTOOL_LANG_F77_CONFIG -+ else -+ tagname="" -+ fi -+ ;; -+ -+ GCJ) -+ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then -+ AC_LIBTOOL_LANG_GCJ_CONFIG -+ else -+ tagname="" -+ fi -+ ;; -+ -+ RC) -+ AC_LIBTOOL_LANG_RC_CONFIG -+ ;; -+ -+ *) -+ AC_MSG_ERROR([Unsupported tag name: $tagname]) -+ ;; -+ esac -+ -+ # Append the new tag name to the list of available tags. -+ if test -n "$tagname" ; then -+ available_tags="$available_tags $tagname" -+ fi -+ fi -+ done -+ IFS="$lt_save_ifs" -+ -+ # Now substitute the updated list of available tags. -+ if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then -+ mv "${ofile}T" "$ofile" -+ chmod +x "$ofile" -+ else -+ rm -f "${ofile}T" -+ AC_MSG_ERROR([unable to update list of available tagged configurations.]) -+ fi -+fi -+])# _LT_AC_TAGCONFIG -+ -+ -+# AC_LIBTOOL_DLOPEN -+# ----------------- -+# enable checks for dlopen support -+AC_DEFUN([AC_LIBTOOL_DLOPEN], -+ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) -+])# AC_LIBTOOL_DLOPEN -+ -+ -+# AC_LIBTOOL_WIN32_DLL -+# -------------------- -+# declare package support for building win32 DLLs -+AC_DEFUN([AC_LIBTOOL_WIN32_DLL], -+[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) -+])# AC_LIBTOOL_WIN32_DLL -+ -+ -+# AC_ENABLE_SHARED([DEFAULT]) -+# --------------------------- -+# implement the --enable-shared flag -+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -+AC_DEFUN([AC_ENABLE_SHARED], -+[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl -+AC_ARG_ENABLE([shared], -+ [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], -+ [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], -+ [p=${PACKAGE-default} -+ case $enableval in -+ yes) enable_shared=yes ;; -+ no) enable_shared=no ;; -+ *) -+ enable_shared=no -+ # Look at the argument we got. We use all the common list separators. -+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," -+ for pkg in $enableval; do -+ IFS="$lt_save_ifs" -+ if test "X$pkg" = "X$p"; then -+ enable_shared=yes -+ fi -+ done -+ IFS="$lt_save_ifs" -+ ;; -+ esac], -+ [enable_shared=]AC_ENABLE_SHARED_DEFAULT) -+])# AC_ENABLE_SHARED -+ -+ -+# AC_DISABLE_SHARED -+# ----------------- -+# set the default shared flag to --disable-shared -+AC_DEFUN([AC_DISABLE_SHARED], -+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -+AC_ENABLE_SHARED(no) -+])# AC_DISABLE_SHARED -+ -+ -+# AC_ENABLE_STATIC([DEFAULT]) -+# --------------------------- -+# implement the --enable-static flag -+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -+AC_DEFUN([AC_ENABLE_STATIC], -+[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl -+AC_ARG_ENABLE([static], -+ [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], -+ [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], -+ [p=${PACKAGE-default} -+ case $enableval in -+ yes) enable_static=yes ;; -+ no) enable_static=no ;; -+ *) -+ enable_static=no -+ # Look at the argument we got. We use all the common list separators. -+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," -+ for pkg in $enableval; do -+ IFS="$lt_save_ifs" -+ if test "X$pkg" = "X$p"; then -+ enable_static=yes -+ fi -+ done -+ IFS="$lt_save_ifs" -+ ;; -+ esac], -+ [enable_static=]AC_ENABLE_STATIC_DEFAULT) -+])# AC_ENABLE_STATIC -+ -+ -+# AC_DISABLE_STATIC -+# ----------------- -+# set the default static flag to --disable-static -+AC_DEFUN([AC_DISABLE_STATIC], -+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -+AC_ENABLE_STATIC(no) -+])# AC_DISABLE_STATIC -+ -+ -+# AC_ENABLE_FAST_INSTALL([DEFAULT]) -+# --------------------------------- -+# implement the --enable-fast-install flag -+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -+AC_DEFUN([AC_ENABLE_FAST_INSTALL], -+[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl -+AC_ARG_ENABLE([fast-install], -+ [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], -+ [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], -+ [p=${PACKAGE-default} -+ case $enableval in -+ yes) enable_fast_install=yes ;; -+ no) enable_fast_install=no ;; -+ *) -+ enable_fast_install=no -+ # Look at the argument we got. We use all the common list separators. -+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," -+ for pkg in $enableval; do -+ IFS="$lt_save_ifs" -+ if test "X$pkg" = "X$p"; then -+ enable_fast_install=yes -+ fi -+ done -+ IFS="$lt_save_ifs" -+ ;; -+ esac], -+ [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) -+])# AC_ENABLE_FAST_INSTALL -+ -+ -+# AC_DISABLE_FAST_INSTALL -+# ----------------------- -+# set the default to --disable-fast-install -+AC_DEFUN([AC_DISABLE_FAST_INSTALL], -+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -+AC_ENABLE_FAST_INSTALL(no) -+])# AC_DISABLE_FAST_INSTALL -+ -+ -+# AC_LIBTOOL_PICMODE([MODE]) -+# -------------------------- -+# implement the --with-pic flag -+# MODE is either `yes' or `no'. If omitted, it defaults to `both'. -+AC_DEFUN([AC_LIBTOOL_PICMODE], -+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -+pic_mode=ifelse($#,1,$1,default) -+])# AC_LIBTOOL_PICMODE -+ -+ -+# AC_PROG_EGREP -+# ------------- -+# This is predefined starting with Autoconf 2.54, so this conditional -+# definition can be removed once we require Autoconf 2.54 or later. -+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], -+[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], -+ [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 -+ then ac_cv_prog_egrep='grep -E' -+ else ac_cv_prog_egrep='egrep' -+ fi]) -+ EGREP=$ac_cv_prog_egrep -+ AC_SUBST([EGREP]) -+])]) -+ -+ -+# AC_PATH_TOOL_PREFIX -+# ------------------- -+# find a file program which can recognise shared library -+AC_DEFUN([AC_PATH_TOOL_PREFIX], -+[AC_REQUIRE([AC_PROG_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="ifelse([$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 <&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 -+ -+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 -+])# AC_PATH_TOOL_PREFIX -+ -+ -+# AC_PATH_MAGIC -+# ------------- -+# find a file program which can recognise a shared library -+AC_DEFUN([AC_PATH_MAGIC], -+[AC_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 -+ AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) -+ else -+ MAGIC_CMD=: -+ fi -+fi -+])# AC_PATH_MAGIC -+ -+ -+# AC_PROG_LD -+# ---------- -+# find the pathname to the GNU or non-GNU linker -+AC_DEFUN([AC_PROG_LD], -+[AC_ARG_WITH([gnu-ld], -+ [AC_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]) -+AC_REQUIRE([LT_AC_PROG_SED])dnl -+AC_REQUIRE([AC_PROG_CC])dnl -+AC_REQUIRE([AC_CANONICAL_HOST])dnl -+AC_REQUIRE([AC_CANONICAL_BUILD])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; 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 -+ ;; -+ -+gnu*) -+ 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]) 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 -+ ;; -+ -+interix3*) -+ # 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 Linux ELF. -+linux*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+netbsd*) -+ 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=unknown -+ ;; -+ -+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 -+ ;; -+ -+solaris*) -+ 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 -+ ;; -+ -+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+esac -+]) -+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 -+])# AC_DEPLIBS_CHECK_METHOD -+ -+ -+# AC_PROG_NM -+# ---------- -+# find the pathname to a BSD-compatible name lister -+AC_DEFUN([AC_PROG_NM], -+[AC_CACHE_CHECK([for BSD-compatible 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 -+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm -+fi]) -+NM="$lt_cv_path_NM" -+])# AC_PROG_NM -+ -+ -+# AC_CHECK_LIBM -+# ------------- -+# check for math library -+AC_DEFUN([AC_CHECK_LIBM], -+[AC_REQUIRE([AC_CANONICAL_HOST])dnl -+LIBM= -+case $host in -+*-*-beos* | *-*-cygwin* | *-*-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_CHECK_LIBM -+ -+ -+# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) -+# ----------------------------------- -+# sets LIBLTDL to the link flags for the libltdl convenience library and -+# LTDLINCL to the include flags for the libltdl header and adds -+# --enable-ltdl-convenience to the configure arguments. Note that -+# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, -+# it is assumed to be `libltdl'. LIBLTDL will be prefixed with -+# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/' -+# (note the single quotes!). If your package is not flat and you're not -+# using automake, define top_builddir and top_srcdir appropriately in -+# the Makefiles. -+AC_DEFUN([AC_LIBLTDL_CONVENIENCE], -+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -+ case $enable_ltdl_convenience in -+ no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; -+ "") enable_ltdl_convenience=yes -+ ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; -+ esac -+ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la -+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) -+ # For backwards non-gettext consistent compatibility... -+ INCLTDL="$LTDLINCL" -+])# AC_LIBLTDL_CONVENIENCE -+ -+ -+# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) -+# ----------------------------------- -+# sets LIBLTDL to the link flags for the libltdl installable library and -+# LTDLINCL to the include flags for the libltdl header and adds -+# --enable-ltdl-install to the configure arguments. Note that -+# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, -+# and an installed libltdl is not found, it is assumed to be `libltdl'. -+# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with -+# '${top_srcdir}/' (note the single quotes!). If your package is not -+# flat and you're not using automake, define top_builddir and top_srcdir -+# appropriately in the Makefiles. -+# In the future, this macro may have to be called after AC_PROG_LIBTOOL. -+AC_DEFUN([AC_LIBLTDL_INSTALLABLE], -+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl -+ AC_CHECK_LIB(ltdl, lt_dlinit, -+ [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], -+ [if test x"$enable_ltdl_install" = xno; then -+ AC_MSG_WARN([libltdl not installed, but installation disabled]) -+ else -+ enable_ltdl_install=yes -+ fi -+ ]) -+ if test x"$enable_ltdl_install" = x"yes"; then -+ ac_configure_args="$ac_configure_args --enable-ltdl-install" -+ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la -+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) -+ else -+ ac_configure_args="$ac_configure_args --enable-ltdl-install=no" -+ LIBLTDL="-lltdl" -+ LTDLINCL= -+ fi -+ # For backwards non-gettext consistent compatibility... -+ INCLTDL="$LTDLINCL" -+])# AC_LIBLTDL_INSTALLABLE -+ -+ -+# AC_LIBTOOL_CXX -+# -------------- -+# enable support for C++ libraries -+AC_DEFUN([AC_LIBTOOL_CXX], -+[AC_REQUIRE([_LT_AC_LANG_CXX]) -+])# AC_LIBTOOL_CXX -+ -+ -+# _LT_AC_LANG_CXX -+# --------------- -+AC_DEFUN([_LT_AC_LANG_CXX], -+[AC_REQUIRE([AC_PROG_CXX]) -+AC_REQUIRE([_LT_AC_PROG_CXXCPP]) -+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) -+])# _LT_AC_LANG_CXX -+ -+# _LT_AC_PROG_CXXCPP -+# ------------------ -+AC_DEFUN([_LT_AC_PROG_CXXCPP], -+[ -+AC_REQUIRE([AC_PROG_CXX]) -+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 -+fi -+])# _LT_AC_PROG_CXXCPP -+ -+# AC_LIBTOOL_F77 -+# -------------- -+# enable support for Fortran 77 libraries -+AC_DEFUN([AC_LIBTOOL_F77], -+[AC_REQUIRE([_LT_AC_LANG_F77]) -+])# AC_LIBTOOL_F77 -+ -+ -+# _LT_AC_LANG_F77 -+# --------------- -+AC_DEFUN([_LT_AC_LANG_F77], -+[AC_REQUIRE([AC_PROG_F77]) -+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) -+])# _LT_AC_LANG_F77 -+ -+ -+# AC_LIBTOOL_GCJ -+# -------------- -+# enable support for GCJ libraries -+AC_DEFUN([AC_LIBTOOL_GCJ], -+[AC_REQUIRE([_LT_AC_LANG_GCJ]) -+])# AC_LIBTOOL_GCJ -+ -+ -+# _LT_AC_LANG_GCJ -+# --------------- -+AC_DEFUN([_LT_AC_LANG_GCJ], -+[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], -+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], -+ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], -+ [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], -+ [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], -+ [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) -+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) -+])# _LT_AC_LANG_GCJ -+ -+ -+# AC_LIBTOOL_RC -+# ------------- -+# enable support for Windows resource files -+AC_DEFUN([AC_LIBTOOL_RC], -+[AC_REQUIRE([LT_AC_PROG_RC]) -+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) -+])# AC_LIBTOOL_RC -+ -+ -+# AC_LIBTOOL_LANG_C_CONFIG -+# ------------------------ -+# Ensure that the configuration vars for the C compiler are -+# suitably defined. Those variables are subsequently used by -+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. -+AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) -+AC_DEFUN([_LT_AC_LANG_C_CONFIG], -+[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_AC_TAGVAR(objext, $1)=$objext -+ -+# Code to be used in simple compile tests -+lt_simple_compile_test_code="int some_variable = 0;\n" -+ -+# Code to be used in simple link tests -+lt_simple_link_test_code='int main(){return(0);}\n' -+ -+_LT_AC_SYS_COMPILER -+ -+# save warnings/boilerplate of simple test code -+_LT_COMPILER_BOILERPLATE -+_LT_LINKER_BOILERPLATE -+ -+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) -+AC_LIBTOOL_PROG_COMPILER_PIC($1) -+AC_LIBTOOL_PROG_CC_C_O($1) -+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) -+AC_LIBTOOL_PROG_LD_SHLIBS($1) -+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) -+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) -+AC_LIBTOOL_SYS_LIB_STRIP -+AC_LIBTOOL_DLOPEN_SELF -+ -+# 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 -+ ;; -+ -+aix4* | aix5*) -+ 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]) -+ -+AC_LIBTOOL_CONFIG($1) -+ -+AC_LANG_POP -+CC="$lt_save_CC" -+])# AC_LIBTOOL_LANG_C_CONFIG -+ -+ -+# AC_LIBTOOL_LANG_CXX_CONFIG -+# -------------------------- -+# Ensure that the configuration vars for the C compiler are -+# suitably defined. Those variables are subsequently used by -+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. -+AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) -+AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], -+[AC_LANG_PUSH(C++) -+AC_REQUIRE([AC_PROG_CXX]) -+AC_REQUIRE([_LT_AC_PROG_CXXCPP]) -+ -+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no -+_LT_AC_TAGVAR(allow_undefined_flag, $1)= -+_LT_AC_TAGVAR(always_export_symbols, $1)=no -+_LT_AC_TAGVAR(archive_expsym_cmds, $1)= -+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= -+_LT_AC_TAGVAR(hardcode_direct, $1)=no -+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= -+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= -+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no -+_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -+_LT_AC_TAGVAR(hardcode_automatic, $1)=no -+_LT_AC_TAGVAR(module_cmds, $1)= -+_LT_AC_TAGVAR(module_expsym_cmds, $1)= -+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown -+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -+_LT_AC_TAGVAR(no_undefined_flag, $1)= -+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= -+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no -+ -+# Dependencies to place before and after the object being linked: -+_LT_AC_TAGVAR(predep_objects, $1)= -+_LT_AC_TAGVAR(postdep_objects, $1)= -+_LT_AC_TAGVAR(predeps, $1)= -+_LT_AC_TAGVAR(postdeps, $1)= -+_LT_AC_TAGVAR(compiler_lib_search_path, $1)= -+ -+# Source file extension for C++ test sources. -+ac_ext=cpp -+ -+# Object file extension for compiled C++ test sources. -+objext=o -+_LT_AC_TAGVAR(objext, $1)=$objext -+ -+# Code to be used in simple compile tests -+lt_simple_compile_test_code="int some_variable = 0;\n" -+ -+# Code to be used in simple link tests -+lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }\n' -+ -+# ltmain only uses $CC for tagged configurations so make sure $CC is set. -+_LT_AC_SYS_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_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++"} -+compiler=$CC -+_LT_AC_TAGVAR(compiler, $1)=$CC -+_LT_CC_BASENAME([$compiler]) -+ -+# We don't want -fno-exception wen compiling C++ code, so set the -+# no_builtin_flag separately -+if test "$GXX" = yes; then -+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' -+else -+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= -+fi -+ -+if test "$GXX" = yes; then -+ # Set up default GNU C++ configuration -+ -+ AC_PROG_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_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' -+ _LT_AC_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_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' -+ else -+ _LT_AC_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_AC_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 "\-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_AC_TAGVAR(ld_shlibs, $1)=yes -+case $host_os in -+ aix3*) -+ # FIXME: insert proper C++ library support -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ aix4* | aix5*) -+ 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]].*|aix5*) -+ 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_AC_TAGVAR(archive_cmds, $1)='' -+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes -+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' -+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes -+ -+ 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 -+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes -+ else -+ # We have old collect2 -+ _LT_AC_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_AC_TAGVAR(hardcode_minus_L, $1)=yes -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -+ _LT_AC_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 -+ -+ # It seems that -bexpall does not export symbols beginning with -+ # underscore (_), so it is better to generate a list of symbols to export. -+ _LT_AC_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_AC_TAGVAR(allow_undefined_flag, $1)='-berok' -+ # Determine the default libpath from the value encoded in an empty executable. -+ _LT_AC_SYS_LIBPATH_AIX -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" -+ -+ _LT_AC_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 echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" -+ else -+ if test "$host_cpu" = ia64; then -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" -+ _LT_AC_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_AC_SYS_LIBPATH_AIX -+ _LT_AC_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_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' -+ # Exported symbols can be pulled into shared objects from archives -+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' -+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes -+ # This is similar to how AIX traditionally builds its shared libraries. -+ _LT_AC_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_AC_TAGVAR(allow_undefined_flag, $1)=unsupported -+ # Joseph Beckenbach says some releases of gcc -+ # support --undefined. This deserves some investigation. FIXME -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ else -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ -+ chorus*) -+ case $cc_basename in -+ *) -+ # FIXME: insert proper C++ library support -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ esac -+ ;; -+ -+ cygwin* | mingw* | pw32*) -+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, -+ # as there is no search path for DLLs. -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported -+ _LT_AC_TAGVAR(always_export_symbols, $1)=no -+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes -+ -+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then -+ _LT_AC_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_AC_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_AC_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ darwin* | rhapsody*) -+ case $host_os in -+ rhapsody* | darwin1.[[012]]) -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' -+ ;; -+ *) # Darwin 1.3 on -+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' -+ else -+ case ${MACOSX_DEPLOYMENT_TARGET} in -+ 10.[[012]]) -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' -+ ;; -+ 10.*) -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' -+ ;; -+ esac -+ fi -+ ;; -+ esac -+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no -+ _LT_AC_TAGVAR(hardcode_direct, $1)=no -+ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' -+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes -+ -+ if test "$GXX" = yes ; then -+ lt_int_apple_cc_single_mod=no -+ output_verbose_link_cmd='echo' -+ if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then -+ lt_int_apple_cc_single_mod=yes -+ fi -+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' -+ else -+ _LT_AC_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' -+ fi -+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' -+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds -+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then -+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ else -+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "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~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ fi -+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ else -+ case $cc_basename in -+ xlc*) -+ output_verbose_link_cmd='echo' -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' -+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' -+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds -+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ ;; -+ *) -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ esac -+ fi -+ ;; -+ -+ dgux*) -+ case $cc_basename in -+ ec++*) -+ # FIXME: insert proper C++ library support -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ ghcx*) -+ # Green Hills C++ Compiler -+ # FIXME: insert proper C++ library support -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ *) -+ # FIXME: insert proper C++ library support -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ esac -+ ;; -+ freebsd[[12]]*) -+ # C++ shared libraries reported to be fairly broken before switch to ELF -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ freebsd-elf*) -+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no -+ ;; -+ freebsd* | kfreebsd*-gnu | dragonfly*) -+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF -+ # conventions -+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes -+ ;; -+ gnu*) -+ ;; -+ hpux9*) -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' -+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: -+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' -+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes -+ _LT_AC_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_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ aCC*) -+ _LT_AC_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) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' -+ ;; -+ *) -+ if test "$GXX" = yes; then -+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${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_AC_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ esac -+ ;; -+ hpux10*|hpux11*) -+ if test $with_gnu_ld = no; then -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' -+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: -+ -+ case $host_cpu in -+ hppa*64*|ia64*) -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' -+ ;; -+ *) -+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' -+ ;; -+ esac -+ fi -+ case $host_cpu in -+ hppa*64*|ia64*) -+ _LT_AC_TAGVAR(hardcode_direct, $1)=no -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ *) -+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes -+ _LT_AC_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_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ aCC*) -+ case $host_cpu in -+ hppa*64*) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -+ ;; -+ ia64*) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -+ ;; -+ *) -+ _LT_AC_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; echo $list' -+ ;; -+ *) -+ if test "$GXX" = yes; then -+ if test $with_gnu_ld = no; then -+ case $host_cpu in -+ hppa*64*) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -+ ;; -+ ia64*) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -+ ;; -+ *) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${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_AC_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ esac -+ ;; -+ interix3*) -+ _LT_AC_TAGVAR(hardcode_direct, $1)=no -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' -+ _LT_AC_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_AC_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_AC_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_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -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_AC_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_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ else -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' -+ fi -+ fi -+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes -+ ;; -+ esac -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: -+ ;; -+ linux*) -+ 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_AC_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_AC_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; echo $list' -+ -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' -+ _LT_AC_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_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' -+ ;; -+ icpc*) -+ # 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_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ _LT_AC_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_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ _LT_AC_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_AC_TAGVAR(archive_cmds_need_lc, $1)=no -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' -+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' -+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' -+ ;; -+ pgCC*) -+ # Portland Group C++ compiler -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' -+ _LT_AC_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' -+ -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' -+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' -+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' -+ ;; -+ cxx*) -+ # Compaq C++ -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ _LT_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' -+ _LT_AC_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=`echo $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; echo $list' -+ ;; -+ esac -+ ;; -+ lynxos*) -+ # FIXME: insert proper C++ library support -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ m88k*) -+ # FIXME: insert proper C++ library support -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ mvs*) -+ case $cc_basename in -+ cxx*) -+ # FIXME: insert proper C++ library support -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ *) -+ # FIXME: insert proper C++ library support -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ esac -+ ;; -+ netbsd*) -+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' -+ wlarc= -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' -+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes -+ _LT_AC_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::"' -+ ;; -+ openbsd2*) -+ # C++ shared libraries are fairly broken -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ openbsd*) -+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' -+ _LT_AC_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_AC_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_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' -+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' -+ fi -+ output_verbose_link_cmd='echo' -+ ;; -+ osf3*) -+ 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_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' -+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: -+ -+ # Archives containing C++ object files must be created using -+ # "CC -Bstatic", where "CC" is the KAI C++ compiler. -+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' -+ -+ ;; -+ RCC*) -+ # Rational C++ 2.4.1 -+ # FIXME: insert proper C++ library support -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ cxx*) -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' -+ -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -+ _LT_AC_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=`echo $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; echo $list' -+ ;; -+ *) -+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' -+ _LT_AC_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" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -+ _LT_AC_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 "\-L"' -+ -+ else -+ # FIXME: insert proper C++ library support -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ esac -+ ;; -+ 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_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' -+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: -+ -+ # Archives containing C++ object files must be created using -+ # the KAI C++ compiler. -+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' -+ ;; -+ RCC*) -+ # Rational C++ 2.4.1 -+ # FIXME: insert proper C++ library support -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ cxx*) -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' -+ _LT_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' -+ _LT_AC_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=`echo $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; echo $list' -+ ;; -+ *) -+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -+ _LT_AC_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 "\-L"' -+ -+ else -+ # FIXME: insert proper C++ library support -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ esac -+ ;; -+ psos*) -+ # FIXME: insert proper C++ library support -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ sunos4*) -+ case $cc_basename in -+ CC*) -+ # Sun C++ 4.x -+ # FIXME: insert proper C++ library support -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ lcc*) -+ # Lucid -+ # FIXME: insert proper C++ library support -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ *) -+ # FIXME: insert proper C++ library support -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ esac -+ ;; -+ solaris*) -+ case $cc_basename in -+ CC*) -+ # Sun C++ 4.2, 5.x and Centerline C++ -+ _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes -+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -+ _LT_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ case $host_os in -+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; -+ *) -+ # The C++ compiler is used as linker so we must use $wl -+ # flag to pass the commands to the underlying system -+ # linker. We must also pass each convience library through -+ # to the system linker between allextract/defaultextract. -+ # The C++ compiler will combine linker options so we -+ # cannot just pass the convience library names through -+ # without $wl. -+ # Supported since Solaris 2.6 (maybe 2.5.1?) -+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' -+ ;; -+ esac -+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes -+ -+ output_verbose_link_cmd='echo' -+ -+ # 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_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' -+ ;; -+ gcx*) -+ # Green Hills C++ Compiler -+ _LT_AC_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_AC_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_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' -+ if $CC --version | grep -v '^2\.7' > /dev/null; then -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' -+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ -+ $CC -shared -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 \"\-L\"" -+ else -+ # g++ 2.7 appears to require `-G' NOT `-shared' on this -+ # platform. -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' -+ _LT_AC_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 \"\-L\"" -+ fi -+ -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' -+ fi -+ ;; -+ esac -+ ;; -+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) -+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' -+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ runpath_var='LD_RUN_PATH' -+ -+ case $cc_basename in -+ CC*) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ *) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_AC_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. -+ # 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. -+ # So that behaviour is only enabled if SCOABSPATH is set to a -+ # non-empty value in the environment. Most likely only useful for -+ # creating official distributions of packages. -+ # This is a hack until libtool officially supports absolute path -+ # names for shared libraries. -+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' -+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' -+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' -+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes -+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' -+ runpath_var='LD_RUN_PATH' -+ -+ case $cc_basename in -+ CC*) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ *) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$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_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ *) -+ # FIXME: insert proper C++ library support -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ esac -+ ;; -+ vxworks*) -+ # FIXME: insert proper C++ library support -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ *) -+ # FIXME: insert proper C++ library support -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+esac -+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) -+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no -+ -+_LT_AC_TAGVAR(GCC, $1)="$GXX" -+_LT_AC_TAGVAR(LD, $1)="$LD" -+ -+AC_LIBTOOL_POSTDEP_PREDEP($1) -+AC_LIBTOOL_PROG_COMPILER_PIC($1) -+AC_LIBTOOL_PROG_CC_C_O($1) -+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) -+AC_LIBTOOL_PROG_LD_SHLIBS($1) -+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) -+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) -+ -+AC_LIBTOOL_CONFIG($1) -+ -+AC_LANG_POP -+CC=$lt_save_CC -+LDCXX=$LD -+LD=$lt_save_LD -+GCC=$lt_save_GCC -+with_gnu_ldcxx=$with_gnu_ld -+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 -+])# AC_LIBTOOL_LANG_CXX_CONFIG -+ -+# AC_LIBTOOL_POSTDEP_PREDEP([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. -+AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[ -+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... -+ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <> "$cfgfile" -+ifelse([$1], [], -+[#! $SHELL -+ -+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) -+# NOTE: Changes made to this file will be lost: look at ltmain.sh. -+# -+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 -+# Free Software Foundation, Inc. -+# -+# This file is part of GNU Libtool: -+# Originally by Gordon Matzigkeit , 1996 -+# -+# This program 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. -+# -+# This program 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 this program; if not, write to the Free Software -+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -+# -+# As a special exception to the GNU General Public License, if you -+# distribute this file as part of a program that contains a -+# configuration script generated by Autoconf, you may include it under -+# the same distribution terms that you use for the rest of that program. -+ -+# A sed program that does not truncate output. -+SED=$lt_SED -+ -+# Sed that helps us avoid accidentally triggering echo(1) options like -n. -+Xsed="$SED -e 1s/^X//" -+ -+# 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 -+ -+# The names of the tagged configurations supported by this script. -+available_tags= -+ -+# ### BEGIN LIBTOOL CONFIG], -+[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) -+ -+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -+ -+# Shell to use when invoking shell scripts. -+SHELL=$lt_SHELL -+ -+# Whether or not to build shared libraries. -+build_libtool_libs=$enable_shared -+ -+# Whether or not to build static libraries. -+build_old_libs=$enable_static -+ -+# Whether or not to add -lc for building shared libraries. -+build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) -+ -+# Whether or not to disallow shared libs when runtime libs are static -+allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) -+ -+# Whether or not to optimize for fast installation. -+fast_install=$enable_fast_install -+ -+# The host system. -+host_alias=$host_alias -+host=$host -+host_os=$host_os -+ -+# The build system. -+build_alias=$build_alias -+build=$build -+build_os=$build_os -+ -+# An echo program that does not interpret backslashes. -+echo=$lt_echo -+ -+# The archiver. -+AR=$lt_AR -+AR_FLAGS=$lt_AR_FLAGS -+ -+# A C compiler. -+LTCC=$lt_LTCC -+ -+# LTCC compiler flags. -+LTCFLAGS=$lt_LTCFLAGS -+ -+# A language-specific compiler. -+CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) -+ -+# Is the compiler the GNU C compiler? -+with_gcc=$_LT_AC_TAGVAR(GCC, $1) -+ -+gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\` -+gcc_ver=\`gcc -dumpversion\` -+ -+# An ERE matcher. -+EGREP=$lt_EGREP -+ -+# The linker used to build libraries. -+LD=$lt_[]_LT_AC_TAGVAR(LD, $1) -+ -+# Whether we need hard or soft links. -+LN_S=$lt_LN_S -+ -+# A BSD-compatible nm program. -+NM=$lt_NM -+ -+# A symbol stripping program -+STRIP=$lt_STRIP -+ -+# Used to examine libraries when file_magic_cmd begins "file" -+MAGIC_CMD=$MAGIC_CMD -+ -+# Used on cygwin: DLL creation program. -+DLLTOOL="$DLLTOOL" -+ -+# Used on cygwin: object dumper. -+OBJDUMP="$OBJDUMP" -+ -+# Used on cygwin: assembler. -+AS="$AS" -+ -+# The name of the directory that contains temporary libtool files. -+objdir=$objdir -+ -+# How to create reloadable object files. -+reload_flag=$lt_reload_flag -+reload_cmds=$lt_reload_cmds -+ -+# How to pass a linker flag through the compiler. -+wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) -+ -+# Object file suffix (normally "o"). -+objext="$ac_objext" -+ -+# Old archive suffix (normally "a"). -+libext="$libext" -+ -+# Shared library suffix (normally ".so"). -+shrext_cmds='$shrext_cmds' -+ -+# Executable file suffix (normally ""). -+exeext="$exeext" -+ -+# Additional compiler flags for building library objects. -+pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) -+pic_mode=$pic_mode -+ -+# What is the maximum length of a command? -+max_cmd_len=$lt_cv_sys_max_cmd_len -+ -+# Does compiler simultaneously support -c and -o options? -+compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) -+ -+# Must we lock files when doing compilation? -+need_locks=$lt_need_locks -+ -+# Do we need the lib prefix for modules? -+need_lib_prefix=$need_lib_prefix -+ -+# Do we need a version for libraries? -+need_version=$need_version -+ -+# Whether dlopen is supported. -+dlopen_support=$enable_dlopen -+ -+# Whether dlopen of programs is supported. -+dlopen_self=$enable_dlopen_self -+ -+# Whether dlopen of statically linked programs is supported. -+dlopen_self_static=$enable_dlopen_self_static -+ -+# Compiler flag to prevent dynamic linking. -+link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) -+ -+# Compiler flag to turn off builtin functions. -+no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -+ -+# Compiler flag to allow reflexive dlopens. -+export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) -+ -+# Compiler flag to generate shared objects directly from archives. -+whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) -+ -+# Compiler flag to generate thread-safe objects. -+thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) -+ -+# Library versioning type. -+version_type=$version_type -+ -+# Format of library name prefix. -+libname_spec=$lt_libname_spec -+ -+# 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. -+library_names_spec=$lt_library_names_spec -+ -+# The coded name of the library, if different from the real name. -+soname_spec=$lt_soname_spec -+ -+# Commands used to build and install an old-style archive. -+RANLIB=$lt_RANLIB -+old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) -+old_postinstall_cmds=$lt_old_postinstall_cmds -+old_postuninstall_cmds=$lt_old_postuninstall_cmds -+ -+# Create an old-style archive from a shared archive. -+old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) -+ -+# Create a temporary old-style archive to link instead of a shared archive. -+old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) -+ -+# Commands used to build and install a shared archive. -+archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) -+archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) -+postinstall_cmds=$lt_postinstall_cmds -+postuninstall_cmds=$lt_postuninstall_cmds -+ -+# Commands used to build a loadable module (assumed same as above if empty) -+module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) -+module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) -+ -+# Commands to strip libraries. -+old_striplib=$lt_old_striplib -+striplib=$lt_striplib -+ -+# Dependencies to place before the objects being linked to create a -+# shared library. -+predep_objects=\`echo $lt_[]_LT_AC_TAGVAR(predep_objects, $1) | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` -+ -+# Dependencies to place after the objects being linked to create a -+# shared library. -+postdep_objects=\`echo $lt_[]_LT_AC_TAGVAR(postdep_objects, $1) | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` -+ -+# Dependencies to place before the objects being linked to create a -+# shared library. -+predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) -+ -+# Dependencies to place after the objects being linked to create a -+# shared library. -+postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) -+ -+# The library search path used internally by the compiler when linking -+# a shared library. -+compiler_lib_search_path=\`echo $lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` -+ -+# Method to check whether dependent libraries are shared objects. -+deplibs_check_method=$lt_deplibs_check_method -+ -+# Command to use when deplibs_check_method == file_magic. -+file_magic_cmd=$lt_file_magic_cmd -+ -+# Flag that allows shared libraries with undefined symbols to be built. -+allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) -+ -+# Flag that forces no undefined symbols. -+no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) -+ -+# Commands used to finish a libtool library installation in a directory. -+finish_cmds=$lt_finish_cmds -+ -+# Same as above, but a single script fragment to be evaled but not shown. -+finish_eval=$lt_finish_eval -+ -+# Take the output of nm and produce a listing of raw symbols and C names. -+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe -+ -+# Transform the output of nm in a proper C declaration -+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl -+ -+# Transform the output of nm in a C name address pair -+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address -+ -+# This is the shared library runtime path variable. -+runpath_var=$runpath_var -+ -+# This is the shared library path variable. -+shlibpath_var=$shlibpath_var -+ -+# Is shlibpath searched before the hard-coded library search path? -+shlibpath_overrides_runpath=$shlibpath_overrides_runpath -+ -+# How to hardcode a shared library path into an executable. -+hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) -+ -+# Whether we should hardcode library paths into libraries. -+hardcode_into_libs=$hardcode_into_libs -+ -+# Flag to hardcode \$libdir into a binary during linking. -+# This must work even if \$libdir does not exist. -+hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) -+ -+# If ld is used when linking, flag to hardcode \$libdir into -+# a binary during linking. This must work even if \$libdir does -+# not exist. -+hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) -+ -+# Whether we need a single -rpath flag with a separated argument. -+hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) -+ -+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the -+# resulting binary. -+hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) -+ -+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -+# resulting binary. -+hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) -+ -+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -+# the resulting binary. -+hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) -+ -+# Set to yes if building a shared library automatically hardcodes DIR into the library -+# and all subsequent libraries and executables linked against it. -+hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) -+ -+# Variables whose values should be saved in libtool wrapper scripts and -+# restored at relink time. -+variables_saved_for_relink="$variables_saved_for_relink" -+ -+# Whether libtool must link a program against all its dependency libraries. -+link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) -+ -+# Compile-time system search path for libraries -+sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` -+ -+# Run-time system search path for libraries -+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec -+ -+# Fix the shell variable \$srcfile for the compiler. -+fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)" -+ -+# Set to yes if exported symbols are required. -+always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) -+ -+# The commands to list exported symbols. -+export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) -+ -+# The commands to extract the exported symbol list from a shared archive. -+extract_expsyms_cmds=$lt_extract_expsyms_cmds -+ -+# Symbols that should not be listed in the preloaded symbols. -+exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) -+ -+# Symbols that must always be exported. -+include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) -+ -+ifelse([$1],[], -+[# ### END LIBTOOL CONFIG], -+[# ### END LIBTOOL TAG CONFIG: $tagname]) -+ -+__EOF__ -+ -+ifelse([$1],[], [ -+ case $host_os in -+ aix3*) -+ cat <<\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 -+EOF -+ ;; -+ esac -+ -+ # 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) -+ -+ mv -f "$cfgfile" "$ofile" || \ -+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") -+ chmod +x "$ofile" -+]) -+else -+ # If there is no Makefile yet, we rely on a make rule to execute -+ # `config.status --recheck' to rerun these tests and create the -+ # libtool script then. -+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` -+ if test -f "$ltmain_in"; then -+ test -f Makefile && make "$ltmain" -+ fi -+fi -+])# AC_LIBTOOL_CONFIG -+ -+ -+# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) -+# ------------------------------------------- -+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], -+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl -+ -+_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= -+ -+if test "$GCC" = yes; then -+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' -+ -+ AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], -+ lt_cv_prog_compiler_rtti_exceptions, -+ [-fno-rtti -fno-exceptions], [], -+ [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -+fi -+])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI -+ -+ -+# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE -+# --------------------------------- -+AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], -+[AC_REQUIRE([AC_CANONICAL_HOST]) -+AC_REQUIRE([AC_PROG_NM]) -+AC_REQUIRE([AC_OBJEXT]) -+# 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]]*\)' -+ -+# Transform an extracted symbol line into a proper C declaration -+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \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\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" -+ -+# Define system-specific variables. -+case $host_os in -+aix*) -+ symcode='[[BCDT]]' -+ ;; -+cygwin* | mingw* | pw32*) -+ symcode='[[ABCDGISTW]]' -+ ;; -+hpux*) # Its linker distinguishes data from code symbols -+ if test "$host_cpu" = ia64; then -+ symcode='[[ABCDEGRST]]' -+ fi -+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" -+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" -+ ;; -+linux*) -+ if test "$host_cpu" = ia64; then -+ symcode='[[ABCDGIRSTW]]' -+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" -+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" -+ 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 -+ -+# 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 -+ -+# If we're using GNU nm, then use its standard symbol codes. -+case `$NM -V 2>&1` in -+*GNU* | *'with BFD'*) -+ symcode='[[ABCDGIRSTW]]' ;; -+esac -+ -+# Try without a prefix undercore, 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. -+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" -+ -+ # Check to see that the pipe works correctly. -+ pipe_works=no -+ -+ rm -f conftest* -+ cat > conftest.$ac_ext < $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 < conftest.$ac_ext -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+EOF -+ # Now generate the symbol file. -+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' -+ -+ cat <> conftest.$ac_ext -+#if defined (__STDC__) && __STDC__ -+# define lt_ptr_t void * -+#else -+# define lt_ptr_t char * -+# define const -+#endif -+ -+/* The mapping between symbol names and symbols. */ -+const struct { -+ const char *name; -+ lt_ptr_t address; -+} -+lt_preloaded_symbols[[]] = -+{ -+EOF -+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext -+ cat <<\EOF >> conftest.$ac_ext -+ {0, (lt_ptr_t) 0} -+}; -+ -+#ifdef __cplusplus -+} -+#endif -+EOF -+ # Now try linking the two files. -+ mv conftest.$ac_objext conftstm.$ac_objext -+ lt_save_LIBS="$LIBS" -+ lt_save_CFLAGS="$CFLAGS" -+ LIBS="conftstm.$ac_objext" -+ CFLAGS="$CFLAGS$_LT_AC_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_save_LIBS" -+ CFLAGS="$lt_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 -f 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 -+]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE -+ -+ -+# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) -+# --------------------------------------- -+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], -+[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= -+_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= -+_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= -+ -+AC_MSG_CHECKING([for $compiler option to produce PIC]) -+ ifelse([$1],[CXX],[ -+ # C++ specific cases for pic, static, wl, etc. -+ if test "$GXX" = yes; then -+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_AC_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_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ fi -+ ;; -+ amigaos*) -+ # 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_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' -+ ;; -+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) -+ # PIC is the default for these OSes. -+ ;; -+ mingw* | os2* | pw32*) -+ # 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). -+ _LT_AC_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_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' -+ ;; -+ *djgpp*) -+ # DJGPP does not support shared libraries at all -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= -+ ;; -+ interix3*) -+ # 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_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic -+ fi -+ ;; -+ hpux*) -+ # 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*) -+ ;; -+ *) -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' -+ ;; -+ esac -+ ;; -+ *) -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' -+ ;; -+ esac -+ else -+ case $host_os in -+ aix4* | aix5*) -+ # All AIX code is PIC. -+ if test "$host_cpu" = ia64; then -+ # AIX 5 now supports IA64 processor -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ else -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' -+ fi -+ ;; -+ chorus*) -+ case $cc_basename in -+ cxch68*) -+ # Green Hills C++ Compiler -+ # _LT_AC_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 -+ ;; -+ darwin*) -+ # PIC is the default on this platform -+ # Common symbols not allowed in MH_DYLIB files -+ case $cc_basename in -+ xlc*) -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' -+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ ;; -+ esac -+ ;; -+ dgux*) -+ case $cc_basename in -+ ec++*) -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -+ ;; -+ ghcx*) -+ # Green Hills C++ Compiler -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ freebsd* | kfreebsd*-gnu | dragonfly*) -+ # FreeBSD uses GNU C++ -+ ;; -+ hpux9* | hpux10* | hpux11*) -+ case $cc_basename in -+ CC*) -+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' -+ if test "$host_cpu" != ia64; then -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' -+ fi -+ ;; -+ aCC*) -+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' -+ case $host_cpu in -+ hppa*64*|ia64*) -+ # +Z the default -+ ;; -+ *) -+ _LT_AC_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_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' -+ # CC pic flag -KPIC is the default. -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ linux*) -+ case $cc_basename in -+ KCC*) -+ # KAI C++ Compiler -+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' -+ ;; -+ icpc* | ecpc*) -+ # Intel C++ -+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' -+ ;; -+ pgCC*) -+ # Portland Group C++ compiler. -+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' -+ _LT_AC_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_AC_TAGVAR(lt_prog_compiler_pic, $1)= -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ lynxos*) -+ ;; -+ m88k*) -+ ;; -+ mvs*) -+ case $cc_basename in -+ cxx*) -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ netbsd*) -+ ;; -+ osf3* | osf4* | osf5*) -+ case $cc_basename in -+ KCC*) -+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' -+ ;; -+ RCC*) -+ # Rational C++ 2.4.1 -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' -+ ;; -+ cxx*) -+ # Digital/Compaq C++ -+ _LT_AC_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_AC_TAGVAR(lt_prog_compiler_pic, $1)= -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ psos*) -+ ;; -+ solaris*) -+ case $cc_basename in -+ CC*) -+ # Sun C++ 4.2, 5.x and Centerline C++ -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' -+ ;; -+ gcx*) -+ # Green Hills C++ Compiler -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ sunos4*) -+ case $cc_basename in -+ CC*) -+ # Sun C++ 4.x -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ ;; -+ lcc*) -+ # Lucid -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ tandem*) -+ case $cc_basename in -+ NCC*) -+ # NonStop-UX NCC 3.20 -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) -+ case $cc_basename in -+ CC*) -+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ ;; -+ esac -+ ;; -+ vxworks*) -+ ;; -+ *) -+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no -+ ;; -+ esac -+ fi -+], -+[ -+ if test "$GCC" = yes; then -+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_AC_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_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ fi -+ ;; -+ -+ amigaos*) -+ # 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_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' -+ ;; -+ -+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) -+ # PIC is the default for these OSes. -+ ;; -+ -+ mingw* | pw32* | os2*) -+ # 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). -+ _LT_AC_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_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' -+ ;; -+ -+ interix3*) -+ # 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_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no -+ enable_shared=no -+ ;; -+ -+ sysv4*MP*) -+ if test -d /usr/nec; then -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic -+ fi -+ ;; -+ -+ hpux*) -+ # 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_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' -+ ;; -+ esac -+ ;; -+ -+ *) -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' -+ ;; -+ esac -+ else -+ # PORTME Check for flag to pass linker flags through the system compiler. -+ case $host_os in -+ aix*) -+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ if test "$host_cpu" = ia64; then -+ # AIX 5 now supports IA64 processor -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ else -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' -+ fi -+ ;; -+ darwin*) -+ # PIC is the default on this platform -+ # Common symbols not allowed in MH_DYLIB files -+ case $cc_basename in -+ xlc*) -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' -+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ ;; -+ esac -+ ;; -+ -+ mingw* | pw32* | os2*) -+ # 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). -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT' -+ ;; -+ -+ hpux9* | hpux10* | hpux11*) -+ _LT_AC_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_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' -+ ;; -+ esac -+ # Is there a better lt_prog_compiler_static that works with the bundled CC? -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' -+ ;; -+ -+ irix5* | irix6* | nonstopux*) -+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ # PIC (with -KPIC) is the default. -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' -+ ;; -+ -+ newsos6) -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ ;; -+ -+ linux*) -+ case $cc_basename in -+ icc* | ecc*) -+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' -+ ;; -+ pgcc* | pgf77* | pgf90* | pgf95*) -+ # Portland Group compilers (*not* the Pentium gcc compiler, -+ # which looks to be a dead project) -+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ ;; -+ ccc*) -+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ # All Alpha code is PIC. -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' -+ ;; -+ esac -+ ;; -+ -+ osf3* | osf4* | osf5*) -+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ # All OSF/1 code is PIC. -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' -+ ;; -+ -+ solaris*) -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ case $cc_basename in -+ f77* | f90* | f95*) -+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; -+ *) -+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; -+ esac -+ ;; -+ -+ sunos4*) -+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ ;; -+ -+ sysv4 | sysv4.2uw2* | sysv4.3*) -+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ ;; -+ -+ sysv4*MP*) -+ if test -d /usr/nec ;then -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ fi -+ ;; -+ -+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) -+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ ;; -+ -+ unicos*) -+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no -+ ;; -+ -+ uts4*) -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' -+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ ;; -+ -+ *) -+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no -+ ;; -+ esac -+ fi -+]) -+AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) -+ -+# -+# Check to make sure the PIC flag actually works. -+# -+if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then -+ AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], -+ _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1), -+ [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], -+ [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in -+ "" | " "*) ;; -+ *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; -+ esac], -+ [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= -+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -+fi -+case $host_os in -+ # For platforms which do not support PIC, -DPIC is meaningless: -+ *djgpp*) -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= -+ ;; -+ *) -+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" -+ ;; -+esac -+ -+# -+# Check to make sure the static flag actually works. -+# -+wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\" -+AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], -+ _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1), -+ $lt_tmp_static_flag, -+ [], -+ [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) -+]) -+ -+ -+# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) -+# ------------------------------------ -+# See if the linker supports building shared libraries. -+AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], -+[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -+ifelse([$1],[CXX],[ -+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' -+ case $host_os in -+ aix4* | aix5*) -+ # 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 -+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then -+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' -+ else -+ _LT_AC_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_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" -+ ;; -+ cygwin* | mingw*) -+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols' -+ ;; -+ *) -+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' -+ ;; -+ esac -+],[ -+ runpath_var= -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)= -+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no -+ _LT_AC_TAGVAR(archive_cmds, $1)= -+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)= -+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= -+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= -+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= -+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= -+ _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= -+ _LT_AC_TAGVAR(hardcode_direct, $1)=no -+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -+ _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown -+ _LT_AC_TAGVAR(hardcode_automatic, $1)=no -+ _LT_AC_TAGVAR(module_cmds, $1)= -+ _LT_AC_TAGVAR(module_expsym_cmds, $1)= -+ _LT_AC_TAGVAR(always_export_symbols, $1)=no -+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' -+ # include_expsyms should be a list of space-separated symbols to be *always* -+ # included in the symbol list -+ _LT_AC_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_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_" -+ # 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. -+ extract_expsyms_cmds= -+ # Just being paranoid about ensuring that cc_basename is set. -+ _LT_CC_BASENAME([$compiler]) -+ case $host_os in -+ cygwin* | mingw* | pw32*) -+ # 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 -+ ;; -+ esac -+ -+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes -+ if test "$with_gnu_ld" = 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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' -+ _LT_AC_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_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' -+ else -+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= -+ fi -+ supports_anon_versioning=no -+ case `$LD -v 2>/dev/null` in -+ *\ [[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 -+ aix3* | aix4* | aix5*) -+ # On AIX/PPC, the GNU linker is very broken -+ if test "$host_cpu" != ia64; then -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ cat <&2 -+ -+*** Warning: the GNU linker, at least up to release 2.9.1, 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 modify your PATH -+*** so that a non-GNU linker is found, and then restart. -+ -+EOF -+ fi -+ ;; -+ -+ amigaos*) -+ _LT_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes -+ -+ # Samuel A. Falvo II reports -+ # that the semantics of dynamic libraries on AmigaOS, at least up -+ # to version 4, is to share data among multiple programs linked -+ # with the same dynamic library. Since this doesn't match the -+ # behavior of shared libraries on other platforms, we can't use -+ # them. -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ -+ beos*) -+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported -+ # Joseph Beckenbach says some releases of gcc -+ # support --undefined. This deserves some investigation. FIXME -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ else -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ -+ cygwin* | mingw* | pw32*) -+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, -+ # as there is no search path for DLLs. -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported -+ _LT_AC_TAGVAR(always_export_symbols, $1)=no -+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes -+ _LT_AC_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' -+ -+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then -+ _LT_AC_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_AC_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_AC_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ -+ interix3*) -+ _LT_AC_TAGVAR(hardcode_direct, $1)=no -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' -+ _LT_AC_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_AC_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_AC_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' -+ ;; -+ -+ linux*) -+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then -+ tmp_addflag= -+ case $cc_basename,$host_cpu in -+ pgcc*) # Portland Group C compiler -+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' -+ tmp_addflag=' $pic_flag' -+ ;; -+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers -+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$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' ;; -+ esac -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ -+ if test $supports_anon_versioning = yes; then -+ _LT_AC_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 -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' -+ fi -+ else -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ -+ netbsd*) -+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' -+ wlarc= -+ else -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $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_AC_TAGVAR(ld_shlibs, $1)=no -+ cat <&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. -+ -+EOF -+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ _LT_AC_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_AC_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_AC_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 -+ ;; -+ *) -+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' -+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' -+ else -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ esac -+ ;; -+ -+ sunos4*) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' -+ wlarc= -+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ -+ *) -+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ _LT_AC_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_AC_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ esac -+ -+ if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then -+ runpath_var= -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= -+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= -+ _LT_AC_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_AC_TAGVAR(allow_undefined_flag, $1)=unsupported -+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes -+ _LT_AC_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_AC_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_AC_TAGVAR(hardcode_direct, $1)=unsupported -+ fi -+ ;; -+ -+ aix4* | aix5*) -+ 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 -+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then -+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' -+ else -+ _LT_AC_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]].*|aix5*) -+ 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_AC_TAGVAR(archive_cmds, $1)='' -+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes -+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' -+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes -+ -+ 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 -+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes -+ else -+ # We have old collect2 -+ _LT_AC_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_AC_TAGVAR(hardcode_minus_L, $1)=yes -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -+ _LT_AC_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 -+ -+ # It seems that -bexpall does not export symbols beginning with -+ # underscore (_), so it is better to generate a list of symbols to export. -+ _LT_AC_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_AC_TAGVAR(allow_undefined_flag, $1)='-berok' -+ # Determine the default libpath from the value encoded in an empty executable. -+ _LT_AC_SYS_LIBPATH_AIX -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" -+ _LT_AC_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 echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" -+ else -+ if test "$host_cpu" = ia64; then -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" -+ _LT_AC_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_AC_SYS_LIBPATH_AIX -+ _LT_AC_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_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' -+ # Exported symbols can be pulled into shared objects from archives -+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' -+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes -+ # This is similar to how AIX traditionally builds its shared libraries. -+ _LT_AC_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*) -+ _LT_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes -+ # see comment about different semantics on the GNU ld section -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ -+ bsdi[[45]]*) -+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic -+ ;; -+ -+ cygwin* | mingw* | pw32*) -+ # 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. -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' -+ _LT_AC_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_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' -+ # The linker will automatically build a .lib file if we build a DLL. -+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' -+ # FIXME: Should let the user specify the lib program. -+ _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs' -+ _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' -+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes -+ ;; -+ -+ darwin* | rhapsody*) -+ case $host_os in -+ rhapsody* | darwin1.[[012]]) -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' -+ ;; -+ *) # Darwin 1.3 on -+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' -+ else -+ case ${MACOSX_DEPLOYMENT_TARGET} in -+ 10.[[012]]) -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' -+ ;; -+ 10.*) -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' -+ ;; -+ esac -+ fi -+ ;; -+ esac -+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no -+ _LT_AC_TAGVAR(hardcode_direct, $1)=no -+ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' -+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes -+ if test "$GCC" = yes ; then -+ output_verbose_link_cmd='echo' -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' -+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' -+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds -+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ else -+ case $cc_basename in -+ xlc*) -+ output_verbose_link_cmd='echo' -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' -+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' -+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds -+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ ;; -+ *) -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ esac -+ fi -+ ;; -+ -+ dgux*) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ -+ freebsd1*) -+ _LT_AC_TAGVAR(ld_shlibs, $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_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' -+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ -+ # Unfortunately, older versions of FreeBSD 2 do not have this feature. -+ freebsd2*) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' -+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes -+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ -+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries. -+ freebsd* | kfreebsd*-gnu | dragonfly*) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' -+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ -+ hpux9*) -+ if test "$GCC" = yes; then -+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${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_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' -+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: -+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes -+ -+ # hardcode_minus_L: Not really in the search PATH, -+ # but as the default location of the library. -+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes -+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' -+ ;; -+ -+ hpux10*) -+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ _LT_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' -+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: -+ -+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes -+ _LT_AC_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_AC_TAGVAR(hardcode_minus_L, $1)=yes -+ fi -+ ;; -+ -+ hpux11*) -+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then -+ case $host_cpu in -+ hppa*64*) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ ia64*) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ *) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ esac -+ else -+ case $host_cpu in -+ hppa*64*) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ ia64*) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ *) -+ _LT_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' -+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: -+ -+ case $host_cpu in -+ hppa*64*|ia64*) -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' -+ _LT_AC_TAGVAR(hardcode_direct, $1)=no -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ *) -+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes -+ _LT_AC_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_AC_TAGVAR(hardcode_minus_L, $1)=yes -+ ;; -+ esac -+ fi -+ ;; -+ -+ irix5* | irix6* | nonstopux*) -+ if test "$GCC" = yes; then -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ else -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' -+ fi -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: -+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes -+ ;; -+ -+ netbsd*) -+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out -+ else -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF -+ fi -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' -+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ -+ newsos6) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ -+ openbsd*) -+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' -+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' -+ else -+ case $host_os in -+ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' -+ ;; -+ *) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' -+ ;; -+ esac -+ fi -+ ;; -+ -+ os2*) -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported -+ _LT_AC_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_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' -+ ;; -+ -+ osf3*) -+ if test "$GCC" = yes; then -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ else -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' -+ fi -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: -+ ;; -+ -+ osf4* | osf5*) # as osf3* with the addition of -msym flag -+ if test "$GCC" = yes; then -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -+ else -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' -+ _LT_AC_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~ -+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' -+ fi -+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: -+ ;; -+ -+ solaris*) -+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' -+ if test "$GCC" = yes; then -+ wlarc='${wl}' -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ -+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' -+ else -+ wlarc='' -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ _LT_AC_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' -+ fi -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ case $host_os in -+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; -+ *) -+ # The compiler driver will combine linker options so we -+ # cannot just pass the convience library names through -+ # without $wl, iff we do not link with $LD. -+ # Luckily, gcc supports the same syntax we need for Sun Studio. -+ # Supported since Solaris 2.6 (maybe 2.5.1?) -+ case $wlarc in -+ '') -+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; -+ *) -+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; -+ esac ;; -+ esac -+ _LT_AC_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_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' -+ fi -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes -+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ -+ sysv4) -+ case $host_vendor in -+ sni) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? -+ ;; -+ siemens) -+ ## LD is ld it makes a PLAMLIB -+ ## CC just makes a GrossModule. -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' -+ _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' -+ _LT_AC_TAGVAR(hardcode_direct, $1)=no -+ ;; -+ motorola) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie -+ ;; -+ esac -+ runpath_var='LD_RUN_PATH' -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ -+ sysv4.3*) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' -+ ;; -+ -+ sysv4*MP*) -+ if test -d /usr/nec; then -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ runpath_var=LD_RUN_PATH -+ hardcode_runpath_var=yes -+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes -+ fi -+ ;; -+ -+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7*) -+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' -+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ runpath_var='LD_RUN_PATH' -+ -+ if test "$GCC" = yes; then -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_AC_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_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' -+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' -+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' -+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes -+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' -+ runpath_var='LD_RUN_PATH' -+ -+ if test "$GCC" = yes; then -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ fi -+ ;; -+ -+ uts4*) -+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ -+ *) -+ _LT_AC_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ esac -+ fi -+]) -+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) -+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no -+ -+# -+# Do we need to explicitly link libc? -+# -+case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in -+x|xyes) -+ # Assume -lc should be added -+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes -+ -+ if test "$enable_shared" = yes && test "$GCC" = yes; then -+ case $_LT_AC_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_MSG_CHECKING([whether -lc should be explicitly linked in]) -+ $rm conftest* -+ printf "$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_AC_TAGVAR(lt_prog_compiler_wl, $1) -+ pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) -+ compiler_flags=-v -+ linker_flags=-v -+ verstring= -+ output_objdir=. -+ libname=conftest -+ lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)= -+ if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) -+ then -+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no -+ else -+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes -+ fi -+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag -+ else -+ cat conftest.err 1>&5 -+ fi -+ $rm conftest* -+ AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) -+ ;; -+ esac -+ fi -+ ;; -+esac -+])# AC_LIBTOOL_PROG_LD_SHLIBS -+ -+ -+# _LT_AC_FILE_LTDLL_C -+# ------------------- -+# Be careful that the start marker always follows a newline. -+AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ -+# /* ltdll.c starts here */ -+# #define WIN32_LEAN_AND_MEAN -+# #include -+# #undef WIN32_LEAN_AND_MEAN -+# #include -+# -+# #ifndef __CYGWIN__ -+# # ifdef __CYGWIN32__ -+# # define __CYGWIN__ __CYGWIN32__ -+# # endif -+# #endif -+# -+# #ifdef __cplusplus -+# extern "C" { -+# #endif -+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); -+# #ifdef __cplusplus -+# } -+# #endif -+# -+# #ifdef __CYGWIN__ -+# #include -+# DECLARE_CYGWIN_DLL( DllMain ); -+# #endif -+# HINSTANCE __hDllInstance_base; -+# -+# BOOL APIENTRY -+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) -+# { -+# __hDllInstance_base = hInst; -+# return TRUE; -+# } -+# /* ltdll.c ends here */ -+])# _LT_AC_FILE_LTDLL_C -+ -+ -+# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) -+# --------------------------------- -+AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) -+ -+ -+# old names -+AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) -+AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -+AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -+AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) -+AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) -+AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) -+AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) -+ -+# This is just to silence aclocal about the macro not being used -+ifelse([AC_DISABLE_FAST_INSTALL]) -+ -+AC_DEFUN([LT_AC_PROG_GCJ], -+[AC_CHECK_TOOL(GCJ, gcj, no) -+ test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" -+ AC_SUBST(GCJFLAGS) -+]) -+ -+AC_DEFUN([LT_AC_PROG_RC], -+[AC_CHECK_TOOL(RC, windres, no) -+]) -+ -+# 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. # -+# LT_AC_PROG_SED -+# -------------- -+# Check for a fully-functional sed program, that truncates -+# as few characters as possible. Prefer GNU sed if found. -+AC_DEFUN([LT_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]) -+]) -+ -+# Copyright (C) 2002, 2003, 2005 Free Software Foundation, Inc. -+# -+# 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. -+ -+# AM_AUTOMAKE_VERSION(VERSION) -+# ---------------------------- -+# Automake X.Y traces this macro to ensure aclocal.m4 has been -+# generated from the m4 files accompanying Automake X.Y. -+AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version="1.9"]) -+ -+# AM_SET_CURRENT_AUTOMAKE_VERSION -+# ------------------------------- -+# Call AM_AUTOMAKE_VERSION so it can be traced. -+# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. -+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -+ [AM_AUTOMAKE_VERSION([1.9.6])]) -+ -+# AM_AUX_DIR_EXPAND -*- Autoconf -*- -+ -+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -+# -+# 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. -+ -+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -+# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -+# `$srcdir', `$srcdir/..', or `$srcdir/../..'. -+# -+# Of course, Automake must honor this variable whenever it calls a -+# tool from the auxiliary directory. The problem is that $srcdir (and -+# therefore $ac_aux_dir as well) can be either absolute or relative, -+# depending on how configure is run. This is pretty annoying, since -+# it makes $ac_aux_dir quite unusable in subdirectories: in the top -+# source directory, any form will work fine, but in subdirectories a -+# relative path needs to be adjusted first. -+# -+# $ac_aux_dir/missing -+# fails when called from a subdirectory if $ac_aux_dir is relative -+# $top_srcdir/$ac_aux_dir/missing -+# fails if $ac_aux_dir is absolute, -+# fails when called from a subdirectory in a VPATH build with -+# a relative $ac_aux_dir -+# -+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -+# are both prefixed by $srcdir. In an in-source build this is usually -+# harmless because $srcdir is `.', but things will broke when you -+# start a VPATH build or use an absolute $srcdir. -+# -+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -+# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -+# and then we would define $MISSING as -+# MISSING="\${SHELL} $am_aux_dir/missing" -+# This will work as long as MISSING is not called from configure, because -+# unfortunately $(top_srcdir) has no meaning in configure. -+# However there are other variables, like CC, which are often used in -+# configure, and could therefore not use this "fixed" $ac_aux_dir. -+# -+# Another solution, used here, is to always expand $ac_aux_dir to an -+# absolute PATH. The drawback is that using absolute paths prevent a -+# configured tree to be moved without reconfiguration. -+ -+AC_DEFUN([AM_AUX_DIR_EXPAND], -+[dnl Rely on autoconf to set up CDPATH properly. -+AC_PREREQ([2.50])dnl -+# expand $ac_aux_dir to an absolute path -+am_aux_dir=`cd $ac_aux_dir && pwd` -+]) -+ -+# AM_CONDITIONAL -*- Autoconf -*- -+ -+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005 -+# Free Software Foundation, Inc. -+# -+# 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. -+ -+# serial 7 -+ -+# AM_CONDITIONAL(NAME, SHELL-CONDITION) -+# ------------------------------------- -+# Define a conditional. -+AC_DEFUN([AM_CONDITIONAL], -+[AC_PREREQ(2.52)dnl -+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], -+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -+AC_SUBST([$1_TRUE]) -+AC_SUBST([$1_FALSE]) -+if $2; then -+ $1_TRUE= -+ $1_FALSE='#' -+else -+ $1_TRUE='#' -+ $1_FALSE= -+fi -+AC_CONFIG_COMMANDS_PRE( -+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then -+ AC_MSG_ERROR([[conditional "$1" was never defined. -+Usually this means the macro was only invoked conditionally.]]) -+fi])]) -+ -+ -+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 -+# Free Software Foundation, Inc. -+# -+# 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. -+ -+# serial 8 -+ -+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be -+# written in clear, in which case automake, when reading aclocal.m4, -+# will think it sees a *use*, and therefore will trigger all it's -+# C support machinery. Also note that it means that autoscan, seeing -+# CC etc. in the Makefile, will ask for an AC_PROG_CC use... -+ -+ -+# _AM_DEPENDENCIES(NAME) -+# ---------------------- -+# See how the compiler implements dependency checking. -+# NAME is "CC", "CXX", "GCJ", or "OBJC". -+# We try a few techniques and use that to set a single cache variable. -+# -+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -+# dependency, and given that the user is not expected to run this macro, -+# just rely on AC_PROG_CC. -+AC_DEFUN([_AM_DEPENDENCIES], -+[AC_REQUIRE([AM_SET_DEPDIR])dnl -+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -+AC_REQUIRE([AM_MAKE_INCLUDE])dnl -+AC_REQUIRE([AM_DEP_TRACK])dnl -+ -+ifelse([$1], CC, [depcc="$CC" am_compiler_list=], -+ [$1], CXX, [depcc="$CXX" am_compiler_list=], -+ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], -+ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], -+ [depcc="$$1" am_compiler_list=]) -+ -+AC_CACHE_CHECK([dependency style of $depcc], -+ [am_cv_$1_dependencies_compiler_type], -+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then -+ # We make a subdir and do the tests there. Otherwise we can end up -+ # making bogus files that we don't know about and never remove. For -+ # instance it was reported that on HP-UX the gcc test will end up -+ # making a dummy file named `D' -- because `-MD' means `put the output -+ # in D'. -+ mkdir conftest.dir -+ # Copy depcomp to subdir because otherwise we won't find it if we're -+ # using a relative directory. -+ cp "$am_depcomp" conftest.dir -+ cd conftest.dir -+ # We will build objects and dependencies in a subdirectory because -+ # it helps to detect inapplicable dependency modes. For instance -+ # both Tru64's cc and ICC support -MD to output dependencies as a -+ # side effect of compilation, but ICC will put the dependencies in -+ # the current directory while Tru64 will put them in the object -+ # directory. -+ mkdir sub -+ -+ am_cv_$1_dependencies_compiler_type=none -+ if test "$am_compiler_list" = ""; then -+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` -+ fi -+ for depmode in $am_compiler_list; do -+ # Setup a source with many dependencies, because some compilers -+ # like to wrap large dependency lists on column 80 (with \), and -+ # we should not choose a depcomp mode which is confused by this. -+ # -+ # We need to recreate these files for each test, as the compiler may -+ # overwrite some of them when testing with obscure command lines. -+ # This happens at least with the AIX C compiler. -+ : > sub/conftest.c -+ for i in 1 2 3 4 5 6; do -+ echo '#include "conftst'$i'.h"' >> sub/conftest.c -+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with -+ # Solaris 8's {/usr,}/bin/sh. -+ touch sub/conftst$i.h -+ done -+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf -+ -+ case $depmode in -+ nosideeffect) -+ # after this tag, mechanisms are not by side-effect, so they'll -+ # only be used when explicitly requested -+ if test "x$enable_dependency_tracking" = xyes; then -+ continue -+ else -+ break -+ fi -+ ;; -+ none) break ;; -+ esac -+ # We check with `-c' and `-o' for the sake of the "dashmstdout" -+ # mode. It turns out that the SunPro C++ compiler does not properly -+ # handle `-M -o', and we need to detect this. -+ if depmode=$depmode \ -+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ -+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ -+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ -+ >/dev/null 2>conftest.err && -+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && -+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && -+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then -+ # icc doesn't choke on unknown options, it will just issue warnings -+ # or remarks (even with -Werror). So we grep stderr for any message -+ # that says an option was ignored or not supported. -+ # When given -MP, icc 7.0 and 7.1 complain thusly: -+ # icc: Command line warning: ignoring option '-M'; no argument required -+ # The diagnosis changed in icc 8.0: -+ # icc: Command line remark: option '-MP' not supported -+ if (grep 'ignoring option' conftest.err || -+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else -+ am_cv_$1_dependencies_compiler_type=$depmode -+ break -+ fi -+ fi -+ done -+ -+ cd .. -+ rm -rf conftest.dir -+else -+ am_cv_$1_dependencies_compiler_type=none -+fi -+]) -+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -+AM_CONDITIONAL([am__fastdep$1], [ -+ test "x$enable_dependency_tracking" != xno \ -+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -+]) -+ -+ -+# AM_SET_DEPDIR -+# ------------- -+# Choose a directory name for dependency files. -+# This macro is AC_REQUIREd in _AM_DEPENDENCIES -+AC_DEFUN([AM_SET_DEPDIR], -+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -+]) -+ -+ -+# AM_DEP_TRACK -+# ------------ -+AC_DEFUN([AM_DEP_TRACK], -+[AC_ARG_ENABLE(dependency-tracking, -+[ --disable-dependency-tracking speeds up one-time build -+ --enable-dependency-tracking do not reject slow dependency extractors]) -+if test "x$enable_dependency_tracking" != xno; then -+ am_depcomp="$ac_aux_dir/depcomp" -+ AMDEPBACKSLASH='\' -+fi -+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -+AC_SUBST([AMDEPBACKSLASH]) -+]) -+ -+# Generate code to set up dependency tracking. -*- Autoconf -*- -+ -+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 -+# Free Software Foundation, Inc. -+# -+# 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. -+ -+#serial 3 -+ -+# _AM_OUTPUT_DEPENDENCY_COMMANDS -+# ------------------------------ -+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -+[for mf in $CONFIG_FILES; do -+ # Strip MF so we end up with the name of the file. -+ mf=`echo "$mf" | sed -e 's/:.*$//'` -+ # Check whether this is an Automake generated Makefile or not. -+ # We used to match only the files named `Makefile.in', but -+ # some people rename them; so instead we look at the file content. -+ # Grep'ing the first line is not enough: some people post-process -+ # each Makefile.in and add a new line on top of each file to say so. -+ # So let's grep whole file. -+ if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then -+ dirpart=`AS_DIRNAME("$mf")` -+ else -+ continue -+ fi -+ # Extract the definition of DEPDIR, am__include, and am__quote -+ # from the Makefile without running `make'. -+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` -+ test -z "$DEPDIR" && continue -+ am__include=`sed -n 's/^am__include = //p' < "$mf"` -+ test -z "am__include" && continue -+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"` -+ # When using ansi2knr, U may be empty or an underscore; expand it -+ U=`sed -n 's/^U = //p' < "$mf"` -+ # Find all dependency output files, they are included files with -+ # $(DEPDIR) in their names. We invoke sed twice because it is the -+ # simplest approach to changing $(DEPDIR) to its actual value in the -+ # expansion. -+ for file in `sed -n " -+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ -+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do -+ # Make sure the directory exists. -+ test -f "$dirpart/$file" && continue -+ fdir=`AS_DIRNAME(["$file"])` -+ AS_MKDIR_P([$dirpart/$fdir]) -+ # echo "creating $dirpart/$file" -+ echo '# dummy' > "$dirpart/$file" -+ done -+done -+])# _AM_OUTPUT_DEPENDENCY_COMMANDS -+ -+ -+# AM_OUTPUT_DEPENDENCY_COMMANDS -+# ----------------------------- -+# This macro should only be invoked once -- use via AC_REQUIRE. -+# -+# This code is only required when automatic dependency tracking -+# is enabled. FIXME. This creates each `.P' file that we will -+# need in order to bootstrap the dependency handling code. -+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -+[AC_CONFIG_COMMANDS([depfiles], -+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], -+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -+]) -+ -+# Do all the work for Automake. -*- Autoconf -*- -+ -+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -+# Free Software Foundation, Inc. -+# -+# 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. -+ -+# serial 12 -+ -+# This macro actually does too much. Some checks are only needed if -+# your package does certain things. But this isn't really a big deal. -+ -+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -+# AM_INIT_AUTOMAKE([OPTIONS]) -+# ----------------------------------------------- -+# The call with PACKAGE and VERSION arguments is the old style -+# call (pre autoconf-2.50), which is being phased out. PACKAGE -+# and VERSION should now be passed to AC_INIT and removed from -+# the call to AM_INIT_AUTOMAKE. -+# We support both call styles for the transition. After -+# the next Automake release, Autoconf can make the AC_INIT -+# arguments mandatory, and then we can depend on a new Autoconf -+# release and drop the old call support. -+AC_DEFUN([AM_INIT_AUTOMAKE], -+[AC_PREREQ([2.58])dnl -+dnl Autoconf wants to disallow AM_ names. We explicitly allow -+dnl the ones we care about. -+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -+AC_REQUIRE([AC_PROG_INSTALL])dnl -+# test to see if srcdir already configured -+if test "`cd $srcdir && pwd`" != "`pwd`" && -+ test -f $srcdir/config.status; then -+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) -+fi -+ -+# test whether we have cygpath -+if test -z "$CYGPATH_W"; then -+ if (cygpath --version) >/dev/null 2>/dev/null; then -+ CYGPATH_W='cygpath -w' -+ else -+ CYGPATH_W=echo -+ fi -+fi -+AC_SUBST([CYGPATH_W]) -+ -+# Define the identity of the package. -+dnl Distinguish between old-style and new-style calls. -+m4_ifval([$2], -+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl -+ AC_SUBST([PACKAGE], [$1])dnl -+ AC_SUBST([VERSION], [$2])], -+[_AM_SET_OPTIONS([$1])dnl -+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl -+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl -+ -+_AM_IF_OPTION([no-define],, -+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) -+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl -+ -+# Some tools Automake needs. -+AC_REQUIRE([AM_SANITY_CHECK])dnl -+AC_REQUIRE([AC_ARG_PROGRAM])dnl -+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -+AM_MISSING_PROG(AUTOCONF, autoconf) -+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -+AM_MISSING_PROG(AUTOHEADER, autoheader) -+AM_MISSING_PROG(MAKEINFO, makeinfo) -+AM_PROG_INSTALL_SH -+AM_PROG_INSTALL_STRIP -+AC_REQUIRE([AM_PROG_MKDIR_P])dnl -+# We need awk for the "check" target. The system "awk" is bad on -+# some platforms. -+AC_REQUIRE([AC_PROG_AWK])dnl -+AC_REQUIRE([AC_PROG_MAKE_SET])dnl -+AC_REQUIRE([AM_SET_LEADING_DOT])dnl -+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], -+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], -+ [_AM_PROG_TAR([v7])])]) -+_AM_IF_OPTION([no-dependencies],, -+[AC_PROVIDE_IFELSE([AC_PROG_CC], -+ [_AM_DEPENDENCIES(CC)], -+ [define([AC_PROG_CC], -+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl -+AC_PROVIDE_IFELSE([AC_PROG_CXX], -+ [_AM_DEPENDENCIES(CXX)], -+ [define([AC_PROG_CXX], -+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -+]) -+]) -+ -+ -+# When config.status generates a header, we must update the stamp-h file. -+# This file resides in the same directory as the config header -+# that is generated. The stamp files are numbered to have different names. -+ -+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -+# loop where config.status creates the headers, so we can generate -+# our stamp files there. -+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -+[# Compute $1's index in $config_headers. -+_am_stamp_count=1 -+for _am_header in $config_headers :; do -+ case $_am_header in -+ $1 | $1:* ) -+ break ;; -+ * ) -+ _am_stamp_count=`expr $_am_stamp_count + 1` ;; -+ esac -+done -+echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count]) -+ -+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -+# -+# 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. -+ -+# AM_PROG_INSTALL_SH -+# ------------------ -+# Define $install_sh. -+AC_DEFUN([AM_PROG_INSTALL_SH], -+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -+install_sh=${install_sh-"$am_aux_dir/install-sh"} -+AC_SUBST(install_sh)]) -+ -+# Copyright (C) 2003, 2005 Free Software Foundation, Inc. -+# -+# 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. -+ -+# serial 2 -+ -+# Check whether the underlying file-system supports filenames -+# with a leading dot. For instance MS-DOS doesn't. -+AC_DEFUN([AM_SET_LEADING_DOT], -+[rm -rf .tst 2>/dev/null -+mkdir .tst 2>/dev/null -+if test -d .tst; then -+ am__leading_dot=. -+else -+ am__leading_dot=_ -+fi -+rmdir .tst 2>/dev/null -+AC_SUBST([am__leading_dot])]) -+ -+# Check to see how 'make' treats includes. -*- Autoconf -*- -+ -+# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. -+# -+# 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. -+ -+# serial 3 -+ -+# AM_MAKE_INCLUDE() -+# ----------------- -+# Check to see how make treats includes. -+AC_DEFUN([AM_MAKE_INCLUDE], -+[am_make=${MAKE-make} -+cat > confinc << 'END' -+am__doit: -+ @echo done -+.PHONY: am__doit -+END -+# If we don't find an include directive, just comment out the code. -+AC_MSG_CHECKING([for style of include used by $am_make]) -+am__include="#" -+am__quote= -+_am_result=none -+# First try GNU make style include. -+echo "include confinc" > confmf -+# We grep out `Entering directory' and `Leaving directory' -+# messages which can occur if `w' ends up in MAKEFLAGS. -+# In particular we don't look at `^make:' because GNU make might -+# be invoked under some other name (usually "gmake"), in which -+# case it prints its new name instead of `make'. -+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then -+ am__include=include -+ am__quote= -+ _am_result=GNU -+fi -+# Now try BSD make style include. -+if test "$am__include" = "#"; then -+ echo '.include "confinc"' > confmf -+ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then -+ am__include=.include -+ am__quote="\"" -+ _am_result=BSD -+ fi -+fi -+AC_SUBST([am__include]) -+AC_SUBST([am__quote]) -+AC_MSG_RESULT([$_am_result]) -+rm -f confinc confmf -+]) -+ -+# Copyright (C) 1999, 2000, 2001, 2003, 2005 Free Software Foundation, Inc. -+# -+# 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. -+ -+# serial 3 -+ -+# AM_PROG_CC_C_O -+# -------------- -+# Like AC_PROG_CC_C_O, but changed for automake. -+AC_DEFUN([AM_PROG_CC_C_O], -+[AC_REQUIRE([AC_PROG_CC_C_O])dnl -+AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -+# FIXME: we rely on the cache variable name because -+# there is no other way. -+set dummy $CC -+ac_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']` -+if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then -+ # Losing compiler, so override with the script. -+ # FIXME: It is wrong to rewrite CC. -+ # But if we don't then we get into trouble of one sort or another. -+ # A longer-term fix would be to have automake use am__CC in this case, -+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" -+ CC="$am_aux_dir/compile $CC" -+fi -+]) -+ -+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -+ -+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2005 -+# Free Software Foundation, Inc. -+# -+# 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. -+ -+# serial 4 -+ -+# AM_MISSING_PROG(NAME, PROGRAM) -+# ------------------------------ -+AC_DEFUN([AM_MISSING_PROG], -+[AC_REQUIRE([AM_MISSING_HAS_RUN]) -+$1=${$1-"${am_missing_run}$2"} -+AC_SUBST($1)]) -+ -+ -+# AM_MISSING_HAS_RUN -+# ------------------ -+# Define MISSING if not defined so far and test if it supports --run. -+# If it does, set am_missing_run to use it, otherwise, to nothing. -+AC_DEFUN([AM_MISSING_HAS_RUN], -+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" -+# Use eval to expand $SHELL -+if eval "$MISSING --run true"; then -+ am_missing_run="$MISSING --run " -+else -+ am_missing_run= -+ AC_MSG_WARN([`missing' script is too old or missing]) -+fi -+]) -+ -+# Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. -+# -+# 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. -+ -+# AM_PROG_MKDIR_P -+# --------------- -+# Check whether `mkdir -p' is supported, fallback to mkinstalldirs otherwise. -+# -+# Automake 1.8 used `mkdir -m 0755 -p --' to ensure that directories -+# created by `make install' are always world readable, even if the -+# installer happens to have an overly restrictive umask (e.g. 077). -+# This was a mistake. There are at least two reasons why we must not -+# use `-m 0755': -+# - it causes special bits like SGID to be ignored, -+# - it may be too restrictive (some setups expect 775 directories). -+# -+# Do not use -m 0755 and let people choose whatever they expect by -+# setting umask. -+# -+# We cannot accept any implementation of `mkdir' that recognizes `-p'. -+# Some implementations (such as Solaris 8's) are not thread-safe: if a -+# parallel make tries to run `mkdir -p a/b' and `mkdir -p a/c' -+# concurrently, both version can detect that a/ is missing, but only -+# one can create it and the other will error out. Consequently we -+# restrict ourselves to GNU make (using the --version option ensures -+# this.) -+AC_DEFUN([AM_PROG_MKDIR_P], -+[if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then -+ # We used to keeping the `.' as first argument, in order to -+ # allow $(mkdir_p) to be used without argument. As in -+ # $(mkdir_p) $(somedir) -+ # where $(somedir) is conditionally defined. However this is wrong -+ # for two reasons: -+ # 1. if the package is installed by a user who cannot write `.' -+ # make install will fail, -+ # 2. the above comment should most certainly read -+ # $(mkdir_p) $(DESTDIR)$(somedir) -+ # so it does not work when $(somedir) is undefined and -+ # $(DESTDIR) is not. -+ # To support the latter case, we have to write -+ # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), -+ # so the `.' trick is pointless. -+ mkdir_p='mkdir -p --' -+else -+ # On NextStep and OpenStep, the `mkdir' command does not -+ # recognize any option. It will interpret all options as -+ # directories to create, and then abort because `.' already -+ # exists. -+ for d in ./-p ./--version; -+ do -+ test -d $d && rmdir $d -+ done -+ # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. -+ if test -f "$ac_aux_dir/mkinstalldirs"; then -+ mkdir_p='$(mkinstalldirs)' -+ else -+ mkdir_p='$(install_sh) -d' -+ fi -+fi -+AC_SUBST([mkdir_p])]) -+ -+# Helper functions for option handling. -*- Autoconf -*- -+ -+# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. -+# -+# 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. -+ -+# serial 3 -+ -+# _AM_MANGLE_OPTION(NAME) -+# ----------------------- -+AC_DEFUN([_AM_MANGLE_OPTION], -+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) -+ -+# _AM_SET_OPTION(NAME) -+# ------------------------------ -+# Set option NAME. Presently that only means defining a flag for this option. -+AC_DEFUN([_AM_SET_OPTION], -+[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) -+ -+# _AM_SET_OPTIONS(OPTIONS) -+# ---------------------------------- -+# OPTIONS is a space-separated list of Automake options. -+AC_DEFUN([_AM_SET_OPTIONS], -+[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) -+ -+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -+# ------------------------------------------- -+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -+AC_DEFUN([_AM_IF_OPTION], -+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -+ -+# Check to make sure that the build environment is sane. -*- Autoconf -*- -+ -+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 -+# Free Software Foundation, Inc. -+# -+# 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. -+ -+# serial 4 -+ -+# AM_SANITY_CHECK -+# --------------- -+AC_DEFUN([AM_SANITY_CHECK], -+[AC_MSG_CHECKING([whether build environment is sane]) -+# Just in case -+sleep 1 -+echo timestamp > conftest.file -+# Do `set' in a subshell so we don't clobber the current shell's -+# arguments. Must try -L first in case configure is actually a -+# symlink; some systems play weird games with the mod time of symlinks -+# (eg FreeBSD returns the mod time of the symlink's containing -+# directory). -+if ( -+ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` -+ if test "$[*]" = "X"; then -+ # -L didn't work. -+ set X `ls -t $srcdir/configure conftest.file` -+ fi -+ rm -f conftest.file -+ if test "$[*]" != "X $srcdir/configure conftest.file" \ -+ && test "$[*]" != "X conftest.file $srcdir/configure"; then -+ -+ # If neither matched, then we have a broken ls. This can happen -+ # if, for instance, CONFIG_SHELL is bash and it inherits a -+ # broken ls alias from the environment. This has actually -+ # happened. Such a system could not be considered "sane". -+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -+alias in your environment]) -+ fi -+ -+ test "$[2]" = conftest.file -+ ) -+then -+ # Ok. -+ : -+else -+ AC_MSG_ERROR([newly created file is older than distributed files! -+Check your system clock]) -+fi -+AC_MSG_RESULT(yes)]) -+ -+# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. -+# -+# 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. -+ -+# AM_PROG_INSTALL_STRIP -+# --------------------- -+# One issue with vendor `install' (even GNU) is that you can't -+# specify the program used to strip binaries. This is especially -+# annoying in cross-compiling environments, where the build's strip -+# is unlikely to handle the host's binaries. -+# Fortunately install-sh will honor a STRIPPROG variable, so we -+# always use install-sh in `make install-strip', and initialize -+# STRIPPROG with the value of the STRIP variable (set by the user). -+AC_DEFUN([AM_PROG_INSTALL_STRIP], -+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -+# Installed binaries are usually stripped using `strip' when the user -+# run `make install-strip'. However `strip' might not be the right -+# tool to use in cross-compilation environments, therefore Automake -+# will honor the `STRIP' environment variable to overrule this program. -+dnl Don't test for $cross_compiling = yes, because it might be `maybe'. -+if test "$cross_compiling" != no; then -+ AC_CHECK_TOOL([STRIP], [strip], :) -+fi -+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" -+AC_SUBST([INSTALL_STRIP_PROGRAM])]) -+ -+# Check how to create a tarball. -*- Autoconf -*- -+ -+# Copyright (C) 2004, 2005 Free Software Foundation, Inc. -+# -+# 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. -+ -+# serial 2 -+ -+# _AM_PROG_TAR(FORMAT) -+# -------------------- -+# Check how to create a tarball in format FORMAT. -+# FORMAT should be one of `v7', `ustar', or `pax'. -+# -+# Substitute a variable $(am__tar) that is a command -+# writing to stdout a FORMAT-tarball containing the directory -+# $tardir. -+# tardir=directory && $(am__tar) > result.tar -+# -+# Substitute a variable $(am__untar) that extract such -+# a tarball read from stdin. -+# $(am__untar) < result.tar -+AC_DEFUN([_AM_PROG_TAR], -+[# Always define AMTAR for backward compatibility. -+AM_MISSING_PROG([AMTAR], [tar]) -+m4_if([$1], [v7], -+ [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], -+ [m4_case([$1], [ustar],, [pax],, -+ [m4_fatal([Unknown tar format])]) -+AC_MSG_CHECKING([how to create a $1 tar archive]) -+# Loop over all known methods to create a tar archive until one works. -+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' -+_am_tools=${am_cv_prog_tar_$1-$_am_tools} -+# Do not fold the above two line into one, because Tru64 sh and -+# Solaris sh will not grok spaces in the rhs of `-'. -+for _am_tool in $_am_tools -+do -+ case $_am_tool in -+ gnutar) -+ for _am_tar in tar gnutar gtar; -+ do -+ AM_RUN_LOG([$_am_tar --version]) && break -+ done -+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' -+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' -+ am__untar="$_am_tar -xf -" -+ ;; -+ plaintar) -+ # Must skip GNU tar: if it does not support --format= it doesn't create -+ # ustar tarball either. -+ (tar --version) >/dev/null 2>&1 && continue -+ am__tar='tar chf - "$$tardir"' -+ am__tar_='tar chf - "$tardir"' -+ am__untar='tar xf -' -+ ;; -+ pax) -+ am__tar='pax -L -x $1 -w "$$tardir"' -+ am__tar_='pax -L -x $1 -w "$tardir"' -+ am__untar='pax -r' -+ ;; -+ cpio) -+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L' -+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L' -+ am__untar='cpio -i -H $1 -d' -+ ;; -+ none) -+ am__tar=false -+ am__tar_=false -+ am__untar=false -+ ;; -+ esac -+ -+ # If the value was cached, stop now. We just wanted to have am__tar -+ # and am__untar set. -+ test -n "${am_cv_prog_tar_$1}" && break -+ -+ # tar/untar a dummy directory, and stop if the command works -+ rm -rf conftest.dir -+ mkdir conftest.dir -+ echo GrepMe > conftest.dir/file -+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) -+ rm -rf conftest.dir -+ if test -s conftest.tar; then -+ AM_RUN_LOG([$am__untar /dev/null 2>&1 && break -+ fi -+done -+rm -rf conftest.dir -+ -+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) -+AC_MSG_RESULT([$am_cv_prog_tar_$1])]) -+AC_SUBST([am__tar]) -+AC_SUBST([am__untar]) -+]) # _AM_PROG_TAR -+ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/ChangeLog open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/ChangeLog ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/ChangeLog 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/ChangeLog 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,7 @@ -+Version 0.4.1 (July 20, 2009) -+ * Fix from Mike Christie to determine page size from getpagesize() -+ rather then the constant PAGE_SIZE. PAGE_SIZE is not defined om -+ ia64 and ppc. -+ * Update documentation to indicate IPv6 is not supported -+ * Fix code to catch the message from the CNIC that the network -+ interface is going down. -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/compile open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/compile ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/compile 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/compile 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,142 @@ -+#! /bin/sh -+# Wrapper for compilers which do not understand `-c -o'. -+ -+scriptversion=2005-05-14.22 -+ -+# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc. -+# Written by Tom Tromey . -+# -+# This program 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, or (at your option) -+# any later version. -+# -+# This program 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 this program; if not, write to the Free Software -+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -+ -+# As a special exception to the GNU General Public License, if you -+# distribute this file as part of a program that contains a -+# configuration script generated by Autoconf, you may include it under -+# the same distribution terms that you use for the rest of that program. -+ -+# This file is maintained in Automake, please report -+# bugs to or send patches to -+# . -+ -+case $1 in -+ '') -+ echo "$0: No command. Try \`$0 --help' for more information." 1>&2 -+ exit 1; -+ ;; -+ -h | --h*) -+ cat <<\EOF -+Usage: compile [--help] [--version] PROGRAM [ARGS] -+ -+Wrapper for compilers which do not understand `-c -o'. -+Remove `-o dest.o' from ARGS, run PROGRAM with the remaining -+arguments, and rename the output as expected. -+ -+If you are trying to build a whole package this is not the -+right script to run: please start by reading the file `INSTALL'. -+ -+Report bugs to . -+EOF -+ exit $? -+ ;; -+ -v | --v*) -+ echo "compile $scriptversion" -+ exit $? -+ ;; -+esac -+ -+ofile= -+cfile= -+eat= -+ -+for arg -+do -+ if test -n "$eat"; then -+ eat= -+ else -+ case $1 in -+ -o) -+ # configure might choose to run compile as `compile cc -o foo foo.c'. -+ # So we strip `-o arg' only if arg is an object. -+ eat=1 -+ case $2 in -+ *.o | *.obj) -+ ofile=$2 -+ ;; -+ *) -+ set x "$@" -o "$2" -+ shift -+ ;; -+ esac -+ ;; -+ *.c) -+ cfile=$1 -+ set x "$@" "$1" -+ shift -+ ;; -+ *) -+ set x "$@" "$1" -+ shift -+ ;; -+ esac -+ fi -+ shift -+done -+ -+if test -z "$ofile" || test -z "$cfile"; then -+ # If no `-o' option was seen then we might have been invoked from a -+ # pattern rule where we don't need one. That is ok -- this is a -+ # normal compilation that the losing compiler can handle. If no -+ # `.c' file was seen then we are probably linking. That is also -+ # ok. -+ exec "$@" -+fi -+ -+# Name of file we expect compiler to create. -+cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'` -+ -+# Create the lock directory. -+# Note: use `[/.-]' here to ensure that we don't use the same name -+# that we are using for the .o file. Also, base the name on the expected -+# object file name, since that is what matters with a parallel build. -+lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d -+while true; do -+ if mkdir "$lockdir" >/dev/null 2>&1; then -+ break -+ fi -+ sleep 1 -+done -+# FIXME: race condition here if user kills between mkdir and trap. -+trap "rmdir '$lockdir'; exit 1" 1 2 15 -+ -+# Run the compile. -+"$@" -+ret=$? -+ -+if test -f "$cofile"; then -+ mv "$cofile" "$ofile" -+elif test -f "${cofile}bj"; then -+ mv "${cofile}bj" "$ofile" -+fi -+ -+rmdir "$lockdir" -+exit $ret -+ -+# Local Variables: -+# mode: shell-script -+# sh-indentation: 2 -+# eval: (add-hook 'write-file-hooks 'time-stamp) -+# time-stamp-start: "scriptversion=" -+# time-stamp-format: "%:y-%02m-%02d.%02H" -+# time-stamp-end: "$" -+# End: -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/config.guess open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/config.guess ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/config.guess 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/config.guess 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,1548 @@ -+#! /bin/sh -+# Attempt to guess a canonical system name. -+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 -+# Free Software Foundation, Inc. -+ -+timestamp='2008-09-28' -+ -+# This file 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. -+# -+# This program 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 this program; if not, write to the Free Software -+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -+# 02110-1301, USA. -+# -+# As a special exception to the GNU General Public License, if you -+# distribute this file as part of a program that contains a -+# configuration script generated by Autoconf, you may include it under -+# the same distribution terms that you use for the rest of that program. -+ -+ -+# Originally written by Per Bothner . -+# Please send patches to . Submit a context -+# diff and a properly formatted ChangeLog entry. -+# -+# This script attempts to guess a canonical system name similar to -+# config.sub. If it succeeds, it prints the system name on stdout, and -+# exits with 0. Otherwise, it exits with 1. -+# -+# The plan is that this can be called by configure scripts if you -+# don't specify an explicit build system type. -+ -+me=`echo "$0" | sed -e 's,.*/,,'` -+ -+usage="\ -+Usage: $0 [OPTION] -+ -+Output the configuration name of the system \`$me' is run on. -+ -+Operation modes: -+ -h, --help print this help, then exit -+ -t, --time-stamp print date of last modification, then exit -+ -v, --version print version number, then exit -+ -+Report bugs and patches to ." -+ -+version="\ -+GNU config.guess ($timestamp) -+ -+Originally written by Per Bothner. -+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, -+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -+ -+This is free software; see the source for copying conditions. There is NO -+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." -+ -+help=" -+Try \`$me --help' for more information." -+ -+# Parse command line -+while test $# -gt 0 ; do -+ case $1 in -+ --time-stamp | --time* | -t ) -+ echo "$timestamp" ; exit ;; -+ --version | -v ) -+ echo "$version" ; exit ;; -+ --help | --h* | -h ) -+ echo "$usage"; exit ;; -+ -- ) # Stop option processing -+ shift; break ;; -+ - ) # Use stdin as input. -+ break ;; -+ -* ) -+ echo "$me: invalid option $1$help" >&2 -+ exit 1 ;; -+ * ) -+ break ;; -+ esac -+done -+ -+if test $# != 0; then -+ echo "$me: too many arguments$help" >&2 -+ exit 1 -+fi -+ -+trap 'exit 1' 1 2 15 -+ -+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -+# compiler to aid in system detection is discouraged as it requires -+# temporary files to be created and, as you can see below, it is a -+# headache to deal with in a portable fashion. -+ -+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -+# use `HOST_CC' if defined, but it is deprecated. -+ -+# Portable tmp directory creation inspired by the Autoconf team. -+ -+set_cc_for_build=' -+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -+: ${TMPDIR=/tmp} ; -+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || -+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || -+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || -+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -+dummy=$tmp/dummy ; -+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -+case $CC_FOR_BUILD,$HOST_CC,$CC in -+ ,,) echo "int x;" > $dummy.c ; -+ for c in cc gcc c89 c99 ; do -+ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then -+ CC_FOR_BUILD="$c"; break ; -+ fi ; -+ done ; -+ if test x"$CC_FOR_BUILD" = x ; then -+ CC_FOR_BUILD=no_compiler_found ; -+ fi -+ ;; -+ ,,*) CC_FOR_BUILD=$CC ;; -+ ,*,*) CC_FOR_BUILD=$HOST_CC ;; -+esac ; set_cc_for_build= ;' -+ -+# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -+# (ghazi@noc.rutgers.edu 1994-08-24) -+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then -+ PATH=$PATH:/.attbin ; export PATH -+fi -+ -+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -+UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -+UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -+UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -+ -+if [ "${UNAME_SYSTEM}" = "Linux" ] ; then -+ eval $set_cc_for_build -+ cat << EOF > $dummy.c -+ #include -+ #ifdef __UCLIBC__ -+ # ifdef __UCLIBC_CONFIG_VERSION__ -+ LIBC=uclibc __UCLIBC_CONFIG_VERSION__ -+ # else -+ LIBC=uclibc -+ # endif -+ #else -+ LIBC=gnu -+ #endif -+EOF -+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep LIBC= | sed -e 's: ::g'` -+fi -+ -+# Note: order is significant - the case branches are not exclusive. -+ -+case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in -+ *:NetBSD:*:*) -+ # NetBSD (nbsd) targets should (where applicable) match one or -+ # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, -+ # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently -+ # switched to ELF, *-*-netbsd* would select the old -+ # object file format. This provides both forward -+ # compatibility and a consistent mechanism for selecting the -+ # object file format. -+ # -+ # Note: NetBSD doesn't particularly care about the vendor -+ # portion of the name. We always set it to "unknown". -+ sysctl="sysctl -n hw.machine_arch" -+ UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ -+ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` -+ case "${UNAME_MACHINE_ARCH}" in -+ armeb) machine=armeb-unknown ;; -+ arm*) machine=arm-unknown ;; -+ sh3el) machine=shl-unknown ;; -+ sh3eb) machine=sh-unknown ;; -+ sh5el) machine=sh5le-unknown ;; -+ *) machine=${UNAME_MACHINE_ARCH}-unknown ;; -+ esac -+ # The Operating System including object format, if it has switched -+ # to ELF recently, or will in the future. -+ case "${UNAME_MACHINE_ARCH}" in -+ arm*|i386|m68k|ns32k|sh3*|sparc|vax) -+ eval $set_cc_for_build -+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ -+ | grep __ELF__ >/dev/null -+ then -+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). -+ # Return netbsd for either. FIX? -+ os=netbsd -+ else -+ os=netbsdelf -+ fi -+ ;; -+ *) -+ os=netbsd -+ ;; -+ esac -+ # The OS release -+ # Debian GNU/NetBSD machines have a different userland, and -+ # thus, need a distinct triplet. However, they do not need -+ # kernel version information, so it can be replaced with a -+ # suitable tag, in the style of linux-gnu. -+ case "${UNAME_VERSION}" in -+ Debian*) -+ release='-gnu' -+ ;; -+ *) -+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` -+ ;; -+ esac -+ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: -+ # contains redundant information, the shorter form: -+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. -+ echo "${machine}-${os}${release}" -+ exit ;; -+ *:OpenBSD:*:*) -+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` -+ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} -+ exit ;; -+ *:ekkoBSD:*:*) -+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} -+ exit ;; -+ *:SolidBSD:*:*) -+ echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} -+ exit ;; -+ macppc:MirBSD:*:*) -+ echo powerpc-unknown-mirbsd${UNAME_RELEASE} -+ exit ;; -+ *:MirBSD:*:*) -+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} -+ exit ;; -+ alpha:OSF1:*:*) -+ case $UNAME_RELEASE in -+ *4.0) -+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` -+ ;; -+ *5.*) -+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` -+ ;; -+ esac -+ # According to Compaq, /usr/sbin/psrinfo has been available on -+ # OSF/1 and Tru64 systems produced since 1995. I hope that -+ # covers most systems running today. This code pipes the CPU -+ # types through head -n 1, so we only detect the type of CPU 0. -+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` -+ case "$ALPHA_CPU_TYPE" in -+ "EV4 (21064)") -+ UNAME_MACHINE="alpha" ;; -+ "EV4.5 (21064)") -+ UNAME_MACHINE="alpha" ;; -+ "LCA4 (21066/21068)") -+ UNAME_MACHINE="alpha" ;; -+ "EV5 (21164)") -+ UNAME_MACHINE="alphaev5" ;; -+ "EV5.6 (21164A)") -+ UNAME_MACHINE="alphaev56" ;; -+ "EV5.6 (21164PC)") -+ UNAME_MACHINE="alphapca56" ;; -+ "EV5.7 (21164PC)") -+ UNAME_MACHINE="alphapca57" ;; -+ "EV6 (21264)") -+ UNAME_MACHINE="alphaev6" ;; -+ "EV6.7 (21264A)") -+ UNAME_MACHINE="alphaev67" ;; -+ "EV6.8CB (21264C)") -+ UNAME_MACHINE="alphaev68" ;; -+ "EV6.8AL (21264B)") -+ UNAME_MACHINE="alphaev68" ;; -+ "EV6.8CX (21264D)") -+ UNAME_MACHINE="alphaev68" ;; -+ "EV6.9A (21264/EV69A)") -+ UNAME_MACHINE="alphaev69" ;; -+ "EV7 (21364)") -+ UNAME_MACHINE="alphaev7" ;; -+ "EV7.9 (21364A)") -+ UNAME_MACHINE="alphaev79" ;; -+ esac -+ # A Pn.n version is a patched version. -+ # A Vn.n version is a released version. -+ # A Tn.n version is a released field test version. -+ # A Xn.n version is an unreleased experimental baselevel. -+ # 1.2 uses "1.2" for uname -r. -+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` -+ exit ;; -+ Alpha\ *:Windows_NT*:*) -+ # How do we know it's Interix rather than the generic POSIX subsystem? -+ # Should we change UNAME_MACHINE based on the output of uname instead -+ # of the specific Alpha model? -+ echo alpha-pc-interix -+ exit ;; -+ 21064:Windows_NT:50:3) -+ echo alpha-dec-winnt3.5 -+ exit ;; -+ Amiga*:UNIX_System_V:4.0:*) -+ echo m68k-unknown-sysv4 -+ exit ;; -+ *:[Aa]miga[Oo][Ss]:*:*) -+ echo ${UNAME_MACHINE}-unknown-amigaos -+ exit ;; -+ *:[Mm]orph[Oo][Ss]:*:*) -+ echo ${UNAME_MACHINE}-unknown-morphos -+ exit ;; -+ *:OS/390:*:*) -+ echo i370-ibm-openedition -+ exit ;; -+ *:z/VM:*:*) -+ echo s390-ibm-zvmoe -+ exit ;; -+ *:OS400:*:*) -+ echo powerpc-ibm-os400 -+ exit ;; -+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) -+ echo arm-acorn-riscix${UNAME_RELEASE} -+ exit ;; -+ arm:riscos:*:*|arm:RISCOS:*:*) -+ echo arm-unknown-riscos -+ exit ;; -+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) -+ echo hppa1.1-hitachi-hiuxmpp -+ exit ;; -+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) -+ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. -+ if test "`(/bin/universe) 2>/dev/null`" = att ; then -+ echo pyramid-pyramid-sysv3 -+ else -+ echo pyramid-pyramid-bsd -+ fi -+ exit ;; -+ NILE*:*:*:dcosx) -+ echo pyramid-pyramid-svr4 -+ exit ;; -+ DRS?6000:unix:4.0:6*) -+ echo sparc-icl-nx6 -+ exit ;; -+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) -+ case `/usr/bin/uname -p` in -+ sparc) echo sparc-icl-nx7; exit ;; -+ esac ;; -+ sun4H:SunOS:5.*:*) -+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -+ exit ;; -+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) -+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -+ exit ;; -+ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) -+ echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -+ exit ;; -+ sun4*:SunOS:6*:*) -+ # According to config.sub, this is the proper way to canonicalize -+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but -+ # it's likely to be more like Solaris than SunOS4. -+ echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -+ exit ;; -+ sun4*:SunOS:*:*) -+ case "`/usr/bin/arch -k`" in -+ Series*|S4*) -+ UNAME_RELEASE=`uname -v` -+ ;; -+ esac -+ # Japanese Language versions have a version number like `4.1.3-JL'. -+ echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` -+ exit ;; -+ sun3*:SunOS:*:*) -+ echo m68k-sun-sunos${UNAME_RELEASE} -+ exit ;; -+ sun*:*:4.2BSD:*) -+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` -+ test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 -+ case "`/bin/arch`" in -+ sun3) -+ echo m68k-sun-sunos${UNAME_RELEASE} -+ ;; -+ sun4) -+ echo sparc-sun-sunos${UNAME_RELEASE} -+ ;; -+ esac -+ exit ;; -+ aushp:SunOS:*:*) -+ echo sparc-auspex-sunos${UNAME_RELEASE} -+ exit ;; -+ # The situation for MiNT is a little confusing. The machine name -+ # can be virtually everything (everything which is not -+ # "atarist" or "atariste" at least should have a processor -+ # > m68000). The system name ranges from "MiNT" over "FreeMiNT" -+ # to the lowercase version "mint" (or "freemint"). Finally -+ # the system name "TOS" denotes a system which is actually not -+ # MiNT. But MiNT is downward compatible to TOS, so this should -+ # be no problem. -+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) -+ echo m68k-atari-mint${UNAME_RELEASE} -+ exit ;; -+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) -+ echo m68k-atari-mint${UNAME_RELEASE} -+ exit ;; -+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) -+ echo m68k-atari-mint${UNAME_RELEASE} -+ exit ;; -+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) -+ echo m68k-milan-mint${UNAME_RELEASE} -+ exit ;; -+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) -+ echo m68k-hades-mint${UNAME_RELEASE} -+ exit ;; -+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) -+ echo m68k-unknown-mint${UNAME_RELEASE} -+ exit ;; -+ m68k:machten:*:*) -+ echo m68k-apple-machten${UNAME_RELEASE} -+ exit ;; -+ powerpc:machten:*:*) -+ echo powerpc-apple-machten${UNAME_RELEASE} -+ exit ;; -+ RISC*:Mach:*:*) -+ echo mips-dec-mach_bsd4.3 -+ exit ;; -+ RISC*:ULTRIX:*:*) -+ echo mips-dec-ultrix${UNAME_RELEASE} -+ exit ;; -+ VAX*:ULTRIX*:*:*) -+ echo vax-dec-ultrix${UNAME_RELEASE} -+ exit ;; -+ 2020:CLIX:*:* | 2430:CLIX:*:*) -+ echo clipper-intergraph-clix${UNAME_RELEASE} -+ exit ;; -+ mips:*:*:UMIPS | mips:*:*:RISCos) -+ eval $set_cc_for_build -+ sed 's/^ //' << EOF >$dummy.c -+#ifdef __cplusplus -+#include /* for printf() prototype */ -+ int main (int argc, char *argv[]) { -+#else -+ int main (argc, argv) int argc; char *argv[]; { -+#endif -+ #if defined (host_mips) && defined (MIPSEB) -+ #if defined (SYSTYPE_SYSV) -+ printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); -+ #endif -+ #if defined (SYSTYPE_SVR4) -+ printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); -+ #endif -+ #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) -+ printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); -+ #endif -+ #endif -+ exit (-1); -+ } -+EOF -+ $CC_FOR_BUILD -o $dummy $dummy.c && -+ dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && -+ SYSTEM_NAME=`$dummy $dummyarg` && -+ { echo "$SYSTEM_NAME"; exit; } -+ echo mips-mips-riscos${UNAME_RELEASE} -+ exit ;; -+ Motorola:PowerMAX_OS:*:*) -+ echo powerpc-motorola-powermax -+ exit ;; -+ Motorola:*:4.3:PL8-*) -+ echo powerpc-harris-powermax -+ exit ;; -+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) -+ echo powerpc-harris-powermax -+ exit ;; -+ Night_Hawk:Power_UNIX:*:*) -+ echo powerpc-harris-powerunix -+ exit ;; -+ m88k:CX/UX:7*:*) -+ echo m88k-harris-cxux7 -+ exit ;; -+ m88k:*:4*:R4*) -+ echo m88k-motorola-sysv4 -+ exit ;; -+ m88k:*:3*:R3*) -+ echo m88k-motorola-sysv3 -+ exit ;; -+ AViiON:dgux:*:*) -+ # DG/UX returns AViiON for all architectures -+ UNAME_PROCESSOR=`/usr/bin/uname -p` -+ if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] -+ then -+ if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ -+ [ ${TARGET_BINARY_INTERFACE}x = x ] -+ then -+ echo m88k-dg-dgux${UNAME_RELEASE} -+ else -+ echo m88k-dg-dguxbcs${UNAME_RELEASE} -+ fi -+ else -+ echo i586-dg-dgux${UNAME_RELEASE} -+ fi -+ exit ;; -+ M88*:DolphinOS:*:*) # DolphinOS (SVR3) -+ echo m88k-dolphin-sysv3 -+ exit ;; -+ M88*:*:R3*:*) -+ # Delta 88k system running SVR3 -+ echo m88k-motorola-sysv3 -+ exit ;; -+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) -+ echo m88k-tektronix-sysv3 -+ exit ;; -+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) -+ echo m68k-tektronix-bsd -+ exit ;; -+ *:IRIX*:*:*) -+ echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` -+ exit ;; -+ ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. -+ echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id -+ exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' -+ i*86:AIX:*:*) -+ echo i386-ibm-aix -+ exit ;; -+ ia64:AIX:*:*) -+ if [ -x /usr/bin/oslevel ] ; then -+ IBM_REV=`/usr/bin/oslevel` -+ else -+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} -+ fi -+ echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} -+ exit ;; -+ *:AIX:2:3) -+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then -+ eval $set_cc_for_build -+ sed 's/^ //' << EOF >$dummy.c -+ #include -+ -+ main() -+ { -+ if (!__power_pc()) -+ exit(1); -+ puts("powerpc-ibm-aix3.2.5"); -+ exit(0); -+ } -+EOF -+ if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` -+ then -+ echo "$SYSTEM_NAME" -+ else -+ echo rs6000-ibm-aix3.2.5 -+ fi -+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then -+ echo rs6000-ibm-aix3.2.4 -+ else -+ echo rs6000-ibm-aix3.2 -+ fi -+ exit ;; -+ *:AIX:*:[456]) -+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` -+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then -+ IBM_ARCH=rs6000 -+ else -+ IBM_ARCH=powerpc -+ fi -+ if [ -x /usr/bin/oslevel ] ; then -+ IBM_REV=`/usr/bin/oslevel` -+ else -+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} -+ fi -+ echo ${IBM_ARCH}-ibm-aix${IBM_REV} -+ exit ;; -+ *:AIX:*:*) -+ echo rs6000-ibm-aix -+ exit ;; -+ ibmrt:4.4BSD:*|romp-ibm:BSD:*) -+ echo romp-ibm-bsd4.4 -+ exit ;; -+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and -+ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to -+ exit ;; # report: romp-ibm BSD 4.3 -+ *:BOSX:*:*) -+ echo rs6000-bull-bosx -+ exit ;; -+ DPX/2?00:B.O.S.:*:*) -+ echo m68k-bull-sysv3 -+ exit ;; -+ 9000/[34]??:4.3bsd:1.*:*) -+ echo m68k-hp-bsd -+ exit ;; -+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) -+ echo m68k-hp-bsd4.4 -+ exit ;; -+ 9000/[34678]??:HP-UX:*:*) -+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` -+ case "${UNAME_MACHINE}" in -+ 9000/31? ) HP_ARCH=m68000 ;; -+ 9000/[34]?? ) HP_ARCH=m68k ;; -+ 9000/[678][0-9][0-9]) -+ if [ -x /usr/bin/getconf ]; then -+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` -+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` -+ case "${sc_cpu_version}" in -+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 -+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 -+ 532) # CPU_PA_RISC2_0 -+ case "${sc_kernel_bits}" in -+ 32) HP_ARCH="hppa2.0n" ;; -+ 64) HP_ARCH="hppa2.0w" ;; -+ '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 -+ esac ;; -+ esac -+ fi -+ if [ "${HP_ARCH}" = "" ]; then -+ eval $set_cc_for_build -+ sed 's/^ //' << EOF >$dummy.c -+ -+ #define _HPUX_SOURCE -+ #include -+ #include -+ -+ int main () -+ { -+ #if defined(_SC_KERNEL_BITS) -+ long bits = sysconf(_SC_KERNEL_BITS); -+ #endif -+ long cpu = sysconf (_SC_CPU_VERSION); -+ -+ switch (cpu) -+ { -+ case CPU_PA_RISC1_0: puts ("hppa1.0"); break; -+ case CPU_PA_RISC1_1: puts ("hppa1.1"); break; -+ case CPU_PA_RISC2_0: -+ #if defined(_SC_KERNEL_BITS) -+ switch (bits) -+ { -+ case 64: puts ("hppa2.0w"); break; -+ case 32: puts ("hppa2.0n"); break; -+ default: puts ("hppa2.0"); break; -+ } break; -+ #else /* !defined(_SC_KERNEL_BITS) */ -+ puts ("hppa2.0"); break; -+ #endif -+ default: puts ("hppa1.0"); break; -+ } -+ exit (0); -+ } -+EOF -+ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` -+ test -z "$HP_ARCH" && HP_ARCH=hppa -+ fi ;; -+ esac -+ if [ ${HP_ARCH} = "hppa2.0w" ] -+ then -+ eval $set_cc_for_build -+ -+ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating -+ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler -+ # generating 64-bit code. GNU and HP use different nomenclature: -+ # -+ # $ CC_FOR_BUILD=cc ./config.guess -+ # => hppa2.0w-hp-hpux11.23 -+ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess -+ # => hppa64-hp-hpux11.23 -+ -+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | -+ grep __LP64__ >/dev/null -+ then -+ HP_ARCH="hppa2.0w" -+ else -+ HP_ARCH="hppa64" -+ fi -+ fi -+ echo ${HP_ARCH}-hp-hpux${HPUX_REV} -+ exit ;; -+ ia64:HP-UX:*:*) -+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` -+ echo ia64-hp-hpux${HPUX_REV} -+ exit ;; -+ 3050*:HI-UX:*:*) -+ eval $set_cc_for_build -+ sed 's/^ //' << EOF >$dummy.c -+ #include -+ int -+ main () -+ { -+ long cpu = sysconf (_SC_CPU_VERSION); -+ /* The order matters, because CPU_IS_HP_MC68K erroneously returns -+ true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct -+ results, however. */ -+ if (CPU_IS_PA_RISC (cpu)) -+ { -+ switch (cpu) -+ { -+ case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; -+ case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; -+ case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; -+ default: puts ("hppa-hitachi-hiuxwe2"); break; -+ } -+ } -+ else if (CPU_IS_HP_MC68K (cpu)) -+ puts ("m68k-hitachi-hiuxwe2"); -+ else puts ("unknown-hitachi-hiuxwe2"); -+ exit (0); -+ } -+EOF -+ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && -+ { echo "$SYSTEM_NAME"; exit; } -+ echo unknown-hitachi-hiuxwe2 -+ exit ;; -+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) -+ echo hppa1.1-hp-bsd -+ exit ;; -+ 9000/8??:4.3bsd:*:*) -+ echo hppa1.0-hp-bsd -+ exit ;; -+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) -+ echo hppa1.0-hp-mpeix -+ exit ;; -+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) -+ echo hppa1.1-hp-osf -+ exit ;; -+ hp8??:OSF1:*:*) -+ echo hppa1.0-hp-osf -+ exit ;; -+ i*86:OSF1:*:*) -+ if [ -x /usr/sbin/sysversion ] ; then -+ echo ${UNAME_MACHINE}-unknown-osf1mk -+ else -+ echo ${UNAME_MACHINE}-unknown-osf1 -+ fi -+ exit ;; -+ parisc*:Lites*:*:*) -+ echo hppa1.1-hp-lites -+ exit ;; -+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) -+ echo c1-convex-bsd -+ exit ;; -+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) -+ if getsysinfo -f scalar_acc -+ then echo c32-convex-bsd -+ else echo c2-convex-bsd -+ fi -+ exit ;; -+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) -+ echo c34-convex-bsd -+ exit ;; -+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) -+ echo c38-convex-bsd -+ exit ;; -+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) -+ echo c4-convex-bsd -+ exit ;; -+ CRAY*Y-MP:*:*:*) -+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -+ exit ;; -+ CRAY*[A-Z]90:*:*:*) -+ echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ -+ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -+ -e 's/\.[^.]*$/.X/' -+ exit ;; -+ CRAY*TS:*:*:*) -+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -+ exit ;; -+ CRAY*T3E:*:*:*) -+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -+ exit ;; -+ CRAY*SV1:*:*:*) -+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -+ exit ;; -+ *:UNICOS/mp:*:*) -+ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -+ exit ;; -+ F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) -+ FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` -+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` -+ FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` -+ echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" -+ exit ;; -+ 5000:UNIX_System_V:4.*:*) -+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` -+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` -+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" -+ exit ;; -+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) -+ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} -+ exit ;; -+ sparc*:BSD/OS:*:*) -+ echo sparc-unknown-bsdi${UNAME_RELEASE} -+ exit ;; -+ *:BSD/OS:*:*) -+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} -+ exit ;; -+ *:FreeBSD:*:*) -+ case ${UNAME_MACHINE} in -+ pc98) -+ echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; -+ amd64) -+ echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; -+ *) -+ echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; -+ esac -+ exit ;; -+ i*:CYGWIN*:*) -+ echo ${UNAME_MACHINE}-pc-cygwin -+ exit ;; -+ *:MINGW*:*) -+ echo ${UNAME_MACHINE}-pc-mingw32 -+ exit ;; -+ i*:windows32*:*) -+ # uname -m includes "-pc" on this system. -+ echo ${UNAME_MACHINE}-mingw32 -+ exit ;; -+ i*:PW*:*) -+ echo ${UNAME_MACHINE}-pc-pw32 -+ exit ;; -+ *:Interix*:[3456]*) -+ case ${UNAME_MACHINE} in -+ x86) -+ echo i586-pc-interix${UNAME_RELEASE} -+ exit ;; -+ EM64T | authenticamd | genuineintel) -+ echo x86_64-unknown-interix${UNAME_RELEASE} -+ exit ;; -+ IA64) -+ echo ia64-unknown-interix${UNAME_RELEASE} -+ exit ;; -+ esac ;; -+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) -+ echo i${UNAME_MACHINE}-pc-mks -+ exit ;; -+ i*:Windows_NT*:* | Pentium*:Windows_NT*:*) -+ # How do we know it's Interix rather than the generic POSIX subsystem? -+ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we -+ # UNAME_MACHINE based on the output of uname instead of i386? -+ echo i586-pc-interix -+ exit ;; -+ i*:UWIN*:*) -+ echo ${UNAME_MACHINE}-pc-uwin -+ exit ;; -+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) -+ echo x86_64-unknown-cygwin -+ exit ;; -+ p*:CYGWIN*:*) -+ echo powerpcle-unknown-cygwin -+ exit ;; -+ prep*:SunOS:5.*:*) -+ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -+ exit ;; -+ *:GNU:*:*) -+ # the GNU system -+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` -+ exit ;; -+ *:GNU/*:*:*) -+ # other systems with GNU libc and userland -+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu -+ exit ;; -+ i*86:Minix:*:*) -+ echo ${UNAME_MACHINE}-pc-minix -+ exit ;; -+ arm*:Linux:*:*) -+ eval $set_cc_for_build -+ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ -+ | grep -q __ARM_EABI__ -+ then -+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} -+ else -+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi -+ fi -+ exit ;; -+ avr32*:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} -+ exit ;; -+ cris:Linux:*:*) -+ echo cris-axis-linux-${LIBC} -+ exit ;; -+ crisv32:Linux:*:*) -+ echo crisv32-axis-linux-${LIBC} -+ exit ;; -+ frv:Linux:*:*) -+ echo frv-unknown-linux-${LIBC} -+ exit ;; -+ ia64:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} -+ exit ;; -+ m32r*:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} -+ exit ;; -+ m68*:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} -+ exit ;; -+ mips:Linux:*:*) -+ eval $set_cc_for_build -+ sed 's/^ //' << EOF >$dummy.c -+ #undef CPU -+ #undef mips -+ #undef mipsel -+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) -+ CPU=mipsel -+ #else -+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) -+ CPU=mips -+ #else -+ CPU= -+ #endif -+ #endif -+EOF -+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' -+ /^CPU/{ -+ s: ::g -+ p -+ }'`" -+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } -+ ;; -+ mips64:Linux:*:*) -+ eval $set_cc_for_build -+ sed 's/^ //' << EOF >$dummy.c -+ #undef CPU -+ #undef mips64 -+ #undef mips64el -+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) -+ CPU=mips64el -+ #else -+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) -+ CPU=mips64 -+ #else -+ CPU= -+ #endif -+ #endif -+EOF -+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' -+ /^CPU/{ -+ s: ::g -+ p -+ }'`" -+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } -+ ;; -+ or32:Linux:*:*) -+ echo or32-unknown-linux-${LIBC} -+ exit ;; -+ ppc:Linux:*:*) -+ echo powerpc-unknown-linux-${LIBC} -+ exit ;; -+ ppc64:Linux:*:*) -+ echo powerpc64-unknown-linux-${LIBC} -+ exit ;; -+ alpha:Linux:*:*) -+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in -+ EV5) UNAME_MACHINE=alphaev5 ;; -+ EV56) UNAME_MACHINE=alphaev56 ;; -+ PCA56) UNAME_MACHINE=alphapca56 ;; -+ PCA57) UNAME_MACHINE=alphapca56 ;; -+ EV6) UNAME_MACHINE=alphaev6 ;; -+ EV67) UNAME_MACHINE=alphaev67 ;; -+ EV68*) UNAME_MACHINE=alphaev68 ;; -+ esac -+ objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null -+ if test "$?" = 0 ; then LIBC="gnulibc1" ; fi -+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} -+ exit ;; -+ padre:Linux:*:*) -+ echo sparc-unknown-linux-gnu -+ exit ;; -+ parisc:Linux:*:* | hppa:Linux:*:*) -+ # Look for CPU level -+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in -+ PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; -+ PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; -+ *) echo hppa-unknown-linux-${LIBC} ;; -+ esac -+ exit ;; -+ parisc64:Linux:*:* | hppa64:Linux:*:*) -+ echo hppa64-unknown-linux-${LIBC} -+ exit ;; -+ s390:Linux:*:* | s390x:Linux:*:*) -+ echo ${UNAME_MACHINE}-ibm-linux -+ exit ;; -+ sh64*:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} -+ exit ;; -+ sh*:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} -+ exit ;; -+ sparc:Linux:*:* | sparc64:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} -+ exit ;; -+ vax:Linux:*:*) -+ echo ${UNAME_MACHINE}-dec-linux-${LIBC} -+ exit ;; -+ x86_64:Linux:*:*) -+ echo x86_64-unknown-linux-${LIBC} -+ exit ;; -+ xtensa*:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} -+ exit ;; -+ i*86:Linux:*:*) -+ # The BFD linker knows what the default object file format is, so -+ # first see if it will tell us. cd to the root directory to prevent -+ # problems with other programs or directories called `ld' in the path. -+ # Set LC_ALL=C to ensure ld outputs messages in English. -+ ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ -+ | sed -ne '/supported targets:/!d -+ s/[ ][ ]*/ /g -+ s/.*supported targets: *// -+ s/ .*// -+ p'` -+ case "$ld_supported_targets" in -+ elf32-i386) -+ TENTATIVE="${UNAME_MACHINE}-pc-linux-${LIBC}" -+ ;; -+ a.out-i386-linux) -+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}aout" -+ exit ;; -+ "") -+ # Either a pre-BFD a.out linker (linux-gnuoldld) or -+ # one that does not give us useful --help. -+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}oldld" -+ exit ;; -+ esac -+ # This should get integrated into the C code below, but now we hack -+ if [ "$LIBC" != "gnu" ] ; then echo "$TENTATIVE" && exit 0 ; fi -+ # Determine whether the default compiler is a.out or elf -+ eval $set_cc_for_build -+ sed 's/^ //' << EOF >$dummy.c -+ #include -+ #ifdef __ELF__ -+ # ifdef __GLIBC__ -+ # if __GLIBC__ >= 2 -+ LIBC=gnu -+ # else -+ LIBC=gnulibc1 -+ # endif -+ # else -+ LIBC=gnulibc1 -+ # endif -+ #else -+ #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) -+ LIBC=gnu -+ #else -+ LIBC=gnuaout -+ #endif -+ #endif -+ #ifdef __dietlibc__ -+ LIBC=dietlibc -+ #endif -+EOF -+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' -+ /^LIBC/{ -+ s: ::g -+ p -+ }'`" -+ test x"${LIBC}" != x && { -+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}" -+ exit -+ } -+ test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } -+ ;; -+ i*86:DYNIX/ptx:4*:*) -+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. -+ # earlier versions are messed up and put the nodename in both -+ # sysname and nodename. -+ echo i386-sequent-sysv4 -+ exit ;; -+ i*86:UNIX_SV:4.2MP:2.*) -+ # Unixware is an offshoot of SVR4, but it has its own version -+ # number series starting with 2... -+ # I am not positive that other SVR4 systems won't match this, -+ # I just have to hope. -- rms. -+ # Use sysv4.2uw... so that sysv4* matches it. -+ echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} -+ exit ;; -+ i*86:OS/2:*:*) -+ # If we were able to find `uname', then EMX Unix compatibility -+ # is probably installed. -+ echo ${UNAME_MACHINE}-pc-os2-emx -+ exit ;; -+ i*86:XTS-300:*:STOP) -+ echo ${UNAME_MACHINE}-unknown-stop -+ exit ;; -+ i*86:atheos:*:*) -+ echo ${UNAME_MACHINE}-unknown-atheos -+ exit ;; -+ i*86:syllable:*:*) -+ echo ${UNAME_MACHINE}-pc-syllable -+ exit ;; -+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) -+ echo i386-unknown-lynxos${UNAME_RELEASE} -+ exit ;; -+ i*86:*DOS:*:*) -+ echo ${UNAME_MACHINE}-pc-msdosdjgpp -+ exit ;; -+ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) -+ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` -+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then -+ echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} -+ else -+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} -+ fi -+ exit ;; -+ i*86:*:5:[678]*) -+ # UnixWare 7.x, OpenUNIX and OpenServer 6. -+ case `/bin/uname -X | grep "^Machine"` in -+ *486*) UNAME_MACHINE=i486 ;; -+ *Pentium) UNAME_MACHINE=i586 ;; -+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;; -+ esac -+ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} -+ exit ;; -+ i*86:*:3.2:*) -+ if test -f /usr/options/cb.name; then -+ UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then -+ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` -+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 -+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ -+ && UNAME_MACHINE=i586 -+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ -+ && UNAME_MACHINE=i686 -+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ -+ && UNAME_MACHINE=i686 -+ echo ${UNAME_MACHINE}-pc-sco$UNAME_REL -+ else -+ echo ${UNAME_MACHINE}-pc-sysv32 -+ fi -+ exit ;; -+ pc:*:*:*) -+ # Left here for compatibility: -+ # uname -m prints for DJGPP always 'pc', but it prints nothing about -+ # the processor, so we play safe by assuming i386. -+ echo i386-pc-msdosdjgpp -+ exit ;; -+ Intel:Mach:3*:*) -+ echo i386-pc-mach3 -+ exit ;; -+ paragon:*:*:*) -+ echo i860-intel-osf1 -+ exit ;; -+ i860:*:4.*:*) # i860-SVR4 -+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then -+ echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 -+ else # Add other i860-SVR4 vendors below as they are discovered. -+ echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 -+ fi -+ exit ;; -+ mini*:CTIX:SYS*5:*) -+ # "miniframe" -+ echo m68010-convergent-sysv -+ exit ;; -+ mc68k:UNIX:SYSTEM5:3.51m) -+ echo m68k-convergent-sysv -+ exit ;; -+ M680?0:D-NIX:5.3:*) -+ echo m68k-diab-dnix -+ exit ;; -+ M68*:*:R3V[5678]*:*) -+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; -+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) -+ OS_REL='' -+ test -r /etc/.relid \ -+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` -+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ -+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } -+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ -+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; -+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) -+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ -+ && { echo i486-ncr-sysv4; exit; } ;; -+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) -+ echo m68k-unknown-lynxos${UNAME_RELEASE} -+ exit ;; -+ mc68030:UNIX_System_V:4.*:*) -+ echo m68k-atari-sysv4 -+ exit ;; -+ TSUNAMI:LynxOS:2.*:*) -+ echo sparc-unknown-lynxos${UNAME_RELEASE} -+ exit ;; -+ rs6000:LynxOS:2.*:*) -+ echo rs6000-unknown-lynxos${UNAME_RELEASE} -+ exit ;; -+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) -+ echo powerpc-unknown-lynxos${UNAME_RELEASE} -+ exit ;; -+ SM[BE]S:UNIX_SV:*:*) -+ echo mips-dde-sysv${UNAME_RELEASE} -+ exit ;; -+ RM*:ReliantUNIX-*:*:*) -+ echo mips-sni-sysv4 -+ exit ;; -+ RM*:SINIX-*:*:*) -+ echo mips-sni-sysv4 -+ exit ;; -+ *:SINIX-*:*:*) -+ if uname -p 2>/dev/null >/dev/null ; then -+ UNAME_MACHINE=`(uname -p) 2>/dev/null` -+ echo ${UNAME_MACHINE}-sni-sysv4 -+ else -+ echo ns32k-sni-sysv -+ fi -+ exit ;; -+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort -+ # says -+ echo i586-unisys-sysv4 -+ exit ;; -+ *:UNIX_System_V:4*:FTX*) -+ # From Gerald Hewes . -+ # How about differentiating between stratus architectures? -djm -+ echo hppa1.1-stratus-sysv4 -+ exit ;; -+ *:*:*:FTX*) -+ # From seanf@swdc.stratus.com. -+ echo i860-stratus-sysv4 -+ exit ;; -+ i*86:VOS:*:*) -+ # From Paul.Green@stratus.com. -+ echo ${UNAME_MACHINE}-stratus-vos -+ exit ;; -+ *:VOS:*:*) -+ # From Paul.Green@stratus.com. -+ echo hppa1.1-stratus-vos -+ exit ;; -+ mc68*:A/UX:*:*) -+ echo m68k-apple-aux${UNAME_RELEASE} -+ exit ;; -+ news*:NEWS-OS:6*:*) -+ echo mips-sony-newsos6 -+ exit ;; -+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) -+ if [ -d /usr/nec ]; then -+ echo mips-nec-sysv${UNAME_RELEASE} -+ else -+ echo mips-unknown-sysv${UNAME_RELEASE} -+ fi -+ exit ;; -+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. -+ echo powerpc-be-beos -+ exit ;; -+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. -+ echo powerpc-apple-beos -+ exit ;; -+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible. -+ echo i586-pc-beos -+ exit ;; -+ BePC:Haiku:*:*) # Haiku running on Intel PC compatible. -+ echo i586-pc-haiku -+ exit ;; -+ SX-4:SUPER-UX:*:*) -+ echo sx4-nec-superux${UNAME_RELEASE} -+ exit ;; -+ SX-5:SUPER-UX:*:*) -+ echo sx5-nec-superux${UNAME_RELEASE} -+ exit ;; -+ SX-6:SUPER-UX:*:*) -+ echo sx6-nec-superux${UNAME_RELEASE} -+ exit ;; -+ SX-7:SUPER-UX:*:*) -+ echo sx7-nec-superux${UNAME_RELEASE} -+ exit ;; -+ SX-8:SUPER-UX:*:*) -+ echo sx8-nec-superux${UNAME_RELEASE} -+ exit ;; -+ SX-8R:SUPER-UX:*:*) -+ echo sx8r-nec-superux${UNAME_RELEASE} -+ exit ;; -+ Power*:Rhapsody:*:*) -+ echo powerpc-apple-rhapsody${UNAME_RELEASE} -+ exit ;; -+ *:Rhapsody:*:*) -+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} -+ exit ;; -+ *:Darwin:*:*) -+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown -+ case $UNAME_PROCESSOR in -+ unknown) UNAME_PROCESSOR=powerpc ;; -+ esac -+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} -+ exit ;; -+ *:procnto*:*:* | *:QNX:[0123456789]*:*) -+ UNAME_PROCESSOR=`uname -p` -+ if test "$UNAME_PROCESSOR" = "x86"; then -+ UNAME_PROCESSOR=i386 -+ UNAME_MACHINE=pc -+ fi -+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} -+ exit ;; -+ *:QNX:*:4*) -+ echo i386-pc-qnx -+ exit ;; -+ NSE-?:NONSTOP_KERNEL:*:*) -+ echo nse-tandem-nsk${UNAME_RELEASE} -+ exit ;; -+ NSR-?:NONSTOP_KERNEL:*:*) -+ echo nsr-tandem-nsk${UNAME_RELEASE} -+ exit ;; -+ *:NonStop-UX:*:*) -+ echo mips-compaq-nonstopux -+ exit ;; -+ BS2000:POSIX*:*:*) -+ echo bs2000-siemens-sysv -+ exit ;; -+ DS/*:UNIX_System_V:*:*) -+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} -+ exit ;; -+ *:Plan9:*:*) -+ # "uname -m" is not consistent, so use $cputype instead. 386 -+ # is converted to i386 for consistency with other x86 -+ # operating systems. -+ if test "$cputype" = "386"; then -+ UNAME_MACHINE=i386 -+ else -+ UNAME_MACHINE="$cputype" -+ fi -+ echo ${UNAME_MACHINE}-unknown-plan9 -+ exit ;; -+ *:TOPS-10:*:*) -+ echo pdp10-unknown-tops10 -+ exit ;; -+ *:TENEX:*:*) -+ echo pdp10-unknown-tenex -+ exit ;; -+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) -+ echo pdp10-dec-tops20 -+ exit ;; -+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) -+ echo pdp10-xkl-tops20 -+ exit ;; -+ *:TOPS-20:*:*) -+ echo pdp10-unknown-tops20 -+ exit ;; -+ *:ITS:*:*) -+ echo pdp10-unknown-its -+ exit ;; -+ SEI:*:*:SEIUX) -+ echo mips-sei-seiux${UNAME_RELEASE} -+ exit ;; -+ *:DragonFly:*:*) -+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` -+ exit ;; -+ *:*VMS:*:*) -+ UNAME_MACHINE=`(uname -p) 2>/dev/null` -+ case "${UNAME_MACHINE}" in -+ A*) echo alpha-dec-vms ; exit ;; -+ I*) echo ia64-dec-vms ; exit ;; -+ V*) echo vax-dec-vms ; exit ;; -+ esac ;; -+ *:XENIX:*:SysV) -+ echo i386-pc-xenix -+ exit ;; -+ i*86:skyos:*:*) -+ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' -+ exit ;; -+ i*86:rdos:*:*) -+ echo ${UNAME_MACHINE}-pc-rdos -+ exit ;; -+esac -+ -+#echo '(No uname command or uname output not recognized.)' 1>&2 -+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 -+ -+eval $set_cc_for_build -+cat >$dummy.c < -+# include -+#endif -+main () -+{ -+#if defined (sony) -+#if defined (MIPSEB) -+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, -+ I don't know.... */ -+ printf ("mips-sony-bsd\n"); exit (0); -+#else -+#include -+ printf ("m68k-sony-newsos%s\n", -+#ifdef NEWSOS4 -+ "4" -+#else -+ "" -+#endif -+ ); exit (0); -+#endif -+#endif -+ -+#if defined (__arm) && defined (__acorn) && defined (__unix) -+ printf ("arm-acorn-riscix\n"); exit (0); -+#endif -+ -+#if defined (hp300) && !defined (hpux) -+ printf ("m68k-hp-bsd\n"); exit (0); -+#endif -+ -+#if defined (NeXT) -+#if !defined (__ARCHITECTURE__) -+#define __ARCHITECTURE__ "m68k" -+#endif -+ int version; -+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; -+ if (version < 4) -+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); -+ else -+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); -+ exit (0); -+#endif -+ -+#if defined (MULTIMAX) || defined (n16) -+#if defined (UMAXV) -+ printf ("ns32k-encore-sysv\n"); exit (0); -+#else -+#if defined (CMU) -+ printf ("ns32k-encore-mach\n"); exit (0); -+#else -+ printf ("ns32k-encore-bsd\n"); exit (0); -+#endif -+#endif -+#endif -+ -+#if defined (__386BSD__) -+ printf ("i386-pc-bsd\n"); exit (0); -+#endif -+ -+#if defined (sequent) -+#if defined (i386) -+ printf ("i386-sequent-dynix\n"); exit (0); -+#endif -+#if defined (ns32000) -+ printf ("ns32k-sequent-dynix\n"); exit (0); -+#endif -+#endif -+ -+#if defined (_SEQUENT_) -+ struct utsname un; -+ -+ uname(&un); -+ -+ if (strncmp(un.version, "V2", 2) == 0) { -+ printf ("i386-sequent-ptx2\n"); exit (0); -+ } -+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ -+ printf ("i386-sequent-ptx1\n"); exit (0); -+ } -+ printf ("i386-sequent-ptx\n"); exit (0); -+ -+#endif -+ -+#if defined (vax) -+# if !defined (ultrix) -+# include -+# if defined (BSD) -+# if BSD == 43 -+ printf ("vax-dec-bsd4.3\n"); exit (0); -+# else -+# if BSD == 199006 -+ printf ("vax-dec-bsd4.3reno\n"); exit (0); -+# else -+ printf ("vax-dec-bsd\n"); exit (0); -+# endif -+# endif -+# else -+ printf ("vax-dec-bsd\n"); exit (0); -+# endif -+# else -+ printf ("vax-dec-ultrix\n"); exit (0); -+# endif -+#endif -+ -+#if defined (alliant) && defined (i860) -+ printf ("i860-alliant-bsd\n"); exit (0); -+#endif -+ -+ exit (1); -+} -+EOF -+ -+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && -+ { echo "$SYSTEM_NAME"; exit; } -+ -+# Apollos put the system type in the environment. -+ -+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } -+ -+# Convex versions that predate uname can use getsysinfo(1) -+ -+if [ -x /usr/convex/getsysinfo ] -+then -+ case `getsysinfo -f cpu_type` in -+ c1*) -+ echo c1-convex-bsd -+ exit ;; -+ c2*) -+ if getsysinfo -f scalar_acc -+ then echo c32-convex-bsd -+ else echo c2-convex-bsd -+ fi -+ exit ;; -+ c34*) -+ echo c34-convex-bsd -+ exit ;; -+ c38*) -+ echo c38-convex-bsd -+ exit ;; -+ c4*) -+ echo c4-convex-bsd -+ exit ;; -+ esac -+fi -+ -+cat >&2 < in order to provide the needed -+information to handle your system. -+ -+config.guess timestamp = $timestamp -+ -+uname -m = `(uname -m) 2>/dev/null || echo unknown` -+uname -r = `(uname -r) 2>/dev/null || echo unknown` -+uname -s = `(uname -s) 2>/dev/null || echo unknown` -+uname -v = `(uname -v) 2>/dev/null || echo unknown` -+ -+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -+/bin/uname -X = `(/bin/uname -X) 2>/dev/null` -+ -+hostinfo = `(hostinfo) 2>/dev/null` -+/bin/universe = `(/bin/universe) 2>/dev/null` -+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -+/bin/arch = `(/bin/arch) 2>/dev/null` -+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` -+ -+UNAME_MACHINE = ${UNAME_MACHINE} -+UNAME_RELEASE = ${UNAME_RELEASE} -+UNAME_SYSTEM = ${UNAME_SYSTEM} -+UNAME_VERSION = ${UNAME_VERSION} -+EOF -+ -+exit 1 -+ -+# Local variables: -+# eval: (add-hook 'write-file-hooks 'time-stamp) -+# time-stamp-start: "timestamp='" -+# time-stamp-format: "%:y-%02m-%02d" -+# time-stamp-end: "'" -+# End: -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/config.h.in open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/config.h.in ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/config.h.in 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/config.h.in 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,111 @@ -+/* config.h.in. Generated from configure.ac by autoheader. */ -+ -+/* Define to 1 if you have the header file. */ -+#undef HAVE_DLFCN_H -+ -+/* Define to 1 if the system has the type `int16_t'. */ -+#undef HAVE_INT16_T -+ -+/* Define to 1 if the system has the type `int32_t'. */ -+#undef HAVE_INT32_T -+ -+/* Define to 1 if the system has the type `int64_t'. */ -+#undef HAVE_INT64_T -+ -+/* Define to 1 if the system has the type `int8_t'. */ -+#undef HAVE_INT8_T -+ -+/* Define to 1 if you have the header file. */ -+#undef HAVE_INTTYPES_H -+ -+/* Define to 1 if you have the header file. */ -+#undef HAVE_MEMORY_H -+ -+/* Define to 1 if you have the header file. */ -+#undef HAVE_STDINT_H -+ -+/* Define to 1 if you have the header file. */ -+#undef HAVE_STDLIB_H -+ -+/* Define to 1 if you have the header file. */ -+#undef HAVE_STRINGS_H -+ -+/* Define to 1 if you have the header file. */ -+#undef HAVE_STRING_H -+ -+/* Define to 1 if you have the header file. */ -+#undef HAVE_SYS_STAT_H -+ -+/* Define to 1 if you have the header file. */ -+#undef HAVE_SYS_TYPES_H -+ -+/* Define to 1 if the system has the type `uint16_t'. */ -+#undef HAVE_UINT16_T -+ -+/* Define to 1 if the system has the type `uint32_t'. */ -+#undef HAVE_UINT32_T -+ -+/* Define to 1 if the system has the type `uint64_t'. */ -+#undef HAVE_UINT64_T -+ -+/* Define to 1 if the system has the type `uint8_t'. */ -+#undef HAVE_UINT8_T -+ -+/* Define to 1 if you have the header file. */ -+#undef HAVE_UNISTD_H -+ -+/* Define to 1 if your C compiler doesn't accept -c and -o together. */ -+#undef NO_MINUS_C_MINUS_O -+ -+/* Name of package */ -+#undef PACKAGE -+ -+/* Define to the address where bug reports for this package should be sent. */ -+#undef PACKAGE_BUGREPORT -+ -+/* Define to the full name of this package. */ -+#undef PACKAGE_NAME -+ -+/* Define to the full name and version of this package. */ -+#undef PACKAGE_STRING -+ -+/* Define to the one symbol short name of this package. */ -+#undef PACKAGE_TARNAME -+ -+/* Define to the version of this package. */ -+#undef PACKAGE_VERSION -+ -+/* The size of a `int', as computed by sizeof. */ -+#undef SIZEOF_INT -+ -+/* The size of a `long', as computed by sizeof. */ -+#undef SIZEOF_LONG -+ -+/* The size of a `short', as computed by sizeof. */ -+#undef SIZEOF_SHORT -+ -+/* Define to 1 if you have the ANSI C header files. */ -+#undef STDC_HEADERS -+ -+/* Version number of package */ -+#undef VERSION -+ -+/* Enable GNU extensions on systems that have them. */ -+#ifndef _GNU_SOURCE -+# undef _GNU_SOURCE -+#endif -+ -+/* Define to empty if `const' does not conform to ANSI C. */ -+#undef const -+ -+/* Define to `__inline__' or `__inline' if that's what the C compiler -+ calls it, or to nothing if 'inline' is not supported under any name. */ -+#ifndef __cplusplus -+#undef inline -+#endif -+ -+/* Define to `long' if does not define. */ -+#undef off_t -+ -+/* Define to `unsigned' if does not define. */ -+#undef size_t -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/config.sub open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/config.sub ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/config.sub 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/config.sub 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,1695 @@ -+#! /bin/sh -+# Configuration validation subroutine script. -+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 -+# Free Software Foundation, Inc. -+ -+timestamp='2008-09-08' -+ -+# This file is (in principle) common to ALL GNU software. -+# The presence of a machine in this file suggests that SOME GNU software -+# can handle that machine. It does not imply ALL GNU software can. -+# -+# This file 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. -+# -+# This program 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 this program; if not, write to the Free Software -+# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -+# 02110-1301, USA. -+# -+# As a special exception to the GNU General Public License, if you -+# distribute this file as part of a program that contains a -+# configuration script generated by Autoconf, you may include it under -+# the same distribution terms that you use for the rest of that program. -+ -+ -+# Please send patches to . Submit a context -+# diff and a properly formatted ChangeLog entry. -+# -+# Configuration subroutine to validate and canonicalize a configuration type. -+# Supply the specified configuration type as an argument. -+# If it is invalid, we print an error message on stderr and exit with code 1. -+# Otherwise, we print the canonical config type on stdout and succeed. -+ -+# This file is supposed to be the same for all GNU packages -+# and recognize all the CPU types, system types and aliases -+# that are meaningful with *any* GNU software. -+# Each package is responsible for reporting which valid configurations -+# it does not support. The user should be able to distinguish -+# a failure to support a valid configuration from a meaningless -+# configuration. -+ -+# The goal of this file is to map all the various variations of a given -+# machine specification into a single specification in the form: -+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -+# or in some cases, the newer four-part form: -+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -+# It is wrong to echo any other type of specification. -+ -+me=`echo "$0" | sed -e 's,.*/,,'` -+ -+usage="\ -+Usage: $0 [OPTION] CPU-MFR-OPSYS -+ $0 [OPTION] ALIAS -+ -+Canonicalize a configuration name. -+ -+Operation modes: -+ -h, --help print this help, then exit -+ -t, --time-stamp print date of last modification, then exit -+ -v, --version print version number, then exit -+ -+Report bugs and patches to ." -+ -+version="\ -+GNU config.sub ($timestamp) -+ -+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, -+2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -+ -+This is free software; see the source for copying conditions. There is NO -+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." -+ -+help=" -+Try \`$me --help' for more information." -+ -+# Parse command line -+while test $# -gt 0 ; do -+ case $1 in -+ --time-stamp | --time* | -t ) -+ echo "$timestamp" ; exit ;; -+ --version | -v ) -+ echo "$version" ; exit ;; -+ --help | --h* | -h ) -+ echo "$usage"; exit ;; -+ -- ) # Stop option processing -+ shift; break ;; -+ - ) # Use stdin as input. -+ break ;; -+ -* ) -+ echo "$me: invalid option $1$help" -+ exit 1 ;; -+ -+ *local*) -+ # First pass through any local machine types. -+ echo $1 -+ exit ;; -+ -+ * ) -+ break ;; -+ esac -+done -+ -+case $# in -+ 0) echo "$me: missing argument$help" >&2 -+ exit 1;; -+ 1) ;; -+ *) echo "$me: too many arguments$help" >&2 -+ exit 1;; -+esac -+ -+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -+# Here we must recognize all the valid KERNEL-OS combinations. -+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -+case $maybe_os in -+ nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ -+ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ -+ storm-chaos* | os2-emx* | rtmk-nova*) -+ os=-$maybe_os -+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` -+ ;; -+ *) -+ basic_machine=`echo $1 | sed 's/-[^-]*$//'` -+ if [ $basic_machine != $1 ] -+ then os=`echo $1 | sed 's/.*-/-/'` -+ else os=; fi -+ ;; -+esac -+ -+### Let's recognize common machines as not being operating systems so -+### that things like config.sub decstation-3100 work. We also -+### recognize some manufacturers as not being operating systems, so we -+### can provide default operating systems below. -+case $os in -+ -sun*os*) -+ # Prevent following clause from handling this invalid input. -+ ;; -+ -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -+ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -+ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -+ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -+ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -+ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -+ -apple | -axis | -knuth | -cray) -+ os= -+ basic_machine=$1 -+ ;; -+ -sim | -cisco | -oki | -wec | -winbond) -+ os= -+ basic_machine=$1 -+ ;; -+ -scout) -+ ;; -+ -wrs) -+ os=-vxworks -+ basic_machine=$1 -+ ;; -+ -chorusos*) -+ os=-chorusos -+ basic_machine=$1 -+ ;; -+ -chorusrdb) -+ os=-chorusrdb -+ basic_machine=$1 -+ ;; -+ -hiux*) -+ os=-hiuxwe2 -+ ;; -+ -sco6) -+ os=-sco5v6 -+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -+ ;; -+ -sco5) -+ os=-sco3.2v5 -+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -+ ;; -+ -sco4) -+ os=-sco3.2v4 -+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -+ ;; -+ -sco3.2.[4-9]*) -+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` -+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -+ ;; -+ -sco3.2v[4-9]*) -+ # Don't forget version if it is 3.2v4 or newer. -+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -+ ;; -+ -sco5v6*) -+ # Don't forget version if it is 3.2v4 or newer. -+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -+ ;; -+ -sco*) -+ os=-sco3.2v2 -+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -+ ;; -+ -udk*) -+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -+ ;; -+ -isc) -+ os=-isc2.2 -+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -+ ;; -+ -clix*) -+ basic_machine=clipper-intergraph -+ ;; -+ -isc*) -+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -+ ;; -+ -lynx*) -+ os=-lynxos -+ ;; -+ -ptx*) -+ basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` -+ ;; -+ -windowsnt*) -+ os=`echo $os | sed -e 's/windowsnt/winnt/'` -+ ;; -+ -psos*) -+ os=-psos -+ ;; -+ -mint | -mint[0-9]*) -+ basic_machine=m68k-atari -+ os=-mint -+ ;; -+esac -+ -+# Decode aliases for certain CPU-COMPANY combinations. -+case $basic_machine in -+ # Recognize the basic CPU types without company name. -+ # Some are omitted here because they have special meanings below. -+ 1750a | 580 \ -+ | a29k \ -+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ -+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ -+ | am33_2.0 \ -+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ -+ | bfin \ -+ | c4x | clipper \ -+ | d10v | d30v | dlx | dsp16xx | dvp \ -+ | fido | fr30 | frv \ -+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ -+ | i370 | i860 | i960 | ia64 \ -+ | ip2k | iq2000 \ -+ | m32c | m32r | m32rle | m68000 | m68k | m88k \ -+ | maxq | mb | microblaze | mcore | mep | metag \ -+ | mips | mipsbe | mipseb | mipsel | mipsle \ -+ | mips16 \ -+ | mips64 | mips64el \ -+ | mips64octeon | mips64octeonel \ -+ | mips64orion | mips64orionel \ -+ | mips64r5900 | mips64r5900el \ -+ | mips64vr | mips64vrel \ -+ | mips64vr4100 | mips64vr4100el \ -+ | mips64vr4300 | mips64vr4300el \ -+ | mips64vr5000 | mips64vr5000el \ -+ | mips64vr5900 | mips64vr5900el \ -+ | mipsisa32 | mipsisa32el \ -+ | mipsisa32r2 | mipsisa32r2el \ -+ | mipsisa64 | mipsisa64el \ -+ | mipsisa64r2 | mipsisa64r2el \ -+ | mipsisa64sb1 | mipsisa64sb1el \ -+ | mipsisa64sr71k | mipsisa64sr71kel \ -+ | mipstx39 | mipstx39el \ -+ | mn10200 | mn10300 \ -+ | mt \ -+ | msp430 \ -+ | nios | nios2 \ -+ | ns16k | ns32k \ -+ | or32 \ -+ | pdp10 | pdp11 | pj | pjl \ -+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ -+ | pyramid \ -+ | score \ -+ | sh | sh[1234] | sh[24]a | sh[24]a*eb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ -+ | sh64 | sh64le \ -+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ -+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ -+ | spu | strongarm \ -+ | tahoe | thumb | tic4x | tic80 | tron \ -+ | v850 | v850e \ -+ | we32k \ -+ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ -+ | z8k | z80) -+ basic_machine=$basic_machine-unknown -+ ;; -+ m6811 | m68hc11 | m6812 | m68hc12) -+ # Motorola 68HC11/12. -+ basic_machine=$basic_machine-unknown -+ os=-none -+ ;; -+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) -+ ;; -+ ms1) -+ basic_machine=mt-unknown -+ ;; -+ -+ # We use `pc' rather than `unknown' -+ # because (1) that's what they normally are, and -+ # (2) the word "unknown" tends to confuse beginning users. -+ i*86 | x86_64) -+ basic_machine=$basic_machine-pc -+ ;; -+ # Object if more than one company name word. -+ *-*-*) -+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 -+ exit 1 -+ ;; -+ # Recognize the basic CPU types with company name. -+ 580-* \ -+ | a29k-* \ -+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ -+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ -+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ -+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ -+ | avr-* | avr32-* \ -+ | bfin-* | bs2000-* \ -+ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ -+ | clipper-* | craynv-* | cydra-* \ -+ | d10v-* | d30v-* | dlx-* \ -+ | elxsi-* \ -+ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ -+ | h8300-* | h8500-* \ -+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ -+ | i*86-* | i860-* | i960-* | ia64-* \ -+ | ip2k-* | iq2000-* \ -+ | m32c-* | m32r-* | m32rle-* \ -+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ -+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ -+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ -+ | mips16-* \ -+ | mips64-* | mips64el-* \ -+ | mips64octeon-* | mips64octeonel-* \ -+ | mips64orion-* | mips64orionel-* \ -+ | mips64r5900-* | mips64r5900el-* \ -+ | mips64vr-* | mips64vrel-* \ -+ | mips64vr4100-* | mips64vr4100el-* \ -+ | mips64vr4300-* | mips64vr4300el-* \ -+ | mips64vr5000-* | mips64vr5000el-* \ -+ | mips64vr5900-* | mips64vr5900el-* \ -+ | mipsisa32-* | mipsisa32el-* \ -+ | mipsisa32r2-* | mipsisa32r2el-* \ -+ | mipsisa64-* | mipsisa64el-* \ -+ | mipsisa64r2-* | mipsisa64r2el-* \ -+ | mipsisa64sb1-* | mipsisa64sb1el-* \ -+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ -+ | mipstx39-* | mipstx39el-* \ -+ | mmix-* \ -+ | mt-* \ -+ | msp430-* \ -+ | nios-* | nios2-* \ -+ | none-* | np1-* | ns16k-* | ns32k-* \ -+ | orion-* \ -+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ -+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ -+ | pyramid-* \ -+ | romp-* | rs6000-* \ -+ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]a*eb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ -+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ -+ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ -+ | sparclite-* \ -+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ -+ | tahoe-* | thumb-* \ -+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ -+ | tron-* \ -+ | v850-* | v850e-* | vax-* \ -+ | we32k-* \ -+ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ -+ | xstormy16-* | xtensa*-* \ -+ | ymp-* \ -+ | z8k-* | z80-*) -+ ;; -+ # Recognize the basic CPU types without company name, with glob match. -+ xtensa*) -+ basic_machine=$basic_machine-unknown -+ ;; -+ # Recognize the various machine names and aliases which stand -+ # for a CPU type and a company and sometimes even an OS. -+ 386bsd) -+ basic_machine=i386-unknown -+ os=-bsd -+ ;; -+ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) -+ basic_machine=m68000-att -+ ;; -+ 3b*) -+ basic_machine=we32k-att -+ ;; -+ a29khif) -+ basic_machine=a29k-amd -+ os=-udi -+ ;; -+ abacus) -+ basic_machine=abacus-unknown -+ ;; -+ adobe68k) -+ basic_machine=m68010-adobe -+ os=-scout -+ ;; -+ alliant | fx80) -+ basic_machine=fx80-alliant -+ ;; -+ altos | altos3068) -+ basic_machine=m68k-altos -+ ;; -+ am29k) -+ basic_machine=a29k-none -+ os=-bsd -+ ;; -+ amd64) -+ basic_machine=x86_64-pc -+ ;; -+ amd64-*) -+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ amdahl) -+ basic_machine=580-amdahl -+ os=-sysv -+ ;; -+ amiga | amiga-*) -+ basic_machine=m68k-unknown -+ ;; -+ amigaos | amigados) -+ basic_machine=m68k-unknown -+ os=-amigaos -+ ;; -+ amigaunix | amix) -+ basic_machine=m68k-unknown -+ os=-sysv4 -+ ;; -+ apollo68) -+ basic_machine=m68k-apollo -+ os=-sysv -+ ;; -+ apollo68bsd) -+ basic_machine=m68k-apollo -+ os=-bsd -+ ;; -+ aux) -+ basic_machine=m68k-apple -+ os=-aux -+ ;; -+ balance) -+ basic_machine=ns32k-sequent -+ os=-dynix -+ ;; -+ blackfin) -+ basic_machine=bfin-unknown -+ os=-linux -+ ;; -+ blackfin-*) -+ basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` -+ os=-linux -+ ;; -+ c90) -+ basic_machine=c90-cray -+ os=-unicos -+ ;; -+ cegcc) -+ basic_machine=arm-unknown -+ os=-cegcc -+ ;; -+ convex-c1) -+ basic_machine=c1-convex -+ os=-bsd -+ ;; -+ convex-c2) -+ basic_machine=c2-convex -+ os=-bsd -+ ;; -+ convex-c32) -+ basic_machine=c32-convex -+ os=-bsd -+ ;; -+ convex-c34) -+ basic_machine=c34-convex -+ os=-bsd -+ ;; -+ convex-c38) -+ basic_machine=c38-convex -+ os=-bsd -+ ;; -+ cray | j90) -+ basic_machine=j90-cray -+ os=-unicos -+ ;; -+ craynv) -+ basic_machine=craynv-cray -+ os=-unicosmp -+ ;; -+ cr16) -+ basic_machine=cr16-unknown -+ os=-elf -+ ;; -+ crds | unos) -+ basic_machine=m68k-crds -+ ;; -+ crisv32 | crisv32-* | etraxfs*) -+ basic_machine=crisv32-axis -+ ;; -+ cris | cris-* | etrax*) -+ basic_machine=cris-axis -+ ;; -+ crx) -+ basic_machine=crx-unknown -+ os=-elf -+ ;; -+ da30 | da30-*) -+ basic_machine=m68k-da30 -+ ;; -+ decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) -+ basic_machine=mips-dec -+ ;; -+ decsystem10* | dec10*) -+ basic_machine=pdp10-dec -+ os=-tops10 -+ ;; -+ decsystem20* | dec20*) -+ basic_machine=pdp10-dec -+ os=-tops20 -+ ;; -+ delta | 3300 | motorola-3300 | motorola-delta \ -+ | 3300-motorola | delta-motorola) -+ basic_machine=m68k-motorola -+ ;; -+ delta88) -+ basic_machine=m88k-motorola -+ os=-sysv3 -+ ;; -+ dicos) -+ basic_machine=i686-pc -+ os=-dicos -+ ;; -+ djgpp) -+ basic_machine=i586-pc -+ os=-msdosdjgpp -+ ;; -+ dpx20 | dpx20-*) -+ basic_machine=rs6000-bull -+ os=-bosx -+ ;; -+ dpx2* | dpx2*-bull) -+ basic_machine=m68k-bull -+ os=-sysv3 -+ ;; -+ ebmon29k) -+ basic_machine=a29k-amd -+ os=-ebmon -+ ;; -+ elxsi) -+ basic_machine=elxsi-elxsi -+ os=-bsd -+ ;; -+ encore | umax | mmax) -+ basic_machine=ns32k-encore -+ ;; -+ es1800 | OSE68k | ose68k | ose | OSE) -+ basic_machine=m68k-ericsson -+ os=-ose -+ ;; -+ fx2800) -+ basic_machine=i860-alliant -+ ;; -+ genix) -+ basic_machine=ns32k-ns -+ ;; -+ gmicro) -+ basic_machine=tron-gmicro -+ os=-sysv -+ ;; -+ go32) -+ basic_machine=i386-pc -+ os=-go32 -+ ;; -+ h3050r* | hiux*) -+ basic_machine=hppa1.1-hitachi -+ os=-hiuxwe2 -+ ;; -+ h8300hms) -+ basic_machine=h8300-hitachi -+ os=-hms -+ ;; -+ h8300xray) -+ basic_machine=h8300-hitachi -+ os=-xray -+ ;; -+ h8500hms) -+ basic_machine=h8500-hitachi -+ os=-hms -+ ;; -+ harris) -+ basic_machine=m88k-harris -+ os=-sysv3 -+ ;; -+ hp300-*) -+ basic_machine=m68k-hp -+ ;; -+ hp300bsd) -+ basic_machine=m68k-hp -+ os=-bsd -+ ;; -+ hp300hpux) -+ basic_machine=m68k-hp -+ os=-hpux -+ ;; -+ hp3k9[0-9][0-9] | hp9[0-9][0-9]) -+ basic_machine=hppa1.0-hp -+ ;; -+ hp9k2[0-9][0-9] | hp9k31[0-9]) -+ basic_machine=m68000-hp -+ ;; -+ hp9k3[2-9][0-9]) -+ basic_machine=m68k-hp -+ ;; -+ hp9k6[0-9][0-9] | hp6[0-9][0-9]) -+ basic_machine=hppa1.0-hp -+ ;; -+ hp9k7[0-79][0-9] | hp7[0-79][0-9]) -+ basic_machine=hppa1.1-hp -+ ;; -+ hp9k78[0-9] | hp78[0-9]) -+ # FIXME: really hppa2.0-hp -+ basic_machine=hppa1.1-hp -+ ;; -+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) -+ # FIXME: really hppa2.0-hp -+ basic_machine=hppa1.1-hp -+ ;; -+ hp9k8[0-9][13679] | hp8[0-9][13679]) -+ basic_machine=hppa1.1-hp -+ ;; -+ hp9k8[0-9][0-9] | hp8[0-9][0-9]) -+ basic_machine=hppa1.0-hp -+ ;; -+ hppa-next) -+ os=-nextstep3 -+ ;; -+ hppaosf) -+ basic_machine=hppa1.1-hp -+ os=-osf -+ ;; -+ hppro) -+ basic_machine=hppa1.1-hp -+ os=-proelf -+ ;; -+ i370-ibm* | ibm*) -+ basic_machine=i370-ibm -+ ;; -+# I'm not sure what "Sysv32" means. Should this be sysv3.2? -+ i*86v32) -+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` -+ os=-sysv32 -+ ;; -+ i*86v4*) -+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` -+ os=-sysv4 -+ ;; -+ i*86v) -+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` -+ os=-sysv -+ ;; -+ i*86sol2) -+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` -+ os=-solaris2 -+ ;; -+ i386mach) -+ basic_machine=i386-mach -+ os=-mach -+ ;; -+ i386-vsta | vsta) -+ basic_machine=i386-unknown -+ os=-vsta -+ ;; -+ iris | iris4d) -+ basic_machine=mips-sgi -+ case $os in -+ -irix*) -+ ;; -+ *) -+ os=-irix4 -+ ;; -+ esac -+ ;; -+ isi68 | isi) -+ basic_machine=m68k-isi -+ os=-sysv -+ ;; -+ m68knommu) -+ basic_machine=m68k-unknown -+ os=-linux -+ ;; -+ m68knommu-*) -+ basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` -+ os=-linux -+ ;; -+ m88k-omron*) -+ basic_machine=m88k-omron -+ ;; -+ magnum | m3230) -+ basic_machine=mips-mips -+ os=-sysv -+ ;; -+ merlin) -+ basic_machine=ns32k-utek -+ os=-sysv -+ ;; -+ mingw32) -+ basic_machine=i386-pc -+ os=-mingw32 -+ ;; -+ mingw32ce) -+ basic_machine=arm-unknown -+ os=-mingw32ce -+ ;; -+ miniframe) -+ basic_machine=m68000-convergent -+ ;; -+ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) -+ basic_machine=m68k-atari -+ os=-mint -+ ;; -+ mipsEE* | ee | ps2) -+ basic_machine=mips64r5900el-scei -+ case $os in -+ -linux*) -+ ;; -+ *) -+ os=-elf -+ ;; -+ esac -+ ;; -+ iop) -+ basic_machine=mipsel-scei -+ os=-irx -+ ;; -+ dvp) -+ basic_machine=dvp-scei -+ os=-elf -+ ;; -+ mips3*-*) -+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` -+ ;; -+ mips3*) -+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown -+ ;; -+ monitor) -+ basic_machine=m68k-rom68k -+ os=-coff -+ ;; -+ morphos) -+ basic_machine=powerpc-unknown -+ os=-morphos -+ ;; -+ msdos) -+ basic_machine=i386-pc -+ os=-msdos -+ ;; -+ ms1-*) -+ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` -+ ;; -+ mvs) -+ basic_machine=i370-ibm -+ os=-mvs -+ ;; -+ ncr3000) -+ basic_machine=i486-ncr -+ os=-sysv4 -+ ;; -+ netbsd386) -+ basic_machine=i386-unknown -+ os=-netbsd -+ ;; -+ netwinder) -+ basic_machine=armv4l-rebel -+ os=-linux -+ ;; -+ news | news700 | news800 | news900) -+ basic_machine=m68k-sony -+ os=-newsos -+ ;; -+ news1000) -+ basic_machine=m68030-sony -+ os=-newsos -+ ;; -+ news-3600 | risc-news) -+ basic_machine=mips-sony -+ os=-newsos -+ ;; -+ necv70) -+ basic_machine=v70-nec -+ os=-sysv -+ ;; -+ next | m*-next ) -+ basic_machine=m68k-next -+ case $os in -+ -nextstep* ) -+ ;; -+ -ns2*) -+ os=-nextstep2 -+ ;; -+ *) -+ os=-nextstep3 -+ ;; -+ esac -+ ;; -+ nh3000) -+ basic_machine=m68k-harris -+ os=-cxux -+ ;; -+ nh[45]000) -+ basic_machine=m88k-harris -+ os=-cxux -+ ;; -+ nindy960) -+ basic_machine=i960-intel -+ os=-nindy -+ ;; -+ mon960) -+ basic_machine=i960-intel -+ os=-mon960 -+ ;; -+ nonstopux) -+ basic_machine=mips-compaq -+ os=-nonstopux -+ ;; -+ np1) -+ basic_machine=np1-gould -+ ;; -+ nsr-tandem) -+ basic_machine=nsr-tandem -+ ;; -+ op50n-* | op60c-*) -+ basic_machine=hppa1.1-oki -+ os=-proelf -+ ;; -+ openrisc | openrisc-*) -+ basic_machine=or32-unknown -+ ;; -+ os400) -+ basic_machine=powerpc-ibm -+ os=-os400 -+ ;; -+ OSE68000 | ose68000) -+ basic_machine=m68000-ericsson -+ os=-ose -+ ;; -+ os68k) -+ basic_machine=m68k-none -+ os=-os68k -+ ;; -+ pa-hitachi) -+ basic_machine=hppa1.1-hitachi -+ os=-hiuxwe2 -+ ;; -+ paragon) -+ basic_machine=i860-intel -+ os=-osf -+ ;; -+ parisc) -+ basic_machine=hppa-unknown -+ os=-linux -+ ;; -+ parisc-*) -+ basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` -+ os=-linux -+ ;; -+ pbd) -+ basic_machine=sparc-tti -+ ;; -+ pbb) -+ basic_machine=m68k-tti -+ ;; -+ pc532 | pc532-*) -+ basic_machine=ns32k-pc532 -+ ;; -+ pc98) -+ basic_machine=i386-pc -+ ;; -+ pc98-*) -+ basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ pentium | p5 | k5 | k6 | nexgen | viac3) -+ basic_machine=i586-pc -+ ;; -+ pentiumpro | p6 | 6x86 | athlon | athlon_*) -+ basic_machine=i686-pc -+ ;; -+ pentiumii | pentium2 | pentiumiii | pentium3) -+ basic_machine=i686-pc -+ ;; -+ pentium4) -+ basic_machine=i786-pc -+ ;; -+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) -+ basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ pentiumpro-* | p6-* | 6x86-* | athlon-*) -+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) -+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ pentium4-*) -+ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ pn) -+ basic_machine=pn-gould -+ ;; -+ power) basic_machine=power-ibm -+ ;; -+ ppc) basic_machine=powerpc-unknown -+ ;; -+ ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ ppcle | powerpclittle | ppc-le | powerpc-little) -+ basic_machine=powerpcle-unknown -+ ;; -+ ppcle-* | powerpclittle-*) -+ basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ ppc64) basic_machine=powerpc64-unknown -+ ;; -+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ ppc64le | powerpc64little | ppc64-le | powerpc64-little) -+ basic_machine=powerpc64le-unknown -+ ;; -+ ppc64le-* | powerpc64little-*) -+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ ps2) -+ basic_machine=i386-ibm -+ ;; -+ pw32) -+ basic_machine=i586-unknown -+ os=-pw32 -+ ;; -+ rdos) -+ basic_machine=i386-pc -+ os=-rdos -+ ;; -+ rom68k) -+ basic_machine=m68k-rom68k -+ os=-coff -+ ;; -+ rm[46]00) -+ basic_machine=mips-siemens -+ ;; -+ rtpc | rtpc-*) -+ basic_machine=romp-ibm -+ ;; -+ s390 | s390-*) -+ basic_machine=s390-ibm -+ ;; -+ s390x | s390x-*) -+ basic_machine=s390x-ibm -+ ;; -+ sa29200) -+ basic_machine=a29k-amd -+ os=-udi -+ ;; -+ sb1) -+ basic_machine=mipsisa64sb1-unknown -+ ;; -+ sb1el) -+ basic_machine=mipsisa64sb1el-unknown -+ ;; -+ sde) -+ basic_machine=mipsisa32-sde -+ os=-elf -+ ;; -+ sei) -+ basic_machine=mips-sei -+ os=-seiux -+ ;; -+ sequent) -+ basic_machine=i386-sequent -+ ;; -+ sh) -+ basic_machine=sh-hitachi -+ os=-hms -+ ;; -+ sh5el) -+ basic_machine=sh5le-unknown -+ ;; -+ sh64) -+ basic_machine=sh64-unknown -+ ;; -+ sparclite-wrs | simso-wrs) -+ basic_machine=sparclite-wrs -+ os=-vxworks -+ ;; -+ sps7) -+ basic_machine=m68k-bull -+ os=-sysv2 -+ ;; -+ spur) -+ basic_machine=spur-unknown -+ ;; -+ st2000) -+ basic_machine=m68k-tandem -+ ;; -+ stratus) -+ basic_machine=i860-stratus -+ os=-sysv4 -+ ;; -+ sun2) -+ basic_machine=m68000-sun -+ ;; -+ sun2os3) -+ basic_machine=m68000-sun -+ os=-sunos3 -+ ;; -+ sun2os4) -+ basic_machine=m68000-sun -+ os=-sunos4 -+ ;; -+ sun3os3) -+ basic_machine=m68k-sun -+ os=-sunos3 -+ ;; -+ sun3os4) -+ basic_machine=m68k-sun -+ os=-sunos4 -+ ;; -+ sun4os3) -+ basic_machine=sparc-sun -+ os=-sunos3 -+ ;; -+ sun4os4) -+ basic_machine=sparc-sun -+ os=-sunos4 -+ ;; -+ sun4sol2) -+ basic_machine=sparc-sun -+ os=-solaris2 -+ ;; -+ sun3 | sun3-*) -+ basic_machine=m68k-sun -+ ;; -+ sun4) -+ basic_machine=sparc-sun -+ ;; -+ sun386 | sun386i | roadrunner) -+ basic_machine=i386-sun -+ ;; -+ sv1) -+ basic_machine=sv1-cray -+ os=-unicos -+ ;; -+ symmetry) -+ basic_machine=i386-sequent -+ os=-dynix -+ ;; -+ t3e) -+ basic_machine=alphaev5-cray -+ os=-unicos -+ ;; -+ t90) -+ basic_machine=t90-cray -+ os=-unicos -+ ;; -+ tic54x | c54x*) -+ basic_machine=tic54x-unknown -+ os=-coff -+ ;; -+ tic55x | c55x*) -+ basic_machine=tic55x-unknown -+ os=-coff -+ ;; -+ tic6x | c6x*) -+ basic_machine=tic6x-unknown -+ os=-coff -+ ;; -+ tile*) -+ basic_machine=tile-unknown -+ os=-linux-gnu -+ ;; -+ tx39) -+ basic_machine=mipstx39-unknown -+ ;; -+ tx39el) -+ basic_machine=mipstx39el-unknown -+ ;; -+ toad1) -+ basic_machine=pdp10-xkl -+ os=-tops20 -+ ;; -+ tower | tower-32) -+ basic_machine=m68k-ncr -+ ;; -+ tpf) -+ basic_machine=s390x-ibm -+ os=-tpf -+ ;; -+ udi29k) -+ basic_machine=a29k-amd -+ os=-udi -+ ;; -+ ultra3) -+ basic_machine=a29k-nyu -+ os=-sym1 -+ ;; -+ v810 | necv810) -+ basic_machine=v810-nec -+ os=-none -+ ;; -+ vaxv) -+ basic_machine=vax-dec -+ os=-sysv -+ ;; -+ vms) -+ basic_machine=vax-dec -+ os=-vms -+ ;; -+ vpp*|vx|vx-*) -+ basic_machine=f301-fujitsu -+ ;; -+ vxworks960) -+ basic_machine=i960-wrs -+ os=-vxworks -+ ;; -+ vxworks68) -+ basic_machine=m68k-wrs -+ os=-vxworks -+ ;; -+ vxworks29k) -+ basic_machine=a29k-wrs -+ os=-vxworks -+ ;; -+ w65*) -+ basic_machine=w65-wdc -+ os=-none -+ ;; -+ w89k-*) -+ basic_machine=hppa1.1-winbond -+ os=-proelf -+ ;; -+ xbox) -+ basic_machine=i686-pc -+ os=-mingw32 -+ ;; -+ xps | xps100) -+ basic_machine=xps100-honeywell -+ ;; -+ ymp) -+ basic_machine=ymp-cray -+ os=-unicos -+ ;; -+ z8k-*-coff) -+ basic_machine=z8k-unknown -+ os=-sim -+ ;; -+ z80-*-coff) -+ basic_machine=z80-unknown -+ os=-sim -+ ;; -+ none) -+ basic_machine=none-none -+ os=-none -+ ;; -+ -+# Here we handle the default manufacturer of certain CPU types. It is in -+# some cases the only manufacturer, in others, it is the most popular. -+ w89k) -+ basic_machine=hppa1.1-winbond -+ ;; -+ op50n) -+ basic_machine=hppa1.1-oki -+ ;; -+ op60c) -+ basic_machine=hppa1.1-oki -+ ;; -+ romp) -+ basic_machine=romp-ibm -+ ;; -+ mmix) -+ basic_machine=mmix-knuth -+ ;; -+ rs6000) -+ basic_machine=rs6000-ibm -+ ;; -+ vax) -+ basic_machine=vax-dec -+ ;; -+ pdp10) -+ # there are many clones, so DEC is not a safe bet -+ basic_machine=pdp10-unknown -+ ;; -+ pdp11) -+ basic_machine=pdp11-dec -+ ;; -+ we32k) -+ basic_machine=we32k-att -+ ;; -+ sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) -+ basic_machine=sh-unknown -+ ;; -+ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) -+ basic_machine=sparc-sun -+ ;; -+ cydra) -+ basic_machine=cydra-cydrome -+ ;; -+ orion) -+ basic_machine=orion-highlevel -+ ;; -+ orion105) -+ basic_machine=clipper-highlevel -+ ;; -+ mac | mpw | mac-mpw) -+ basic_machine=m68k-apple -+ ;; -+ pmac | pmac-mpw) -+ basic_machine=powerpc-apple -+ ;; -+ *-unknown) -+ # Make sure to match an already-canonicalized machine name. -+ ;; -+ *) -+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 -+ exit 1 -+ ;; -+esac -+ -+# Here we canonicalize certain aliases for manufacturers. -+case $basic_machine in -+ *-digital*) -+ basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` -+ ;; -+ *-commodore*) -+ basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` -+ ;; -+ *) -+ ;; -+esac -+ -+# Decode manufacturer-specific aliases for certain operating systems. -+ -+if [ x"$os" != x"" ] -+then -+case $os in -+ # First match some system type aliases -+ # that might get confused with valid system types. -+ # -solaris* is a basic system type, with this one exception. -+ -solaris1 | -solaris1.*) -+ os=`echo $os | sed -e 's|solaris1|sunos4|'` -+ ;; -+ -solaris) -+ os=-solaris2 -+ ;; -+ -svr4*) -+ os=-sysv4 -+ ;; -+ -unixware*) -+ os=-sysv4.2uw -+ ;; -+ -gnu/linux*) -+ os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` -+ ;; -+ # First accept the basic system types. -+ # The portable systems comes first. -+ # Each alternative MUST END IN A *, to match a version number. -+ # -sysv* is not here because it comes later, after sysvr4. -+ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ -+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ -+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ -+ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ -+ | -aos* \ -+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ -+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ -+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ -+ | -openbsd* | -solidbsd* \ -+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ -+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ -+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ -+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ -+ | -chorusos* | -chorusrdb* | -cegcc* \ -+ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ -+ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ -+ | -uxpv* | -beos* | -mpeix* | -udk* \ -+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ -+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ -+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ -+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ -+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ -+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ -+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -irx*) -+ # Remember, each alternative MUST END IN *, to match a version number. -+ ;; -+ -qnx*) -+ case $basic_machine in -+ x86-* | i*86-*) -+ ;; -+ *) -+ os=-nto$os -+ ;; -+ esac -+ ;; -+ -nto-qnx*) -+ ;; -+ -nto*) -+ os=`echo $os | sed -e 's|nto|nto-qnx|'` -+ ;; -+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ -+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ -+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) -+ ;; -+ -mac*) -+ os=`echo $os | sed -e 's|mac|macos|'` -+ ;; -+ -linux-dietlibc) -+ os=-linux-dietlibc -+ ;; -+ -linux*) -+ os=`echo $os | sed -e 's|linux|linux-gnu|'` -+ ;; -+ -sunos5*) -+ os=`echo $os | sed -e 's|sunos5|solaris2|'` -+ ;; -+ -sunos6*) -+ os=`echo $os | sed -e 's|sunos6|solaris3|'` -+ ;; -+ -opened*) -+ os=-openedition -+ ;; -+ -os400*) -+ os=-os400 -+ ;; -+ -wince*) -+ os=-wince -+ ;; -+ -osfrose*) -+ os=-osfrose -+ ;; -+ -osf*) -+ os=-osf -+ ;; -+ -utek*) -+ os=-bsd -+ ;; -+ -dynix*) -+ os=-bsd -+ ;; -+ -acis*) -+ os=-aos -+ ;; -+ -atheos*) -+ os=-atheos -+ ;; -+ -syllable*) -+ os=-syllable -+ ;; -+ -386bsd) -+ os=-bsd -+ ;; -+ -ctix* | -uts*) -+ os=-sysv -+ ;; -+ -nova*) -+ os=-rtmk-nova -+ ;; -+ -ns2 ) -+ os=-nextstep2 -+ ;; -+ -nsk*) -+ os=-nsk -+ ;; -+ # Preserve the version number of sinix5. -+ -sinix5.*) -+ os=`echo $os | sed -e 's|sinix|sysv|'` -+ ;; -+ -sinix*) -+ os=-sysv4 -+ ;; -+ -tpf*) -+ os=-tpf -+ ;; -+ -triton*) -+ os=-sysv3 -+ ;; -+ -oss*) -+ os=-sysv3 -+ ;; -+ -svr4) -+ os=-sysv4 -+ ;; -+ -svr3) -+ os=-sysv3 -+ ;; -+ -sysvr4) -+ os=-sysv4 -+ ;; -+ # This must come after -sysvr4. -+ -sysv*) -+ ;; -+ -ose*) -+ os=-ose -+ ;; -+ -es1800*) -+ os=-ose -+ ;; -+ -xenix) -+ os=-xenix -+ ;; -+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) -+ os=-mint -+ ;; -+ -aros*) -+ os=-aros -+ ;; -+ -kaos*) -+ os=-kaos -+ ;; -+ -zvmoe) -+ os=-zvmoe -+ ;; -+ -dicos*) -+ os=-dicos -+ ;; -+ -none) -+ ;; -+ *) -+ # Get rid of the `-' at the beginning of $os. -+ os=`echo $os | sed 's/[^-]*-//'` -+ echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 -+ exit 1 -+ ;; -+esac -+else -+ -+# Here we handle the default operating systems that come with various machines. -+# The value should be what the vendor currently ships out the door with their -+# machine or put another way, the most popular os provided with the machine. -+ -+# Note that if you're going to try to match "-MANUFACTURER" here (say, -+# "-sun"), then you have to tell the case statement up towards the top -+# that MANUFACTURER isn't an operating system. Otherwise, code above -+# will signal an error saying that MANUFACTURER isn't an operating -+# system, and we'll never get to this point. -+ -+case $basic_machine in -+ score-*) -+ os=-elf -+ ;; -+ spu-*) -+ os=-elf -+ ;; -+ *-acorn) -+ os=-riscix1.2 -+ ;; -+ arm*-rebel) -+ os=-linux -+ ;; -+ arm*-semi) -+ os=-aout -+ ;; -+ c4x-* | tic4x-*) -+ os=-coff -+ ;; -+ # This must come before the *-dec entry. -+ pdp10-*) -+ os=-tops20 -+ ;; -+ pdp11-*) -+ os=-none -+ ;; -+ *-dec | vax-*) -+ os=-ultrix4.2 -+ ;; -+ m68*-apollo) -+ os=-domain -+ ;; -+ i386-sun) -+ os=-sunos4.0.2 -+ ;; -+ m68000-sun) -+ os=-sunos3 -+ # This also exists in the configure program, but was not the -+ # default. -+ # os=-sunos4 -+ ;; -+ m68*-cisco) -+ os=-aout -+ ;; -+ mep-*) -+ os=-elf -+ ;; -+ mips*-cisco) -+ os=-elf -+ ;; -+ mips*-*) -+ os=-elf -+ ;; -+ or32-*) -+ os=-coff -+ ;; -+ *-tti) # must be before sparc entry or we get the wrong os. -+ os=-sysv3 -+ ;; -+ sparc-* | *-sun) -+ os=-sunos4.1.1 -+ ;; -+ *-be) -+ os=-beos -+ ;; -+ *-haiku) -+ os=-haiku -+ ;; -+ *-ibm) -+ os=-aix -+ ;; -+ *-knuth) -+ os=-mmixware -+ ;; -+ *-wec) -+ os=-proelf -+ ;; -+ *-winbond) -+ os=-proelf -+ ;; -+ *-oki) -+ os=-proelf -+ ;; -+ *-hp) -+ os=-hpux -+ ;; -+ *-hitachi) -+ os=-hiux -+ ;; -+ i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) -+ os=-sysv -+ ;; -+ *-cbm) -+ os=-amigaos -+ ;; -+ *-dg) -+ os=-dgux -+ ;; -+ *-dolphin) -+ os=-sysv3 -+ ;; -+ m68k-ccur) -+ os=-rtu -+ ;; -+ m88k-omron*) -+ os=-luna -+ ;; -+ *-next ) -+ os=-nextstep -+ ;; -+ *-sequent) -+ os=-ptx -+ ;; -+ *-crds) -+ os=-unos -+ ;; -+ *-ns) -+ os=-genix -+ ;; -+ i370-*) -+ os=-mvs -+ ;; -+ *-next) -+ os=-nextstep3 -+ ;; -+ *-gould) -+ os=-sysv -+ ;; -+ *-highlevel) -+ os=-bsd -+ ;; -+ *-encore) -+ os=-bsd -+ ;; -+ *-sgi) -+ os=-irix -+ ;; -+ *-siemens) -+ os=-sysv4 -+ ;; -+ *-masscomp) -+ os=-rtu -+ ;; -+ f30[01]-fujitsu | f700-fujitsu) -+ os=-uxpv -+ ;; -+ *-rom68k) -+ os=-coff -+ ;; -+ *-*bug) -+ os=-coff -+ ;; -+ *-apple) -+ os=-macos -+ ;; -+ *-atari*) -+ os=-mint -+ ;; -+ *) -+ os=-none -+ ;; -+esac -+fi -+ -+# Here we handle the case where we know the os, and the CPU type, but not the -+# manufacturer. We pick the logical manufacturer. -+vendor=unknown -+case $basic_machine in -+ *-unknown) -+ case $os in -+ -riscix*) -+ vendor=acorn -+ ;; -+ -sunos*) -+ vendor=sun -+ ;; -+ -aix*) -+ vendor=ibm -+ ;; -+ -beos*) -+ vendor=be -+ ;; -+ -hpux*) -+ vendor=hp -+ ;; -+ -mpeix*) -+ vendor=hp -+ ;; -+ -hiux*) -+ vendor=hitachi -+ ;; -+ -unos*) -+ vendor=crds -+ ;; -+ -dgux*) -+ vendor=dg -+ ;; -+ -luna*) -+ vendor=omron -+ ;; -+ -genix*) -+ vendor=ns -+ ;; -+ -mvs* | -opened*) -+ vendor=ibm -+ ;; -+ -os400*) -+ vendor=ibm -+ ;; -+ -ptx*) -+ vendor=sequent -+ ;; -+ -tpf*) -+ vendor=ibm -+ ;; -+ -vxsim* | -vxworks* | -windiss*) -+ vendor=wrs -+ ;; -+ -aux*) -+ vendor=apple -+ ;; -+ -hms*) -+ vendor=hitachi -+ ;; -+ -mpw* | -macos*) -+ vendor=apple -+ ;; -+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) -+ vendor=atari -+ ;; -+ -vos*) -+ vendor=stratus -+ ;; -+ esac -+ basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` -+ ;; -+esac -+ -+echo $basic_machine$os -+exit -+ -+# Local variables: -+# eval: (add-hook 'write-file-hooks 'time-stamp) -+# time-stamp-start: "timestamp='" -+# time-stamp-format: "%:y-%02m-%02d" -+# time-stamp-end: "'" -+# End: -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/configure open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/configure ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/configure 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/configure 2011-08-03 20:01:16.000000000 -0500 -@@ -0,0 +1,22786 @@ -+#! /bin/sh -+# Guess values for system-dependent variables and create Makefiles. -+# Generated by GNU Autoconf 2.59 for iscsiuio 0.7.0.12. -+# -+# Report bugs to . -+# -+# Copyright (C) 2003 Free Software Foundation, Inc. -+# This configure script is free software; the Free Software Foundation -+# gives unlimited permission to copy, distribute and modify it. -+## --------------------- ## -+## M4sh Initialization. ## -+## --------------------- ## -+ -+# Be Bourne compatible -+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then -+ emulate sh -+ NULLCMD=: -+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which -+ # is contrary to our usage. Disable this feature. -+ alias -g '${1+"$@"}'='"$@"' -+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then -+ set -o posix -+fi -+DUALCASE=1; export DUALCASE # for MKS sh -+ -+# Support unset when possible. -+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then -+ as_unset=unset -+else -+ as_unset=false -+fi -+ -+ -+# Work around bugs in pre-3.0 UWIN ksh. -+$as_unset ENV MAIL MAILPATH -+PS1='$ ' -+PS2='> ' -+PS4='+ ' -+ -+# NLS nuisances. -+for as_var in \ -+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ -+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ -+ LC_TELEPHONE LC_TIME -+do -+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then -+ eval $as_var=C; export $as_var -+ else -+ $as_unset $as_var -+ fi -+done -+ -+# Required to use basename. -+if expr a : '\(a\)' >/dev/null 2>&1; then -+ as_expr=expr -+else -+ as_expr=false -+fi -+ -+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then -+ as_basename=basename -+else -+ as_basename=false -+fi -+ -+ -+# Name of the executable. -+as_me=`$as_basename "$0" || -+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ -+ X"$0" : 'X\(//\)$' \| \ -+ X"$0" : 'X\(/\)$' \| \ -+ . : '\(.\)' 2>/dev/null || -+echo X/"$0" | -+ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } -+ /^X\/\(\/\/\)$/{ s//\1/; q; } -+ /^X\/\(\/\).*/{ s//\1/; q; } -+ s/.*/./; q'` -+ -+ -+# PATH needs CR, and LINENO needs CR and PATH. -+# Avoid depending upon Character Ranges. -+as_cr_letters='abcdefghijklmnopqrstuvwxyz' -+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -+as_cr_Letters=$as_cr_letters$as_cr_LETTERS -+as_cr_digits='0123456789' -+as_cr_alnum=$as_cr_Letters$as_cr_digits -+ -+# The user is always right. -+if test "${PATH_SEPARATOR+set}" != set; then -+ echo "#! /bin/sh" >conf$$.sh -+ echo "exit 0" >>conf$$.sh -+ chmod +x conf$$.sh -+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then -+ PATH_SEPARATOR=';' -+ else -+ PATH_SEPARATOR=: -+ fi -+ rm -f conf$$.sh -+fi -+ -+ -+ as_lineno_1=$LINENO -+ as_lineno_2=$LINENO -+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` -+ test "x$as_lineno_1" != "x$as_lineno_2" && -+ test "x$as_lineno_3" = "x$as_lineno_2" || { -+ # Find who we are. Look in the path if we contain no path at all -+ # relative or not. -+ case $0 in -+ *[\\/]* ) as_myself=$0 ;; -+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -+done -+ -+ ;; -+ esac -+ # We did not find ourselves, most probably we were run as `sh COMMAND' -+ # in which case we are not to be found in the path. -+ if test "x$as_myself" = x; then -+ as_myself=$0 -+ fi -+ if test ! -f "$as_myself"; then -+ { echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2 -+ { (exit 1); exit 1; }; } -+ fi -+ case $CONFIG_SHELL in -+ '') -+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for as_base in sh bash ksh sh5; do -+ case $as_dir in -+ /*) -+ if ("$as_dir/$as_base" -c ' -+ as_lineno_1=$LINENO -+ as_lineno_2=$LINENO -+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` -+ test "x$as_lineno_1" != "x$as_lineno_2" && -+ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then -+ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } -+ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } -+ CONFIG_SHELL=$as_dir/$as_base -+ export CONFIG_SHELL -+ exec "$CONFIG_SHELL" "$0" ${1+"$@"} -+ fi;; -+ esac -+ done -+done -+;; -+ esac -+ -+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO -+ # uniformly replaced by the line number. The first 'sed' inserts a -+ # line-number line before each line; the second 'sed' does the real -+ # work. The second script uses 'N' to pair each line-number line -+ # with the numbered line, and appends trailing '-' during -+ # substitution so that $LINENO is not a special case at line end. -+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the -+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) -+ sed '=' <$as_myself | -+ sed ' -+ N -+ s,$,-, -+ : loop -+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, -+ t loop -+ s,-$,, -+ s,^['$as_cr_digits']*\n,, -+ ' >$as_me.lineno && -+ chmod +x $as_me.lineno || -+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 -+ { (exit 1); exit 1; }; } -+ -+ # Don't try to exec as it changes $[0], causing all sort of problems -+ # (the dirname of $[0] is not the place where we might find the -+ # original and so on. Autoconf is especially sensible to this). -+ . ./$as_me.lineno -+ # Exit status is that of the last command. -+ exit -+} -+ -+ -+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in -+ *c*,-n*) ECHO_N= ECHO_C=' -+' ECHO_T=' ' ;; -+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; -+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -+esac -+ -+if expr a : '\(a\)' >/dev/null 2>&1; then -+ as_expr=expr -+else -+ as_expr=false -+fi -+ -+rm -f conf$$ conf$$.exe conf$$.file -+echo >conf$$.file -+if ln -s conf$$.file conf$$ 2>/dev/null; then -+ # We could just check for DJGPP; but this test a) works b) is more generic -+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). -+ if test -f conf$$.exe; then -+ # Don't use ln at all; we don't have any links -+ as_ln_s='cp -p' -+ else -+ as_ln_s='ln -s' -+ fi -+elif ln conf$$.file conf$$ 2>/dev/null; then -+ as_ln_s=ln -+else -+ as_ln_s='cp -p' -+fi -+rm -f conf$$ conf$$.exe conf$$.file -+ -+if mkdir -p . 2>/dev/null; then -+ as_mkdir_p=: -+else -+ test -d ./-p && rmdir ./-p -+ as_mkdir_p=false -+fi -+ -+as_executable_p="test -f" -+ -+# Sed expression to map a string onto a valid CPP name. -+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" -+ -+# Sed expression to map a string onto a valid variable name. -+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -+ -+ -+# IFS -+# We need space, tab and new line, in precisely that order. -+as_nl=' -+' -+IFS=" $as_nl" -+ -+# CDPATH. -+$as_unset CDPATH -+ -+ -+ -+# Check that we are running under the correct shell. -+SHELL=${CONFIG_SHELL-/bin/sh} -+ -+case X$ECHO in -+X*--fallback-echo) -+ # Remove one level of quotation (which was required for Make). -+ ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` -+ ;; -+esac -+ -+echo=${ECHO-echo} -+if test "X$1" = X--no-reexec; then -+ # Discard the --no-reexec flag, and continue. -+ shift -+elif test "X$1" = X--fallback-echo; then -+ # Avoid inline document here, it may be left over -+ : -+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then -+ # Yippee, $echo works! -+ : -+else -+ # Restart under the correct shell. -+ exec $SHELL "$0" --no-reexec ${1+"$@"} -+fi -+ -+if test "X$1" = X--fallback-echo; then -+ # used as fallback echo -+ shift -+ cat </dev/null 2>&1 && unset CDPATH -+ -+if test -z "$ECHO"; then -+if test "X${echo_test_string+set}" != Xset; then -+# find a string as large as possible, as long as the shell can cope with it -+ for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do -+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... -+ if (echo_test_string=`eval $cmd`) 2>/dev/null && -+ echo_test_string=`eval $cmd` && -+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null -+ then -+ break -+ fi -+ done -+fi -+ -+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && -+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && -+ test "X$echo_testing_string" = "X$echo_test_string"; then -+ : -+else -+ # The Solaris, AIX, and Digital Unix default echo programs unquote -+ # backslashes. This makes it impossible to quote backslashes using -+ # echo "$something" | sed 's/\\/\\\\/g' -+ # -+ # So, first we look for a working echo in the user's PATH. -+ -+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -+ for dir in $PATH /usr/ucb; do -+ IFS="$lt_save_ifs" -+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && -+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && -+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && -+ test "X$echo_testing_string" = "X$echo_test_string"; then -+ echo="$dir/echo" -+ break -+ fi -+ done -+ IFS="$lt_save_ifs" -+ -+ if test "X$echo" = Xecho; then -+ # We didn't find a better echo, so look for alternatives. -+ if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && -+ echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && -+ test "X$echo_testing_string" = "X$echo_test_string"; then -+ # This shell has a builtin print -r that does the trick. -+ echo='print -r' -+ elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && -+ test "X$CONFIG_SHELL" != X/bin/ksh; then -+ # If we have ksh, try running configure again with it. -+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} -+ export ORIGINAL_CONFIG_SHELL -+ CONFIG_SHELL=/bin/ksh -+ export CONFIG_SHELL -+ exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} -+ else -+ # Try using printf. -+ echo='printf %s\n' -+ if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && -+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && -+ test "X$echo_testing_string" = "X$echo_test_string"; then -+ # Cool, printf works -+ : -+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && -+ test "X$echo_testing_string" = 'X\t' && -+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && -+ test "X$echo_testing_string" = "X$echo_test_string"; then -+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL -+ export CONFIG_SHELL -+ SHELL="$CONFIG_SHELL" -+ export SHELL -+ echo="$CONFIG_SHELL $0 --fallback-echo" -+ elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && -+ test "X$echo_testing_string" = 'X\t' && -+ echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && -+ test "X$echo_testing_string" = "X$echo_test_string"; then -+ echo="$CONFIG_SHELL $0 --fallback-echo" -+ else -+ # maybe with a smaller string... -+ prev=: -+ -+ for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do -+ if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null -+ then -+ break -+ fi -+ prev="$cmd" -+ done -+ -+ if test "$prev" != 'sed 50q "$0"'; then -+ echo_test_string=`eval $prev` -+ export echo_test_string -+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} -+ else -+ # Oops. We lost completely, so just stick with echo. -+ echo=echo -+ fi -+ fi -+ fi -+ fi -+fi -+fi -+ -+# Copy echo and quote the copy suitably for passing to libtool from -+# the Makefile, instead of quoting the original, which is used later. -+ECHO=$echo -+if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then -+ ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" -+fi -+ -+ -+ -+ -+tagnames=${tagnames+${tagnames},}CXX -+ -+tagnames=${tagnames+${tagnames},}F77 -+ -+# Name of the host. -+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -+# so uname gets run too. -+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` -+ -+exec 6>&1 -+ -+# -+# Initializations. -+# -+ac_default_prefix=/usr/local -+ac_config_libobj_dir=. -+cross_compiling=no -+subdirs= -+MFLAGS= -+MAKEFLAGS= -+SHELL=${CONFIG_SHELL-/bin/sh} -+ -+# Maximum number of lines to put in a shell here document. -+# This variable seems obsolete. It should probably be removed, and -+# only ac_max_sed_lines should be used. -+: ${ac_max_here_lines=38} -+ -+# Identity of this package. -+PACKAGE_NAME='iscsiuio' -+PACKAGE_TARNAME='iscsiuio' -+PACKAGE_VERSION='0.7.0.12' -+PACKAGE_STRING='iscsiuio 0.7.0.12' -+PACKAGE_BUGREPORT='eddie.wai@broadcom.com' -+ -+# Factoring default headers for most tests. -+ac_includes_default="\ -+#include -+#if HAVE_SYS_TYPES_H -+# include -+#endif -+#if HAVE_SYS_STAT_H -+# include -+#endif -+#if STDC_HEADERS -+# include -+# include -+#else -+# if HAVE_STDLIB_H -+# include -+# endif -+#endif -+#if HAVE_STRING_H -+# if !STDC_HEADERS && HAVE_MEMORY_H -+# include -+# endif -+# include -+#endif -+#if HAVE_STRINGS_H -+# include -+#endif -+#if HAVE_INTTYPES_H -+# include -+#else -+# if HAVE_STDINT_H -+# include -+# endif -+#endif -+#if HAVE_UNISTD_H -+# include -+#endif" -+ -+ac_default_prefix= -+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar BASH CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE RANLIB ac_ct_RANLIB CPP EGREP ENDIAN build build_cpu build_vendor build_os host host_cpu host_vendor host_os SED LN_S ECHO AR ac_ct_AR CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL DEBUG_TRUE DEBUG_FALSE LIBOBJS LTLIBOBJS' -+ac_subst_files='' -+ -+# Initialize some variables set by options. -+ac_init_help= -+ac_init_version=false -+# The variables have the same names as the options, with -+# dashes changed to underlines. -+cache_file=/dev/null -+exec_prefix=NONE -+no_create= -+no_recursion= -+prefix=NONE -+program_prefix=NONE -+program_suffix=NONE -+program_transform_name=s,x,x, -+silent= -+site= -+srcdir= -+verbose= -+x_includes=NONE -+x_libraries=NONE -+ -+# Installation directory options. -+# These are left unexpanded so users can "make install exec_prefix=/foo" -+# and all the variables that are supposed to be based on exec_prefix -+# by default will actually change. -+# Use braces instead of parens because sh, perl, etc. also accept them. -+bindir='${exec_prefix}/bin' -+sbindir='${exec_prefix}/sbin' -+libexecdir='${exec_prefix}/libexec' -+datadir='${prefix}/share' -+sysconfdir='${prefix}/etc' -+sharedstatedir='${prefix}/com' -+localstatedir='${prefix}/var' -+libdir='${exec_prefix}/lib' -+includedir='${prefix}/include' -+oldincludedir='/usr/include' -+infodir='${prefix}/info' -+mandir='${prefix}/man' -+ -+ac_prev= -+for ac_option -+do -+ # If the previous option needs an argument, assign it. -+ if test -n "$ac_prev"; then -+ eval "$ac_prev=\$ac_option" -+ ac_prev= -+ continue -+ fi -+ -+ ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` -+ -+ # Accept the important Cygnus configure options, so we can diagnose typos. -+ -+ case $ac_option in -+ -+ -bindir | --bindir | --bindi | --bind | --bin | --bi) -+ ac_prev=bindir ;; -+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) -+ bindir=$ac_optarg ;; -+ -+ -build | --build | --buil | --bui | --bu) -+ ac_prev=build_alias ;; -+ -build=* | --build=* | --buil=* | --bui=* | --bu=*) -+ build_alias=$ac_optarg ;; -+ -+ -cache-file | --cache-file | --cache-fil | --cache-fi \ -+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) -+ ac_prev=cache_file ;; -+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ -+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) -+ cache_file=$ac_optarg ;; -+ -+ --config-cache | -C) -+ cache_file=config.cache ;; -+ -+ -datadir | --datadir | --datadi | --datad | --data | --dat | --da) -+ ac_prev=datadir ;; -+ -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ -+ | --da=*) -+ datadir=$ac_optarg ;; -+ -+ -disable-* | --disable-*) -+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` -+ # Reject names that are not valid shell variable names. -+ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && -+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2 -+ { (exit 1); exit 1; }; } -+ ac_feature=`echo $ac_feature | sed 's/-/_/g'` -+ eval "enable_$ac_feature=no" ;; -+ -+ -enable-* | --enable-*) -+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` -+ # Reject names that are not valid shell variable names. -+ expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && -+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2 -+ { (exit 1); exit 1; }; } -+ ac_feature=`echo $ac_feature | sed 's/-/_/g'` -+ case $ac_option in -+ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; -+ *) ac_optarg=yes ;; -+ esac -+ eval "enable_$ac_feature='$ac_optarg'" ;; -+ -+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ -+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ -+ | --exec | --exe | --ex) -+ ac_prev=exec_prefix ;; -+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ -+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ -+ | --exec=* | --exe=* | --ex=*) -+ exec_prefix=$ac_optarg ;; -+ -+ -gas | --gas | --ga | --g) -+ # Obsolete; use --with-gas. -+ with_gas=yes ;; -+ -+ -help | --help | --hel | --he | -h) -+ ac_init_help=long ;; -+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) -+ ac_init_help=recursive ;; -+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) -+ ac_init_help=short ;; -+ -+ -host | --host | --hos | --ho) -+ ac_prev=host_alias ;; -+ -host=* | --host=* | --hos=* | --ho=*) -+ host_alias=$ac_optarg ;; -+ -+ -includedir | --includedir | --includedi | --included | --include \ -+ | --includ | --inclu | --incl | --inc) -+ ac_prev=includedir ;; -+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ -+ | --includ=* | --inclu=* | --incl=* | --inc=*) -+ includedir=$ac_optarg ;; -+ -+ -infodir | --infodir | --infodi | --infod | --info | --inf) -+ ac_prev=infodir ;; -+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) -+ infodir=$ac_optarg ;; -+ -+ -libdir | --libdir | --libdi | --libd) -+ ac_prev=libdir ;; -+ -libdir=* | --libdir=* | --libdi=* | --libd=*) -+ libdir=$ac_optarg ;; -+ -+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ -+ | --libexe | --libex | --libe) -+ ac_prev=libexecdir ;; -+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ -+ | --libexe=* | --libex=* | --libe=*) -+ libexecdir=$ac_optarg ;; -+ -+ -localstatedir | --localstatedir | --localstatedi | --localstated \ -+ | --localstate | --localstat | --localsta | --localst \ -+ | --locals | --local | --loca | --loc | --lo) -+ ac_prev=localstatedir ;; -+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ -+ | --localstate=* | --localstat=* | --localsta=* | --localst=* \ -+ | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) -+ localstatedir=$ac_optarg ;; -+ -+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m) -+ ac_prev=mandir ;; -+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) -+ mandir=$ac_optarg ;; -+ -+ -nfp | --nfp | --nf) -+ # Obsolete; use --without-fp. -+ with_fp=no ;; -+ -+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \ -+ | --no-cr | --no-c | -n) -+ no_create=yes ;; -+ -+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \ -+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) -+ no_recursion=yes ;; -+ -+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ -+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ -+ | --oldin | --oldi | --old | --ol | --o) -+ ac_prev=oldincludedir ;; -+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ -+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ -+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) -+ oldincludedir=$ac_optarg ;; -+ -+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) -+ ac_prev=prefix ;; -+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) -+ prefix=$ac_optarg ;; -+ -+ -program-prefix | --program-prefix | --program-prefi | --program-pref \ -+ | --program-pre | --program-pr | --program-p) -+ ac_prev=program_prefix ;; -+ -program-prefix=* | --program-prefix=* | --program-prefi=* \ -+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) -+ program_prefix=$ac_optarg ;; -+ -+ -program-suffix | --program-suffix | --program-suffi | --program-suff \ -+ | --program-suf | --program-su | --program-s) -+ ac_prev=program_suffix ;; -+ -program-suffix=* | --program-suffix=* | --program-suffi=* \ -+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) -+ program_suffix=$ac_optarg ;; -+ -+ -program-transform-name | --program-transform-name \ -+ | --program-transform-nam | --program-transform-na \ -+ | --program-transform-n | --program-transform- \ -+ | --program-transform | --program-transfor \ -+ | --program-transfo | --program-transf \ -+ | --program-trans | --program-tran \ -+ | --progr-tra | --program-tr | --program-t) -+ ac_prev=program_transform_name ;; -+ -program-transform-name=* | --program-transform-name=* \ -+ | --program-transform-nam=* | --program-transform-na=* \ -+ | --program-transform-n=* | --program-transform-=* \ -+ | --program-transform=* | --program-transfor=* \ -+ | --program-transfo=* | --program-transf=* \ -+ | --program-trans=* | --program-tran=* \ -+ | --progr-tra=* | --program-tr=* | --program-t=*) -+ program_transform_name=$ac_optarg ;; -+ -+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ -+ | -silent | --silent | --silen | --sile | --sil) -+ silent=yes ;; -+ -+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) -+ ac_prev=sbindir ;; -+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ -+ | --sbi=* | --sb=*) -+ sbindir=$ac_optarg ;; -+ -+ -sharedstatedir | --sharedstatedir | --sharedstatedi \ -+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ -+ | --sharedst | --shareds | --shared | --share | --shar \ -+ | --sha | --sh) -+ ac_prev=sharedstatedir ;; -+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ -+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ -+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ -+ | --sha=* | --sh=*) -+ sharedstatedir=$ac_optarg ;; -+ -+ -site | --site | --sit) -+ ac_prev=site ;; -+ -site=* | --site=* | --sit=*) -+ site=$ac_optarg ;; -+ -+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) -+ ac_prev=srcdir ;; -+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) -+ srcdir=$ac_optarg ;; -+ -+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ -+ | --syscon | --sysco | --sysc | --sys | --sy) -+ ac_prev=sysconfdir ;; -+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ -+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) -+ sysconfdir=$ac_optarg ;; -+ -+ -target | --target | --targe | --targ | --tar | --ta | --t) -+ ac_prev=target_alias ;; -+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) -+ target_alias=$ac_optarg ;; -+ -+ -v | -verbose | --verbose | --verbos | --verbo | --verb) -+ verbose=yes ;; -+ -+ -version | --version | --versio | --versi | --vers | -V) -+ ac_init_version=: ;; -+ -+ -with-* | --with-*) -+ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` -+ # Reject names that are not valid shell variable names. -+ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && -+ { echo "$as_me: error: invalid package name: $ac_package" >&2 -+ { (exit 1); exit 1; }; } -+ ac_package=`echo $ac_package| sed 's/-/_/g'` -+ case $ac_option in -+ *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; -+ *) ac_optarg=yes ;; -+ esac -+ eval "with_$ac_package='$ac_optarg'" ;; -+ -+ -without-* | --without-*) -+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` -+ # Reject names that are not valid shell variable names. -+ expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && -+ { echo "$as_me: error: invalid package name: $ac_package" >&2 -+ { (exit 1); exit 1; }; } -+ ac_package=`echo $ac_package | sed 's/-/_/g'` -+ eval "with_$ac_package=no" ;; -+ -+ --x) -+ # Obsolete; use --with-x. -+ with_x=yes ;; -+ -+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ -+ | --x-incl | --x-inc | --x-in | --x-i) -+ ac_prev=x_includes ;; -+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ -+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) -+ x_includes=$ac_optarg ;; -+ -+ -x-libraries | --x-libraries | --x-librarie | --x-librari \ -+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) -+ ac_prev=x_libraries ;; -+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ -+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) -+ x_libraries=$ac_optarg ;; -+ -+ -*) { echo "$as_me: error: unrecognized option: $ac_option -+Try \`$0 --help' for more information." >&2 -+ { (exit 1); exit 1; }; } -+ ;; -+ -+ *=*) -+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` -+ # Reject names that are not valid shell variable names. -+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && -+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 -+ { (exit 1); exit 1; }; } -+ ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` -+ eval "$ac_envvar='$ac_optarg'" -+ export $ac_envvar ;; -+ -+ *) -+ # FIXME: should be removed in autoconf 3.0. -+ echo "$as_me: WARNING: you should use --build, --host, --target" >&2 -+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && -+ echo "$as_me: WARNING: invalid host type: $ac_option" >&2 -+ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} -+ ;; -+ -+ esac -+done -+ -+if test -n "$ac_prev"; then -+ ac_option=--`echo $ac_prev | sed 's/_/-/g'` -+ { echo "$as_me: error: missing argument to $ac_option" >&2 -+ { (exit 1); exit 1; }; } -+fi -+ -+# Be sure to have absolute paths. -+for ac_var in exec_prefix prefix -+do -+ eval ac_val=$`echo $ac_var` -+ case $ac_val in -+ [\\/$]* | ?:[\\/]* | NONE | '' ) ;; -+ *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 -+ { (exit 1); exit 1; }; };; -+ esac -+done -+ -+# Be sure to have absolute paths. -+for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ -+ localstatedir libdir includedir oldincludedir infodir mandir -+do -+ eval ac_val=$`echo $ac_var` -+ case $ac_val in -+ [\\/$]* | ?:[\\/]* ) ;; -+ *) { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 -+ { (exit 1); exit 1; }; };; -+ esac -+done -+ -+# There might be people who depend on the old broken behavior: `$host' -+# used to hold the argument of --host etc. -+# FIXME: To remove some day. -+build=$build_alias -+host=$host_alias -+target=$target_alias -+ -+# FIXME: To remove some day. -+if test "x$host_alias" != x; then -+ if test "x$build_alias" = x; then -+ cross_compiling=maybe -+ echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. -+ If a cross compiler is detected then cross compile mode will be used." >&2 -+ elif test "x$build_alias" != "x$host_alias"; then -+ cross_compiling=yes -+ fi -+fi -+ -+ac_tool_prefix= -+test -n "$host_alias" && ac_tool_prefix=$host_alias- -+ -+test "$silent" = yes && exec 6>/dev/null -+ -+ -+# Find the source files, if location was not specified. -+if test -z "$srcdir"; then -+ ac_srcdir_defaulted=yes -+ # Try the directory containing this script, then its parent. -+ ac_confdir=`(dirname "$0") 2>/dev/null || -+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$0" : 'X\(//\)[^/]' \| \ -+ X"$0" : 'X\(//\)$' \| \ -+ X"$0" : 'X\(/\)' \| \ -+ . : '\(.\)' 2>/dev/null || -+echo X"$0" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } -+ /^X\(\/\/\)[^/].*/{ s//\1/; q; } -+ /^X\(\/\/\)$/{ s//\1/; q; } -+ /^X\(\/\).*/{ s//\1/; q; } -+ s/.*/./; q'` -+ srcdir=$ac_confdir -+ if test ! -r $srcdir/$ac_unique_file; then -+ srcdir=.. -+ fi -+else -+ ac_srcdir_defaulted=no -+fi -+if test ! -r $srcdir/$ac_unique_file; then -+ if test "$ac_srcdir_defaulted" = yes; then -+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $ac_confdir or .." >&2 -+ { (exit 1); exit 1; }; } -+ else -+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 -+ { (exit 1); exit 1; }; } -+ fi -+fi -+(cd $srcdir && test -r ./$ac_unique_file) 2>/dev/null || -+ { echo "$as_me: error: sources are in $srcdir, but \`cd $srcdir' does not work" >&2 -+ { (exit 1); exit 1; }; } -+srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -+ac_env_build_alias_set=${build_alias+set} -+ac_env_build_alias_value=$build_alias -+ac_cv_env_build_alias_set=${build_alias+set} -+ac_cv_env_build_alias_value=$build_alias -+ac_env_host_alias_set=${host_alias+set} -+ac_env_host_alias_value=$host_alias -+ac_cv_env_host_alias_set=${host_alias+set} -+ac_cv_env_host_alias_value=$host_alias -+ac_env_target_alias_set=${target_alias+set} -+ac_env_target_alias_value=$target_alias -+ac_cv_env_target_alias_set=${target_alias+set} -+ac_cv_env_target_alias_value=$target_alias -+ac_env_CC_set=${CC+set} -+ac_env_CC_value=$CC -+ac_cv_env_CC_set=${CC+set} -+ac_cv_env_CC_value=$CC -+ac_env_CFLAGS_set=${CFLAGS+set} -+ac_env_CFLAGS_value=$CFLAGS -+ac_cv_env_CFLAGS_set=${CFLAGS+set} -+ac_cv_env_CFLAGS_value=$CFLAGS -+ac_env_LDFLAGS_set=${LDFLAGS+set} -+ac_env_LDFLAGS_value=$LDFLAGS -+ac_cv_env_LDFLAGS_set=${LDFLAGS+set} -+ac_cv_env_LDFLAGS_value=$LDFLAGS -+ac_env_CPPFLAGS_set=${CPPFLAGS+set} -+ac_env_CPPFLAGS_value=$CPPFLAGS -+ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -+ac_cv_env_CPPFLAGS_value=$CPPFLAGS -+ac_env_CPP_set=${CPP+set} -+ac_env_CPP_value=$CPP -+ac_cv_env_CPP_set=${CPP+set} -+ac_cv_env_CPP_value=$CPP -+ac_env_CXX_set=${CXX+set} -+ac_env_CXX_value=$CXX -+ac_cv_env_CXX_set=${CXX+set} -+ac_cv_env_CXX_value=$CXX -+ac_env_CXXFLAGS_set=${CXXFLAGS+set} -+ac_env_CXXFLAGS_value=$CXXFLAGS -+ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} -+ac_cv_env_CXXFLAGS_value=$CXXFLAGS -+ac_env_CXXCPP_set=${CXXCPP+set} -+ac_env_CXXCPP_value=$CXXCPP -+ac_cv_env_CXXCPP_set=${CXXCPP+set} -+ac_cv_env_CXXCPP_value=$CXXCPP -+ac_env_F77_set=${F77+set} -+ac_env_F77_value=$F77 -+ac_cv_env_F77_set=${F77+set} -+ac_cv_env_F77_value=$F77 -+ac_env_FFLAGS_set=${FFLAGS+set} -+ac_env_FFLAGS_value=$FFLAGS -+ac_cv_env_FFLAGS_set=${FFLAGS+set} -+ac_cv_env_FFLAGS_value=$FFLAGS -+ -+# -+# Report the --help message. -+# -+if test "$ac_init_help" = "long"; then -+ # Omit some internal or obsolete options to make the list less imposing. -+ # This message is too long to be a string in the A/UX 3.1 sh. -+ cat <<_ACEOF -+\`configure' configures iscsiuio 0.7.0.12 to adapt to many kinds of systems. -+ -+Usage: $0 [OPTION]... [VAR=VALUE]... -+ -+To assign environment variables (e.g., CC, CFLAGS...), specify them as -+VAR=VALUE. See below for descriptions of some of the useful variables. -+ -+Defaults for the options are specified in brackets. -+ -+Configuration: -+ -h, --help display this help and exit -+ --help=short display options specific to this package -+ --help=recursive display the short help of all the included packages -+ -V, --version display version information and exit -+ -q, --quiet, --silent do not print \`checking...' messages -+ --cache-file=FILE cache test results in FILE [disabled] -+ -C, --config-cache alias for \`--cache-file=config.cache' -+ -n, --no-create do not create output files -+ --srcdir=DIR find the sources in DIR [configure dir or \`..'] -+ -+_ACEOF -+ -+ cat <<_ACEOF -+Installation directories: -+ --prefix=PREFIX install architecture-independent files in PREFIX -+ [$ac_default_prefix] -+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX -+ [PREFIX] -+ -+By default, \`make install' will install all the files in -+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -+an installation prefix other than \`$ac_default_prefix' using \`--prefix', -+for instance \`--prefix=\$HOME'. -+ -+For better control, use the options below. -+ -+Fine tuning of the installation directories: -+ --bindir=DIR user executables [EPREFIX/bin] -+ --sbindir=DIR system admin executables [EPREFIX/sbin] -+ --libexecdir=DIR program executables [EPREFIX/libexec] -+ --datadir=DIR read-only architecture-independent data [PREFIX/share] -+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc] -+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] -+ --localstatedir=DIR modifiable single-machine data [PREFIX/var] -+ --libdir=DIR object code libraries [EPREFIX/lib] -+ --includedir=DIR C header files [PREFIX/include] -+ --oldincludedir=DIR C header files for non-gcc [/usr/include] -+ --infodir=DIR info documentation [PREFIX/info] -+ --mandir=DIR man documentation [PREFIX/man] -+_ACEOF -+ -+ cat <<\_ACEOF -+ -+Program names: -+ --program-prefix=PREFIX prepend PREFIX to installed program names -+ --program-suffix=SUFFIX append SUFFIX to installed program names -+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names -+ -+System types: -+ --build=BUILD configure for building on BUILD [guessed] -+ --host=HOST cross-compile to build programs to run on HOST [BUILD] -+_ACEOF -+fi -+ -+if test -n "$ac_init_help"; then -+ case $ac_init_help in -+ short | recursive ) echo "Configuration of iscsiuio 0.7.0.12:";; -+ esac -+ cat <<\_ACEOF -+ -+Optional Features: -+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) -+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes] -+ --disable-dependency-tracking speeds up one-time build -+ --enable-dependency-tracking do not reject slow dependency extractors -+ --enable-shared[=PKGS] -+ build shared libraries [default=yes] -+ --enable-static[=PKGS] -+ build static libraries [default=yes] -+ --enable-fast-install[=PKGS] -+ optimize for fast installation [default=yes] -+ --disable-libtool-lock avoid locking (might break parallel builds) -+ --enable-debug Turn on compiler debugging information (default=no) -+ -+Optional Packages: -+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] -+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) -+ --with-gnu-ld assume the C compiler uses GNU ld [default=no] -+ --with-pic try to use only PIC/non-PIC objects [default=use -+ both] -+ --with-tags[=TAGS] -+ include additional configurations [automatic] -+ --with-iscsid-version Compile against a certain version of iscsid (default="$ISCSID_VERSION_DEFAULT") -+ -+Some influential environment variables: -+ CC C compiler command -+ CFLAGS C compiler flags -+ LDFLAGS linker flags, e.g. -L if you have libraries in a -+ nonstandard directory -+ CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have -+ headers in a nonstandard directory -+ CPP C preprocessor -+ CXX C++ compiler command -+ CXXFLAGS C++ compiler flags -+ CXXCPP C++ preprocessor -+ F77 Fortran 77 compiler command -+ FFLAGS Fortran 77 compiler flags -+ -+Use these variables to override the choices made by `configure' or to help -+it to find libraries and programs with nonstandard names/locations. -+ -+Report bugs to . -+_ACEOF -+fi -+ -+if test "$ac_init_help" = "recursive"; then -+ # If there are subdirs, report their specific --help. -+ ac_popdir=`pwd` -+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue -+ test -d $ac_dir || continue -+ ac_builddir=. -+ -+if test "$ac_dir" != .; then -+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` -+ # A "../" for each directory in $ac_dir_suffix. -+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -+else -+ ac_dir_suffix= ac_top_builddir= -+fi -+ -+case $srcdir in -+ .) # No --srcdir option. We are building in place. -+ ac_srcdir=. -+ if test -z "$ac_top_builddir"; then -+ ac_top_srcdir=. -+ else -+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` -+ fi ;; -+ [\\/]* | ?:[\\/]* ) # Absolute path. -+ ac_srcdir=$srcdir$ac_dir_suffix; -+ ac_top_srcdir=$srcdir ;; -+ *) # Relative path. -+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix -+ ac_top_srcdir=$ac_top_builddir$srcdir ;; -+esac -+ -+# Do not use `cd foo && pwd` to compute absolute paths, because -+# the directories may not exist. -+case `pwd` in -+.) ac_abs_builddir="$ac_dir";; -+*) -+ case "$ac_dir" in -+ .) ac_abs_builddir=`pwd`;; -+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; -+ *) ac_abs_builddir=`pwd`/"$ac_dir";; -+ esac;; -+esac -+case $ac_abs_builddir in -+.) ac_abs_top_builddir=${ac_top_builddir}.;; -+*) -+ case ${ac_top_builddir}. in -+ .) ac_abs_top_builddir=$ac_abs_builddir;; -+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; -+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; -+ esac;; -+esac -+case $ac_abs_builddir in -+.) ac_abs_srcdir=$ac_srcdir;; -+*) -+ case $ac_srcdir in -+ .) ac_abs_srcdir=$ac_abs_builddir;; -+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; -+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; -+ esac;; -+esac -+case $ac_abs_builddir in -+.) ac_abs_top_srcdir=$ac_top_srcdir;; -+*) -+ case $ac_top_srcdir in -+ .) ac_abs_top_srcdir=$ac_abs_builddir;; -+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; -+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; -+ esac;; -+esac -+ -+ cd $ac_dir -+ # Check for guested configure; otherwise get Cygnus style configure. -+ if test -f $ac_srcdir/configure.gnu; then -+ echo -+ $SHELL $ac_srcdir/configure.gnu --help=recursive -+ elif test -f $ac_srcdir/configure; then -+ echo -+ $SHELL $ac_srcdir/configure --help=recursive -+ elif test -f $ac_srcdir/configure.ac || -+ test -f $ac_srcdir/configure.in; then -+ echo -+ $ac_configure --help -+ else -+ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 -+ fi -+ cd $ac_popdir -+ done -+fi -+ -+test -n "$ac_init_help" && exit 0 -+if $ac_init_version; then -+ cat <<\_ACEOF -+iscsiuio configure 0.7.0.12 -+generated by GNU Autoconf 2.59 -+ -+Copyright (C) 2003 Free Software Foundation, Inc. -+This configure script is free software; the Free Software Foundation -+gives unlimited permission to copy, distribute and modify it. -+_ACEOF -+ exit 0 -+fi -+exec 5>config.log -+cat >&5 <<_ACEOF -+This file contains any messages produced by compilers while -+running configure, to aid debugging if configure makes a mistake. -+ -+It was created by iscsiuio $as_me 0.7.0.12, which was -+generated by GNU Autoconf 2.59. Invocation command line was -+ -+ $ $0 $@ -+ -+_ACEOF -+{ -+cat <<_ASUNAME -+## --------- ## -+## Platform. ## -+## --------- ## -+ -+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -+uname -m = `(uname -m) 2>/dev/null || echo unknown` -+uname -r = `(uname -r) 2>/dev/null || echo unknown` -+uname -s = `(uname -s) 2>/dev/null || echo unknown` -+uname -v = `(uname -v) 2>/dev/null || echo unknown` -+ -+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` -+ -+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -+hostinfo = `(hostinfo) 2>/dev/null || echo unknown` -+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` -+ -+_ASUNAME -+ -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ echo "PATH: $as_dir" -+done -+ -+} >&5 -+ -+cat >&5 <<_ACEOF -+ -+ -+## ----------- ## -+## Core tests. ## -+## ----------- ## -+ -+_ACEOF -+ -+ -+# Keep a trace of the command line. -+# Strip out --no-create and --no-recursion so they do not pile up. -+# Strip out --silent because we don't want to record it for future runs. -+# Also quote any args containing shell meta-characters. -+# Make two passes to allow for proper duplicate-argument suppression. -+ac_configure_args= -+ac_configure_args0= -+ac_configure_args1= -+ac_sep= -+ac_must_keep_next=false -+for ac_pass in 1 2 -+do -+ for ac_arg -+ do -+ case $ac_arg in -+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ -+ | -silent | --silent | --silen | --sile | --sil) -+ continue ;; -+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) -+ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; -+ esac -+ case $ac_pass in -+ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; -+ 2) -+ ac_configure_args1="$ac_configure_args1 '$ac_arg'" -+ if test $ac_must_keep_next = true; then -+ ac_must_keep_next=false # Got value, back to normal. -+ else -+ case $ac_arg in -+ *=* | --config-cache | -C | -disable-* | --disable-* \ -+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ -+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ -+ | -with-* | --with-* | -without-* | --without-* | --x) -+ case "$ac_configure_args0 " in -+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; -+ esac -+ ;; -+ -* ) ac_must_keep_next=true ;; -+ esac -+ fi -+ ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" -+ # Get rid of the leading space. -+ ac_sep=" " -+ ;; -+ esac -+ done -+done -+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } -+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } -+ -+# When interrupted or exit'd, cleanup temporary files, and complete -+# config.log. We remove comments because anyway the quotes in there -+# would cause problems or look ugly. -+# WARNING: Be sure not to use single quotes in there, as some shells, -+# such as our DU 5.0 friend, will then `close' the trap. -+trap 'exit_status=$? -+ # Save into config.log some information that might help in debugging. -+ { -+ echo -+ -+ cat <<\_ASBOX -+## ---------------- ## -+## Cache variables. ## -+## ---------------- ## -+_ASBOX -+ echo -+ # The following way of writing the cache mishandles newlines in values, -+{ -+ (set) 2>&1 | -+ case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in -+ *ac_space=\ *) -+ sed -n \ -+ "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; -+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" -+ ;; -+ *) -+ sed -n \ -+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" -+ ;; -+ esac; -+} -+ echo -+ -+ cat <<\_ASBOX -+## ----------------- ## -+## Output variables. ## -+## ----------------- ## -+_ASBOX -+ echo -+ for ac_var in $ac_subst_vars -+ do -+ eval ac_val=$`echo $ac_var` -+ echo "$ac_var='"'"'$ac_val'"'"'" -+ done | sort -+ echo -+ -+ if test -n "$ac_subst_files"; then -+ cat <<\_ASBOX -+## ------------- ## -+## Output files. ## -+## ------------- ## -+_ASBOX -+ echo -+ for ac_var in $ac_subst_files -+ do -+ eval ac_val=$`echo $ac_var` -+ echo "$ac_var='"'"'$ac_val'"'"'" -+ done | sort -+ echo -+ fi -+ -+ if test -s confdefs.h; then -+ cat <<\_ASBOX -+## ----------- ## -+## confdefs.h. ## -+## ----------- ## -+_ASBOX -+ echo -+ sed "/^$/d" confdefs.h | sort -+ echo -+ fi -+ test "$ac_signal" != 0 && -+ echo "$as_me: caught signal $ac_signal" -+ echo "$as_me: exit $exit_status" -+ } >&5 -+ rm -f core *.core && -+ rm -rf conftest* confdefs* conf$$* $ac_clean_files && -+ exit $exit_status -+ ' 0 -+for ac_signal in 1 2 13 15; do -+ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal -+done -+ac_signal=0 -+ -+# confdefs.h avoids OS command line length limits that DEFS can exceed. -+rm -rf conftest* confdefs.h -+# AIX cpp loses on an empty file, so make sure it contains at least a newline. -+echo >confdefs.h -+ -+# Predefined preprocessor variables. -+ -+cat >>confdefs.h <<_ACEOF -+#define PACKAGE_NAME "$PACKAGE_NAME" -+_ACEOF -+ -+ -+cat >>confdefs.h <<_ACEOF -+#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -+_ACEOF -+ -+ -+cat >>confdefs.h <<_ACEOF -+#define PACKAGE_VERSION "$PACKAGE_VERSION" -+_ACEOF -+ -+ -+cat >>confdefs.h <<_ACEOF -+#define PACKAGE_STRING "$PACKAGE_STRING" -+_ACEOF -+ -+ -+cat >>confdefs.h <<_ACEOF -+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -+_ACEOF -+ -+ -+# Let the site file select an alternate cache file if it wants to. -+# Prefer explicitly selected file to automatically selected ones. -+if test -z "$CONFIG_SITE"; then -+ if test "x$prefix" != xNONE; then -+ CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" -+ else -+ CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" -+ fi -+fi -+for ac_site_file in $CONFIG_SITE; do -+ if test -r "$ac_site_file"; then -+ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 -+echo "$as_me: loading site script $ac_site_file" >&6;} -+ sed 's/^/| /' "$ac_site_file" >&5 -+ . "$ac_site_file" -+ fi -+done -+ -+if test -r "$cache_file"; then -+ # Some versions of bash will fail to source /dev/null (special -+ # files actually), so we avoid doing that. -+ if test -f "$cache_file"; then -+ { echo "$as_me:$LINENO: loading cache $cache_file" >&5 -+echo "$as_me: loading cache $cache_file" >&6;} -+ case $cache_file in -+ [\\/]* | ?:[\\/]* ) . $cache_file;; -+ *) . ./$cache_file;; -+ esac -+ fi -+else -+ { echo "$as_me:$LINENO: creating cache $cache_file" >&5 -+echo "$as_me: creating cache $cache_file" >&6;} -+ >$cache_file -+fi -+ -+# Check that the precious variables saved in the cache have kept the same -+# value. -+ac_cache_corrupted=false -+for ac_var in `(set) 2>&1 | -+ sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do -+ eval ac_old_set=\$ac_cv_env_${ac_var}_set -+ eval ac_new_set=\$ac_env_${ac_var}_set -+ eval ac_old_val="\$ac_cv_env_${ac_var}_value" -+ eval ac_new_val="\$ac_env_${ac_var}_value" -+ case $ac_old_set,$ac_new_set in -+ set,) -+ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} -+ ac_cache_corrupted=: ;; -+ ,set) -+ { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 -+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} -+ ac_cache_corrupted=: ;; -+ ,);; -+ *) -+ if test "x$ac_old_val" != "x$ac_new_val"; then -+ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 -+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} -+ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5 -+echo "$as_me: former value: $ac_old_val" >&2;} -+ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5 -+echo "$as_me: current value: $ac_new_val" >&2;} -+ ac_cache_corrupted=: -+ fi;; -+ esac -+ # Pass precious variables to config.status. -+ if test "$ac_new_set" = set; then -+ case $ac_new_val in -+ *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) -+ ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; -+ *) ac_arg=$ac_var=$ac_new_val ;; -+ esac -+ case " $ac_configure_args " in -+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. -+ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; -+ esac -+ fi -+done -+if $ac_cache_corrupted; then -+ { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 -+echo "$as_me: error: changes in the environment can compromise the build" >&2;} -+ { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 -+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} -+ { (exit 1); exit 1; }; } -+fi -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+am__api_version="1.9" -+ac_aux_dir= -+for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do -+ if test -f $ac_dir/install-sh; then -+ ac_aux_dir=$ac_dir -+ ac_install_sh="$ac_aux_dir/install-sh -c" -+ break -+ elif test -f $ac_dir/install.sh; then -+ ac_aux_dir=$ac_dir -+ ac_install_sh="$ac_aux_dir/install.sh -c" -+ break -+ elif test -f $ac_dir/shtool; then -+ ac_aux_dir=$ac_dir -+ ac_install_sh="$ac_aux_dir/shtool install -c" -+ break -+ fi -+done -+if test -z "$ac_aux_dir"; then -+ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&5 -+echo "$as_me: error: cannot find install-sh or install.sh in $srcdir $srcdir/.. $srcdir/../.." >&2;} -+ { (exit 1); exit 1; }; } -+fi -+ac_config_guess="$SHELL $ac_aux_dir/config.guess" -+ac_config_sub="$SHELL $ac_aux_dir/config.sub" -+ac_configure="$SHELL $ac_aux_dir/configure" # This should be Cygnus configure. -+ -+# Find a good install program. We prefer a C program (faster), -+# so one script is as good as another. But avoid the broken or -+# incompatible versions: -+# SysV /etc/install, /usr/sbin/install -+# SunOS /usr/etc/install -+# IRIX /sbin/install -+# AIX /bin/install -+# AmigaOS /C/install, which installs bootblocks on floppy discs -+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -+# AFS /usr/afsws/bin/install, which mishandles nonexistent args -+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -+# OS/2's system install, which has a completely different semantic -+# ./install, which can be erroneously created by make from ./install.sh. -+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 -+if test -z "$INSTALL"; then -+if test "${ac_cv_path_install+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ # Account for people who put trailing slashes in PATH elements. -+case $as_dir/ in -+ ./ | .// | /cC/* | \ -+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ -+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ -+ /usr/ucb/* ) ;; -+ *) -+ # OSF1 and SCO ODT 3.0 have their own names for install. -+ # Don't use installbsd from OSF since it installs stuff as root -+ # by default. -+ for ac_prog in ginstall scoinst install; do -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then -+ if test $ac_prog = install && -+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then -+ # AIX install. It has an incompatible calling convention. -+ : -+ elif test $ac_prog = install && -+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then -+ # program-specific install script used by HP pwplus--don't use. -+ : -+ else -+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" -+ break 3 -+ fi -+ fi -+ done -+ done -+ ;; -+esac -+done -+ -+ -+fi -+ if test "${ac_cv_path_install+set}" = set; then -+ INSTALL=$ac_cv_path_install -+ else -+ # As a last resort, use the slow shell script. We don't cache a -+ # path for INSTALL within a source directory, because that will -+ # break other packages using the cache if that directory is -+ # removed, or if the path is relative. -+ INSTALL=$ac_install_sh -+ fi -+fi -+echo "$as_me:$LINENO: result: $INSTALL" >&5 -+echo "${ECHO_T}$INSTALL" >&6 -+ -+# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -+# It thinks the first close brace ends the variable substitution. -+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' -+ -+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' -+ -+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -+ -+echo "$as_me:$LINENO: checking whether build environment is sane" >&5 -+echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6 -+# Just in case -+sleep 1 -+echo timestamp > conftest.file -+# Do `set' in a subshell so we don't clobber the current shell's -+# arguments. Must try -L first in case configure is actually a -+# symlink; some systems play weird games with the mod time of symlinks -+# (eg FreeBSD returns the mod time of the symlink's containing -+# directory). -+if ( -+ set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` -+ if test "$*" = "X"; then -+ # -L didn't work. -+ set X `ls -t $srcdir/configure conftest.file` -+ fi -+ rm -f conftest.file -+ if test "$*" != "X $srcdir/configure conftest.file" \ -+ && test "$*" != "X conftest.file $srcdir/configure"; then -+ -+ # If neither matched, then we have a broken ls. This can happen -+ # if, for instance, CONFIG_SHELL is bash and it inherits a -+ # broken ls alias from the environment. This has actually -+ # happened. Such a system could not be considered "sane". -+ { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken -+alias in your environment" >&5 -+echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken -+alias in your environment" >&2;} -+ { (exit 1); exit 1; }; } -+ fi -+ -+ test "$2" = conftest.file -+ ) -+then -+ # Ok. -+ : -+else -+ { { echo "$as_me:$LINENO: error: newly created file is older than distributed files! -+Check your system clock" >&5 -+echo "$as_me: error: newly created file is older than distributed files! -+Check your system clock" >&2;} -+ { (exit 1); exit 1; }; } -+fi -+echo "$as_me:$LINENO: result: yes" >&5 -+echo "${ECHO_T}yes" >&6 -+test "$program_prefix" != NONE && -+ program_transform_name="s,^,$program_prefix,;$program_transform_name" -+# Use a double $ so make ignores it. -+test "$program_suffix" != NONE && -+ program_transform_name="s,\$,$program_suffix,;$program_transform_name" -+# Double any \ or $. echo might interpret backslashes. -+# By default was `s,x,x', remove it if useless. -+cat <<\_ACEOF >conftest.sed -+s/[\\$]/&&/g;s/;s,x,x,$// -+_ACEOF -+program_transform_name=`echo $program_transform_name | sed -f conftest.sed` -+rm conftest.sed -+ -+# expand $ac_aux_dir to an absolute path -+am_aux_dir=`cd $ac_aux_dir && pwd` -+ -+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" -+# Use eval to expand $SHELL -+if eval "$MISSING --run true"; then -+ am_missing_run="$MISSING --run " -+else -+ am_missing_run= -+ { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 -+echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} -+fi -+ -+if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then -+ # We used to keeping the `.' as first argument, in order to -+ # allow $(mkdir_p) to be used without argument. As in -+ # $(mkdir_p) $(somedir) -+ # where $(somedir) is conditionally defined. However this is wrong -+ # for two reasons: -+ # 1. if the package is installed by a user who cannot write `.' -+ # make install will fail, -+ # 2. the above comment should most certainly read -+ # $(mkdir_p) $(DESTDIR)$(somedir) -+ # so it does not work when $(somedir) is undefined and -+ # $(DESTDIR) is not. -+ # To support the latter case, we have to write -+ # test -z "$(somedir)" || $(mkdir_p) $(DESTDIR)$(somedir), -+ # so the `.' trick is pointless. -+ mkdir_p='mkdir -p --' -+else -+ # On NextStep and OpenStep, the `mkdir' command does not -+ # recognize any option. It will interpret all options as -+ # directories to create, and then abort because `.' already -+ # exists. -+ for d in ./-p ./--version; -+ do -+ test -d $d && rmdir $d -+ done -+ # $(mkinstalldirs) is defined by Automake if mkinstalldirs exists. -+ if test -f "$ac_aux_dir/mkinstalldirs"; then -+ mkdir_p='$(mkinstalldirs)' -+ else -+ mkdir_p='$(install_sh) -d' -+ fi -+fi -+ -+for ac_prog in gawk mawk nawk awk -+do -+ # Extract the first word of "$ac_prog", so it can be a program name with args. -+set dummy $ac_prog; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_AWK+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$AWK"; then -+ ac_cv_prog_AWK="$AWK" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_AWK="$ac_prog" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+fi -+fi -+AWK=$ac_cv_prog_AWK -+if test -n "$AWK"; then -+ echo "$as_me:$LINENO: result: $AWK" >&5 -+echo "${ECHO_T}$AWK" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ test -n "$AWK" && break -+done -+ -+echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 -+set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` -+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.make <<\_ACEOF -+all: -+ @echo 'ac_maketemp="$(MAKE)"' -+_ACEOF -+# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -+eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` -+if test -n "$ac_maketemp"; then -+ eval ac_cv_prog_make_${ac_make}_set=yes -+else -+ eval ac_cv_prog_make_${ac_make}_set=no -+fi -+rm -f conftest.make -+fi -+if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then -+ echo "$as_me:$LINENO: result: yes" >&5 -+echo "${ECHO_T}yes" >&6 -+ SET_MAKE= -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+ SET_MAKE="MAKE=${MAKE-make}" -+fi -+ -+rm -rf .tst 2>/dev/null -+mkdir .tst 2>/dev/null -+if test -d .tst; then -+ am__leading_dot=. -+else -+ am__leading_dot=_ -+fi -+rmdir .tst 2>/dev/null -+ -+# test to see if srcdir already configured -+if test "`cd $srcdir && pwd`" != "`pwd`" && -+ test -f $srcdir/config.status; then -+ { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 -+echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} -+ { (exit 1); exit 1; }; } -+fi -+ -+# test whether we have cygpath -+if test -z "$CYGPATH_W"; then -+ if (cygpath --version) >/dev/null 2>/dev/null; then -+ CYGPATH_W='cygpath -w' -+ else -+ CYGPATH_W=echo -+ fi -+fi -+ -+ -+# Define the identity of the package. -+ PACKAGE=$PACKAGE -+ VERSION=$VERSION -+ -+ -+cat >>confdefs.h <<_ACEOF -+#define PACKAGE "$PACKAGE" -+_ACEOF -+ -+ -+cat >>confdefs.h <<_ACEOF -+#define VERSION "$VERSION" -+_ACEOF -+ -+# Some tools Automake needs. -+ -+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} -+ -+ -+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} -+ -+ -+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} -+ -+ -+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} -+ -+ -+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} -+ -+install_sh=${install_sh-"$am_aux_dir/install-sh"} -+ -+# Installed binaries are usually stripped using `strip' when the user -+# run `make install-strip'. However `strip' might not be the right -+# tool to use in cross-compilation environments, therefore Automake -+# will honor the `STRIP' environment variable to overrule this program. -+if test "$cross_compiling" != no; then -+ if test -n "$ac_tool_prefix"; then -+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -+set dummy ${ac_tool_prefix}strip; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_STRIP+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$STRIP"; then -+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_STRIP="${ac_tool_prefix}strip" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+fi -+fi -+STRIP=$ac_cv_prog_STRIP -+if test -n "$STRIP"; then -+ echo "$as_me:$LINENO: result: $STRIP" >&5 -+echo "${ECHO_T}$STRIP" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+fi -+if test -z "$ac_cv_prog_STRIP"; then -+ ac_ct_STRIP=$STRIP -+ # Extract the first word of "strip", so it can be a program name with args. -+set dummy strip; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$ac_ct_STRIP"; then -+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_ac_ct_STRIP="strip" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+ test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" -+fi -+fi -+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -+if test -n "$ac_ct_STRIP"; then -+ echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -+echo "${ECHO_T}$ac_ct_STRIP" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ STRIP=$ac_ct_STRIP -+else -+ STRIP="$ac_cv_prog_STRIP" -+fi -+ -+fi -+INSTALL_STRIP_PROGRAM="\${SHELL} \$(install_sh) -c -s" -+ -+# We need awk for the "check" target. The system "awk" is bad on -+# some platforms. -+# Always define AMTAR for backward compatibility. -+ -+AMTAR=${AMTAR-"${am_missing_run}tar"} -+ -+am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' -+ -+ -+ -+ -+ -+ ac_config_headers="$ac_config_headers config.h" -+ -+for ac_prog in bash -+do -+ # Extract the first word of "$ac_prog", so it can be a program name with args. -+set dummy $ac_prog; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_path_BASH+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ case $BASH in -+ [\\/]* | ?:[\\/]*) -+ ac_cv_path_BASH="$BASH" # Let the user override the test with a path. -+ ;; -+ *) -+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_path_BASH="$as_dir/$ac_word$ac_exec_ext" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+ ;; -+esac -+fi -+BASH=$ac_cv_path_BASH -+ -+if test -n "$BASH"; then -+ echo "$as_me:$LINENO: result: $BASH" >&5 -+echo "${ECHO_T}$BASH" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ test -n "$BASH" && break -+done -+ -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+if test -n "$ac_tool_prefix"; then -+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -+set dummy ${ac_tool_prefix}gcc; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_CC+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$CC"; then -+ ac_cv_prog_CC="$CC" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_CC="${ac_tool_prefix}gcc" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+fi -+fi -+CC=$ac_cv_prog_CC -+if test -n "$CC"; then -+ echo "$as_me:$LINENO: result: $CC" >&5 -+echo "${ECHO_T}$CC" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+fi -+if test -z "$ac_cv_prog_CC"; then -+ ac_ct_CC=$CC -+ # Extract the first word of "gcc", so it can be a program name with args. -+set dummy gcc; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$ac_ct_CC"; then -+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_ac_ct_CC="gcc" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+fi -+fi -+ac_ct_CC=$ac_cv_prog_ac_ct_CC -+if test -n "$ac_ct_CC"; then -+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -+echo "${ECHO_T}$ac_ct_CC" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ CC=$ac_ct_CC -+else -+ CC="$ac_cv_prog_CC" -+fi -+ -+if test -z "$CC"; then -+ if test -n "$ac_tool_prefix"; then -+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -+set dummy ${ac_tool_prefix}cc; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_CC+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$CC"; then -+ ac_cv_prog_CC="$CC" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_CC="${ac_tool_prefix}cc" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+fi -+fi -+CC=$ac_cv_prog_CC -+if test -n "$CC"; then -+ echo "$as_me:$LINENO: result: $CC" >&5 -+echo "${ECHO_T}$CC" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+fi -+if test -z "$ac_cv_prog_CC"; then -+ ac_ct_CC=$CC -+ # Extract the first word of "cc", so it can be a program name with args. -+set dummy cc; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$ac_ct_CC"; then -+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_ac_ct_CC="cc" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+fi -+fi -+ac_ct_CC=$ac_cv_prog_ac_ct_CC -+if test -n "$ac_ct_CC"; then -+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -+echo "${ECHO_T}$ac_ct_CC" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ CC=$ac_ct_CC -+else -+ CC="$ac_cv_prog_CC" -+fi -+ -+fi -+if test -z "$CC"; then -+ # Extract the first word of "cc", so it can be a program name with args. -+set dummy cc; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_CC+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$CC"; then -+ ac_cv_prog_CC="$CC" # Let the user override the test. -+else -+ ac_prog_rejected=no -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then -+ ac_prog_rejected=yes -+ continue -+ fi -+ ac_cv_prog_CC="cc" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+if test $ac_prog_rejected = yes; then -+ # We found a bogon in the path, so make sure we never use it. -+ set dummy $ac_cv_prog_CC -+ shift -+ if test $# != 0; then -+ # We chose a different compiler from the bogus one. -+ # However, it has the same basename, so the bogon will be chosen -+ # first if we set CC to just the basename; use the full file name. -+ shift -+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" -+ fi -+fi -+fi -+fi -+CC=$ac_cv_prog_CC -+if test -n "$CC"; then -+ echo "$as_me:$LINENO: result: $CC" >&5 -+echo "${ECHO_T}$CC" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+fi -+if test -z "$CC"; then -+ if test -n "$ac_tool_prefix"; then -+ for ac_prog in cl -+ do -+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -+set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_CC+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$CC"; then -+ ac_cv_prog_CC="$CC" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+fi -+fi -+CC=$ac_cv_prog_CC -+if test -n "$CC"; then -+ echo "$as_me:$LINENO: result: $CC" >&5 -+echo "${ECHO_T}$CC" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ test -n "$CC" && break -+ done -+fi -+if test -z "$CC"; then -+ ac_ct_CC=$CC -+ for ac_prog in cl -+do -+ # Extract the first word of "$ac_prog", so it can be a program name with args. -+set dummy $ac_prog; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$ac_ct_CC"; then -+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_ac_ct_CC="$ac_prog" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+fi -+fi -+ac_ct_CC=$ac_cv_prog_ac_ct_CC -+if test -n "$ac_ct_CC"; then -+ echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 -+echo "${ECHO_T}$ac_ct_CC" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ test -n "$ac_ct_CC" && break -+done -+ -+ CC=$ac_ct_CC -+fi -+ -+fi -+ -+ -+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH -+See \`config.log' for more details." >&5 -+echo "$as_me: error: no acceptable C compiler found in \$PATH -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } -+ -+# Provide some information about the compiler. -+echo "$as_me:$LINENO:" \ -+ "checking for C compiler version" >&5 -+ac_compiler=`set X $ac_compile; echo $2` -+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 -+ (eval $ac_compiler --version &5) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } -+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 -+ (eval $ac_compiler -v &5) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } -+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 -+ (eval $ac_compiler -V &5) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } -+ -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+ac_clean_files_save=$ac_clean_files -+ac_clean_files="$ac_clean_files a.out a.exe b.out" -+# Try to create an executable without -o first, disregard a.out. -+# It will help us diagnose broken compilers, and finding out an intuition -+# of exeext. -+echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 -+echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6 -+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -+if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 -+ (eval $ac_link_default) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; then -+ # Find the output, starting from the most likely. This scheme is -+# not robust to junk in `.', hence go to wildcards (a.*) only as a last -+# resort. -+ -+# Be careful to initialize this variable, since it used to be cached. -+# Otherwise an old cache value of `no' led to `EXEEXT = no' in a Makefile. -+ac_cv_exeext= -+# b.out is created by i960 compilers. -+for ac_file in a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out -+do -+ test -f "$ac_file" || continue -+ case $ac_file in -+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) -+ ;; -+ conftest.$ac_ext ) -+ # This is the source file. -+ ;; -+ [ab].out ) -+ # We found the default executable, but exeext='' is most -+ # certainly right. -+ break;; -+ *.* ) -+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` -+ # FIXME: I believe we export ac_cv_exeext for Libtool, -+ # but it would be cool to find out if it's true. Does anybody -+ # maintain Libtool? --akim. -+ export ac_cv_exeext -+ break;; -+ * ) -+ break;; -+ esac -+done -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+{ { echo "$as_me:$LINENO: error: C compiler cannot create executables -+See \`config.log' for more details." >&5 -+echo "$as_me: error: C compiler cannot create executables -+See \`config.log' for more details." >&2;} -+ { (exit 77); exit 77; }; } -+fi -+ -+ac_exeext=$ac_cv_exeext -+echo "$as_me:$LINENO: result: $ac_file" >&5 -+echo "${ECHO_T}$ac_file" >&6 -+ -+# Check the compiler produces executables we can run. If not, either -+# the compiler is broken, or we cross compile. -+echo "$as_me:$LINENO: checking whether the C compiler works" >&5 -+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6 -+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 -+# If not cross compiling, check that we can run a simple program. -+if test "$cross_compiling" != yes; then -+ if { ac_try='./$ac_file' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ cross_compiling=no -+ else -+ if test "$cross_compiling" = maybe; then -+ cross_compiling=yes -+ else -+ { { echo "$as_me:$LINENO: error: cannot run C compiled programs. -+If you meant to cross compile, use \`--host'. -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot run C compiled programs. -+If you meant to cross compile, use \`--host'. -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } -+ fi -+ fi -+fi -+echo "$as_me:$LINENO: result: yes" >&5 -+echo "${ECHO_T}yes" >&6 -+ -+rm -f a.out a.exe conftest$ac_cv_exeext b.out -+ac_clean_files=$ac_clean_files_save -+# Check the compiler produces executables we can run. If not, either -+# the compiler is broken, or we cross compile. -+echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 -+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -+echo "$as_me:$LINENO: result: $cross_compiling" >&5 -+echo "${ECHO_T}$cross_compiling" >&6 -+ -+echo "$as_me:$LINENO: checking for suffix of executables" >&5 -+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6 -+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -+ (eval $ac_link) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; then -+ # If both `conftest.exe' and `conftest' are `present' (well, observable) -+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -+# work properly (i.e., refer to `conftest.exe'), while it won't with -+# `rm'. -+for ac_file in conftest.exe conftest conftest.*; do -+ test -f "$ac_file" || continue -+ case $ac_file in -+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.o | *.obj ) ;; -+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` -+ export ac_cv_exeext -+ break;; -+ * ) break;; -+ esac -+done -+else -+ { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } -+fi -+ -+rm -f conftest$ac_cv_exeext -+echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 -+echo "${ECHO_T}$ac_cv_exeext" >&6 -+ -+rm -f conftest.$ac_ext -+EXEEXT=$ac_cv_exeext -+ac_exeext=$EXEEXT -+echo "$as_me:$LINENO: checking for suffix of object files" >&5 -+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6 -+if test "${ac_cv_objext+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.o conftest.obj -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; then -+ for ac_file in `(ls conftest.o conftest.obj; ls conftest.*) 2>/dev/null`; do -+ case $ac_file in -+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg ) ;; -+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` -+ break;; -+ esac -+done -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute suffix of object files: cannot compile -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } -+fi -+ -+rm -f conftest.$ac_cv_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 -+echo "${ECHO_T}$ac_cv_objext" >&6 -+OBJEXT=$ac_cv_objext -+ac_objext=$OBJEXT -+echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 -+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6 -+if test "${ac_cv_c_compiler_gnu+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+#ifndef __GNUC__ -+ choke me -+#endif -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_compiler_gnu=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_compiler_gnu=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ac_cv_c_compiler_gnu=$ac_compiler_gnu -+ -+fi -+echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 -+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6 -+GCC=`test $ac_compiler_gnu = yes && echo yes` -+ac_test_CFLAGS=${CFLAGS+set} -+ac_save_CFLAGS=$CFLAGS -+CFLAGS="-g" -+echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 -+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6 -+if test "${ac_cv_prog_cc_g+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_prog_cc_g=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_prog_cc_g=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 -+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6 -+if test "$ac_test_CFLAGS" = set; then -+ CFLAGS=$ac_save_CFLAGS -+elif test $ac_cv_prog_cc_g = yes; then -+ if test "$GCC" = yes; then -+ CFLAGS="-g -O2" -+ else -+ CFLAGS="-g" -+ fi -+else -+ if test "$GCC" = yes; then -+ CFLAGS="-O2" -+ else -+ CFLAGS= -+ fi -+fi -+echo "$as_me:$LINENO: checking for $CC option to accept ANSI C" >&5 -+echo $ECHO_N "checking for $CC option to accept ANSI C... $ECHO_C" >&6 -+if test "${ac_cv_prog_cc_stdc+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_cv_prog_cc_stdc=no -+ac_save_CC=$CC -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+#include -+#include -+#include -+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -+struct buf { int x; }; -+FILE * (*rcsopen) (struct buf *, struct stat *, int); -+static char *e (p, i) -+ char **p; -+ int i; -+{ -+ return p[i]; -+} -+static char *f (char * (*g) (char **, int), char **p, ...) -+{ -+ char *s; -+ va_list v; -+ va_start (v,p); -+ s = g (p, va_arg (v,int)); -+ va_end (v); -+ return s; -+} -+ -+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has -+ function prototypes and stuff, but not '\xHH' hex character constants. -+ These don't provoke an error unfortunately, instead are silently treated -+ as 'x'. The following induces an error, until -std1 is added to get -+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an -+ array size at least. It's necessary to write '\x00'==0 to get something -+ that's true only with -std1. */ -+int osf4_cc_array ['\x00' == 0 ? 1 : -1]; -+ -+int test (int i, double x); -+struct s1 {int (*f) (int a);}; -+struct s2 {int (*f) (double a);}; -+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -+int argc; -+char **argv; -+int -+main () -+{ -+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; -+ ; -+ return 0; -+} -+_ACEOF -+# Don't try gcc -ansi; that turns off useful extensions and -+# breaks some systems' header files. -+# AIX -qlanglvl=ansi -+# Ultrix and OSF/1 -std1 -+# HP-UX 10.20 and later -Ae -+# HP-UX older versions -Aa -D_HPUX_SOURCE -+# SVR4 -Xc -D__EXTENSIONS__ -+for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -+do -+ CC="$ac_save_CC $ac_arg" -+ rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_prog_cc_stdc=$ac_arg -+break -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+fi -+rm -f conftest.err conftest.$ac_objext -+done -+rm -f conftest.$ac_ext conftest.$ac_objext -+CC=$ac_save_CC -+ -+fi -+ -+case "x$ac_cv_prog_cc_stdc" in -+ x|xno) -+ echo "$as_me:$LINENO: result: none needed" >&5 -+echo "${ECHO_T}none needed" >&6 ;; -+ *) -+ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5 -+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 -+ CC="$CC $ac_cv_prog_cc_stdc" ;; -+esac -+ -+# Some people use a C++ compiler to compile C. Since we use `exit', -+# in C++ we need to declare it. In case someone uses the same compiler -+# for both compiling C and C++ we need to have the C++ compiler decide -+# the declaration of exit, since it's the most demanding environment. -+cat >conftest.$ac_ext <<_ACEOF -+#ifndef __cplusplus -+ choke me -+#endif -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ for ac_declaration in \ -+ '' \ -+ 'extern "C" void std::exit (int) throw (); using std::exit;' \ -+ 'extern "C" void std::exit (int); using std::exit;' \ -+ 'extern "C" void exit (int) throw ();' \ -+ 'extern "C" void exit (int);' \ -+ 'void exit (int);' -+do -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_declaration -+#include -+int -+main () -+{ -+exit (42); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ : -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+continue -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_declaration -+int -+main () -+{ -+exit (42); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ break -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+done -+rm -f conftest* -+if test -n "$ac_declaration"; then -+ echo '#ifdef __cplusplus' >>confdefs.h -+ echo $ac_declaration >>confdefs.h -+ echo '#endif' >>confdefs.h -+fi -+ -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+DEPDIR="${am__leading_dot}deps" -+ -+ ac_config_commands="$ac_config_commands depfiles" -+ -+ -+am_make=${MAKE-make} -+cat > confinc << 'END' -+am__doit: -+ @echo done -+.PHONY: am__doit -+END -+# If we don't find an include directive, just comment out the code. -+echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 -+echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6 -+am__include="#" -+am__quote= -+_am_result=none -+# First try GNU make style include. -+echo "include confinc" > confmf -+# We grep out `Entering directory' and `Leaving directory' -+# messages which can occur if `w' ends up in MAKEFLAGS. -+# In particular we don't look at `^make:' because GNU make might -+# be invoked under some other name (usually "gmake"), in which -+# case it prints its new name instead of `make'. -+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then -+ am__include=include -+ am__quote= -+ _am_result=GNU -+fi -+# Now try BSD make style include. -+if test "$am__include" = "#"; then -+ echo '.include "confinc"' > confmf -+ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then -+ am__include=.include -+ am__quote="\"" -+ _am_result=BSD -+ fi -+fi -+ -+ -+echo "$as_me:$LINENO: result: $_am_result" >&5 -+echo "${ECHO_T}$_am_result" >&6 -+rm -f confinc confmf -+ -+# Check whether --enable-dependency-tracking or --disable-dependency-tracking was given. -+if test "${enable_dependency_tracking+set}" = set; then -+ enableval="$enable_dependency_tracking" -+ -+fi; -+if test "x$enable_dependency_tracking" != xno; then -+ am_depcomp="$ac_aux_dir/depcomp" -+ AMDEPBACKSLASH='\' -+fi -+ -+ -+if test "x$enable_dependency_tracking" != xno; then -+ AMDEP_TRUE= -+ AMDEP_FALSE='#' -+else -+ AMDEP_TRUE='#' -+ AMDEP_FALSE= -+fi -+ -+ -+ -+ -+depcc="$CC" am_compiler_list= -+ -+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 -+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then -+ # We make a subdir and do the tests there. Otherwise we can end up -+ # making bogus files that we don't know about and never remove. For -+ # instance it was reported that on HP-UX the gcc test will end up -+ # making a dummy file named `D' -- because `-MD' means `put the output -+ # in D'. -+ mkdir conftest.dir -+ # Copy depcomp to subdir because otherwise we won't find it if we're -+ # using a relative directory. -+ cp "$am_depcomp" conftest.dir -+ cd conftest.dir -+ # We will build objects and dependencies in a subdirectory because -+ # it helps to detect inapplicable dependency modes. For instance -+ # both Tru64's cc and ICC support -MD to output dependencies as a -+ # side effect of compilation, but ICC will put the dependencies in -+ # the current directory while Tru64 will put them in the object -+ # directory. -+ mkdir sub -+ -+ am_cv_CC_dependencies_compiler_type=none -+ if test "$am_compiler_list" = ""; then -+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` -+ fi -+ for depmode in $am_compiler_list; do -+ # Setup a source with many dependencies, because some compilers -+ # like to wrap large dependency lists on column 80 (with \), and -+ # we should not choose a depcomp mode which is confused by this. -+ # -+ # We need to recreate these files for each test, as the compiler may -+ # overwrite some of them when testing with obscure command lines. -+ # This happens at least with the AIX C compiler. -+ : > sub/conftest.c -+ for i in 1 2 3 4 5 6; do -+ echo '#include "conftst'$i'.h"' >> sub/conftest.c -+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with -+ # Solaris 8's {/usr,}/bin/sh. -+ touch sub/conftst$i.h -+ done -+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf -+ -+ case $depmode in -+ nosideeffect) -+ # after this tag, mechanisms are not by side-effect, so they'll -+ # only be used when explicitly requested -+ if test "x$enable_dependency_tracking" = xyes; then -+ continue -+ else -+ break -+ fi -+ ;; -+ none) break ;; -+ esac -+ # We check with `-c' and `-o' for the sake of the "dashmstdout" -+ # mode. It turns out that the SunPro C++ compiler does not properly -+ # handle `-M -o', and we need to detect this. -+ if depmode=$depmode \ -+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ -+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ -+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ -+ >/dev/null 2>conftest.err && -+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && -+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && -+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then -+ # icc doesn't choke on unknown options, it will just issue warnings -+ # or remarks (even with -Werror). So we grep stderr for any message -+ # that says an option was ignored or not supported. -+ # When given -MP, icc 7.0 and 7.1 complain thusly: -+ # icc: Command line warning: ignoring option '-M'; no argument required -+ # The diagnosis changed in icc 8.0: -+ # icc: Command line remark: option '-MP' not supported -+ if (grep 'ignoring option' conftest.err || -+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else -+ am_cv_CC_dependencies_compiler_type=$depmode -+ break -+ fi -+ fi -+ done -+ -+ cd .. -+ rm -rf conftest.dir -+else -+ am_cv_CC_dependencies_compiler_type=none -+fi -+ -+fi -+echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 -+echo "${ECHO_T}$am_cv_CC_dependencies_compiler_type" >&6 -+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type -+ -+ -+ -+if -+ test "x$enable_dependency_tracking" != xno \ -+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then -+ am__fastdepCC_TRUE= -+ am__fastdepCC_FALSE='#' -+else -+ am__fastdepCC_TRUE='#' -+ am__fastdepCC_FALSE= -+fi -+ -+ -+if test "x$CC" != xcc; then -+ echo "$as_me:$LINENO: checking whether $CC and cc understand -c and -o together" >&5 -+echo $ECHO_N "checking whether $CC and cc understand -c and -o together... $ECHO_C" >&6 -+else -+ echo "$as_me:$LINENO: checking whether cc understands -c and -o together" >&5 -+echo $ECHO_N "checking whether cc understands -c and -o together... $ECHO_C" >&6 -+fi -+set dummy $CC; ac_cc=`echo $2 | -+ sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` -+if eval "test \"\${ac_cv_prog_cc_${ac_cc}_c_o+set}\" = set"; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+# Make sure it works both with $CC and with simple cc. -+# We do the test twice because some compilers refuse to overwrite an -+# existing .o file with -o, though they will create one. -+ac_try='$CC -c conftest.$ac_ext -o conftest.$ac_objext >&5' -+if { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ test -f conftest.$ac_objext && { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; -+then -+ eval ac_cv_prog_cc_${ac_cc}_c_o=yes -+ if test "x$CC" != xcc; then -+ # Test first that cc exists at all. -+ if { ac_try='cc -c conftest.$ac_ext >&5' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_try='cc -c conftest.$ac_ext -o conftest.$ac_objext >&5' -+ if { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ test -f conftest.$ac_objext && { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; -+ then -+ # cc works too. -+ : -+ else -+ # cc exists but doesn't like -o. -+ eval ac_cv_prog_cc_${ac_cc}_c_o=no -+ fi -+ fi -+ fi -+else -+ eval ac_cv_prog_cc_${ac_cc}_c_o=no -+fi -+rm -f conftest* -+ -+fi -+if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" = yes"; then -+ echo "$as_me:$LINENO: result: yes" >&5 -+echo "${ECHO_T}yes" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+ -+cat >>confdefs.h <<\_ACEOF -+#define NO_MINUS_C_MINUS_O 1 -+_ACEOF -+ -+fi -+ -+# FIXME: we rely on the cache variable name because -+# there is no other way. -+set dummy $CC -+ac_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` -+if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then -+ # Losing compiler, so override with the script. -+ # FIXME: It is wrong to rewrite CC. -+ # But if we don't then we get into trouble of one sort or another. -+ # A longer-term fix would be to have automake use am__CC in this case, -+ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" -+ CC="$am_aux_dir/compile $CC" -+fi -+ -+ -+if test -n "$ac_tool_prefix"; then -+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -+set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_RANLIB+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$RANLIB"; then -+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+fi -+fi -+RANLIB=$ac_cv_prog_RANLIB -+if test -n "$RANLIB"; then -+ echo "$as_me:$LINENO: result: $RANLIB" >&5 -+echo "${ECHO_T}$RANLIB" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+fi -+if test -z "$ac_cv_prog_RANLIB"; then -+ ac_ct_RANLIB=$RANLIB -+ # Extract the first word of "ranlib", so it can be a program name with args. -+set dummy ranlib; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$ac_ct_RANLIB"; then -+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_ac_ct_RANLIB="ranlib" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+ test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" -+fi -+fi -+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -+if test -n "$ac_ct_RANLIB"; then -+ echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -+echo "${ECHO_T}$ac_ct_RANLIB" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ RANLIB=$ac_ct_RANLIB -+else -+ RANLIB="$ac_cv_prog_RANLIB" -+fi -+ -+ -+ -+cat >>confdefs.h <<\_ACEOF -+#define _GNU_SOURCE 1 -+_ACEOF -+ -+ -+# Find a good install program. We prefer a C program (faster), -+# so one script is as good as another. But avoid the broken or -+# incompatible versions: -+# SysV /etc/install, /usr/sbin/install -+# SunOS /usr/etc/install -+# IRIX /sbin/install -+# AIX /bin/install -+# AmigaOS /C/install, which installs bootblocks on floppy discs -+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -+# AFS /usr/afsws/bin/install, which mishandles nonexistent args -+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -+# OS/2's system install, which has a completely different semantic -+# ./install, which can be erroneously created by make from ./install.sh. -+echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 -+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 -+if test -z "$INSTALL"; then -+if test "${ac_cv_path_install+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ # Account for people who put trailing slashes in PATH elements. -+case $as_dir/ in -+ ./ | .// | /cC/* | \ -+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ -+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ -+ /usr/ucb/* ) ;; -+ *) -+ # OSF1 and SCO ODT 3.0 have their own names for install. -+ # Don't use installbsd from OSF since it installs stuff as root -+ # by default. -+ for ac_prog in ginstall scoinst install; do -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then -+ if test $ac_prog = install && -+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then -+ # AIX install. It has an incompatible calling convention. -+ : -+ elif test $ac_prog = install && -+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then -+ # program-specific install script used by HP pwplus--don't use. -+ : -+ else -+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" -+ break 3 -+ fi -+ fi -+ done -+ done -+ ;; -+esac -+done -+ -+ -+fi -+ if test "${ac_cv_path_install+set}" = set; then -+ INSTALL=$ac_cv_path_install -+ else -+ # As a last resort, use the slow shell script. We don't cache a -+ # path for INSTALL within a source directory, because that will -+ # break other packages using the cache if that directory is -+ # removed, or if the path is relative. -+ INSTALL=$ac_install_sh -+ fi -+fi -+echo "$as_me:$LINENO: result: $INSTALL" >&5 -+echo "${ECHO_T}$INSTALL" >&6 -+ -+# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -+# It thinks the first close brace ends the variable substitution. -+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' -+ -+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' -+ -+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -+ -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 -+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6 -+# On Suns, sometimes $CPP names a directory. -+if test -n "$CPP" && test -d "$CPP"; then -+ CPP= -+fi -+if test -z "$CPP"; then -+ if test "${ac_cv_prog_CPP+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ # Double quotes because CPP needs to be expanded -+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" -+ do -+ ac_preproc_ok=false -+for ac_c_preproc_warn_flag in '' yes -+do -+ # Use a header file that comes with gcc, so configuring glibc -+ # with a fresh cross-compiler works. -+ # Prefer to if __STDC__ is defined, since -+ # exists even on freestanding compilers. -+ # On the NeXT, cc -E runs the code through the compiler's parser, -+ # not just through cpp. "Syntax error" is here to catch this case. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ Syntax error -+_ACEOF -+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 -+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null; then -+ if test -s conftest.err; then -+ ac_cpp_err=$ac_c_preproc_warn_flag -+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag -+ else -+ ac_cpp_err= -+ fi -+else -+ ac_cpp_err=yes -+fi -+if test -z "$ac_cpp_err"; then -+ : -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ # Broken: fails on valid input. -+continue -+fi -+rm -f conftest.err conftest.$ac_ext -+ -+ # OK, works on sane cases. Now check whether non-existent headers -+ # can be detected and how. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+_ACEOF -+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 -+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null; then -+ if test -s conftest.err; then -+ ac_cpp_err=$ac_c_preproc_warn_flag -+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag -+ else -+ ac_cpp_err= -+ fi -+else -+ ac_cpp_err=yes -+fi -+if test -z "$ac_cpp_err"; then -+ # Broken: success on invalid input. -+continue -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ # Passes both tests. -+ac_preproc_ok=: -+break -+fi -+rm -f conftest.err conftest.$ac_ext -+ -+done -+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -+rm -f conftest.err conftest.$ac_ext -+if $ac_preproc_ok; then -+ break -+fi -+ -+ done -+ ac_cv_prog_CPP=$CPP -+ -+fi -+ CPP=$ac_cv_prog_CPP -+else -+ ac_cv_prog_CPP=$CPP -+fi -+echo "$as_me:$LINENO: result: $CPP" >&5 -+echo "${ECHO_T}$CPP" >&6 -+ac_preproc_ok=false -+for ac_c_preproc_warn_flag in '' yes -+do -+ # Use a header file that comes with gcc, so configuring glibc -+ # with a fresh cross-compiler works. -+ # Prefer to if __STDC__ is defined, since -+ # exists even on freestanding compilers. -+ # On the NeXT, cc -E runs the code through the compiler's parser, -+ # not just through cpp. "Syntax error" is here to catch this case. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ Syntax error -+_ACEOF -+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 -+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null; then -+ if test -s conftest.err; then -+ ac_cpp_err=$ac_c_preproc_warn_flag -+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag -+ else -+ ac_cpp_err= -+ fi -+else -+ ac_cpp_err=yes -+fi -+if test -z "$ac_cpp_err"; then -+ : -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ # Broken: fails on valid input. -+continue -+fi -+rm -f conftest.err conftest.$ac_ext -+ -+ # OK, works on sane cases. Now check whether non-existent headers -+ # can be detected and how. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+_ACEOF -+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 -+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null; then -+ if test -s conftest.err; then -+ ac_cpp_err=$ac_c_preproc_warn_flag -+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag -+ else -+ ac_cpp_err= -+ fi -+else -+ ac_cpp_err=yes -+fi -+if test -z "$ac_cpp_err"; then -+ # Broken: success on invalid input. -+continue -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ # Passes both tests. -+ac_preproc_ok=: -+break -+fi -+rm -f conftest.err conftest.$ac_ext -+ -+done -+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -+rm -f conftest.err conftest.$ac_ext -+if $ac_preproc_ok; then -+ : -+else -+ { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check -+See \`config.log' for more details." >&5 -+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } -+fi -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ -+echo "$as_me:$LINENO: checking for egrep" >&5 -+echo $ECHO_N "checking for egrep... $ECHO_C" >&6 -+if test "${ac_cv_prog_egrep+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if echo a | (grep -E '(a|b)') >/dev/null 2>&1 -+ then ac_cv_prog_egrep='grep -E' -+ else ac_cv_prog_egrep='egrep' -+ fi -+fi -+echo "$as_me:$LINENO: result: $ac_cv_prog_egrep" >&5 -+echo "${ECHO_T}$ac_cv_prog_egrep" >&6 -+ EGREP=$ac_cv_prog_egrep -+ -+ -+if test $ac_cv_c_compiler_gnu = yes; then -+ echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5 -+echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6 -+if test "${ac_cv_prog_gcc_traditional+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_pattern="Autoconf.*'x'" -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+Autoconf TIOCGETP -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "$ac_pattern" >/dev/null 2>&1; then -+ ac_cv_prog_gcc_traditional=yes -+else -+ ac_cv_prog_gcc_traditional=no -+fi -+rm -f conftest* -+ -+ -+ if test $ac_cv_prog_gcc_traditional = no; then -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+Autoconf TCGETA -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "$ac_pattern" >/dev/null 2>&1; then -+ ac_cv_prog_gcc_traditional=yes -+fi -+rm -f conftest* -+ -+ fi -+fi -+echo "$as_me:$LINENO: result: $ac_cv_prog_gcc_traditional" >&5 -+echo "${ECHO_T}$ac_cv_prog_gcc_traditional" >&6 -+ if test $ac_cv_prog_gcc_traditional = yes; then -+ CC="$CC -traditional" -+ fi -+fi -+ -+ -+# Checks for typedefs, structures, and compiler characteristics. -+echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 -+echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6 -+if test "${ac_cv_c_const+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+/* FIXME: Include the comments suggested by Paul. */ -+#ifndef __cplusplus -+ /* Ultrix mips cc rejects this. */ -+ typedef int charset[2]; -+ const charset x; -+ /* SunOS 4.1.1 cc rejects this. */ -+ char const *const *ccp; -+ char **p; -+ /* NEC SVR4.0.2 mips cc rejects this. */ -+ struct point {int x, y;}; -+ static struct point const zero = {0,0}; -+ /* AIX XL C 1.02.0.0 rejects this. -+ It does not let you subtract one const X* pointer from another in -+ an arm of an if-expression whose if-part is not a constant -+ expression */ -+ const char *g = "string"; -+ ccp = &g + (g ? g-g : 0); -+ /* HPUX 7.0 cc rejects these. */ -+ ++ccp; -+ p = (char**) ccp; -+ ccp = (char const *const *) p; -+ { /* SCO 3.2v4 cc rejects this. */ -+ char *t; -+ char const *s = 0 ? (char *) 0 : (char const *) 0; -+ -+ *t++ = 0; -+ } -+ { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ -+ int x[] = {25, 17}; -+ const int *foo = &x[0]; -+ ++foo; -+ } -+ { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ -+ typedef const int *iptr; -+ iptr p = 0; -+ ++p; -+ } -+ { /* AIX XL C 1.02.0.0 rejects this saying -+ "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ -+ struct s { int j; const int *ap[3]; }; -+ struct s *b; b->j = 5; -+ } -+ { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ -+ const int foo = 10; -+ } -+#endif -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_c_const=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_c_const=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 -+echo "${ECHO_T}$ac_cv_c_const" >&6 -+if test $ac_cv_c_const = no; then -+ -+cat >>confdefs.h <<\_ACEOF -+#define const -+_ACEOF -+ -+fi -+ -+echo "$as_me:$LINENO: checking for inline" >&5 -+echo $ECHO_N "checking for inline... $ECHO_C" >&6 -+if test "${ac_cv_c_inline+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_cv_c_inline=no -+for ac_kw in inline __inline__ __inline; do -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#ifndef __cplusplus -+typedef int foo_t; -+static $ac_kw foo_t static_foo () {return 0; } -+$ac_kw foo_t foo () {return 0; } -+#endif -+ -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_c_inline=$ac_kw; break -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+done -+ -+fi -+echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5 -+echo "${ECHO_T}$ac_cv_c_inline" >&6 -+ -+ -+case $ac_cv_c_inline in -+ inline | yes) ;; -+ *) -+ case $ac_cv_c_inline in -+ no) ac_val=;; -+ *) ac_val=$ac_cv_c_inline;; -+ esac -+ cat >>confdefs.h <<_ACEOF -+#ifndef __cplusplus -+#define inline $ac_val -+#endif -+_ACEOF -+ ;; -+esac -+ -+echo "$as_me:$LINENO: checking for ANSI C header files" >&5 -+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6 -+if test "${ac_cv_header_stdc+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+#include -+#include -+#include -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_header_stdc=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_header_stdc=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ -+if test $ac_cv_header_stdc = yes; then -+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+ -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "memchr" >/dev/null 2>&1; then -+ : -+else -+ ac_cv_header_stdc=no -+fi -+rm -f conftest* -+ -+fi -+ -+if test $ac_cv_header_stdc = yes; then -+ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+ -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "free" >/dev/null 2>&1; then -+ : -+else -+ ac_cv_header_stdc=no -+fi -+rm -f conftest* -+ -+fi -+ -+if test $ac_cv_header_stdc = yes; then -+ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. -+ if test "$cross_compiling" = yes; then -+ : -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+#if ((' ' & 0x0FF) == 0x020) -+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -+#else -+# define ISLOWER(c) \ -+ (('a' <= (c) && (c) <= 'i') \ -+ || ('j' <= (c) && (c) <= 'r') \ -+ || ('s' <= (c) && (c) <= 'z')) -+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -+#endif -+ -+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -+int -+main () -+{ -+ int i; -+ for (i = 0; i < 256; i++) -+ if (XOR (islower (i), ISLOWER (i)) -+ || toupper (i) != TOUPPER (i)) -+ exit(2); -+ exit (0); -+} -+_ACEOF -+rm -f conftest$ac_exeext -+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -+ (eval $ac_link) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ : -+else -+ echo "$as_me: program exited with status $ac_status" >&5 -+echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+( exit $ac_status ) -+ac_cv_header_stdc=no -+fi -+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi -+fi -+fi -+echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 -+echo "${ECHO_T}$ac_cv_header_stdc" >&6 -+if test $ac_cv_header_stdc = yes; then -+ -+cat >>confdefs.h <<\_ACEOF -+#define STDC_HEADERS 1 -+_ACEOF -+ -+fi -+ -+# On IRIX 5.3, sys/types and inttypes.h are conflicting. -+ -+ -+ -+ -+ -+ -+ -+ -+ -+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ -+ inttypes.h stdint.h unistd.h -+do -+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -+echo "$as_me:$LINENO: checking for $ac_header" >&5 -+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -+if eval "test \"\${$as_ac_Header+set}\" = set"; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+ -+#include <$ac_header> -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ eval "$as_ac_Header=yes" -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+eval "$as_ac_Header=no" -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -+if test `eval echo '${'$as_ac_Header'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF -+ -+fi -+ -+done -+ -+ -+echo "$as_me:$LINENO: checking for off_t" >&5 -+echo $ECHO_N "checking for off_t... $ECHO_C" >&6 -+if test "${ac_cv_type_off_t+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+if ((off_t *) 0) -+ return 0; -+if (sizeof (off_t)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_type_off_t=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_type_off_t=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 -+echo "${ECHO_T}$ac_cv_type_off_t" >&6 -+if test $ac_cv_type_off_t = yes; then -+ : -+else -+ -+cat >>confdefs.h <<_ACEOF -+#define off_t long -+_ACEOF -+ -+fi -+ -+echo "$as_me:$LINENO: checking for size_t" >&5 -+echo $ECHO_N "checking for size_t... $ECHO_C" >&6 -+if test "${ac_cv_type_size_t+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+if ((size_t *) 0) -+ return 0; -+if (sizeof (size_t)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_type_size_t=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_type_size_t=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5 -+echo "${ECHO_T}$ac_cv_type_size_t" >&6 -+if test $ac_cv_type_size_t = yes; then -+ : -+else -+ -+cat >>confdefs.h <<_ACEOF -+#define size_t unsigned -+_ACEOF -+ -+fi -+ -+echo "$as_me:$LINENO: checking for int8_t" >&5 -+echo $ECHO_N "checking for int8_t... $ECHO_C" >&6 -+if test "${ac_cv_type_int8_t+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+if ((int8_t *) 0) -+ return 0; -+if (sizeof (int8_t)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_type_int8_t=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_type_int8_t=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_type_int8_t" >&5 -+echo "${ECHO_T}$ac_cv_type_int8_t" >&6 -+if test $ac_cv_type_int8_t = yes; then -+ -+cat >>confdefs.h <<_ACEOF -+#define HAVE_INT8_T 1 -+_ACEOF -+ -+ -+fi -+ -+echo "$as_me:$LINENO: checking for uint8_t" >&5 -+echo $ECHO_N "checking for uint8_t... $ECHO_C" >&6 -+if test "${ac_cv_type_uint8_t+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+if ((uint8_t *) 0) -+ return 0; -+if (sizeof (uint8_t)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_type_uint8_t=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_type_uint8_t=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_type_uint8_t" >&5 -+echo "${ECHO_T}$ac_cv_type_uint8_t" >&6 -+if test $ac_cv_type_uint8_t = yes; then -+ -+cat >>confdefs.h <<_ACEOF -+#define HAVE_UINT8_T 1 -+_ACEOF -+ -+ -+fi -+ -+echo "$as_me:$LINENO: checking for int16_t" >&5 -+echo $ECHO_N "checking for int16_t... $ECHO_C" >&6 -+if test "${ac_cv_type_int16_t+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+if ((int16_t *) 0) -+ return 0; -+if (sizeof (int16_t)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_type_int16_t=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_type_int16_t=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_type_int16_t" >&5 -+echo "${ECHO_T}$ac_cv_type_int16_t" >&6 -+if test $ac_cv_type_int16_t = yes; then -+ -+cat >>confdefs.h <<_ACEOF -+#define HAVE_INT16_T 1 -+_ACEOF -+ -+ -+fi -+ -+echo "$as_me:$LINENO: checking for uint16_t" >&5 -+echo $ECHO_N "checking for uint16_t... $ECHO_C" >&6 -+if test "${ac_cv_type_uint16_t+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+if ((uint16_t *) 0) -+ return 0; -+if (sizeof (uint16_t)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_type_uint16_t=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_type_uint16_t=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_type_uint16_t" >&5 -+echo "${ECHO_T}$ac_cv_type_uint16_t" >&6 -+if test $ac_cv_type_uint16_t = yes; then -+ -+cat >>confdefs.h <<_ACEOF -+#define HAVE_UINT16_T 1 -+_ACEOF -+ -+ -+fi -+ -+echo "$as_me:$LINENO: checking for int32_t" >&5 -+echo $ECHO_N "checking for int32_t... $ECHO_C" >&6 -+if test "${ac_cv_type_int32_t+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+if ((int32_t *) 0) -+ return 0; -+if (sizeof (int32_t)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_type_int32_t=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_type_int32_t=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_type_int32_t" >&5 -+echo "${ECHO_T}$ac_cv_type_int32_t" >&6 -+if test $ac_cv_type_int32_t = yes; then -+ -+cat >>confdefs.h <<_ACEOF -+#define HAVE_INT32_T 1 -+_ACEOF -+ -+ -+fi -+ -+echo "$as_me:$LINENO: checking for uint32_t" >&5 -+echo $ECHO_N "checking for uint32_t... $ECHO_C" >&6 -+if test "${ac_cv_type_uint32_t+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+if ((uint32_t *) 0) -+ return 0; -+if (sizeof (uint32_t)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_type_uint32_t=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_type_uint32_t=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_type_uint32_t" >&5 -+echo "${ECHO_T}$ac_cv_type_uint32_t" >&6 -+if test $ac_cv_type_uint32_t = yes; then -+ -+cat >>confdefs.h <<_ACEOF -+#define HAVE_UINT32_T 1 -+_ACEOF -+ -+ -+fi -+ -+echo "$as_me:$LINENO: checking for int64_t" >&5 -+echo $ECHO_N "checking for int64_t... $ECHO_C" >&6 -+if test "${ac_cv_type_int64_t+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+if ((int64_t *) 0) -+ return 0; -+if (sizeof (int64_t)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_type_int64_t=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_type_int64_t=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_type_int64_t" >&5 -+echo "${ECHO_T}$ac_cv_type_int64_t" >&6 -+if test $ac_cv_type_int64_t = yes; then -+ -+cat >>confdefs.h <<_ACEOF -+#define HAVE_INT64_T 1 -+_ACEOF -+ -+ -+fi -+ -+echo "$as_me:$LINENO: checking for uint64_t" >&5 -+echo $ECHO_N "checking for uint64_t... $ECHO_C" >&6 -+if test "${ac_cv_type_uint64_t+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+if ((uint64_t *) 0) -+ return 0; -+if (sizeof (uint64_t)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_type_uint64_t=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_type_uint64_t=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_type_uint64_t" >&5 -+echo "${ECHO_T}$ac_cv_type_uint64_t" >&6 -+if test $ac_cv_type_uint64_t = yes; then -+ -+cat >>confdefs.h <<_ACEOF -+#define HAVE_UINT64_T 1 -+_ACEOF -+ -+ -+fi -+ -+echo "$as_me:$LINENO: checking for short" >&5 -+echo $ECHO_N "checking for short... $ECHO_C" >&6 -+if test "${ac_cv_type_short+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+if ((short *) 0) -+ return 0; -+if (sizeof (short)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_type_short=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_type_short=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_type_short" >&5 -+echo "${ECHO_T}$ac_cv_type_short" >&6 -+ -+echo "$as_me:$LINENO: checking size of short" >&5 -+echo $ECHO_N "checking size of short... $ECHO_C" >&6 -+if test "${ac_cv_sizeof_short+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test "$ac_cv_type_short" = yes; then -+ # The cast to unsigned long works around a bug in the HP C Compiler -+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -+ # This bug is HP SR number 8606223364. -+ if test "$cross_compiling" = yes; then -+ # Depending upon the size, compute the lo and hi bounds. -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+static int test_array [1 - 2 * !(((long) (sizeof (short))) >= 0)]; -+test_array [0] = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_lo=0 ac_mid=0 -+ while :; do -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)]; -+test_array [0] = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_hi=$ac_mid; break -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_lo=`expr $ac_mid + 1` -+ if test $ac_lo -le $ac_mid; then -+ ac_lo= ac_hi= -+ break -+ fi -+ ac_mid=`expr 2 '*' $ac_mid + 1` -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ done -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+static int test_array [1 - 2 * !(((long) (sizeof (short))) < 0)]; -+test_array [0] = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_hi=-1 ac_mid=-1 -+ while :; do -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+static int test_array [1 - 2 * !(((long) (sizeof (short))) >= $ac_mid)]; -+test_array [0] = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_lo=$ac_mid; break -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_hi=`expr '(' $ac_mid ')' - 1` -+ if test $ac_mid -le $ac_hi; then -+ ac_lo= ac_hi= -+ break -+ fi -+ ac_mid=`expr 2 '*' $ac_mid` -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ done -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_lo= ac_hi= -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+# Binary search between lo and hi bounds. -+while test "x$ac_lo" != "x$ac_hi"; do -+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+static int test_array [1 - 2 * !(((long) (sizeof (short))) <= $ac_mid)]; -+test_array [0] = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_hi=$ac_mid -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_lo=`expr '(' $ac_mid ')' + 1` -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+done -+case $ac_lo in -+?*) ac_cv_sizeof_short=$ac_lo;; -+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77 -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (short), 77 -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } ;; -+esac -+else -+ if test "$cross_compiling" = yes; then -+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot run test program while cross compiling -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+long longval () { return (long) (sizeof (short)); } -+unsigned long ulongval () { return (long) (sizeof (short)); } -+#include -+#include -+int -+main () -+{ -+ -+ FILE *f = fopen ("conftest.val", "w"); -+ if (! f) -+ exit (1); -+ if (((long) (sizeof (short))) < 0) -+ { -+ long i = longval (); -+ if (i != ((long) (sizeof (short)))) -+ exit (1); -+ fprintf (f, "%ld\n", i); -+ } -+ else -+ { -+ unsigned long i = ulongval (); -+ if (i != ((long) (sizeof (short)))) -+ exit (1); -+ fprintf (f, "%lu\n", i); -+ } -+ exit (ferror (f) || fclose (f) != 0); -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest$ac_exeext -+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -+ (eval $ac_link) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_sizeof_short=`cat conftest.val` -+else -+ echo "$as_me: program exited with status $ac_status" >&5 -+echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+( exit $ac_status ) -+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (short), 77 -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (short), 77 -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } -+fi -+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi -+fi -+rm -f conftest.val -+else -+ ac_cv_sizeof_short=0 -+fi -+fi -+echo "$as_me:$LINENO: result: $ac_cv_sizeof_short" >&5 -+echo "${ECHO_T}$ac_cv_sizeof_short" >&6 -+cat >>confdefs.h <<_ACEOF -+#define SIZEOF_SHORT $ac_cv_sizeof_short -+_ACEOF -+ -+ -+echo "$as_me:$LINENO: checking for int" >&5 -+echo $ECHO_N "checking for int... $ECHO_C" >&6 -+if test "${ac_cv_type_int+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+if ((int *) 0) -+ return 0; -+if (sizeof (int)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_type_int=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_type_int=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_type_int" >&5 -+echo "${ECHO_T}$ac_cv_type_int" >&6 -+ -+echo "$as_me:$LINENO: checking size of int" >&5 -+echo $ECHO_N "checking size of int... $ECHO_C" >&6 -+if test "${ac_cv_sizeof_int+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test "$ac_cv_type_int" = yes; then -+ # The cast to unsigned long works around a bug in the HP C Compiler -+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -+ # This bug is HP SR number 8606223364. -+ if test "$cross_compiling" = yes; then -+ # Depending upon the size, compute the lo and hi bounds. -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+static int test_array [1 - 2 * !(((long) (sizeof (int))) >= 0)]; -+test_array [0] = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_lo=0 ac_mid=0 -+ while :; do -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)]; -+test_array [0] = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_hi=$ac_mid; break -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_lo=`expr $ac_mid + 1` -+ if test $ac_lo -le $ac_mid; then -+ ac_lo= ac_hi= -+ break -+ fi -+ ac_mid=`expr 2 '*' $ac_mid + 1` -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ done -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+static int test_array [1 - 2 * !(((long) (sizeof (int))) < 0)]; -+test_array [0] = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_hi=-1 ac_mid=-1 -+ while :; do -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+static int test_array [1 - 2 * !(((long) (sizeof (int))) >= $ac_mid)]; -+test_array [0] = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_lo=$ac_mid; break -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_hi=`expr '(' $ac_mid ')' - 1` -+ if test $ac_mid -le $ac_hi; then -+ ac_lo= ac_hi= -+ break -+ fi -+ ac_mid=`expr 2 '*' $ac_mid` -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ done -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_lo= ac_hi= -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+# Binary search between lo and hi bounds. -+while test "x$ac_lo" != "x$ac_hi"; do -+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+static int test_array [1 - 2 * !(((long) (sizeof (int))) <= $ac_mid)]; -+test_array [0] = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_hi=$ac_mid -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_lo=`expr '(' $ac_mid ')' + 1` -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+done -+case $ac_lo in -+?*) ac_cv_sizeof_int=$ac_lo;; -+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (int), 77 -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } ;; -+esac -+else -+ if test "$cross_compiling" = yes; then -+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot run test program while cross compiling -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+long longval () { return (long) (sizeof (int)); } -+unsigned long ulongval () { return (long) (sizeof (int)); } -+#include -+#include -+int -+main () -+{ -+ -+ FILE *f = fopen ("conftest.val", "w"); -+ if (! f) -+ exit (1); -+ if (((long) (sizeof (int))) < 0) -+ { -+ long i = longval (); -+ if (i != ((long) (sizeof (int)))) -+ exit (1); -+ fprintf (f, "%ld\n", i); -+ } -+ else -+ { -+ unsigned long i = ulongval (); -+ if (i != ((long) (sizeof (int)))) -+ exit (1); -+ fprintf (f, "%lu\n", i); -+ } -+ exit (ferror (f) || fclose (f) != 0); -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest$ac_exeext -+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -+ (eval $ac_link) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_sizeof_int=`cat conftest.val` -+else -+ echo "$as_me: program exited with status $ac_status" >&5 -+echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+( exit $ac_status ) -+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (int), 77 -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (int), 77 -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } -+fi -+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi -+fi -+rm -f conftest.val -+else -+ ac_cv_sizeof_int=0 -+fi -+fi -+echo "$as_me:$LINENO: result: $ac_cv_sizeof_int" >&5 -+echo "${ECHO_T}$ac_cv_sizeof_int" >&6 -+cat >>confdefs.h <<_ACEOF -+#define SIZEOF_INT $ac_cv_sizeof_int -+_ACEOF -+ -+ -+echo "$as_me:$LINENO: checking for long" >&5 -+echo $ECHO_N "checking for long... $ECHO_C" >&6 -+if test "${ac_cv_type_long+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+if ((long *) 0) -+ return 0; -+if (sizeof (long)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_type_long=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_type_long=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_type_long" >&5 -+echo "${ECHO_T}$ac_cv_type_long" >&6 -+ -+echo "$as_me:$LINENO: checking size of long" >&5 -+echo $ECHO_N "checking size of long... $ECHO_C" >&6 -+if test "${ac_cv_sizeof_long+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test "$ac_cv_type_long" = yes; then -+ # The cast to unsigned long works around a bug in the HP C Compiler -+ # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -+ # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -+ # This bug is HP SR number 8606223364. -+ if test "$cross_compiling" = yes; then -+ # Depending upon the size, compute the lo and hi bounds. -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+static int test_array [1 - 2 * !(((long) (sizeof (long))) >= 0)]; -+test_array [0] = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_lo=0 ac_mid=0 -+ while :; do -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)]; -+test_array [0] = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_hi=$ac_mid; break -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_lo=`expr $ac_mid + 1` -+ if test $ac_lo -le $ac_mid; then -+ ac_lo= ac_hi= -+ break -+ fi -+ ac_mid=`expr 2 '*' $ac_mid + 1` -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ done -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+static int test_array [1 - 2 * !(((long) (sizeof (long))) < 0)]; -+test_array [0] = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_hi=-1 ac_mid=-1 -+ while :; do -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+static int test_array [1 - 2 * !(((long) (sizeof (long))) >= $ac_mid)]; -+test_array [0] = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_lo=$ac_mid; break -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_hi=`expr '(' $ac_mid ')' - 1` -+ if test $ac_mid -le $ac_hi; then -+ ac_lo= ac_hi= -+ break -+ fi -+ ac_mid=`expr 2 '*' $ac_mid` -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ done -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_lo= ac_hi= -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+# Binary search between lo and hi bounds. -+while test "x$ac_lo" != "x$ac_hi"; do -+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo` -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+int -+main () -+{ -+static int test_array [1 - 2 * !(((long) (sizeof (long))) <= $ac_mid)]; -+test_array [0] = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_hi=$ac_mid -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_lo=`expr '(' $ac_mid ')' + 1` -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+done -+case $ac_lo in -+?*) ac_cv_sizeof_long=$ac_lo;; -+'') { { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (long), 77 -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } ;; -+esac -+else -+ if test "$cross_compiling" = yes; then -+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot run test program while cross compiling -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+long longval () { return (long) (sizeof (long)); } -+unsigned long ulongval () { return (long) (sizeof (long)); } -+#include -+#include -+int -+main () -+{ -+ -+ FILE *f = fopen ("conftest.val", "w"); -+ if (! f) -+ exit (1); -+ if (((long) (sizeof (long))) < 0) -+ { -+ long i = longval (); -+ if (i != ((long) (sizeof (long)))) -+ exit (1); -+ fprintf (f, "%ld\n", i); -+ } -+ else -+ { -+ unsigned long i = ulongval (); -+ if (i != ((long) (sizeof (long)))) -+ exit (1); -+ fprintf (f, "%lu\n", i); -+ } -+ exit (ferror (f) || fclose (f) != 0); -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest$ac_exeext -+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -+ (eval $ac_link) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_sizeof_long=`cat conftest.val` -+else -+ echo "$as_me: program exited with status $ac_status" >&5 -+echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+( exit $ac_status ) -+{ { echo "$as_me:$LINENO: error: cannot compute sizeof (long), 77 -+See \`config.log' for more details." >&5 -+echo "$as_me: error: cannot compute sizeof (long), 77 -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } -+fi -+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi -+fi -+rm -f conftest.val -+else -+ ac_cv_sizeof_long=0 -+fi -+fi -+echo "$as_me:$LINENO: result: $ac_cv_sizeof_long" >&5 -+echo "${ECHO_T}$ac_cv_sizeof_long" >&6 -+cat >>confdefs.h <<_ACEOF -+#define SIZEOF_LONG $ac_cv_sizeof_long -+_ACEOF -+ -+ -+ -+echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 -+echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 -+if test "${ac_cv_c_bigendian+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ # See if sys/param.h defines the BYTE_ORDER macro. -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+#include -+ -+int -+main () -+{ -+#if !BYTE_ORDER || !BIG_ENDIAN || !LITTLE_ENDIAN -+ bogus endian macros -+#endif -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ # It does; now see whether it defined to BIG_ENDIAN or not. -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+#include -+ -+int -+main () -+{ -+#if BYTE_ORDER != BIG_ENDIAN -+ not big endian -+#endif -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_c_bigendian=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_c_bigendian=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+# It does not; compile a test program. -+if test "$cross_compiling" = yes; then -+ # try to guess the endianness by grepping values into an object file -+ ac_cv_c_bigendian=unknown -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+short ascii_mm[] = { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; -+short ascii_ii[] = { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; -+void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; } -+short ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; -+short ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; -+void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; } -+int -+main () -+{ -+ _ascii (); _ebcdic (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ if grep BIGenDianSyS conftest.$ac_objext >/dev/null ; then -+ ac_cv_c_bigendian=yes -+fi -+if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then -+ if test "$ac_cv_c_bigendian" = unknown; then -+ ac_cv_c_bigendian=no -+ else -+ # finding both strings is unlikely to happen, but who knows? -+ ac_cv_c_bigendian=unknown -+ fi -+fi -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+int -+main () -+{ -+ /* Are we little or big endian? From Harbison&Steele. */ -+ union -+ { -+ long l; -+ char c[sizeof (long)]; -+ } u; -+ u.l = 1; -+ exit (u.c[sizeof (long) - 1] == 1); -+} -+_ACEOF -+rm -f conftest$ac_exeext -+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -+ (eval $ac_link) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_c_bigendian=no -+else -+ echo "$as_me: program exited with status $ac_status" >&5 -+echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+( exit $ac_status ) -+ac_cv_c_bigendian=yes -+fi -+rm -f core *.core gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -+fi -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5 -+echo "${ECHO_T}$ac_cv_c_bigendian" >&6 -+case $ac_cv_c_bigendian in -+ yes) -+ ENDIAN=BIG -+ ;; -+ no) -+ ENDIAN=LITTLE -+ ;; -+ *) -+ { { echo "$as_me:$LINENO: error: unknown endianness -+presetting ac_cv_c_bigendian=no (or yes) will help" >&5 -+echo "$as_me: error: unknown endianness -+presetting ac_cv_c_bigendian=no (or yes) will help" >&2;} -+ { (exit 1); exit 1; }; } ;; -+esac -+ -+ -+ -+ -+ -+# libtool stuff -+# Check whether --enable-shared or --disable-shared was given. -+if test "${enable_shared+set}" = set; then -+ enableval="$enable_shared" -+ p=${PACKAGE-default} -+ case $enableval in -+ yes) enable_shared=yes ;; -+ no) enable_shared=no ;; -+ *) -+ enable_shared=no -+ # Look at the argument we got. We use all the common list separators. -+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," -+ for pkg in $enableval; do -+ IFS="$lt_save_ifs" -+ if test "X$pkg" = "X$p"; then -+ enable_shared=yes -+ fi -+ done -+ IFS="$lt_save_ifs" -+ ;; -+ esac -+else -+ enable_shared=yes -+fi; -+ -+# Check whether --enable-static or --disable-static was given. -+if test "${enable_static+set}" = set; then -+ enableval="$enable_static" -+ p=${PACKAGE-default} -+ case $enableval in -+ yes) enable_static=yes ;; -+ no) enable_static=no ;; -+ *) -+ enable_static=no -+ # Look at the argument we got. We use all the common list separators. -+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," -+ for pkg in $enableval; do -+ IFS="$lt_save_ifs" -+ if test "X$pkg" = "X$p"; then -+ enable_static=yes -+ fi -+ done -+ IFS="$lt_save_ifs" -+ ;; -+ esac -+else -+ enable_static=yes -+fi; -+ -+# Check whether --enable-fast-install or --disable-fast-install was given. -+if test "${enable_fast_install+set}" = set; then -+ enableval="$enable_fast_install" -+ p=${PACKAGE-default} -+ case $enableval in -+ yes) enable_fast_install=yes ;; -+ no) enable_fast_install=no ;; -+ *) -+ enable_fast_install=no -+ # Look at the argument we got. We use all the common list separators. -+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," -+ for pkg in $enableval; do -+ IFS="$lt_save_ifs" -+ if test "X$pkg" = "X$p"; then -+ enable_fast_install=yes -+ fi -+ done -+ IFS="$lt_save_ifs" -+ ;; -+ esac -+else -+ enable_fast_install=yes -+fi; -+ -+# Make sure we can run config.sub. -+$ac_config_sub sun4 >/dev/null 2>&1 || -+ { { echo "$as_me:$LINENO: error: cannot run $ac_config_sub" >&5 -+echo "$as_me: error: cannot run $ac_config_sub" >&2;} -+ { (exit 1); exit 1; }; } -+ -+echo "$as_me:$LINENO: checking build system type" >&5 -+echo $ECHO_N "checking build system type... $ECHO_C" >&6 -+if test "${ac_cv_build+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_cv_build_alias=$build_alias -+test -z "$ac_cv_build_alias" && -+ ac_cv_build_alias=`$ac_config_guess` -+test -z "$ac_cv_build_alias" && -+ { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 -+echo "$as_me: error: cannot guess build type; you must specify one" >&2;} -+ { (exit 1); exit 1; }; } -+ac_cv_build=`$ac_config_sub $ac_cv_build_alias` || -+ { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_build_alias failed" >&5 -+echo "$as_me: error: $ac_config_sub $ac_cv_build_alias failed" >&2;} -+ { (exit 1); exit 1; }; } -+ -+fi -+echo "$as_me:$LINENO: result: $ac_cv_build" >&5 -+echo "${ECHO_T}$ac_cv_build" >&6 -+build=$ac_cv_build -+build_cpu=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -+build_vendor=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -+build_os=`echo $ac_cv_build | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -+ -+ -+echo "$as_me:$LINENO: checking host system type" >&5 -+echo $ECHO_N "checking host system type... $ECHO_C" >&6 -+if test "${ac_cv_host+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_cv_host_alias=$host_alias -+test -z "$ac_cv_host_alias" && -+ ac_cv_host_alias=$ac_cv_build_alias -+ac_cv_host=`$ac_config_sub $ac_cv_host_alias` || -+ { { echo "$as_me:$LINENO: error: $ac_config_sub $ac_cv_host_alias failed" >&5 -+echo "$as_me: error: $ac_config_sub $ac_cv_host_alias failed" >&2;} -+ { (exit 1); exit 1; }; } -+ -+fi -+echo "$as_me:$LINENO: result: $ac_cv_host" >&5 -+echo "${ECHO_T}$ac_cv_host" >&6 -+host=$ac_cv_host -+host_cpu=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\1/'` -+host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -+host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` -+ -+ -+echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 -+echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 -+if test "${lt_cv_path_SED+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ # 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 -+ -+fi -+ -+SED=$lt_cv_path_SED -+ -+echo "$as_me:$LINENO: result: $SED" >&5 -+echo "${ECHO_T}$SED" >&6 -+ -+ -+# Check whether --with-gnu-ld or --without-gnu-ld was given. -+if test "${with_gnu_ld+set}" = set; then -+ withval="$with_gnu_ld" -+ test "$withval" = no || with_gnu_ld=yes -+else -+ with_gnu_ld=no -+fi; -+ac_prog=ld -+if test "$GCC" = yes; then -+ # Check if gcc -print-prog-name=ld gives a path. -+ echo "$as_me:$LINENO: checking for ld used by $CC" >&5 -+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 -+ 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 -+ echo "$as_me:$LINENO: checking for GNU ld" >&5 -+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 -+else -+ echo "$as_me:$LINENO: checking for non-GNU ld" >&5 -+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 -+fi -+if test "${lt_cv_path_LD+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ 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 &5 -+echo "${ECHO_T}$LD" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 -+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} -+ { (exit 1); exit 1; }; } -+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 -+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 -+if test "${lt_cv_prog_gnu_ld+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ # I'd rather use --version here, but apparently some GNU lds only accept -v. -+case `$LD -v 2>&1 &5 -+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 -+with_gnu_ld=$lt_cv_prog_gnu_ld -+ -+ -+echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 -+echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6 -+if test "${lt_cv_ld_reload_flag+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ lt_cv_ld_reload_flag='-r' -+fi -+echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 -+echo "${ECHO_T}$lt_cv_ld_reload_flag" >&6 -+reload_flag=$lt_cv_ld_reload_flag -+case $reload_flag in -+"" | " "*) ;; -+*) reload_flag=" $reload_flag" ;; -+esac -+reload_cmds='$LD$reload_flag -o $output$reload_objs' -+case $host_os in -+ darwin*) -+ if test "$GCC" = yes; then -+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' -+ else -+ reload_cmds='$LD$reload_flag -o $output$reload_objs' -+ fi -+ ;; -+esac -+ -+echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 -+echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6 -+if test "${lt_cv_path_NM+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ 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 -+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm -+fi -+fi -+echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 -+echo "${ECHO_T}$lt_cv_path_NM" >&6 -+NM="$lt_cv_path_NM" -+ -+echo "$as_me:$LINENO: checking whether ln -s works" >&5 -+echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 -+LN_S=$as_ln_s -+if test "$LN_S" = "ln -s"; then -+ echo "$as_me:$LINENO: result: yes" >&5 -+echo "${ECHO_T}yes" >&6 -+else -+ echo "$as_me:$LINENO: result: no, using $LN_S" >&5 -+echo "${ECHO_T}no, using $LN_S" >&6 -+fi -+ -+echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5 -+echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6 -+if test "${lt_cv_deplibs_check_method+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ lt_cv_file_magic_cmd='$MAGIC_CMD' -+lt_cv_file_magic_test_file= -+lt_cv_deplibs_check_method='unknown' -+# Need to set the preceding variable on all platforms that support -+# interlibrary dependencies. -+# 'none' -- dependencies not supported. -+# `unknown' -- same as none, but documents that we really don't know. -+# 'pass_all' -- all dependencies passed with no checks. -+# 'test_compile' -- check by making test program. -+# 'file_magic [[regex]]' -- check by looking for files in library path -+# which responds to the $file_magic_cmd with a given extended regex. -+# If you have `file' or equivalent on your system and you're not sure -+# whether `pass_all' will *always* work, you probably want this one. -+ -+case $host_os in -+aix4* | aix5*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+beos*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+bsdi[45]*) -+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' -+ lt_cv_file_magic_cmd='/usr/bin/file -L' -+ lt_cv_file_magic_test_file=/shlib/libc.so -+ ;; -+ -+cygwin*) -+ # func_win32_libid is a shell function defined in ltmain.sh -+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' -+ lt_cv_file_magic_cmd='func_win32_libid' -+ ;; -+ -+mingw* | pw32*) -+ # Base MSYS/MinGW do not provide the 'file' command needed by -+ # func_win32_libid shell function, so use a weaker test based on 'objdump'. -+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' -+ lt_cv_file_magic_cmd='$OBJDUMP -f' -+ ;; -+ -+darwin* | rhapsody*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+freebsd* | kfreebsd*-gnu | 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 -+ ;; -+ -+gnu*) -+ 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]) 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 -+ ;; -+ -+interix3*) -+ # 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 Linux ELF. -+linux*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+netbsd*) -+ 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=unknown -+ ;; -+ -+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 -+ ;; -+ -+solaris*) -+ 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 -+ ;; -+ -+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+esac -+ -+fi -+echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 -+echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6 -+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 -+ -+ -+ -+ -+# 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 -+ -+# Check whether --enable-libtool-lock or --disable-libtool-lock was given. -+if test "${enable_libtool_lock+set}" = set; then -+ enableval="$enable_libtool_lock" -+ -+fi; -+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 { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; 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 6826 "configure"' > conftest.$ac_ext -+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; 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-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*) -+ # Find out which ABI we are using. -+ echo 'int i;' > conftest.$ac_ext -+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; then -+ case `/usr/bin/file conftest.o` in -+ *32-bit*) -+ case $host in -+ x86_64-*linux*) -+ LD="${LD-ld} -m elf_i386" -+ ;; -+ ppc64-*linux*|powerpc64-*linux*) -+ 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-*linux*) -+ LD="${LD-ld} -m elf_x86_64" -+ ;; -+ ppc*-*linux*|powerpc*-*linux*) -+ LD="${LD-ld} -m elf64ppc" -+ ;; -+ s390*-*linux*) -+ 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" -+ echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 -+echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6 -+if test "${lt_cv_cc_needs_belf+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -+ (eval $ac_link) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest$ac_exeext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ lt_cv_cc_needs_belf=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+lt_cv_cc_needs_belf=no -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+ ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+fi -+echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 -+echo "${ECHO_T}$lt_cv_cc_needs_belf" >&6 -+ 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 -+ ;; -+sparc*-*solaris*) -+ # Find out which ABI we are using. -+ echo 'int i;' > conftest.$ac_ext -+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; then -+ case `/usr/bin/file conftest.o` in -+ *64-bit*) -+ case $lt_cv_prog_gnu_ld in -+ yes*) LD="${LD-ld} -m elf64_sparc" ;; -+ *) LD="${LD-ld} -64" ;; -+ esac -+ ;; -+ esac -+ fi -+ rm -rf conftest* -+ ;; -+ -+ -+esac -+ -+need_locks="$enable_libtool_lock" -+ -+ -+ -+for ac_header in dlfcn.h -+do -+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -+if eval "test \"\${$as_ac_Header+set}\" = set"; then -+ echo "$as_me:$LINENO: checking for $ac_header" >&5 -+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -+if eval "test \"\${$as_ac_Header+set}\" = set"; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+fi -+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -+else -+ # Is the header compilable? -+echo "$as_me:$LINENO: checking $ac_header usability" >&5 -+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_includes_default -+#include <$ac_header> -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_header_compiler=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_header_compiler=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 -+echo "${ECHO_T}$ac_header_compiler" >&6 -+ -+# Is the header present? -+echo "$as_me:$LINENO: checking $ac_header presence" >&5 -+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include <$ac_header> -+_ACEOF -+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 -+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null; then -+ if test -s conftest.err; then -+ ac_cpp_err=$ac_c_preproc_warn_flag -+ ac_cpp_err=$ac_cpp_err$ac_c_werror_flag -+ else -+ ac_cpp_err= -+ fi -+else -+ ac_cpp_err=yes -+fi -+if test -z "$ac_cpp_err"; then -+ ac_header_preproc=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_header_preproc=no -+fi -+rm -f conftest.err conftest.$ac_ext -+echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 -+echo "${ECHO_T}$ac_header_preproc" >&6 -+ -+# So? What about this header? -+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in -+ yes:no: ) -+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 -+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 -+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} -+ ac_header_preproc=yes -+ ;; -+ no:yes:* ) -+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 -+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 -+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 -+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 -+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 -+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} -+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 -+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} -+ ( -+ cat <<\_ASBOX -+## ------------------------------------- ## -+## Report this to eddie.wai@broadcom.com ## -+## ------------------------------------- ## -+_ASBOX -+ ) | -+ sed "s/^/$as_me: WARNING: /" >&2 -+ ;; -+esac -+echo "$as_me:$LINENO: checking for $ac_header" >&5 -+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 -+if eval "test \"\${$as_ac_Header+set}\" = set"; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ eval "$as_ac_Header=\$ac_header_preproc" -+fi -+echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 -+echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 -+ -+fi -+if test `eval echo '${'$as_ac_Header'}'` = yes; then -+ cat >>confdefs.h <<_ACEOF -+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF -+ -+fi -+ -+done -+ -+ac_ext=cc -+ac_cpp='$CXXCPP $CPPFLAGS' -+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -+if test -n "$ac_tool_prefix"; then -+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC -+ do -+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -+set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_CXX+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$CXX"; then -+ ac_cv_prog_CXX="$CXX" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+fi -+fi -+CXX=$ac_cv_prog_CXX -+if test -n "$CXX"; then -+ echo "$as_me:$LINENO: result: $CXX" >&5 -+echo "${ECHO_T}$CXX" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ test -n "$CXX" && break -+ done -+fi -+if test -z "$CXX"; then -+ ac_ct_CXX=$CXX -+ for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC -+do -+ # Extract the first word of "$ac_prog", so it can be a program name with args. -+set dummy $ac_prog; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$ac_ct_CXX"; then -+ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_ac_ct_CXX="$ac_prog" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+fi -+fi -+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -+if test -n "$ac_ct_CXX"; then -+ echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 -+echo "${ECHO_T}$ac_ct_CXX" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ test -n "$ac_ct_CXX" && break -+done -+test -n "$ac_ct_CXX" || ac_ct_CXX="g++" -+ -+ CXX=$ac_ct_CXX -+fi -+ -+ -+# Provide some information about the compiler. -+echo "$as_me:$LINENO:" \ -+ "checking for C++ compiler version" >&5 -+ac_compiler=`set X $ac_compile; echo $2` -+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 -+ (eval $ac_compiler --version &5) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } -+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 -+ (eval $ac_compiler -v &5) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } -+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 -+ (eval $ac_compiler -V &5) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } -+ -+echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 -+echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6 -+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+#ifndef __GNUC__ -+ choke me -+#endif -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_cxx_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_compiler_gnu=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_compiler_gnu=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu -+ -+fi -+echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 -+echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6 -+GXX=`test $ac_compiler_gnu = yes && echo yes` -+ac_test_CXXFLAGS=${CXXFLAGS+set} -+ac_save_CXXFLAGS=$CXXFLAGS -+CXXFLAGS="-g" -+echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 -+echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6 -+if test "${ac_cv_prog_cxx_g+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_cxx_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_prog_cxx_g=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_prog_cxx_g=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 -+echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6 -+if test "$ac_test_CXXFLAGS" = set; then -+ CXXFLAGS=$ac_save_CXXFLAGS -+elif test $ac_cv_prog_cxx_g = yes; then -+ if test "$GXX" = yes; then -+ CXXFLAGS="-g -O2" -+ else -+ CXXFLAGS="-g" -+ fi -+else -+ if test "$GXX" = yes; then -+ CXXFLAGS="-O2" -+ else -+ CXXFLAGS= -+ fi -+fi -+for ac_declaration in \ -+ '' \ -+ 'extern "C" void std::exit (int) throw (); using std::exit;' \ -+ 'extern "C" void std::exit (int); using std::exit;' \ -+ 'extern "C" void exit (int) throw ();' \ -+ 'extern "C" void exit (int);' \ -+ 'void exit (int);' -+do -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_declaration -+#include -+int -+main () -+{ -+exit (42); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_cxx_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ : -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+continue -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+$ac_declaration -+int -+main () -+{ -+exit (42); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_cxx_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ break -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+done -+rm -f conftest* -+if test -n "$ac_declaration"; then -+ echo '#ifdef __cplusplus' >>confdefs.h -+ echo $ac_declaration >>confdefs.h -+ echo '#endif' >>confdefs.h -+fi -+ -+ac_ext=cc -+ac_cpp='$CXXCPP $CPPFLAGS' -+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -+ -+depcc="$CXX" am_compiler_list= -+ -+echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 -+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6 -+if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then -+ # We make a subdir and do the tests there. Otherwise we can end up -+ # making bogus files that we don't know about and never remove. For -+ # instance it was reported that on HP-UX the gcc test will end up -+ # making a dummy file named `D' -- because `-MD' means `put the output -+ # in D'. -+ mkdir conftest.dir -+ # Copy depcomp to subdir because otherwise we won't find it if we're -+ # using a relative directory. -+ cp "$am_depcomp" conftest.dir -+ cd conftest.dir -+ # We will build objects and dependencies in a subdirectory because -+ # it helps to detect inapplicable dependency modes. For instance -+ # both Tru64's cc and ICC support -MD to output dependencies as a -+ # side effect of compilation, but ICC will put the dependencies in -+ # the current directory while Tru64 will put them in the object -+ # directory. -+ mkdir sub -+ -+ am_cv_CXX_dependencies_compiler_type=none -+ if test "$am_compiler_list" = ""; then -+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` -+ fi -+ for depmode in $am_compiler_list; do -+ # Setup a source with many dependencies, because some compilers -+ # like to wrap large dependency lists on column 80 (with \), and -+ # we should not choose a depcomp mode which is confused by this. -+ # -+ # We need to recreate these files for each test, as the compiler may -+ # overwrite some of them when testing with obscure command lines. -+ # This happens at least with the AIX C compiler. -+ : > sub/conftest.c -+ for i in 1 2 3 4 5 6; do -+ echo '#include "conftst'$i'.h"' >> sub/conftest.c -+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with -+ # Solaris 8's {/usr,}/bin/sh. -+ touch sub/conftst$i.h -+ done -+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf -+ -+ case $depmode in -+ nosideeffect) -+ # after this tag, mechanisms are not by side-effect, so they'll -+ # only be used when explicitly requested -+ if test "x$enable_dependency_tracking" = xyes; then -+ continue -+ else -+ break -+ fi -+ ;; -+ none) break ;; -+ esac -+ # We check with `-c' and `-o' for the sake of the "dashmstdout" -+ # mode. It turns out that the SunPro C++ compiler does not properly -+ # handle `-M -o', and we need to detect this. -+ if depmode=$depmode \ -+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ -+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ -+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ -+ >/dev/null 2>conftest.err && -+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && -+ grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && -+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then -+ # icc doesn't choke on unknown options, it will just issue warnings -+ # or remarks (even with -Werror). So we grep stderr for any message -+ # that says an option was ignored or not supported. -+ # When given -MP, icc 7.0 and 7.1 complain thusly: -+ # icc: Command line warning: ignoring option '-M'; no argument required -+ # The diagnosis changed in icc 8.0: -+ # icc: Command line remark: option '-MP' not supported -+ if (grep 'ignoring option' conftest.err || -+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else -+ am_cv_CXX_dependencies_compiler_type=$depmode -+ break -+ fi -+ fi -+ done -+ -+ cd .. -+ rm -rf conftest.dir -+else -+ am_cv_CXX_dependencies_compiler_type=none -+fi -+ -+fi -+echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 -+echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6 -+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type -+ -+ -+ -+if -+ test "x$enable_dependency_tracking" != xno \ -+ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then -+ am__fastdepCXX_TRUE= -+ am__fastdepCXX_FALSE='#' -+else -+ am__fastdepCXX_TRUE='#' -+ am__fastdepCXX_FALSE= -+fi -+ -+ -+ -+ -+if test -n "$CXX" && ( test "X$CXX" != "Xno" && -+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || -+ (test "X$CXX" != "Xg++"))) ; then -+ ac_ext=cc -+ac_cpp='$CXXCPP $CPPFLAGS' -+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -+echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 -+echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6 -+if test -z "$CXXCPP"; then -+ if test "${ac_cv_prog_CXXCPP+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ # Double quotes because CXXCPP needs to be expanded -+ for CXXCPP in "$CXX -E" "/lib/cpp" -+ do -+ ac_preproc_ok=false -+for ac_cxx_preproc_warn_flag in '' yes -+do -+ # Use a header file that comes with gcc, so configuring glibc -+ # with a fresh cross-compiler works. -+ # Prefer to if __STDC__ is defined, since -+ # exists even on freestanding compilers. -+ # On the NeXT, cc -E runs the code through the compiler's parser, -+ # not just through cpp. "Syntax error" is here to catch this case. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ Syntax error -+_ACEOF -+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 -+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null; then -+ if test -s conftest.err; then -+ ac_cpp_err=$ac_cxx_preproc_warn_flag -+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag -+ else -+ ac_cpp_err= -+ fi -+else -+ ac_cpp_err=yes -+fi -+if test -z "$ac_cpp_err"; then -+ : -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ # Broken: fails on valid input. -+continue -+fi -+rm -f conftest.err conftest.$ac_ext -+ -+ # OK, works on sane cases. Now check whether non-existent headers -+ # can be detected and how. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+_ACEOF -+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 -+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null; then -+ if test -s conftest.err; then -+ ac_cpp_err=$ac_cxx_preproc_warn_flag -+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag -+ else -+ ac_cpp_err= -+ fi -+else -+ ac_cpp_err=yes -+fi -+if test -z "$ac_cpp_err"; then -+ # Broken: success on invalid input. -+continue -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ # Passes both tests. -+ac_preproc_ok=: -+break -+fi -+rm -f conftest.err conftest.$ac_ext -+ -+done -+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -+rm -f conftest.err conftest.$ac_ext -+if $ac_preproc_ok; then -+ break -+fi -+ -+ done -+ ac_cv_prog_CXXCPP=$CXXCPP -+ -+fi -+ CXXCPP=$ac_cv_prog_CXXCPP -+else -+ ac_cv_prog_CXXCPP=$CXXCPP -+fi -+echo "$as_me:$LINENO: result: $CXXCPP" >&5 -+echo "${ECHO_T}$CXXCPP" >&6 -+ac_preproc_ok=false -+for ac_cxx_preproc_warn_flag in '' yes -+do -+ # Use a header file that comes with gcc, so configuring glibc -+ # with a fresh cross-compiler works. -+ # Prefer to if __STDC__ is defined, since -+ # exists even on freestanding compilers. -+ # On the NeXT, cc -E runs the code through the compiler's parser, -+ # not just through cpp. "Syntax error" is here to catch this case. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ Syntax error -+_ACEOF -+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 -+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null; then -+ if test -s conftest.err; then -+ ac_cpp_err=$ac_cxx_preproc_warn_flag -+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag -+ else -+ ac_cpp_err= -+ fi -+else -+ ac_cpp_err=yes -+fi -+if test -z "$ac_cpp_err"; then -+ : -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ # Broken: fails on valid input. -+continue -+fi -+rm -f conftest.err conftest.$ac_ext -+ -+ # OK, works on sane cases. Now check whether non-existent headers -+ # can be detected and how. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+#include -+_ACEOF -+if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 -+ (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } >/dev/null; then -+ if test -s conftest.err; then -+ ac_cpp_err=$ac_cxx_preproc_warn_flag -+ ac_cpp_err=$ac_cpp_err$ac_cxx_werror_flag -+ else -+ ac_cpp_err= -+ fi -+else -+ ac_cpp_err=yes -+fi -+if test -z "$ac_cpp_err"; then -+ # Broken: success on invalid input. -+continue -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ # Passes both tests. -+ac_preproc_ok=: -+break -+fi -+rm -f conftest.err conftest.$ac_ext -+ -+done -+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -+rm -f conftest.err conftest.$ac_ext -+if $ac_preproc_ok; then -+ : -+else -+ { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check -+See \`config.log' for more details." >&5 -+echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check -+See \`config.log' for more details." >&2;} -+ { (exit 1); exit 1; }; } -+fi -+ -+ac_ext=cc -+ac_cpp='$CXXCPP $CPPFLAGS' -+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -+ -+fi -+ -+ -+ac_ext=f -+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' -+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_f77_compiler_gnu -+if test -n "$ac_tool_prefix"; then -+ for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran -+ do -+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -+set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_F77+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$F77"; then -+ ac_cv_prog_F77="$F77" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_F77="$ac_tool_prefix$ac_prog" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+fi -+fi -+F77=$ac_cv_prog_F77 -+if test -n "$F77"; then -+ echo "$as_me:$LINENO: result: $F77" >&5 -+echo "${ECHO_T}$F77" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ test -n "$F77" && break -+ done -+fi -+if test -z "$F77"; then -+ ac_ct_F77=$F77 -+ for ac_prog in g77 f77 xlf frt pgf77 fort77 fl32 af77 f90 xlf90 pgf90 epcf90 f95 fort xlf95 ifc efc pgf95 lf95 gfortran -+do -+ # Extract the first word of "$ac_prog", so it can be a program name with args. -+set dummy $ac_prog; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_ac_ct_F77+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$ac_ct_F77"; then -+ ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_ac_ct_F77="$ac_prog" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+fi -+fi -+ac_ct_F77=$ac_cv_prog_ac_ct_F77 -+if test -n "$ac_ct_F77"; then -+ echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 -+echo "${ECHO_T}$ac_ct_F77" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ test -n "$ac_ct_F77" && break -+done -+ -+ F77=$ac_ct_F77 -+fi -+ -+ -+# Provide some information about the compiler. -+echo "$as_me:7952:" \ -+ "checking for Fortran 77 compiler version" >&5 -+ac_compiler=`set X $ac_compile; echo $2` -+{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version &5\"") >&5 -+ (eval $ac_compiler --version &5) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } -+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v &5\"") >&5 -+ (eval $ac_compiler -v &5) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } -+{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V &5\"") >&5 -+ (eval $ac_compiler -V &5) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } -+rm -f a.out -+ -+# If we don't use `.F' as extension, the preprocessor is not run on the -+# input file. (Note that this only needs to work for GNU compilers.) -+ac_save_ext=$ac_ext -+ac_ext=F -+echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 -+echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6 -+if test "${ac_cv_f77_compiler_gnu+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+ program main -+#ifndef __GNUC__ -+ choke me -+#endif -+ -+ end -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_f77_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_compiler_gnu=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_compiler_gnu=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ac_cv_f77_compiler_gnu=$ac_compiler_gnu -+ -+fi -+echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 -+echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6 -+ac_ext=$ac_save_ext -+ac_test_FFLAGS=${FFLAGS+set} -+ac_save_FFLAGS=$FFLAGS -+FFLAGS= -+echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 -+echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6 -+if test "${ac_cv_prog_f77_g+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ FFLAGS=-g -+cat >conftest.$ac_ext <<_ACEOF -+ program main -+ -+ end -+_ACEOF -+rm -f conftest.$ac_objext -+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_f77_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest.$ac_objext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_prog_f77_g=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_prog_f77_g=no -+fi -+rm -f conftest.err conftest.$ac_objext conftest.$ac_ext -+ -+fi -+echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 -+echo "${ECHO_T}$ac_cv_prog_f77_g" >&6 -+if test "$ac_test_FFLAGS" = set; then -+ FFLAGS=$ac_save_FFLAGS -+elif test $ac_cv_prog_f77_g = yes; then -+ if test "x$ac_cv_f77_compiler_gnu" = xyes; then -+ FFLAGS="-g -O2" -+ else -+ FFLAGS="-g" -+ fi -+else -+ if test "x$ac_cv_f77_compiler_gnu" = xyes; then -+ FFLAGS="-O2" -+ else -+ FFLAGS= -+ fi -+fi -+ -+G77=`test $ac_compiler_gnu = yes && echo yes` -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ -+ -+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! -+ -+# find the maximum length of command line arguments -+echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 -+echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6 -+if test "${lt_cv_sys_max_cmd_len+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ 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*) -+ # 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; -+ ;; -+ -+ 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 -+ ;; -+ -+ 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 -+ ;; -+ *) -+ # 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. -+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} -+ while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ -+ = "XX$teststring") >/dev/null 2>&1 && -+ new_result=`expr "X$teststring" : ".*" 2>&1` && -+ lt_cv_sys_max_cmd_len=$new_result && -+ test $i != 17 # 1/2 MB should be enough -+ do -+ i=`expr $i + 1` -+ teststring=$teststring$teststring -+ done -+ 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` -+ ;; -+ esac -+ -+fi -+ -+if test -n $lt_cv_sys_max_cmd_len ; then -+ echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 -+echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6 -+else -+ echo "$as_me:$LINENO: result: none" >&5 -+echo "${ECHO_T}none" >&6 -+fi -+ -+ -+ -+ -+# Check for command to grab the raw symbol name followed by C symbol from nm. -+echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 -+echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6 -+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ -+# 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]*\)' -+ -+# Transform an extracted symbol line into a proper C declaration -+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \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\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" -+ -+# Define system-specific variables. -+case $host_os in -+aix*) -+ symcode='[BCDT]' -+ ;; -+cygwin* | mingw* | pw32*) -+ symcode='[ABCDGISTW]' -+ ;; -+hpux*) # Its linker distinguishes data from code symbols -+ if test "$host_cpu" = ia64; then -+ symcode='[ABCDEGRST]' -+ fi -+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" -+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" -+ ;; -+linux*) -+ if test "$host_cpu" = ia64; then -+ symcode='[ABCDGIRSTW]' -+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" -+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" -+ 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 -+ -+# 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 -+ -+# If we're using GNU nm, then use its standard symbol codes. -+case `$NM -V 2>&1` in -+*GNU* | *'with BFD'*) -+ symcode='[ABCDGIRSTW]' ;; -+esac -+ -+# Try without a prefix undercore, 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. -+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" -+ -+ # Check to see that the pipe works correctly. -+ pipe_works=no -+ -+ rm -f conftest* -+ cat > conftest.$ac_ext <&5 -+ (eval $ac_compile) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; then -+ # Now try to grab the symbols. -+ nlist=conftest.nm -+ if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 -+ (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && 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 < conftest.$ac_ext -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+EOF -+ # Now generate the symbol file. -+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' -+ -+ cat <> conftest.$ac_ext -+#if defined (__STDC__) && __STDC__ -+# define lt_ptr_t void * -+#else -+# define lt_ptr_t char * -+# define const -+#endif -+ -+/* The mapping between symbol names and symbols. */ -+const struct { -+ const char *name; -+ lt_ptr_t address; -+} -+lt_preloaded_symbols[] = -+{ -+EOF -+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext -+ cat <<\EOF >> conftest.$ac_ext -+ {0, (lt_ptr_t) 0} -+}; -+ -+#ifdef __cplusplus -+} -+#endif -+EOF -+ # Now try linking the two files. -+ mv conftest.$ac_objext conftstm.$ac_objext -+ lt_save_LIBS="$LIBS" -+ lt_save_CFLAGS="$CFLAGS" -+ LIBS="conftstm.$ac_objext" -+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" -+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -+ (eval $ac_link) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && test -s conftest${ac_exeext}; then -+ pipe_works=yes -+ fi -+ LIBS="$lt_save_LIBS" -+ CFLAGS="$lt_save_CFLAGS" -+ else -+ echo "cannot find nm_test_func in $nlist" >&5 -+ fi -+ else -+ echo "cannot find nm_test_var in $nlist" >&5 -+ fi -+ else -+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 -+ fi -+ else -+ echo "$progname: failed program was:" >&5 -+ cat conftest.$ac_ext >&5 -+ fi -+ rm -f 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 -+ -+fi -+ -+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 -+ echo "$as_me:$LINENO: result: failed" >&5 -+echo "${ECHO_T}failed" >&6 -+else -+ echo "$as_me:$LINENO: result: ok" >&5 -+echo "${ECHO_T}ok" >&6 -+fi -+ -+echo "$as_me:$LINENO: checking for objdir" >&5 -+echo $ECHO_N "checking for objdir... $ECHO_C" >&6 -+if test "${lt_cv_objdir+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ 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 -+fi -+echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 -+echo "${ECHO_T}$lt_cv_objdir" >&6 -+objdir=$lt_cv_objdir -+ -+ -+ -+ -+ -+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 -+ -+# Sed substitution that helps us do robust quoting. It backslashifies -+# metacharacters that are still active within double-quoted strings. -+Xsed='sed -e 1s/^X//' -+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 avoid accidental globbing in evaled expressions -+no_glob_subst='s/\*/\\\*/g' -+ -+# Constants: -+rm="rm -f" -+ -+# Global variables: -+default_ofile=libtool -+can_build_shared=yes -+ -+# All known linkers require a `.a' archive for static linking (except MSVC, -+# which needs '.lib'). -+libext=a -+ltmain="$ac_aux_dir/ltmain.sh" -+ofile="$default_ofile" -+with_gnu_ld="$lt_cv_prog_gnu_ld" -+ -+if test -n "$ac_tool_prefix"; then -+ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. -+set dummy ${ac_tool_prefix}ar; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_AR+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$AR"; then -+ ac_cv_prog_AR="$AR" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_AR="${ac_tool_prefix}ar" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+fi -+fi -+AR=$ac_cv_prog_AR -+if test -n "$AR"; then -+ echo "$as_me:$LINENO: result: $AR" >&5 -+echo "${ECHO_T}$AR" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+fi -+if test -z "$ac_cv_prog_AR"; then -+ ac_ct_AR=$AR -+ # Extract the first word of "ar", so it can be a program name with args. -+set dummy ar; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$ac_ct_AR"; then -+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_ac_ct_AR="ar" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+ test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="false" -+fi -+fi -+ac_ct_AR=$ac_cv_prog_ac_ct_AR -+if test -n "$ac_ct_AR"; then -+ echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 -+echo "${ECHO_T}$ac_ct_AR" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ AR=$ac_ct_AR -+else -+ AR="$ac_cv_prog_AR" -+fi -+ -+if test -n "$ac_tool_prefix"; then -+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -+set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_RANLIB+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$RANLIB"; then -+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+fi -+fi -+RANLIB=$ac_cv_prog_RANLIB -+if test -n "$RANLIB"; then -+ echo "$as_me:$LINENO: result: $RANLIB" >&5 -+echo "${ECHO_T}$RANLIB" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+fi -+if test -z "$ac_cv_prog_RANLIB"; then -+ ac_ct_RANLIB=$RANLIB -+ # Extract the first word of "ranlib", so it can be a program name with args. -+set dummy ranlib; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$ac_ct_RANLIB"; then -+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_ac_ct_RANLIB="ranlib" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+ test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB=":" -+fi -+fi -+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -+if test -n "$ac_ct_RANLIB"; then -+ echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 -+echo "${ECHO_T}$ac_ct_RANLIB" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ RANLIB=$ac_ct_RANLIB -+else -+ RANLIB="$ac_cv_prog_RANLIB" -+fi -+ -+if test -n "$ac_tool_prefix"; then -+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -+set dummy ${ac_tool_prefix}strip; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_STRIP+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$STRIP"; then -+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_STRIP="${ac_tool_prefix}strip" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+fi -+fi -+STRIP=$ac_cv_prog_STRIP -+if test -n "$STRIP"; then -+ echo "$as_me:$LINENO: result: $STRIP" >&5 -+echo "${ECHO_T}$STRIP" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+fi -+if test -z "$ac_cv_prog_STRIP"; then -+ ac_ct_STRIP=$STRIP -+ # Extract the first word of "strip", so it can be a program name with args. -+set dummy strip; ac_word=$2 -+echo "$as_me:$LINENO: checking for $ac_word" >&5 -+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test -n "$ac_ct_STRIP"; then -+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then -+ ac_cv_prog_ac_ct_STRIP="strip" -+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+done -+ -+ test -z "$ac_cv_prog_ac_ct_STRIP" && ac_cv_prog_ac_ct_STRIP=":" -+fi -+fi -+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -+if test -n "$ac_ct_STRIP"; then -+ echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 -+echo "${ECHO_T}$ac_ct_STRIP" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ STRIP=$ac_ct_STRIP -+else -+ STRIP="$ac_cv_prog_STRIP" -+fi -+ -+ -+old_CC="$CC" -+old_CFLAGS="$CFLAGS" -+ -+# Set sane defaults for various variables -+test -z "$AR" && AR=ar -+test -z "$AR_FLAGS" && AR_FLAGS=cru -+test -z "$AS" && AS=as -+test -z "$CC" && CC=cc -+test -z "$LTCC" && LTCC=$CC -+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -+test -z "$DLLTOOL" && DLLTOOL=dlltool -+test -z "$LD" && LD=ld -+test -z "$LN_S" && LN_S="ln -s" -+test -z "$MAGIC_CMD" && MAGIC_CMD=file -+test -z "$NM" && NM=nm -+test -z "$SED" && SED=sed -+test -z "$OBJDUMP" && OBJDUMP=objdump -+test -z "$RANLIB" && RANLIB=: -+test -z "$STRIP" && STRIP=: -+test -z "$ac_objext" && ac_objext=o -+ -+# Determine commands to create old-style static archives. -+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' -+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 \$oldlib" -+ ;; -+ *) -+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" -+ ;; -+ esac -+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -+fi -+ -+for cc_temp in $compiler""; do -+ case $cc_temp in -+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; -+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; -+ \-*) ;; -+ *) break;; -+ esac -+done -+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` -+ -+ -+# Only perform the check for file, if the check method requires it -+case $deplibs_check_method in -+file_magic*) -+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then -+ echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 -+echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6 -+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ 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 -+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" -+ for ac_dir in $ac_dummy; do -+ IFS="$lt_save_ifs" -+ test -z "$ac_dir" && ac_dir=. -+ if test -f $ac_dir/${ac_tool_prefix}file; then -+ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" -+ 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 <&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 -+ -+EOF -+ fi ;; -+ esac -+ fi -+ break -+ fi -+ done -+ IFS="$lt_save_ifs" -+ MAGIC_CMD="$lt_save_MAGIC_CMD" -+ ;; -+esac -+fi -+ -+MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -+if test -n "$MAGIC_CMD"; then -+ echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 -+echo "${ECHO_T}$MAGIC_CMD" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+if test -z "$lt_cv_path_MAGIC_CMD"; then -+ if test -n "$ac_tool_prefix"; then -+ echo "$as_me:$LINENO: checking for file" >&5 -+echo $ECHO_N "checking for file... $ECHO_C" >&6 -+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ 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 -+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" -+ for ac_dir in $ac_dummy; do -+ IFS="$lt_save_ifs" -+ test -z "$ac_dir" && ac_dir=. -+ if test -f $ac_dir/file; then -+ lt_cv_path_MAGIC_CMD="$ac_dir/file" -+ 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 <&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 -+ -+EOF -+ fi ;; -+ esac -+ fi -+ break -+ fi -+ done -+ IFS="$lt_save_ifs" -+ MAGIC_CMD="$lt_save_MAGIC_CMD" -+ ;; -+esac -+fi -+ -+MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -+if test -n "$MAGIC_CMD"; then -+ echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 -+echo "${ECHO_T}$MAGIC_CMD" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ -+ else -+ MAGIC_CMD=: -+ fi -+fi -+ -+ fi -+ ;; -+esac -+ -+enable_dlopen=yes -+enable_win32_dll=no -+ -+# Check whether --enable-libtool-lock or --disable-libtool-lock was given. -+if test "${enable_libtool_lock+set}" = set; then -+ enableval="$enable_libtool_lock" -+ -+fi; -+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes -+ -+ -+# Check whether --with-pic or --without-pic was given. -+if test "${with_pic+set}" = set; then -+ withval="$with_pic" -+ pic_mode="$withval" -+else -+ pic_mode=default -+fi; -+test -z "$pic_mode" && pic_mode=default -+ -+# Use C for the default configuration in the libtool script -+tagname= -+lt_save_CC="$CC" -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ -+# Source file extension for C test sources. -+ac_ext=c -+ -+# Object file extension for compiled C test sources. -+objext=o -+objext=$objext -+ -+# Code to be used in simple compile tests -+lt_simple_compile_test_code="int some_variable = 0;\n" -+ -+# Code to be used in simple link tests -+lt_simple_link_test_code='int main(){return(0);}\n' -+ -+ -+# 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 -+ -+ -+# save warnings/boilerplate of simple test code -+ac_outfile=conftest.$ac_objext -+printf "$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* -+ -+ac_outfile=conftest.$ac_objext -+printf "$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 conftest* -+ -+ -+ -+lt_prog_compiler_no_builtin_flag= -+ -+if test "$GCC" = yes; then -+ lt_prog_compiler_no_builtin_flag=' -fno-builtin' -+ -+ -+echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 -+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ lt_cv_prog_compiler_rtti_exceptions=no -+ ac_outfile=conftest.$ac_objext -+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext -+ lt_compiler_flag="-fno-rtti -fno-exceptions" -+ # 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:9015: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>conftest.err) -+ ac_status=$? -+ cat conftest.err >&5 -+ echo "$as_me:9019: \$? = $ac_status" >&5 -+ 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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp -+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 -+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then -+ lt_cv_prog_compiler_rtti_exceptions=yes -+ fi -+ fi -+ $rm conftest* -+ -+fi -+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 -+ -+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then -+ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -+else -+ : -+fi -+ -+fi -+ -+lt_prog_compiler_wl= -+lt_prog_compiler_pic= -+lt_prog_compiler_static= -+ -+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 -+ -+ if test "$GCC" = yes; then -+ lt_prog_compiler_wl='-Wl,' -+ lt_prog_compiler_static='-static' -+ -+ case $host_os in -+ aix*) -+ # All AIX code is PIC. -+ if test "$host_cpu" = ia64; then -+ # AIX 5 now supports IA64 processor -+ lt_prog_compiler_static='-Bstatic' -+ fi -+ ;; -+ -+ amigaos*) -+ # 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_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' -+ ;; -+ -+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) -+ # PIC is the default for these OSes. -+ ;; -+ -+ mingw* | pw32* | os2*) -+ # 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). -+ lt_prog_compiler_pic='-DDLL_EXPORT' -+ ;; -+ -+ darwin* | rhapsody*) -+ # PIC is the default on this platform -+ # Common symbols not allowed in MH_DYLIB files -+ lt_prog_compiler_pic='-fno-common' -+ ;; -+ -+ interix3*) -+ # 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_prog_compiler_can_build_shared=no -+ enable_shared=no -+ ;; -+ -+ sysv4*MP*) -+ if test -d /usr/nec; then -+ lt_prog_compiler_pic=-Kconform_pic -+ fi -+ ;; -+ -+ hpux*) -+ # 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_prog_compiler_pic='-fPIC' -+ ;; -+ esac -+ ;; -+ -+ *) -+ lt_prog_compiler_pic='-fPIC' -+ ;; -+ esac -+ else -+ # PORTME Check for flag to pass linker flags through the system compiler. -+ case $host_os in -+ aix*) -+ lt_prog_compiler_wl='-Wl,' -+ if test "$host_cpu" = ia64; then -+ # AIX 5 now supports IA64 processor -+ lt_prog_compiler_static='-Bstatic' -+ else -+ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' -+ fi -+ ;; -+ darwin*) -+ # PIC is the default on this platform -+ # Common symbols not allowed in MH_DYLIB files -+ case $cc_basename in -+ xlc*) -+ lt_prog_compiler_pic='-qnocommon' -+ lt_prog_compiler_wl='-Wl,' -+ ;; -+ esac -+ ;; -+ -+ mingw* | pw32* | os2*) -+ # 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). -+ lt_prog_compiler_pic='-DDLL_EXPORT' -+ ;; -+ -+ hpux9* | hpux10* | hpux11*) -+ lt_prog_compiler_wl='-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_prog_compiler_pic='+Z' -+ ;; -+ esac -+ # Is there a better lt_prog_compiler_static that works with the bundled CC? -+ lt_prog_compiler_static='${wl}-a ${wl}archive' -+ ;; -+ -+ irix5* | irix6* | nonstopux*) -+ lt_prog_compiler_wl='-Wl,' -+ # PIC (with -KPIC) is the default. -+ lt_prog_compiler_static='-non_shared' -+ ;; -+ -+ newsos6) -+ lt_prog_compiler_pic='-KPIC' -+ lt_prog_compiler_static='-Bstatic' -+ ;; -+ -+ linux*) -+ case $cc_basename in -+ icc* | ecc*) -+ lt_prog_compiler_wl='-Wl,' -+ lt_prog_compiler_pic='-KPIC' -+ lt_prog_compiler_static='-static' -+ ;; -+ pgcc* | pgf77* | pgf90* | pgf95*) -+ # Portland Group compilers (*not* the Pentium gcc compiler, -+ # which looks to be a dead project) -+ lt_prog_compiler_wl='-Wl,' -+ lt_prog_compiler_pic='-fpic' -+ lt_prog_compiler_static='-Bstatic' -+ ;; -+ ccc*) -+ lt_prog_compiler_wl='-Wl,' -+ # All Alpha code is PIC. -+ lt_prog_compiler_static='-non_shared' -+ ;; -+ esac -+ ;; -+ -+ osf3* | osf4* | osf5*) -+ lt_prog_compiler_wl='-Wl,' -+ # All OSF/1 code is PIC. -+ lt_prog_compiler_static='-non_shared' -+ ;; -+ -+ solaris*) -+ lt_prog_compiler_pic='-KPIC' -+ lt_prog_compiler_static='-Bstatic' -+ case $cc_basename in -+ f77* | f90* | f95*) -+ lt_prog_compiler_wl='-Qoption ld ';; -+ *) -+ lt_prog_compiler_wl='-Wl,';; -+ esac -+ ;; -+ -+ sunos4*) -+ lt_prog_compiler_wl='-Qoption ld ' -+ lt_prog_compiler_pic='-PIC' -+ lt_prog_compiler_static='-Bstatic' -+ ;; -+ -+ sysv4 | sysv4.2uw2* | sysv4.3*) -+ lt_prog_compiler_wl='-Wl,' -+ lt_prog_compiler_pic='-KPIC' -+ lt_prog_compiler_static='-Bstatic' -+ ;; -+ -+ sysv4*MP*) -+ if test -d /usr/nec ;then -+ lt_prog_compiler_pic='-Kconform_pic' -+ lt_prog_compiler_static='-Bstatic' -+ fi -+ ;; -+ -+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) -+ lt_prog_compiler_wl='-Wl,' -+ lt_prog_compiler_pic='-KPIC' -+ lt_prog_compiler_static='-Bstatic' -+ ;; -+ -+ unicos*) -+ lt_prog_compiler_wl='-Wl,' -+ lt_prog_compiler_can_build_shared=no -+ ;; -+ -+ uts4*) -+ lt_prog_compiler_pic='-pic' -+ lt_prog_compiler_static='-Bstatic' -+ ;; -+ -+ *) -+ lt_prog_compiler_can_build_shared=no -+ ;; -+ esac -+ fi -+ -+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 -+echo "${ECHO_T}$lt_prog_compiler_pic" >&6 -+ -+# -+# Check to make sure the PIC flag actually works. -+# -+if test -n "$lt_prog_compiler_pic"; then -+ -+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6 -+if test "${lt_prog_compiler_pic_works+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ lt_prog_compiler_pic_works=no -+ ac_outfile=conftest.$ac_objext -+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext -+ lt_compiler_flag="$lt_prog_compiler_pic -DPIC" -+ # 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:9283: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>conftest.err) -+ ac_status=$? -+ cat conftest.err >&5 -+ echo "$as_me:9287: \$? = $ac_status" >&5 -+ 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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp -+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 -+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then -+ lt_prog_compiler_pic_works=yes -+ fi -+ fi -+ $rm conftest* -+ -+fi -+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 -+echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6 -+ -+if test x"$lt_prog_compiler_pic_works" = xyes; then -+ case $lt_prog_compiler_pic in -+ "" | " "*) ;; -+ *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; -+ esac -+else -+ lt_prog_compiler_pic= -+ lt_prog_compiler_can_build_shared=no -+fi -+ -+fi -+case $host_os in -+ # For platforms which do not support PIC, -DPIC is meaningless: -+ *djgpp*) -+ lt_prog_compiler_pic= -+ ;; -+ *) -+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" -+ ;; -+esac -+ -+# -+# Check to make sure the static flag actually works. -+# -+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -+echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6 -+if test "${lt_prog_compiler_static_works+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ lt_prog_compiler_static_works=no -+ save_LDFLAGS="$LDFLAGS" -+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag" -+ printf "$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>&5 -+ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp -+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 -+ if diff conftest.exp conftest.er2 >/dev/null; then -+ lt_prog_compiler_static_works=yes -+ fi -+ else -+ lt_prog_compiler_static_works=yes -+ fi -+ fi -+ $rm conftest* -+ LDFLAGS="$save_LDFLAGS" -+ -+fi -+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 -+echo "${ECHO_T}$lt_prog_compiler_static_works" >&6 -+ -+if test x"$lt_prog_compiler_static_works" = xyes; then -+ : -+else -+ lt_prog_compiler_static= -+fi -+ -+ -+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 -+if test "${lt_cv_prog_compiler_c_o+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ lt_cv_prog_compiler_c_o=no -+ $rm -r conftest 2>/dev/null -+ mkdir conftest -+ cd conftest -+ mkdir out -+ printf "$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:9387: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>out/conftest.err) -+ ac_status=$? -+ cat out/conftest.err >&5 -+ echo "$as_me:9391: \$? = $ac_status" >&5 -+ 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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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_cv_prog_compiler_c_o=yes -+ fi -+ fi -+ chmod u+w . 2>&5 -+ $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 .. -+ rmdir conftest -+ $rm conftest* -+ -+fi -+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 -+echo "${ECHO_T}$lt_cv_prog_compiler_c_o" >&6 -+ -+ -+hard_links="nottested" -+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then -+ # do not overwrite the value of need_locks provided by the user -+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 -+ 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 -+ echo "$as_me:$LINENO: result: $hard_links" >&5 -+echo "${ECHO_T}$hard_links" >&6 -+ if test "$hard_links" = no; then -+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} -+ need_locks=warn -+ fi -+else -+ need_locks=no -+fi -+ -+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 -+ -+ runpath_var= -+ allow_undefined_flag= -+ enable_shared_with_static_runtimes=no -+ archive_cmds= -+ archive_expsym_cmds= -+ old_archive_From_new_cmds= -+ old_archive_from_expsyms_cmds= -+ export_dynamic_flag_spec= -+ whole_archive_flag_spec= -+ thread_safe_flag_spec= -+ hardcode_libdir_flag_spec= -+ hardcode_libdir_flag_spec_ld= -+ hardcode_libdir_separator= -+ hardcode_direct=no -+ hardcode_minus_L=no -+ hardcode_shlibpath_var=unsupported -+ link_all_deplibs=unknown -+ hardcode_automatic=no -+ module_cmds= -+ module_expsym_cmds= -+ always_export_symbols=no -+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' -+ # include_expsyms should be a list of space-separated symbols to be *always* -+ # included in the symbol list -+ include_expsyms= -+ # 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'. -+ exclude_expsyms="_GLOBAL_OFFSET_TABLE_" -+ # 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. -+ extract_expsyms_cmds= -+ # Just being paranoid about ensuring that cc_basename is set. -+ for cc_temp in $compiler""; do -+ case $cc_temp in -+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; -+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; -+ \-*) ;; -+ *) break;; -+ esac -+done -+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` -+ -+ case $host_os in -+ cygwin* | mingw* | pw32*) -+ # 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 -+ ;; -+ esac -+ -+ ld_shlibs=yes -+ if test "$with_gnu_ld" = 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 -+ hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' -+ export_dynamic_flag_spec='${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 -+ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' -+ else -+ whole_archive_flag_spec= -+ fi -+ supports_anon_versioning=no -+ case `$LD -v 2>/dev/null` in -+ *\ [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 -+ aix3* | aix4* | aix5*) -+ # On AIX/PPC, the GNU linker is very broken -+ if test "$host_cpu" != ia64; then -+ ld_shlibs=no -+ cat <&2 -+ -+*** Warning: the GNU linker, at least up to release 2.9.1, 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 modify your PATH -+*** so that a non-GNU linker is found, and then restart. -+ -+EOF -+ fi -+ ;; -+ -+ amigaos*) -+ archive_cmds='$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)' -+ hardcode_libdir_flag_spec='-L$libdir' -+ hardcode_minus_L=yes -+ -+ # Samuel A. Falvo II reports -+ # that the semantics of dynamic libraries on AmigaOS, at least up -+ # to version 4, is to share data among multiple programs linked -+ # with the same dynamic library. Since this doesn't match the -+ # behavior of shared libraries on other platforms, we can't use -+ # them. -+ ld_shlibs=no -+ ;; -+ -+ beos*) -+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then -+ allow_undefined_flag=unsupported -+ # Joseph Beckenbach says some releases of gcc -+ # support --undefined. This deserves some investigation. FIXME -+ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ else -+ ld_shlibs=no -+ fi -+ ;; -+ -+ cygwin* | mingw* | pw32*) -+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, -+ # as there is no search path for DLLs. -+ hardcode_libdir_flag_spec='-L$libdir' -+ allow_undefined_flag=unsupported -+ always_export_symbols=no -+ enable_shared_with_static_runtimes=yes -+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' -+ -+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then -+ archive_cmds='$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... -+ archive_expsym_cmds='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 -+ ld_shlibs=no -+ fi -+ ;; -+ -+ interix3*) -+ hardcode_direct=no -+ hardcode_shlibpath_var=no -+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' -+ export_dynamic_flag_spec='${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. -+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' -+ archive_expsym_cmds='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' -+ ;; -+ -+ linux*) -+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then -+ tmp_addflag= -+ case $cc_basename,$host_cpu in -+ pgcc*) # Portland Group C compiler -+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' -+ tmp_addflag=' $pic_flag' -+ ;; -+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers -+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$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' ;; -+ esac -+ archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ -+ if test $supports_anon_versioning = yes; then -+ archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ -+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ -+ $echo "local: *; };" >> $output_objdir/$libname.ver~ -+ $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' -+ fi -+ else -+ ld_shlibs=no -+ fi -+ ;; -+ -+ netbsd*) -+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then -+ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' -+ wlarc= -+ else -+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ archive_expsym_cmds='$CC -shared $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 -+ ld_shlibs=no -+ cat <&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. -+ -+EOF -+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then -+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ else -+ ld_shlibs=no -+ fi -+ ;; -+ -+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) -+ case `$LD -v 2>&1` in -+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) -+ ld_shlibs=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 -+ ;; -+ *) -+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then -+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' -+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' -+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' -+ else -+ ld_shlibs=no -+ fi -+ ;; -+ esac -+ ;; -+ -+ sunos4*) -+ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' -+ wlarc= -+ hardcode_direct=yes -+ hardcode_shlibpath_var=no -+ ;; -+ -+ *) -+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then -+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ else -+ ld_shlibs=no -+ fi -+ ;; -+ esac -+ -+ if test "$ld_shlibs" = no; then -+ runpath_var= -+ hardcode_libdir_flag_spec= -+ export_dynamic_flag_spec= -+ whole_archive_flag_spec= -+ fi -+ else -+ # PORTME fill in a description of your system's linker (not GNU ld) -+ case $host_os in -+ aix3*) -+ allow_undefined_flag=unsupported -+ always_export_symbols=yes -+ archive_expsym_cmds='$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. -+ hardcode_minus_L=yes -+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then -+ # Neither direct hardcoding nor static linking is supported with a -+ # broken collect2. -+ hardcode_direct=unsupported -+ fi -+ ;; -+ -+ aix4* | aix5*) -+ 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 -+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then -+ export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' -+ else -+ export_symbols_cmds='$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].*|aix5*) -+ 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. -+ -+ archive_cmds='' -+ hardcode_direct=yes -+ hardcode_libdir_separator=':' -+ link_all_deplibs=yes -+ -+ 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 -+ hardcode_direct=yes -+ else -+ # We have old collect2 -+ hardcode_direct=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 -+ hardcode_minus_L=yes -+ hardcode_libdir_flag_spec='-L$libdir' -+ hardcode_libdir_separator= -+ 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 -+ -+ # It seems that -bexpall does not export symbols beginning with -+ # underscore (_), so it is better to generate a list of symbols to export. -+ always_export_symbols=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. -+ allow_undefined_flag='-berok' -+ # Determine the default libpath from the value encoded in an empty executable. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -+ (eval $ac_link) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest$ac_exeext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ -+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -+}'` -+# Check for a 64-bit object if we didn't find anything. -+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -+}'`; fi -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi -+ -+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" -+ archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" -+ else -+ if test "$host_cpu" = ia64; then -+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' -+ allow_undefined_flag="-z nodefs" -+ archive_expsym_cmds="\$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. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -+ (eval $ac_link) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest$ac_exeext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ -+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -+}'` -+# Check for a 64-bit object if we didn't find anything. -+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -+}'`; fi -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi -+ -+ hardcode_libdir_flag_spec='${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. -+ no_undefined_flag=' ${wl}-bernotok' -+ allow_undefined_flag=' ${wl}-berok' -+ # Exported symbols can be pulled into shared objects from archives -+ whole_archive_flag_spec='$convenience' -+ archive_cmds_need_lc=yes -+ # This is similar to how AIX traditionally builds its shared libraries. -+ archive_expsym_cmds="\$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*) -+ archive_cmds='$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)' -+ hardcode_libdir_flag_spec='-L$libdir' -+ hardcode_minus_L=yes -+ # see comment about different semantics on the GNU ld section -+ ld_shlibs=no -+ ;; -+ -+ bsdi[45]*) -+ export_dynamic_flag_spec=-rdynamic -+ ;; -+ -+ cygwin* | mingw* | pw32*) -+ # 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. -+ hardcode_libdir_flag_spec=' ' -+ allow_undefined_flag=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. -+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' -+ # The linker will automatically build a .lib file if we build a DLL. -+ old_archive_From_new_cmds='true' -+ # FIXME: Should let the user specify the lib program. -+ old_archive_cmds='lib /OUT:$oldlib$oldobjs$old_deplibs' -+ fix_srcfile_path='`cygpath -w "$srcfile"`' -+ enable_shared_with_static_runtimes=yes -+ ;; -+ -+ darwin* | rhapsody*) -+ case $host_os in -+ rhapsody* | darwin1.[012]) -+ allow_undefined_flag='${wl}-undefined ${wl}suppress' -+ ;; -+ *) # Darwin 1.3 on -+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then -+ allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' -+ else -+ case ${MACOSX_DEPLOYMENT_TARGET} in -+ 10.[012]) -+ allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' -+ ;; -+ 10.*) -+ allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' -+ ;; -+ esac -+ fi -+ ;; -+ esac -+ archive_cmds_need_lc=no -+ hardcode_direct=no -+ hardcode_automatic=yes -+ hardcode_shlibpath_var=unsupported -+ whole_archive_flag_spec='' -+ link_all_deplibs=yes -+ if test "$GCC" = yes ; then -+ output_verbose_link_cmd='echo' -+ archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' -+ module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' -+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds -+ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ else -+ case $cc_basename in -+ xlc*) -+ output_verbose_link_cmd='echo' -+ archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' -+ module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' -+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds -+ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ ;; -+ *) -+ ld_shlibs=no -+ ;; -+ esac -+ fi -+ ;; -+ -+ dgux*) -+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_libdir_flag_spec='-L$libdir' -+ hardcode_shlibpath_var=no -+ ;; -+ -+ freebsd1*) -+ ld_shlibs=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*) -+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' -+ hardcode_libdir_flag_spec='-R$libdir' -+ hardcode_direct=yes -+ hardcode_shlibpath_var=no -+ ;; -+ -+ # Unfortunately, older versions of FreeBSD 2 do not have this feature. -+ freebsd2*) -+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_direct=yes -+ hardcode_minus_L=yes -+ hardcode_shlibpath_var=no -+ ;; -+ -+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries. -+ freebsd* | kfreebsd*-gnu | dragonfly*) -+ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' -+ hardcode_libdir_flag_spec='-R$libdir' -+ hardcode_direct=yes -+ hardcode_shlibpath_var=no -+ ;; -+ -+ hpux9*) -+ if test "$GCC" = yes; then -+ archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' -+ else -+ archive_cmds='$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 -+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' -+ hardcode_libdir_separator=: -+ hardcode_direct=yes -+ -+ # hardcode_minus_L: Not really in the search PATH, -+ # but as the default location of the library. -+ hardcode_minus_L=yes -+ export_dynamic_flag_spec='${wl}-E' -+ ;; -+ -+ hpux10*) -+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then -+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -+ fi -+ if test "$with_gnu_ld" = no; then -+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' -+ hardcode_libdir_separator=: -+ -+ hardcode_direct=yes -+ export_dynamic_flag_spec='${wl}-E' -+ -+ # hardcode_minus_L: Not really in the search PATH, -+ # but as the default location of the library. -+ hardcode_minus_L=yes -+ fi -+ ;; -+ -+ hpux11*) -+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then -+ case $host_cpu in -+ hppa*64*) -+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ ia64*) -+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ *) -+ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ esac -+ else -+ case $host_cpu in -+ hppa*64*) -+ archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ ia64*) -+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ *) -+ archive_cmds='$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 -+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' -+ hardcode_libdir_separator=: -+ -+ case $host_cpu in -+ hppa*64*|ia64*) -+ hardcode_libdir_flag_spec_ld='+b $libdir' -+ hardcode_direct=no -+ hardcode_shlibpath_var=no -+ ;; -+ *) -+ hardcode_direct=yes -+ export_dynamic_flag_spec='${wl}-E' -+ -+ # hardcode_minus_L: Not really in the search PATH, -+ # but as the default location of the library. -+ hardcode_minus_L=yes -+ ;; -+ esac -+ fi -+ ;; -+ -+ irix5* | irix6* | nonstopux*) -+ if test "$GCC" = yes; then -+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ else -+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' -+ hardcode_libdir_flag_spec_ld='-rpath $libdir' -+ fi -+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' -+ hardcode_libdir_separator=: -+ link_all_deplibs=yes -+ ;; -+ -+ netbsd*) -+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then -+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out -+ else -+ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF -+ fi -+ hardcode_libdir_flag_spec='-R$libdir' -+ hardcode_direct=yes -+ hardcode_shlibpath_var=no -+ ;; -+ -+ newsos6) -+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_direct=yes -+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' -+ hardcode_libdir_separator=: -+ hardcode_shlibpath_var=no -+ ;; -+ -+ openbsd*) -+ hardcode_direct=yes -+ hardcode_shlibpath_var=no -+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then -+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' -+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' -+ export_dynamic_flag_spec='${wl}-E' -+ else -+ case $host_os in -+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) -+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_libdir_flag_spec='-R$libdir' -+ ;; -+ *) -+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' -+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' -+ ;; -+ esac -+ fi -+ ;; -+ -+ os2*) -+ hardcode_libdir_flag_spec='-L$libdir' -+ hardcode_minus_L=yes -+ allow_undefined_flag=unsupported -+ archive_cmds='$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' -+ old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' -+ ;; -+ -+ osf3*) -+ if test "$GCC" = yes; then -+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' -+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ else -+ allow_undefined_flag=' -expect_unresolved \*' -+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' -+ fi -+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' -+ hardcode_libdir_separator=: -+ ;; -+ -+ osf4* | osf5*) # as osf3* with the addition of -msym flag -+ if test "$GCC" = yes; then -+ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' -+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' -+ else -+ allow_undefined_flag=' -expect_unresolved \*' -+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' -+ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ -+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_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 -+ hardcode_libdir_flag_spec='-rpath $libdir' -+ fi -+ hardcode_libdir_separator=: -+ ;; -+ -+ solaris*) -+ no_undefined_flag=' -z text' -+ if test "$GCC" = yes; then -+ wlarc='${wl}' -+ archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ -+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' -+ else -+ wlarc='' -+ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ archive_expsym_cmds='$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' -+ fi -+ hardcode_libdir_flag_spec='-R$libdir' -+ hardcode_shlibpath_var=no -+ case $host_os in -+ solaris2.[0-5] | solaris2.[0-5].*) ;; -+ *) -+ # The compiler driver will combine linker options so we -+ # cannot just pass the convience library names through -+ # without $wl, iff we do not link with $LD. -+ # Luckily, gcc supports the same syntax we need for Sun Studio. -+ # Supported since Solaris 2.6 (maybe 2.5.1?) -+ case $wlarc in -+ '') -+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;; -+ *) -+ whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; -+ esac ;; -+ esac -+ link_all_deplibs=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. -+ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' -+ fi -+ hardcode_libdir_flag_spec='-L$libdir' -+ hardcode_direct=yes -+ hardcode_minus_L=yes -+ hardcode_shlibpath_var=no -+ ;; -+ -+ sysv4) -+ case $host_vendor in -+ sni) -+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_direct=yes # is this really true??? -+ ;; -+ siemens) -+ ## LD is ld it makes a PLAMLIB -+ ## CC just makes a GrossModule. -+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' -+ reload_cmds='$CC -r -o $output$reload_objs' -+ hardcode_direct=no -+ ;; -+ motorola) -+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_direct=no #Motorola manual says yes, but my tests say they lie -+ ;; -+ esac -+ runpath_var='LD_RUN_PATH' -+ hardcode_shlibpath_var=no -+ ;; -+ -+ sysv4.3*) -+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_shlibpath_var=no -+ export_dynamic_flag_spec='-Bexport' -+ ;; -+ -+ sysv4*MP*) -+ if test -d /usr/nec; then -+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_shlibpath_var=no -+ runpath_var=LD_RUN_PATH -+ hardcode_runpath_var=yes -+ ld_shlibs=yes -+ fi -+ ;; -+ -+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*) -+ no_undefined_flag='${wl}-z,text' -+ archive_cmds_need_lc=no -+ hardcode_shlibpath_var=no -+ runpath_var='LD_RUN_PATH' -+ -+ if test "$GCC" = yes; then -+ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds='$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. -+ no_undefined_flag='${wl}-z,text' -+ allow_undefined_flag='${wl}-z,nodefs' -+ archive_cmds_need_lc=no -+ hardcode_shlibpath_var=no -+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' -+ hardcode_libdir_separator=':' -+ link_all_deplibs=yes -+ export_dynamic_flag_spec='${wl}-Bexport' -+ runpath_var='LD_RUN_PATH' -+ -+ if test "$GCC" = yes; then -+ archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ fi -+ ;; -+ -+ uts4*) -+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_libdir_flag_spec='-L$libdir' -+ hardcode_shlibpath_var=no -+ ;; -+ -+ *) -+ ld_shlibs=no -+ ;; -+ esac -+ fi -+ -+echo "$as_me:$LINENO: result: $ld_shlibs" >&5 -+echo "${ECHO_T}$ld_shlibs" >&6 -+test "$ld_shlibs" = no && can_build_shared=no -+ -+# -+# Do we need to explicitly link libc? -+# -+case "x$archive_cmds_need_lc" in -+x|xyes) -+ # Assume -lc should be added -+ archive_cmds_need_lc=yes -+ -+ if test "$enable_shared" = yes && test "$GCC" = yes; then -+ case $archive_cmds 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. -+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 -+ $rm conftest* -+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext -+ -+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } 2>conftest.err; then -+ soname=conftest -+ lib=conftest -+ libobjs=conftest.$ac_objext -+ deplibs= -+ wl=$lt_prog_compiler_wl -+ pic_flag=$lt_prog_compiler_pic -+ compiler_flags=-v -+ linker_flags=-v -+ verstring= -+ output_objdir=. -+ libname=conftest -+ lt_save_allow_undefined_flag=$allow_undefined_flag -+ allow_undefined_flag= -+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 -+ (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } -+ then -+ archive_cmds_need_lc=no -+ else -+ archive_cmds_need_lc=yes -+ fi -+ allow_undefined_flag=$lt_save_allow_undefined_flag -+ else -+ cat conftest.err 1>&5 -+ fi -+ $rm conftest* -+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 -+echo "${ECHO_T}$archive_cmds_need_lc" >&6 -+ ;; -+ esac -+ fi -+ ;; -+esac -+ -+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 -+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" -+if test "$GCC" = yes; then -+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` -+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then -+ # 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. -+ 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 -+else -+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -+fi -+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 -+ 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' -+ ;; -+ -+aix4* | aix5*) -+ version_type=linux -+ 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*) -+ 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=`$echo "X$lib" | $Xsed -e '\''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' -+ ;; -+ -+beos*) -+ library_names_spec='${libname}${shared_ext}' -+ dynamic_linker="$host_os ld.so" -+ shlibpath_var=LIBRARY_PATH -+ ;; -+ -+bsdi[45]*) -+ version_type=linux -+ 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*) -+ version_type=windows -+ shrext_cmds=".dll" -+ need_version=no -+ need_lib_prefix=no -+ -+ case $GCC,$host_os in -+ yes,cygwin* | yes,mingw* | yes,pw32*) -+ 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' -+ 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}' -+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" -+ ;; -+ mingw*) -+ # MinGW DLLs use traditional 'lib' prefix -+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' -+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` -+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then -+ # It is most probably a Windows format PATH printed by -+ # mingw gcc, but we are running on Cygwin. Gcc prints its search -+ # path with ; separators, and with drive letters. We can handle the -+ # drive letters (cygwin fileutils understands them), so leave them, -+ # especially as we might pass files found there to a mingw objdump, -+ # which wouldn't understand a cygwinified path. Ahh. -+ 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 -+ ;; -+ 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 -+ ;; -+ -+ *) -+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' -+ ;; -+ esac -+ dynamic_linker='Win32 ld.exe' -+ # 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}${versuffix}$shared_ext ${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`' -+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. -+ if test "$GCC" = yes; then -+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` -+ else -+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' -+ fi -+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' -+ ;; -+ -+dgux*) -+ 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 -+ ;; -+ -+freebsd1*) -+ dynamic_linker=no -+ ;; -+ -+kfreebsd*-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='GNU ld.so' -+ ;; -+ -+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[123]*) 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 -+ ;; -+ freebsd*) # from 4.6 on -+ shlibpath_overrides_runpath=yes -+ hardcode_into_libs=yes -+ ;; -+ esac -+ ;; -+ -+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 -+ 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' -+ ;; -+ -+interix3*) -+ 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' -+ 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 -+ 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 Linux ELF. -+linux*) -+ 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' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ # 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 -+ -+ # find out which ABI we are using -+ libsuff= -+ case "$host_cpu" in -+ x86_64*|s390x*|powerpc64*) -+ echo '#line 10856 "configure"' > conftest.$ac_ext -+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; then -+ case `/usr/bin/file conftest.$ac_objext` in -+ *64-bit*) -+ libsuff=64 -+ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" -+ ;; -+ esac -+ fi -+ rm -rf conftest* -+ ;; -+ esac -+ -+ # 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/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` -+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $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' -+ ;; -+ -+knetbsd*-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='GNU ld.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 -+ 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=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=yes -+ ;; -+ -+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" -+ ;; -+ -+solaris*) -+ 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=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 -+ 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 -+ export_dynamic_flag_spec='${wl}-Blargedynsym' -+ 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 -+ 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 -+ 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' -+ shlibpath_overrides_runpath=no -+ else -+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' -+ shlibpath_overrides_runpath=yes -+ 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' -+ ;; -+ -+uts4*) -+ version_type=linux -+ 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 -+echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -+echo "${ECHO_T}$dynamic_linker" >&6 -+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 -+ -+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 -+hardcode_action= -+if test -n "$hardcode_libdir_flag_spec" || \ -+ test -n "$runpath_var" || \ -+ test "X$hardcode_automatic" = "Xyes" ; then -+ -+ # We can hardcode non-existant directories. -+ if test "$hardcode_direct" != 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_AC_TAGVAR(hardcode_shlibpath_var, )" != no && -+ test "$hardcode_minus_L" != no; then -+ # Linking always hardcodes the temporary library directory. -+ hardcode_action=relink -+ else -+ # We can link without hardcoding, and we can hardcode nonexisting dirs. -+ hardcode_action=immediate -+ fi -+else -+ # We cannot hardcode anything, or else we can only hardcode existing -+ # directories. -+ hardcode_action=unsupported -+fi -+echo "$as_me:$LINENO: result: $hardcode_action" >&5 -+echo "${ECHO_T}$hardcode_action" >&6 -+ -+if test "$hardcode_action" = relink; 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 -+ -+striplib= -+old_striplib= -+echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 -+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&6 -+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" -+ echo "$as_me:$LINENO: result: yes" >&5 -+echo "${ECHO_T}yes" >&6 -+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" -+ echo "$as_me:$LINENO: result: yes" >&5 -+echo "${ECHO_T}yes" >&6 -+ else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+ ;; -+ *) -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+ ;; -+ esac -+fi -+ -+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*) -+ 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 -+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 -+if test "${ac_cv_lib_dl_dlopen+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_check_lib_save_LIBS=$LIBS -+LIBS="-ldl $LIBS" -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+/* Override any gcc2 internal prototype to avoid an error. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+char dlopen (); -+int -+main () -+{ -+dlopen (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -+ (eval $ac_link) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest$ac_exeext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_lib_dl_dlopen=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_lib_dl_dlopen=no -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+LIBS=$ac_check_lib_save_LIBS -+fi -+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 -+if test $ac_cv_lib_dl_dlopen = yes; then -+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -+else -+ -+ lt_cv_dlopen="dyld" -+ lt_cv_dlopen_libs= -+ lt_cv_dlopen_self=yes -+ -+fi -+ -+ ;; -+ -+ *) -+ echo "$as_me:$LINENO: checking for shl_load" >&5 -+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6 -+if test "${ac_cv_func_shl_load+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+/* Define shl_load to an innocuous variant, in case declares shl_load. -+ For example, HP-UX 11i declares gettimeofday. */ -+#define shl_load innocuous_shl_load -+ -+/* System header to define __stub macros and hopefully few prototypes, -+ which can conflict with char shl_load (); below. -+ Prefer to if __STDC__ is defined, since -+ exists even on freestanding compilers. */ -+ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ -+#undef shl_load -+ -+/* Override any gcc2 internal prototype to avoid an error. */ -+#ifdef __cplusplus -+extern "C" -+{ -+#endif -+/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+char shl_load (); -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined (__stub_shl_load) || defined (__stub___shl_load) -+choke me -+#else -+char (*f) () = shl_load; -+#endif -+#ifdef __cplusplus -+} -+#endif -+ -+int -+main () -+{ -+return f != shl_load; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -+ (eval $ac_link) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest$ac_exeext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_func_shl_load=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_func_shl_load=no -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 -+echo "${ECHO_T}$ac_cv_func_shl_load" >&6 -+if test $ac_cv_func_shl_load = yes; then -+ lt_cv_dlopen="shl_load" -+else -+ echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 -+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6 -+if test "${ac_cv_lib_dld_shl_load+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_check_lib_save_LIBS=$LIBS -+LIBS="-ldld $LIBS" -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+/* Override any gcc2 internal prototype to avoid an error. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+char shl_load (); -+int -+main () -+{ -+shl_load (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -+ (eval $ac_link) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest$ac_exeext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_lib_dld_shl_load=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_lib_dld_shl_load=no -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+LIBS=$ac_check_lib_save_LIBS -+fi -+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 -+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 -+if test $ac_cv_lib_dld_shl_load = yes; then -+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" -+else -+ echo "$as_me:$LINENO: checking for dlopen" >&5 -+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 -+if test "${ac_cv_func_dlopen+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+/* Define dlopen to an innocuous variant, in case declares dlopen. -+ For example, HP-UX 11i declares gettimeofday. */ -+#define dlopen innocuous_dlopen -+ -+/* System header to define __stub macros and hopefully few prototypes, -+ which can conflict with char dlopen (); below. -+ Prefer to if __STDC__ is defined, since -+ exists even on freestanding compilers. */ -+ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ -+#undef dlopen -+ -+/* Override any gcc2 internal prototype to avoid an error. */ -+#ifdef __cplusplus -+extern "C" -+{ -+#endif -+/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+char dlopen (); -+/* The GNU C library defines this for functions which it implements -+ to always fail with ENOSYS. Some functions are actually named -+ something starting with __ and the normal name is an alias. */ -+#if defined (__stub_dlopen) || defined (__stub___dlopen) -+choke me -+#else -+char (*f) () = dlopen; -+#endif -+#ifdef __cplusplus -+} -+#endif -+ -+int -+main () -+{ -+return f != dlopen; -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -+ (eval $ac_link) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest$ac_exeext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_func_dlopen=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_func_dlopen=no -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 -+echo "${ECHO_T}$ac_cv_func_dlopen" >&6 -+if test $ac_cv_func_dlopen = yes; then -+ lt_cv_dlopen="dlopen" -+else -+ echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 -+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6 -+if test "${ac_cv_lib_dl_dlopen+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_check_lib_save_LIBS=$LIBS -+LIBS="-ldl $LIBS" -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+/* Override any gcc2 internal prototype to avoid an error. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+char dlopen (); -+int -+main () -+{ -+dlopen (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -+ (eval $ac_link) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest$ac_exeext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_lib_dl_dlopen=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_lib_dl_dlopen=no -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+LIBS=$ac_check_lib_save_LIBS -+fi -+echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 -+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6 -+if test $ac_cv_lib_dl_dlopen = yes; then -+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -+else -+ echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 -+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6 -+if test "${ac_cv_lib_svld_dlopen+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_check_lib_save_LIBS=$LIBS -+LIBS="-lsvld $LIBS" -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+/* Override any gcc2 internal prototype to avoid an error. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+char dlopen (); -+int -+main () -+{ -+dlopen (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -+ (eval $ac_link) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest$ac_exeext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_lib_svld_dlopen=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_lib_svld_dlopen=no -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+LIBS=$ac_check_lib_save_LIBS -+fi -+echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 -+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6 -+if test $ac_cv_lib_svld_dlopen = yes; then -+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" -+else -+ echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 -+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6 -+if test "${ac_cv_lib_dld_dld_link+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ ac_check_lib_save_LIBS=$LIBS -+LIBS="-ldld $LIBS" -+cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+/* Override any gcc2 internal prototype to avoid an error. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+/* We use char because int might match the return type of a gcc2 -+ builtin and then its argument prototype would still apply. */ -+char dld_link (); -+int -+main () -+{ -+dld_link (); -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -+ (eval $ac_link) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest$ac_exeext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ ac_cv_lib_dld_dld_link=yes -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ac_cv_lib_dld_dld_link=no -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+LIBS=$ac_check_lib_save_LIBS -+fi -+echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 -+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 -+if test $ac_cv_lib_dld_dld_link = yes; then -+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" -+fi -+ -+ -+fi -+ -+ -+fi -+ -+ -+fi -+ -+ -+fi -+ -+ -+fi -+ -+ ;; -+ 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" -+ -+ echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 -+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6 -+if test "${lt_cv_dlopen_self+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test "$cross_compiling" = yes; then : -+ lt_cv_dlopen_self=cross -+else -+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 -+ lt_status=$lt_dlunknown -+ cat > conftest.$ac_ext < -+#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 -+ -+#ifdef __cplusplus -+extern "C" void exit (int); -+#endif -+ -+void fnord() { int i=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; -+ /* dlclose (self); */ -+ } -+ else -+ puts (dlerror ()); -+ -+ exit (status); -+} -+EOF -+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -+ (eval $ac_link) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then -+ (./conftest; exit; ) >&5 2>/dev/null -+ lt_status=$? -+ case x$lt_status in -+ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; -+ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; -+ x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; -+ esac -+ else : -+ # compilation failed -+ lt_cv_dlopen_self=no -+ fi -+fi -+rm -fr conftest* -+ -+ -+fi -+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 -+echo "${ECHO_T}$lt_cv_dlopen_self" >&6 -+ -+ if test "x$lt_cv_dlopen_self" = xyes; then -+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" -+ echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 -+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6 -+if test "${lt_cv_dlopen_self_static+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ if test "$cross_compiling" = yes; then : -+ lt_cv_dlopen_self_static=cross -+else -+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 -+ lt_status=$lt_dlunknown -+ cat > conftest.$ac_ext < -+#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 -+ -+#ifdef __cplusplus -+extern "C" void exit (int); -+#endif -+ -+void fnord() { int i=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; -+ /* dlclose (self); */ -+ } -+ else -+ puts (dlerror ()); -+ -+ exit (status); -+} -+EOF -+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -+ (eval $ac_link) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then -+ (./conftest; exit; ) >&5 2>/dev/null -+ lt_status=$? -+ case x$lt_status in -+ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; -+ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; -+ x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; -+ esac -+ else : -+ # compilation failed -+ lt_cv_dlopen_self_static=no -+ fi -+fi -+rm -fr conftest* -+ -+ -+fi -+echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 -+echo "${ECHO_T}$lt_cv_dlopen_self_static" >&6 -+ 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 -+ -+ -+# Report which library types will actually be built -+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 -+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 -+echo "$as_me:$LINENO: result: $can_build_shared" >&5 -+echo "${ECHO_T}$can_build_shared" >&6 -+ -+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 -+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 -+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 -+ ;; -+ -+aix4* | aix5*) -+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then -+ test "$enable_shared" = yes && enable_static=no -+ fi -+ ;; -+esac -+echo "$as_me:$LINENO: result: $enable_shared" >&5 -+echo "${ECHO_T}$enable_shared" >&6 -+ -+echo "$as_me:$LINENO: checking whether to build static libraries" >&5 -+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 -+# Make sure either enable_shared or enable_static is yes. -+test "$enable_shared" = yes || enable_static=yes -+echo "$as_me:$LINENO: result: $enable_static" >&5 -+echo "${ECHO_T}$enable_static" >&6 -+ -+# The else clause should only fire when bootstrapping the -+# libtool distribution, otherwise you forgot to ship ltmain.sh -+# with your package, and you will get complaints that there are -+# no rules to generate ltmain.sh. -+if test -f "$ltmain"; then -+ # 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 -+ # Now quote all the things that may contain metacharacters while being -+ # careful not to overquote the AC_SUBSTed values. We take copies of the -+ # variables and quote the copies for generation of the libtool script. -+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ -+ SED SHELL STRIP \ -+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ -+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ -+ deplibs_check_method reload_flag reload_cmds need_locks \ -+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ -+ lt_cv_sys_global_symbol_to_c_name_address \ -+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ -+ old_postinstall_cmds old_postuninstall_cmds \ -+ compiler \ -+ CC \ -+ LD \ -+ lt_prog_compiler_wl \ -+ lt_prog_compiler_pic \ -+ lt_prog_compiler_static \ -+ lt_prog_compiler_no_builtin_flag \ -+ export_dynamic_flag_spec \ -+ thread_safe_flag_spec \ -+ whole_archive_flag_spec \ -+ enable_shared_with_static_runtimes \ -+ old_archive_cmds \ -+ old_archive_from_new_cmds \ -+ predep_objects \ -+ postdep_objects \ -+ predeps \ -+ postdeps \ -+ compiler_lib_search_path \ -+ archive_cmds \ -+ archive_expsym_cmds \ -+ postinstall_cmds \ -+ postuninstall_cmds \ -+ old_archive_from_expsyms_cmds \ -+ allow_undefined_flag \ -+ no_undefined_flag \ -+ export_symbols_cmds \ -+ hardcode_libdir_flag_spec \ -+ hardcode_libdir_flag_spec_ld \ -+ hardcode_libdir_separator \ -+ hardcode_automatic \ -+ module_cmds \ -+ module_expsym_cmds \ -+ lt_cv_prog_compiler_c_o \ -+ exclude_expsyms \ -+ include_expsyms; do -+ -+ case $var in -+ old_archive_cmds | \ -+ old_archive_from_new_cmds | \ -+ archive_cmds | \ -+ archive_expsym_cmds | \ -+ module_cmds | \ -+ module_expsym_cmds | \ -+ old_archive_from_expsyms_cmds | \ -+ export_symbols_cmds | \ -+ extract_expsyms_cmds | reload_cmds | finish_cmds | \ -+ postinstall_cmds | postuninstall_cmds | \ -+ old_postinstall_cmds | old_postuninstall_cmds | \ -+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) -+ # Double-quote double-evaled strings. -+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" -+ ;; -+ *) -+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" -+ ;; -+ esac -+ done -+ -+ case $lt_echo in -+ *'\$0 --fallback-echo"') -+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` -+ ;; -+ esac -+ -+cfgfile="${ofile}T" -+ trap "$rm \"$cfgfile\"; exit 1" 1 2 15 -+ $rm -f "$cfgfile" -+ { echo "$as_me:$LINENO: creating $ofile" >&5 -+echo "$as_me: creating $ofile" >&6;} -+ -+ cat <<__EOF__ >> "$cfgfile" -+#! $SHELL -+ -+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) -+# NOTE: Changes made to this file will be lost: look at ltmain.sh. -+# -+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 -+# Free Software Foundation, Inc. -+# -+# This file is part of GNU Libtool: -+# Originally by Gordon Matzigkeit , 1996 -+# -+# This program 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. -+# -+# This program 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 this program; if not, write to the Free Software -+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -+# -+# As a special exception to the GNU General Public License, if you -+# distribute this file as part of a program that contains a -+# configuration script generated by Autoconf, you may include it under -+# the same distribution terms that you use for the rest of that program. -+ -+# A sed program that does not truncate output. -+SED=$lt_SED -+ -+# Sed that helps us avoid accidentally triggering echo(1) options like -n. -+Xsed="$SED -e 1s/^X//" -+ -+# 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 -+ -+# The names of the tagged configurations supported by this script. -+available_tags= -+ -+# ### BEGIN LIBTOOL CONFIG -+ -+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -+ -+# Shell to use when invoking shell scripts. -+SHELL=$lt_SHELL -+ -+# Whether or not to build shared libraries. -+build_libtool_libs=$enable_shared -+ -+# Whether or not to build static libraries. -+build_old_libs=$enable_static -+ -+# Whether or not to add -lc for building shared libraries. -+build_libtool_need_lc=$archive_cmds_need_lc -+ -+# Whether or not to disallow shared libs when runtime libs are static -+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes -+ -+# Whether or not to optimize for fast installation. -+fast_install=$enable_fast_install -+ -+# The host system. -+host_alias=$host_alias -+host=$host -+host_os=$host_os -+ -+# The build system. -+build_alias=$build_alias -+build=$build -+build_os=$build_os -+ -+# An echo program that does not interpret backslashes. -+echo=$lt_echo -+ -+# The archiver. -+AR=$lt_AR -+AR_FLAGS=$lt_AR_FLAGS -+ -+# A C compiler. -+LTCC=$lt_LTCC -+ -+# LTCC compiler flags. -+LTCFLAGS=$lt_LTCFLAGS -+ -+# A language-specific compiler. -+CC=$lt_compiler -+ -+# Is the compiler the GNU C compiler? -+with_gcc=$GCC -+ -+gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\` -+gcc_ver=\`gcc -dumpversion\` -+ -+# An ERE matcher. -+EGREP=$lt_EGREP -+ -+# The linker used to build libraries. -+LD=$lt_LD -+ -+# Whether we need hard or soft links. -+LN_S=$lt_LN_S -+ -+# A BSD-compatible nm program. -+NM=$lt_NM -+ -+# A symbol stripping program -+STRIP=$lt_STRIP -+ -+# Used to examine libraries when file_magic_cmd begins "file" -+MAGIC_CMD=$MAGIC_CMD -+ -+# Used on cygwin: DLL creation program. -+DLLTOOL="$DLLTOOL" -+ -+# Used on cygwin: object dumper. -+OBJDUMP="$OBJDUMP" -+ -+# Used on cygwin: assembler. -+AS="$AS" -+ -+# The name of the directory that contains temporary libtool files. -+objdir=$objdir -+ -+# How to create reloadable object files. -+reload_flag=$lt_reload_flag -+reload_cmds=$lt_reload_cmds -+ -+# How to pass a linker flag through the compiler. -+wl=$lt_lt_prog_compiler_wl -+ -+# Object file suffix (normally "o"). -+objext="$ac_objext" -+ -+# Old archive suffix (normally "a"). -+libext="$libext" -+ -+# Shared library suffix (normally ".so"). -+shrext_cmds='$shrext_cmds' -+ -+# Executable file suffix (normally ""). -+exeext="$exeext" -+ -+# Additional compiler flags for building library objects. -+pic_flag=$lt_lt_prog_compiler_pic -+pic_mode=$pic_mode -+ -+# What is the maximum length of a command? -+max_cmd_len=$lt_cv_sys_max_cmd_len -+ -+# Does compiler simultaneously support -c and -o options? -+compiler_c_o=$lt_lt_cv_prog_compiler_c_o -+ -+# Must we lock files when doing compilation? -+need_locks=$lt_need_locks -+ -+# Do we need the lib prefix for modules? -+need_lib_prefix=$need_lib_prefix -+ -+# Do we need a version for libraries? -+need_version=$need_version -+ -+# Whether dlopen is supported. -+dlopen_support=$enable_dlopen -+ -+# Whether dlopen of programs is supported. -+dlopen_self=$enable_dlopen_self -+ -+# Whether dlopen of statically linked programs is supported. -+dlopen_self_static=$enable_dlopen_self_static -+ -+# Compiler flag to prevent dynamic linking. -+link_static_flag=$lt_lt_prog_compiler_static -+ -+# Compiler flag to turn off builtin functions. -+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag -+ -+# Compiler flag to allow reflexive dlopens. -+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec -+ -+# Compiler flag to generate shared objects directly from archives. -+whole_archive_flag_spec=$lt_whole_archive_flag_spec -+ -+# Compiler flag to generate thread-safe objects. -+thread_safe_flag_spec=$lt_thread_safe_flag_spec -+ -+# Library versioning type. -+version_type=$version_type -+ -+# Format of library name prefix. -+libname_spec=$lt_libname_spec -+ -+# 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. -+library_names_spec=$lt_library_names_spec -+ -+# The coded name of the library, if different from the real name. -+soname_spec=$lt_soname_spec -+ -+# Commands used to build and install an old-style archive. -+RANLIB=$lt_RANLIB -+old_archive_cmds=$lt_old_archive_cmds -+old_postinstall_cmds=$lt_old_postinstall_cmds -+old_postuninstall_cmds=$lt_old_postuninstall_cmds -+ -+# Create an old-style archive from a shared archive. -+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds -+ -+# Create a temporary old-style archive to link instead of a shared archive. -+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds -+ -+# Commands used to build and install a shared archive. -+archive_cmds=$lt_archive_cmds -+archive_expsym_cmds=$lt_archive_expsym_cmds -+postinstall_cmds=$lt_postinstall_cmds -+postuninstall_cmds=$lt_postuninstall_cmds -+ -+# Commands used to build a loadable module (assumed same as above if empty) -+module_cmds=$lt_module_cmds -+module_expsym_cmds=$lt_module_expsym_cmds -+ -+# Commands to strip libraries. -+old_striplib=$lt_old_striplib -+striplib=$lt_striplib -+ -+# Dependencies to place before the objects being linked to create a -+# shared library. -+predep_objects=\`echo $lt_predep_objects | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` -+ -+# Dependencies to place after the objects being linked to create a -+# shared library. -+postdep_objects=\`echo $lt_postdep_objects | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` -+ -+# Dependencies to place before the objects being linked to create a -+# shared library. -+predeps=$lt_predeps -+ -+# Dependencies to place after the objects being linked to create a -+# shared library. -+postdeps=$lt_postdeps -+ -+# The library search path used internally by the compiler when linking -+# a shared library. -+compiler_lib_search_path=\`echo $lt_compiler_lib_search_path | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` -+ -+# Method to check whether dependent libraries are shared objects. -+deplibs_check_method=$lt_deplibs_check_method -+ -+# Command to use when deplibs_check_method == file_magic. -+file_magic_cmd=$lt_file_magic_cmd -+ -+# Flag that allows shared libraries with undefined symbols to be built. -+allow_undefined_flag=$lt_allow_undefined_flag -+ -+# Flag that forces no undefined symbols. -+no_undefined_flag=$lt_no_undefined_flag -+ -+# Commands used to finish a libtool library installation in a directory. -+finish_cmds=$lt_finish_cmds -+ -+# Same as above, but a single script fragment to be evaled but not shown. -+finish_eval=$lt_finish_eval -+ -+# Take the output of nm and produce a listing of raw symbols and C names. -+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe -+ -+# Transform the output of nm in a proper C declaration -+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl -+ -+# Transform the output of nm in a C name address pair -+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address -+ -+# This is the shared library runtime path variable. -+runpath_var=$runpath_var -+ -+# This is the shared library path variable. -+shlibpath_var=$shlibpath_var -+ -+# Is shlibpath searched before the hard-coded library search path? -+shlibpath_overrides_runpath=$shlibpath_overrides_runpath -+ -+# How to hardcode a shared library path into an executable. -+hardcode_action=$hardcode_action -+ -+# Whether we should hardcode library paths into libraries. -+hardcode_into_libs=$hardcode_into_libs -+ -+# Flag to hardcode \$libdir into a binary during linking. -+# This must work even if \$libdir does not exist. -+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec -+ -+# If ld is used when linking, flag to hardcode \$libdir into -+# a binary during linking. This must work even if \$libdir does -+# not exist. -+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld -+ -+# Whether we need a single -rpath flag with a separated argument. -+hardcode_libdir_separator=$lt_hardcode_libdir_separator -+ -+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the -+# resulting binary. -+hardcode_direct=$hardcode_direct -+ -+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -+# resulting binary. -+hardcode_minus_L=$hardcode_minus_L -+ -+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -+# the resulting binary. -+hardcode_shlibpath_var=$hardcode_shlibpath_var -+ -+# Set to yes if building a shared library automatically hardcodes DIR into the library -+# and all subsequent libraries and executables linked against it. -+hardcode_automatic=$hardcode_automatic -+ -+# Variables whose values should be saved in libtool wrapper scripts and -+# restored at relink time. -+variables_saved_for_relink="$variables_saved_for_relink" -+ -+# Whether libtool must link a program against all its dependency libraries. -+link_all_deplibs=$link_all_deplibs -+ -+# Compile-time system search path for libraries -+sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` -+ -+# Run-time system search path for libraries -+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec -+ -+# Fix the shell variable \$srcfile for the compiler. -+fix_srcfile_path="$fix_srcfile_path" -+ -+# Set to yes if exported symbols are required. -+always_export_symbols=$always_export_symbols -+ -+# The commands to list exported symbols. -+export_symbols_cmds=$lt_export_symbols_cmds -+ -+# The commands to extract the exported symbol list from a shared archive. -+extract_expsyms_cmds=$lt_extract_expsyms_cmds -+ -+# Symbols that should not be listed in the preloaded symbols. -+exclude_expsyms=$lt_exclude_expsyms -+ -+# Symbols that must always be exported. -+include_expsyms=$lt_include_expsyms -+ -+# ### END LIBTOOL CONFIG -+ -+__EOF__ -+ -+ -+ case $host_os in -+ aix3*) -+ cat <<\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 -+EOF -+ ;; -+ esac -+ -+ # 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) -+ -+ mv -f "$cfgfile" "$ofile" || \ -+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") -+ chmod +x "$ofile" -+ -+else -+ # If there is no Makefile yet, we rely on a make rule to execute -+ # `config.status --recheck' to rerun these tests and create the -+ # libtool script then. -+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` -+ if test -f "$ltmain_in"; then -+ test -f Makefile && make "$ltmain" -+ fi -+fi -+ -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+CC="$lt_save_CC" -+ -+ -+# Check whether --with-tags or --without-tags was given. -+if test "${with_tags+set}" = set; then -+ withval="$with_tags" -+ tagnames="$withval" -+fi; -+ -+if test -f "$ltmain" && test -n "$tagnames"; then -+ if test ! -f "${ofile}"; then -+ { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 -+echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} -+ fi -+ -+ if test -z "$LTCC"; then -+ eval "`$SHELL ${ofile} --config | grep '^LTCC='`" -+ if test -z "$LTCC"; then -+ { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 -+echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} -+ else -+ { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 -+echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} -+ fi -+ fi -+ if test -z "$LTCFLAGS"; then -+ eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" -+ fi -+ -+ # Extract list of available tagged configurations in $ofile. -+ # Note that this assumes the entire list is on one line. -+ available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` -+ -+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," -+ for tagname in $tagnames; do -+ IFS="$lt_save_ifs" -+ # Check whether tagname contains only valid characters -+ case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in -+ "") ;; -+ *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 -+echo "$as_me: error: invalid tag name: $tagname" >&2;} -+ { (exit 1); exit 1; }; } -+ ;; -+ esac -+ -+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null -+ then -+ { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 -+echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} -+ { (exit 1); exit 1; }; } -+ fi -+ -+ # Update the list of available tags. -+ if test -n "$tagname"; then -+ echo appending configuration tag \"$tagname\" to $ofile -+ -+ case $tagname in -+ CXX) -+ if test -n "$CXX" && ( test "X$CXX" != "Xno" && -+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || -+ (test "X$CXX" != "Xg++"))) ; then -+ ac_ext=cc -+ac_cpp='$CXXCPP $CPPFLAGS' -+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -+ -+ -+ -+ -+archive_cmds_need_lc_CXX=no -+allow_undefined_flag_CXX= -+always_export_symbols_CXX=no -+archive_expsym_cmds_CXX= -+export_dynamic_flag_spec_CXX= -+hardcode_direct_CXX=no -+hardcode_libdir_flag_spec_CXX= -+hardcode_libdir_flag_spec_ld_CXX= -+hardcode_libdir_separator_CXX= -+hardcode_minus_L_CXX=no -+hardcode_shlibpath_var_CXX=unsupported -+hardcode_automatic_CXX=no -+module_cmds_CXX= -+module_expsym_cmds_CXX= -+link_all_deplibs_CXX=unknown -+old_archive_cmds_CXX=$old_archive_cmds -+no_undefined_flag_CXX= -+whole_archive_flag_spec_CXX= -+enable_shared_with_static_runtimes_CXX=no -+ -+# Dependencies to place before and after the object being linked: -+predep_objects_CXX= -+postdep_objects_CXX= -+predeps_CXX= -+postdeps_CXX= -+compiler_lib_search_path_CXX= -+ -+# Source file extension for C++ test sources. -+ac_ext=cpp -+ -+# Object file extension for compiled C++ test sources. -+objext=o -+objext_CXX=$objext -+ -+# Code to be used in simple compile tests -+lt_simple_compile_test_code="int some_variable = 0;\n" -+ -+# Code to be used in simple link tests -+lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n' -+ -+# ltmain only uses $CC for tagged configurations so make sure $CC is set. -+ -+# 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 -+ -+ -+# save warnings/boilerplate of simple test code -+ac_outfile=conftest.$ac_objext -+printf "$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* -+ -+ac_outfile=conftest.$ac_objext -+printf "$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 conftest* -+ -+ -+# Allow CC to be a program name with arguments. -+lt_save_CC=$CC -+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++"} -+compiler=$CC -+compiler_CXX=$CC -+for cc_temp in $compiler""; do -+ case $cc_temp in -+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; -+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; -+ \-*) ;; -+ *) break;; -+ esac -+done -+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` -+ -+ -+# We don't want -fno-exception wen compiling C++ code, so set the -+# no_builtin_flag separately -+if test "$GXX" = yes; then -+ lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' -+else -+ lt_prog_compiler_no_builtin_flag_CXX= -+fi -+ -+if test "$GXX" = yes; then -+ # Set up default GNU C++ configuration -+ -+ -+# Check whether --with-gnu-ld or --without-gnu-ld was given. -+if test "${with_gnu_ld+set}" = set; then -+ withval="$with_gnu_ld" -+ test "$withval" = no || with_gnu_ld=yes -+else -+ with_gnu_ld=no -+fi; -+ac_prog=ld -+if test "$GCC" = yes; then -+ # Check if gcc -print-prog-name=ld gives a path. -+ echo "$as_me:$LINENO: checking for ld used by $CC" >&5 -+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&6 -+ 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 -+ echo "$as_me:$LINENO: checking for GNU ld" >&5 -+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6 -+else -+ echo "$as_me:$LINENO: checking for non-GNU ld" >&5 -+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6 -+fi -+if test "${lt_cv_path_LD+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ 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 &5 -+echo "${ECHO_T}$LD" >&6 -+else -+ echo "$as_me:$LINENO: result: no" >&5 -+echo "${ECHO_T}no" >&6 -+fi -+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 -+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} -+ { (exit 1); exit 1; }; } -+echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 -+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6 -+if test "${lt_cv_prog_gnu_ld+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ # I'd rather use --version here, but apparently some GNU lds only accept -v. -+case `$LD -v 2>&1 &5 -+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6 -+with_gnu_ld=$lt_cv_prog_gnu_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 -+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ -+ hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' -+ export_dynamic_flag_spec_CXX='${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 -+ whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' -+ else -+ whole_archive_flag_spec_CXX= -+ 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. -+ archive_cmds_CXX='$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 "\-L"' -+ -+else -+ GXX=no -+ with_gnu_ld=no -+ wlarc= -+fi -+ -+# PORTME: fill in a description of your system's C++ link characteristics -+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 -+ld_shlibs_CXX=yes -+case $host_os in -+ aix3*) -+ # FIXME: insert proper C++ library support -+ ld_shlibs_CXX=no -+ ;; -+ aix4* | aix5*) -+ 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].*|aix5*) -+ 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. -+ -+ archive_cmds_CXX='' -+ hardcode_direct_CXX=yes -+ hardcode_libdir_separator_CXX=':' -+ link_all_deplibs_CXX=yes -+ -+ 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 -+ hardcode_direct_CXX=yes -+ else -+ # We have old collect2 -+ hardcode_direct_CXX=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 -+ hardcode_minus_L_CXX=yes -+ hardcode_libdir_flag_spec_CXX='-L$libdir' -+ hardcode_libdir_separator_CXX= -+ 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 -+ -+ # It seems that -bexpall does not export symbols beginning with -+ # underscore (_), so it is better to generate a list of symbols to export. -+ always_export_symbols_CXX=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. -+ allow_undefined_flag_CXX='-berok' -+ # Determine the default libpath from the value encoded in an empty executable. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -+ (eval $ac_link) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_cxx_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest$ac_exeext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ -+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -+}'` -+# Check for a 64-bit object if we didn't find anything. -+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -+}'`; fi -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi -+ -+ hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" -+ -+ archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" -+ else -+ if test "$host_cpu" = ia64; then -+ hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' -+ allow_undefined_flag_CXX="-z nodefs" -+ archive_expsym_cmds_CXX="\$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. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -+ (eval $ac_link) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_cxx_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest$ac_exeext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ -+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -+}'` -+# Check for a 64-bit object if we didn't find anything. -+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -+}'`; fi -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi -+ -+ hardcode_libdir_flag_spec_CXX='${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. -+ no_undefined_flag_CXX=' ${wl}-bernotok' -+ allow_undefined_flag_CXX=' ${wl}-berok' -+ # Exported symbols can be pulled into shared objects from archives -+ whole_archive_flag_spec_CXX='$convenience' -+ archive_cmds_need_lc_CXX=yes -+ # This is similar to how AIX traditionally builds its shared libraries. -+ archive_expsym_cmds_CXX="\$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 -+ allow_undefined_flag_CXX=unsupported -+ # Joseph Beckenbach says some releases of gcc -+ # support --undefined. This deserves some investigation. FIXME -+ archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ else -+ ld_shlibs_CXX=no -+ fi -+ ;; -+ -+ chorus*) -+ case $cc_basename in -+ *) -+ # FIXME: insert proper C++ library support -+ ld_shlibs_CXX=no -+ ;; -+ esac -+ ;; -+ -+ cygwin* | mingw* | pw32*) -+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, -+ # as there is no search path for DLLs. -+ hardcode_libdir_flag_spec_CXX='-L$libdir' -+ allow_undefined_flag_CXX=unsupported -+ always_export_symbols_CXX=no -+ enable_shared_with_static_runtimes_CXX=yes -+ -+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then -+ archive_cmds_CXX='$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... -+ archive_expsym_cmds_CXX='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 -+ ld_shlibs_CXX=no -+ fi -+ ;; -+ darwin* | rhapsody*) -+ case $host_os in -+ rhapsody* | darwin1.[012]) -+ allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress' -+ ;; -+ *) # Darwin 1.3 on -+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then -+ allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' -+ else -+ case ${MACOSX_DEPLOYMENT_TARGET} in -+ 10.[012]) -+ allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' -+ ;; -+ 10.*) -+ allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup' -+ ;; -+ esac -+ fi -+ ;; -+ esac -+ archive_cmds_need_lc_CXX=no -+ hardcode_direct_CXX=no -+ hardcode_automatic_CXX=yes -+ hardcode_shlibpath_var_CXX=unsupported -+ whole_archive_flag_spec_CXX='' -+ link_all_deplibs_CXX=yes -+ -+ if test "$GXX" = yes ; then -+ lt_int_apple_cc_single_mod=no -+ output_verbose_link_cmd='echo' -+ if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then -+ lt_int_apple_cc_single_mod=yes -+ fi -+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then -+ archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' -+ else -+ archive_cmds_CXX='$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' -+ fi -+ module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' -+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds -+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then -+ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ else -+ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "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~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ fi -+ module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ else -+ case $cc_basename in -+ xlc*) -+ output_verbose_link_cmd='echo' -+ archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' -+ module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' -+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds -+ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ ;; -+ *) -+ ld_shlibs_CXX=no -+ ;; -+ esac -+ fi -+ ;; -+ -+ dgux*) -+ case $cc_basename in -+ ec++*) -+ # FIXME: insert proper C++ library support -+ ld_shlibs_CXX=no -+ ;; -+ ghcx*) -+ # Green Hills C++ Compiler -+ # FIXME: insert proper C++ library support -+ ld_shlibs_CXX=no -+ ;; -+ *) -+ # FIXME: insert proper C++ library support -+ ld_shlibs_CXX=no -+ ;; -+ esac -+ ;; -+ freebsd[12]*) -+ # C++ shared libraries reported to be fairly broken before switch to ELF -+ ld_shlibs_CXX=no -+ ;; -+ freebsd-elf*) -+ archive_cmds_need_lc_CXX=no -+ ;; -+ freebsd* | kfreebsd*-gnu | dragonfly*) -+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF -+ # conventions -+ ld_shlibs_CXX=yes -+ ;; -+ gnu*) -+ ;; -+ hpux9*) -+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' -+ hardcode_libdir_separator_CXX=: -+ export_dynamic_flag_spec_CXX='${wl}-E' -+ hardcode_direct_CXX=yes -+ hardcode_minus_L_CXX=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 -+ ld_shlibs_CXX=no -+ ;; -+ aCC*) -+ archive_cmds_CXX='$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) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' -+ ;; -+ *) -+ if test "$GXX" = yes; then -+ archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${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 -+ ld_shlibs_CXX=no -+ fi -+ ;; -+ esac -+ ;; -+ hpux10*|hpux11*) -+ if test $with_gnu_ld = no; then -+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' -+ hardcode_libdir_separator_CXX=: -+ -+ case $host_cpu in -+ hppa*64*|ia64*) -+ hardcode_libdir_flag_spec_ld_CXX='+b $libdir' -+ ;; -+ *) -+ export_dynamic_flag_spec_CXX='${wl}-E' -+ ;; -+ esac -+ fi -+ case $host_cpu in -+ hppa*64*|ia64*) -+ hardcode_direct_CXX=no -+ hardcode_shlibpath_var_CXX=no -+ ;; -+ *) -+ hardcode_direct_CXX=yes -+ hardcode_minus_L_CXX=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 -+ ld_shlibs_CXX=no -+ ;; -+ aCC*) -+ case $host_cpu in -+ hppa*64*) -+ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -+ ;; -+ ia64*) -+ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -+ ;; -+ *) -+ archive_cmds_CXX='$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; echo $list' -+ ;; -+ *) -+ if test "$GXX" = yes; then -+ if test $with_gnu_ld = no; then -+ case $host_cpu in -+ hppa*64*) -+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -+ ;; -+ ia64*) -+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -+ ;; -+ *) -+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${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 -+ ld_shlibs_CXX=no -+ fi -+ ;; -+ esac -+ ;; -+ interix3*) -+ hardcode_direct_CXX=no -+ hardcode_shlibpath_var_CXX=no -+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' -+ export_dynamic_flag_spec_CXX='${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. -+ archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' -+ archive_expsym_cmds_CXX='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++ -+ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -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. -+ old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' -+ ;; -+ *) -+ if test "$GXX" = yes; then -+ if test "$with_gnu_ld" = no; then -+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ else -+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' -+ fi -+ fi -+ link_all_deplibs_CXX=yes -+ ;; -+ esac -+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' -+ hardcode_libdir_separator_CXX=: -+ ;; -+ linux*) -+ 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. -+ archive_cmds_CXX='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' -+ archive_expsym_cmds_CXX='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; echo $list' -+ -+ hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' -+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic' -+ -+ # Archives containing C++ object files must be created using -+ # "CC -Bstatic", where "CC" is the KAI C++ compiler. -+ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' -+ ;; -+ icpc*) -+ # 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."*) -+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ archive_expsym_cmds_CXX='$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 -+ archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ ;; -+ esac -+ archive_cmds_need_lc_CXX=no -+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' -+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic' -+ whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' -+ ;; -+ pgCC*) -+ # Portland Group C++ compiler -+ archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' -+ archive_expsym_cmds_CXX='$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' -+ -+ hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' -+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic' -+ whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' -+ ;; -+ cxx*) -+ # Compaq C++ -+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ archive_expsym_cmds_CXX='$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 -+ hardcode_libdir_flag_spec_CXX='-rpath $libdir' -+ hardcode_libdir_separator_CXX=: -+ -+ # 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=`echo $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; echo $list' -+ ;; -+ esac -+ ;; -+ lynxos*) -+ # FIXME: insert proper C++ library support -+ ld_shlibs_CXX=no -+ ;; -+ m88k*) -+ # FIXME: insert proper C++ library support -+ ld_shlibs_CXX=no -+ ;; -+ mvs*) -+ case $cc_basename in -+ cxx*) -+ # FIXME: insert proper C++ library support -+ ld_shlibs_CXX=no -+ ;; -+ *) -+ # FIXME: insert proper C++ library support -+ ld_shlibs_CXX=no -+ ;; -+ esac -+ ;; -+ netbsd*) -+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then -+ archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' -+ wlarc= -+ hardcode_libdir_flag_spec_CXX='-R$libdir' -+ hardcode_direct_CXX=yes -+ hardcode_shlibpath_var_CXX=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::"' -+ ;; -+ openbsd2*) -+ # C++ shared libraries are fairly broken -+ ld_shlibs_CXX=no -+ ;; -+ openbsd*) -+ hardcode_direct_CXX=yes -+ hardcode_shlibpath_var_CXX=no -+ archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' -+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' -+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then -+ archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' -+ export_dynamic_flag_spec_CXX='${wl}-E' -+ whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' -+ fi -+ output_verbose_link_cmd='echo' -+ ;; -+ osf3*) -+ 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. -+ archive_cmds_CXX='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' -+ -+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' -+ hardcode_libdir_separator_CXX=: -+ -+ # Archives containing C++ object files must be created using -+ # "CC -Bstatic", where "CC" is the KAI C++ compiler. -+ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' -+ -+ ;; -+ RCC*) -+ # Rational C++ 2.4.1 -+ # FIXME: insert proper C++ library support -+ ld_shlibs_CXX=no -+ ;; -+ cxx*) -+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' -+ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' -+ -+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' -+ hardcode_libdir_separator_CXX=: -+ -+ # 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=`echo $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; echo $list' -+ ;; -+ *) -+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then -+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' -+ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ -+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' -+ hardcode_libdir_separator_CXX=: -+ -+ # 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 "\-L"' -+ -+ else -+ # FIXME: insert proper C++ library support -+ ld_shlibs_CXX=no -+ fi -+ ;; -+ esac -+ ;; -+ 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. -+ archive_cmds_CXX='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' -+ -+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' -+ hardcode_libdir_separator_CXX=: -+ -+ # Archives containing C++ object files must be created using -+ # the KAI C++ compiler. -+ old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' -+ ;; -+ RCC*) -+ # Rational C++ 2.4.1 -+ # FIXME: insert proper C++ library support -+ ld_shlibs_CXX=no -+ ;; -+ cxx*) -+ allow_undefined_flag_CXX=' -expect_unresolved \*' -+ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' -+ archive_expsym_cmds_CXX='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' -+ -+ hardcode_libdir_flag_spec_CXX='-rpath $libdir' -+ hardcode_libdir_separator_CXX=: -+ -+ # 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=`echo $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; echo $list' -+ ;; -+ *) -+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then -+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' -+ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ -+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' -+ hardcode_libdir_separator_CXX=: -+ -+ # 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 "\-L"' -+ -+ else -+ # FIXME: insert proper C++ library support -+ ld_shlibs_CXX=no -+ fi -+ ;; -+ esac -+ ;; -+ psos*) -+ # FIXME: insert proper C++ library support -+ ld_shlibs_CXX=no -+ ;; -+ sunos4*) -+ case $cc_basename in -+ CC*) -+ # Sun C++ 4.x -+ # FIXME: insert proper C++ library support -+ ld_shlibs_CXX=no -+ ;; -+ lcc*) -+ # Lucid -+ # FIXME: insert proper C++ library support -+ ld_shlibs_CXX=no -+ ;; -+ *) -+ # FIXME: insert proper C++ library support -+ ld_shlibs_CXX=no -+ ;; -+ esac -+ ;; -+ solaris*) -+ case $cc_basename in -+ CC*) -+ # Sun C++ 4.2, 5.x and Centerline C++ -+ archive_cmds_need_lc_CXX=yes -+ no_undefined_flag_CXX=' -zdefs' -+ archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -+ archive_expsym_cmds_CXX='$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' -+ -+ hardcode_libdir_flag_spec_CXX='-R$libdir' -+ hardcode_shlibpath_var_CXX=no -+ case $host_os in -+ solaris2.[0-5] | solaris2.[0-5].*) ;; -+ *) -+ # The C++ compiler is used as linker so we must use $wl -+ # flag to pass the commands to the underlying system -+ # linker. We must also pass each convience library through -+ # to the system linker between allextract/defaultextract. -+ # The C++ compiler will combine linker options so we -+ # cannot just pass the convience library names through -+ # without $wl. -+ # Supported since Solaris 2.6 (maybe 2.5.1?) -+ whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' -+ ;; -+ esac -+ link_all_deplibs_CXX=yes -+ -+ output_verbose_link_cmd='echo' -+ -+ # 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. -+ old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' -+ ;; -+ gcx*) -+ # Green Hills C++ Compiler -+ archive_cmds_CXX='$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. -+ old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' -+ ;; -+ *) -+ # GNU C++ compiler with Solaris linker -+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then -+ no_undefined_flag_CXX=' ${wl}-z ${wl}defs' -+ if $CC --version | grep -v '^2\.7' > /dev/null; then -+ archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' -+ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ -+ $CC -shared -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 \"\-L\"" -+ else -+ # g++ 2.7 appears to require `-G' NOT `-shared' on this -+ # platform. -+ archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' -+ archive_expsym_cmds_CXX='$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 \"\-L\"" -+ fi -+ -+ hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' -+ fi -+ ;; -+ esac -+ ;; -+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) -+ no_undefined_flag_CXX='${wl}-z,text' -+ archive_cmds_need_lc_CXX=no -+ hardcode_shlibpath_var_CXX=no -+ runpath_var='LD_RUN_PATH' -+ -+ case $cc_basename in -+ CC*) -+ archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ *) -+ archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds_CXX='$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. -+ # 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. -+ # So that behaviour is only enabled if SCOABSPATH is set to a -+ # non-empty value in the environment. Most likely only useful for -+ # creating official distributions of packages. -+ # This is a hack until libtool officially supports absolute path -+ # names for shared libraries. -+ no_undefined_flag_CXX='${wl}-z,text' -+ allow_undefined_flag_CXX='${wl}-z,nodefs' -+ archive_cmds_need_lc_CXX=no -+ hardcode_shlibpath_var_CXX=no -+ hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' -+ hardcode_libdir_separator_CXX=':' -+ link_all_deplibs_CXX=yes -+ export_dynamic_flag_spec_CXX='${wl}-Bexport' -+ runpath_var='LD_RUN_PATH' -+ -+ case $cc_basename in -+ CC*) -+ archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ *) -+ archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$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 -+ ld_shlibs_CXX=no -+ ;; -+ *) -+ # FIXME: insert proper C++ library support -+ ld_shlibs_CXX=no -+ ;; -+ esac -+ ;; -+ vxworks*) -+ # FIXME: insert proper C++ library support -+ ld_shlibs_CXX=no -+ ;; -+ *) -+ # FIXME: insert proper C++ library support -+ ld_shlibs_CXX=no -+ ;; -+esac -+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 -+echo "${ECHO_T}$ld_shlibs_CXX" >&6 -+test "$ld_shlibs_CXX" = no && can_build_shared=no -+ -+GCC_CXX="$GXX" -+LD_CXX="$LD" -+ -+ -+cat > conftest.$ac_ext <&5 -+ (eval $ac_compile) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; 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 -+ -+ # The `*' in the case matches for architectures that use `case' in -+ # $output_verbose_cmd can trigger glob expansion during the loop -+ # eval without this substitution. -+ output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"` -+ -+ for p in `eval $output_verbose_link_cmd`; do -+ case $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 -+ else -+ prev= -+ fi -+ -+ if test "$pre_test_object_deps_done" = no; then -+ case $p 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 "$compiler_lib_search_path_CXX"; then -+ compiler_lib_search_path_CXX="${prev}${p}" -+ else -+ compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${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 "$postdeps_CXX"; then -+ postdeps_CXX="${prev}${p}" -+ else -+ postdeps_CXX="${postdeps_CXX} ${prev}${p}" -+ fi -+ fi -+ ;; -+ -+ *.$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 "$predep_objects_CXX"; then -+ predep_objects_CXX="$p" -+ else -+ predep_objects_CXX="$predep_objects_CXX $p" -+ fi -+ else -+ if test -z "$postdep_objects_CXX"; then -+ postdep_objects_CXX="$p" -+ else -+ postdep_objects_CXX="$postdep_objects_CXX $p" -+ fi -+ fi -+ ;; -+ -+ *) ;; # Ignore the rest. -+ -+ esac -+ done -+ -+ # Clean up. -+ rm -f a.out a.exe -+else -+ echo "libtool.m4: error: problem compiling CXX test program" -+fi -+ -+$rm -f confest.$objext -+ -+# PORTME: override above test on systems where it is broken -+case $host_os in -+interix3*) -+ # Interix 3.5 installs completely hosed .la files for C++, so rather than -+ # hack all around it, let's just trust "g++" to DTRT. -+ predep_objects_CXX= -+ postdep_objects_CXX= -+ postdeps_CXX= -+ ;; -+ -+solaris*) -+ case $cc_basename in -+ CC*) -+ # 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. -+ postdeps_CXX='-lCstd -lCrun' -+ ;; -+ esac -+ ;; -+esac -+ -+ -+case " $postdeps_CXX " in -+*" -lc "*) archive_cmds_need_lc_CXX=no ;; -+esac -+ -+lt_prog_compiler_wl_CXX= -+lt_prog_compiler_pic_CXX= -+lt_prog_compiler_static_CXX= -+ -+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 -+ -+ # C++ specific cases for pic, static, wl, etc. -+ if test "$GXX" = yes; then -+ lt_prog_compiler_wl_CXX='-Wl,' -+ lt_prog_compiler_static_CXX='-static' -+ -+ case $host_os in -+ aix*) -+ # All AIX code is PIC. -+ if test "$host_cpu" = ia64; then -+ # AIX 5 now supports IA64 processor -+ lt_prog_compiler_static_CXX='-Bstatic' -+ fi -+ ;; -+ amigaos*) -+ # 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_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' -+ ;; -+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) -+ # PIC is the default for these OSes. -+ ;; -+ mingw* | os2* | pw32*) -+ # 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). -+ lt_prog_compiler_pic_CXX='-DDLL_EXPORT' -+ ;; -+ darwin* | rhapsody*) -+ # PIC is the default on this platform -+ # Common symbols not allowed in MH_DYLIB files -+ lt_prog_compiler_pic_CXX='-fno-common' -+ ;; -+ *djgpp*) -+ # DJGPP does not support shared libraries at all -+ lt_prog_compiler_pic_CXX= -+ ;; -+ interix3*) -+ # 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_prog_compiler_pic_CXX=-Kconform_pic -+ fi -+ ;; -+ hpux*) -+ # 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*) -+ ;; -+ *) -+ lt_prog_compiler_pic_CXX='-fPIC' -+ ;; -+ esac -+ ;; -+ *) -+ lt_prog_compiler_pic_CXX='-fPIC' -+ ;; -+ esac -+ else -+ case $host_os in -+ aix4* | aix5*) -+ # All AIX code is PIC. -+ if test "$host_cpu" = ia64; then -+ # AIX 5 now supports IA64 processor -+ lt_prog_compiler_static_CXX='-Bstatic' -+ else -+ lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' -+ fi -+ ;; -+ chorus*) -+ case $cc_basename in -+ cxch68*) -+ # Green Hills C++ Compiler -+ # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--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 -+ ;; -+ darwin*) -+ # PIC is the default on this platform -+ # Common symbols not allowed in MH_DYLIB files -+ case $cc_basename in -+ xlc*) -+ lt_prog_compiler_pic_CXX='-qnocommon' -+ lt_prog_compiler_wl_CXX='-Wl,' -+ ;; -+ esac -+ ;; -+ dgux*) -+ case $cc_basename in -+ ec++*) -+ lt_prog_compiler_pic_CXX='-KPIC' -+ ;; -+ ghcx*) -+ # Green Hills C++ Compiler -+ lt_prog_compiler_pic_CXX='-pic' -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ freebsd* | kfreebsd*-gnu | dragonfly*) -+ # FreeBSD uses GNU C++ -+ ;; -+ hpux9* | hpux10* | hpux11*) -+ case $cc_basename in -+ CC*) -+ lt_prog_compiler_wl_CXX='-Wl,' -+ lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' -+ if test "$host_cpu" != ia64; then -+ lt_prog_compiler_pic_CXX='+Z' -+ fi -+ ;; -+ aCC*) -+ lt_prog_compiler_wl_CXX='-Wl,' -+ lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' -+ case $host_cpu in -+ hppa*64*|ia64*) -+ # +Z the default -+ ;; -+ *) -+ lt_prog_compiler_pic_CXX='+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_prog_compiler_wl_CXX='-Wl,' -+ lt_prog_compiler_static_CXX='-non_shared' -+ # CC pic flag -KPIC is the default. -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ linux*) -+ case $cc_basename in -+ KCC*) -+ # KAI C++ Compiler -+ lt_prog_compiler_wl_CXX='--backend -Wl,' -+ lt_prog_compiler_pic_CXX='-fPIC' -+ ;; -+ icpc* | ecpc*) -+ # Intel C++ -+ lt_prog_compiler_wl_CXX='-Wl,' -+ lt_prog_compiler_pic_CXX='-KPIC' -+ lt_prog_compiler_static_CXX='-static' -+ ;; -+ pgCC*) -+ # Portland Group C++ compiler. -+ lt_prog_compiler_wl_CXX='-Wl,' -+ lt_prog_compiler_pic_CXX='-fpic' -+ lt_prog_compiler_static_CXX='-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_prog_compiler_pic_CXX= -+ lt_prog_compiler_static_CXX='-non_shared' -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ lynxos*) -+ ;; -+ m88k*) -+ ;; -+ mvs*) -+ case $cc_basename in -+ cxx*) -+ lt_prog_compiler_pic_CXX='-W c,exportall' -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ netbsd*) -+ ;; -+ osf3* | osf4* | osf5*) -+ case $cc_basename in -+ KCC*) -+ lt_prog_compiler_wl_CXX='--backend -Wl,' -+ ;; -+ RCC*) -+ # Rational C++ 2.4.1 -+ lt_prog_compiler_pic_CXX='-pic' -+ ;; -+ cxx*) -+ # Digital/Compaq C++ -+ lt_prog_compiler_wl_CXX='-Wl,' -+ # Make sure the PIC flag is empty. It appears that all Alpha -+ # Linux and Compaq Tru64 Unix objects are PIC. -+ lt_prog_compiler_pic_CXX= -+ lt_prog_compiler_static_CXX='-non_shared' -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ psos*) -+ ;; -+ solaris*) -+ case $cc_basename in -+ CC*) -+ # Sun C++ 4.2, 5.x and Centerline C++ -+ lt_prog_compiler_pic_CXX='-KPIC' -+ lt_prog_compiler_static_CXX='-Bstatic' -+ lt_prog_compiler_wl_CXX='-Qoption ld ' -+ ;; -+ gcx*) -+ # Green Hills C++ Compiler -+ lt_prog_compiler_pic_CXX='-PIC' -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ sunos4*) -+ case $cc_basename in -+ CC*) -+ # Sun C++ 4.x -+ lt_prog_compiler_pic_CXX='-pic' -+ lt_prog_compiler_static_CXX='-Bstatic' -+ ;; -+ lcc*) -+ # Lucid -+ lt_prog_compiler_pic_CXX='-pic' -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ tandem*) -+ case $cc_basename in -+ NCC*) -+ # NonStop-UX NCC 3.20 -+ lt_prog_compiler_pic_CXX='-KPIC' -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) -+ case $cc_basename in -+ CC*) -+ lt_prog_compiler_wl_CXX='-Wl,' -+ lt_prog_compiler_pic_CXX='-KPIC' -+ lt_prog_compiler_static_CXX='-Bstatic' -+ ;; -+ esac -+ ;; -+ vxworks*) -+ ;; -+ *) -+ lt_prog_compiler_can_build_shared_CXX=no -+ ;; -+ esac -+ fi -+ -+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 -+echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6 -+ -+# -+# Check to make sure the PIC flag actually works. -+# -+if test -n "$lt_prog_compiler_pic_CXX"; then -+ -+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 -+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6 -+if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ lt_prog_compiler_pic_works_CXX=no -+ ac_outfile=conftest.$ac_objext -+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext -+ lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" -+ # 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:14196: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>conftest.err) -+ ac_status=$? -+ cat conftest.err >&5 -+ echo "$as_me:14200: \$? = $ac_status" >&5 -+ 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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp -+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 -+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then -+ lt_prog_compiler_pic_works_CXX=yes -+ fi -+ fi -+ $rm conftest* -+ -+fi -+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5 -+echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6 -+ -+if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then -+ case $lt_prog_compiler_pic_CXX in -+ "" | " "*) ;; -+ *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; -+ esac -+else -+ lt_prog_compiler_pic_CXX= -+ lt_prog_compiler_can_build_shared_CXX=no -+fi -+ -+fi -+case $host_os in -+ # For platforms which do not support PIC, -DPIC is meaningless: -+ *djgpp*) -+ lt_prog_compiler_pic_CXX= -+ ;; -+ *) -+ lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" -+ ;; -+esac -+ -+# -+# Check to make sure the static flag actually works. -+# -+wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" -+echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6 -+if test "${lt_prog_compiler_static_works_CXX+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ lt_prog_compiler_static_works_CXX=no -+ save_LDFLAGS="$LDFLAGS" -+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag" -+ printf "$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>&5 -+ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp -+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 -+ if diff conftest.exp conftest.er2 >/dev/null; then -+ lt_prog_compiler_static_works_CXX=yes -+ fi -+ else -+ lt_prog_compiler_static_works_CXX=yes -+ fi -+ fi -+ $rm conftest* -+ LDFLAGS="$save_LDFLAGS" -+ -+fi -+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_CXX" >&5 -+echo "${ECHO_T}$lt_prog_compiler_static_works_CXX" >&6 -+ -+if test x"$lt_prog_compiler_static_works_CXX" = xyes; then -+ : -+else -+ lt_prog_compiler_static_CXX= -+fi -+ -+ -+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 -+if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ lt_cv_prog_compiler_c_o_CXX=no -+ $rm -r conftest 2>/dev/null -+ mkdir conftest -+ cd conftest -+ mkdir out -+ printf "$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:14300: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>out/conftest.err) -+ ac_status=$? -+ cat out/conftest.err >&5 -+ echo "$as_me:14304: \$? = $ac_status" >&5 -+ 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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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_cv_prog_compiler_c_o_CXX=yes -+ fi -+ fi -+ chmod u+w . 2>&5 -+ $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 .. -+ rmdir conftest -+ $rm conftest* -+ -+fi -+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6 -+ -+ -+hard_links="nottested" -+if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then -+ # do not overwrite the value of need_locks provided by the user -+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 -+ 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 -+ echo "$as_me:$LINENO: result: $hard_links" >&5 -+echo "${ECHO_T}$hard_links" >&6 -+ if test "$hard_links" = no; then -+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} -+ need_locks=warn -+ fi -+else -+ need_locks=no -+fi -+ -+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 -+ -+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' -+ case $host_os in -+ aix4* | aix5*) -+ # 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 -+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then -+ export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' -+ else -+ export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' -+ fi -+ ;; -+ pw32*) -+ export_symbols_cmds_CXX="$ltdll_cmds" -+ ;; -+ cygwin* | mingw*) -+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' -+ ;; -+ *) -+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' -+ ;; -+ esac -+ -+echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 -+echo "${ECHO_T}$ld_shlibs_CXX" >&6 -+test "$ld_shlibs_CXX" = no && can_build_shared=no -+ -+# -+# Do we need to explicitly link libc? -+# -+case "x$archive_cmds_need_lc_CXX" in -+x|xyes) -+ # Assume -lc should be added -+ archive_cmds_need_lc_CXX=yes -+ -+ if test "$enable_shared" = yes && test "$GCC" = yes; then -+ case $archive_cmds_CXX 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. -+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 -+ $rm conftest* -+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext -+ -+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } 2>conftest.err; then -+ soname=conftest -+ lib=conftest -+ libobjs=conftest.$ac_objext -+ deplibs= -+ wl=$lt_prog_compiler_wl_CXX -+ pic_flag=$lt_prog_compiler_pic_CXX -+ compiler_flags=-v -+ linker_flags=-v -+ verstring= -+ output_objdir=. -+ libname=conftest -+ lt_save_allow_undefined_flag=$allow_undefined_flag_CXX -+ allow_undefined_flag_CXX= -+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 -+ (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } -+ then -+ archive_cmds_need_lc_CXX=no -+ else -+ archive_cmds_need_lc_CXX=yes -+ fi -+ allow_undefined_flag_CXX=$lt_save_allow_undefined_flag -+ else -+ cat conftest.err 1>&5 -+ fi -+ $rm conftest* -+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 -+echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6 -+ ;; -+ esac -+ fi -+ ;; -+esac -+ -+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 -+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" -+if test "$GCC" = yes; then -+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` -+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then -+ # 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. -+ 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 -+else -+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -+fi -+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 -+ 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' -+ ;; -+ -+aix4* | aix5*) -+ version_type=linux -+ 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*) -+ 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=`$echo "X$lib" | $Xsed -e '\''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' -+ ;; -+ -+beos*) -+ library_names_spec='${libname}${shared_ext}' -+ dynamic_linker="$host_os ld.so" -+ shlibpath_var=LIBRARY_PATH -+ ;; -+ -+bsdi[45]*) -+ version_type=linux -+ 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*) -+ version_type=windows -+ shrext_cmds=".dll" -+ need_version=no -+ need_lib_prefix=no -+ -+ case $GCC,$host_os in -+ yes,cygwin* | yes,mingw* | yes,pw32*) -+ 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' -+ 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}' -+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" -+ ;; -+ mingw*) -+ # MinGW DLLs use traditional 'lib' prefix -+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' -+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` -+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then -+ # It is most probably a Windows format PATH printed by -+ # mingw gcc, but we are running on Cygwin. Gcc prints its search -+ # path with ; separators, and with drive letters. We can handle the -+ # drive letters (cygwin fileutils understands them), so leave them, -+ # especially as we might pass files found there to a mingw objdump, -+ # which wouldn't understand a cygwinified path. Ahh. -+ 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 -+ ;; -+ 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 -+ ;; -+ -+ *) -+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' -+ ;; -+ esac -+ dynamic_linker='Win32 ld.exe' -+ # 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}${versuffix}$shared_ext ${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`' -+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. -+ if test "$GCC" = yes; then -+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` -+ else -+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' -+ fi -+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' -+ ;; -+ -+dgux*) -+ 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 -+ ;; -+ -+freebsd1*) -+ dynamic_linker=no -+ ;; -+ -+kfreebsd*-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='GNU ld.so' -+ ;; -+ -+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[123]*) 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 -+ ;; -+ freebsd*) # from 4.6 on -+ shlibpath_overrides_runpath=yes -+ hardcode_into_libs=yes -+ ;; -+ esac -+ ;; -+ -+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 -+ 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' -+ ;; -+ -+interix3*) -+ 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' -+ 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 -+ 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 Linux ELF. -+linux*) -+ 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' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ # 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 -+ -+ # find out which ABI we are using -+ libsuff= -+ case "$host_cpu" in -+ x86_64*|s390x*|powerpc64*) -+ echo '#line 14836 "configure"' > conftest.$ac_ext -+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; then -+ case `/usr/bin/file conftest.$ac_objext` in -+ *64-bit*) -+ libsuff=64 -+ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" -+ ;; -+ esac -+ fi -+ rm -rf conftest* -+ ;; -+ esac -+ -+ # 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/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` -+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $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' -+ ;; -+ -+knetbsd*-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='GNU ld.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 -+ 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=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=yes -+ ;; -+ -+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" -+ ;; -+ -+solaris*) -+ 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=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 -+ 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 -+ export_dynamic_flag_spec='${wl}-Blargedynsym' -+ 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 -+ 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 -+ 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' -+ shlibpath_overrides_runpath=no -+ else -+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' -+ shlibpath_overrides_runpath=yes -+ 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' -+ ;; -+ -+uts4*) -+ version_type=linux -+ 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 -+echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -+echo "${ECHO_T}$dynamic_linker" >&6 -+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 -+ -+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 -+hardcode_action_CXX= -+if test -n "$hardcode_libdir_flag_spec_CXX" || \ -+ test -n "$runpath_var_CXX" || \ -+ test "X$hardcode_automatic_CXX" = "Xyes" ; then -+ -+ # We can hardcode non-existant directories. -+ if test "$hardcode_direct_CXX" != 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_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && -+ test "$hardcode_minus_L_CXX" != no; then -+ # Linking always hardcodes the temporary library directory. -+ hardcode_action_CXX=relink -+ else -+ # We can link without hardcoding, and we can hardcode nonexisting dirs. -+ hardcode_action_CXX=immediate -+ fi -+else -+ # We cannot hardcode anything, or else we can only hardcode existing -+ # directories. -+ hardcode_action_CXX=unsupported -+fi -+echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 -+echo "${ECHO_T}$hardcode_action_CXX" >&6 -+ -+if test "$hardcode_action_CXX" = relink; 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 -+ -+ -+# The else clause should only fire when bootstrapping the -+# libtool distribution, otherwise you forgot to ship ltmain.sh -+# with your package, and you will get complaints that there are -+# no rules to generate ltmain.sh. -+if test -f "$ltmain"; then -+ # 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 -+ # Now quote all the things that may contain metacharacters while being -+ # careful not to overquote the AC_SUBSTed values. We take copies of the -+ # variables and quote the copies for generation of the libtool script. -+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ -+ SED SHELL STRIP \ -+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ -+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ -+ deplibs_check_method reload_flag reload_cmds need_locks \ -+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ -+ lt_cv_sys_global_symbol_to_c_name_address \ -+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ -+ old_postinstall_cmds old_postuninstall_cmds \ -+ compiler_CXX \ -+ CC_CXX \ -+ LD_CXX \ -+ lt_prog_compiler_wl_CXX \ -+ lt_prog_compiler_pic_CXX \ -+ lt_prog_compiler_static_CXX \ -+ lt_prog_compiler_no_builtin_flag_CXX \ -+ export_dynamic_flag_spec_CXX \ -+ thread_safe_flag_spec_CXX \ -+ whole_archive_flag_spec_CXX \ -+ enable_shared_with_static_runtimes_CXX \ -+ old_archive_cmds_CXX \ -+ old_archive_from_new_cmds_CXX \ -+ predep_objects_CXX \ -+ postdep_objects_CXX \ -+ predeps_CXX \ -+ postdeps_CXX \ -+ compiler_lib_search_path_CXX \ -+ archive_cmds_CXX \ -+ archive_expsym_cmds_CXX \ -+ postinstall_cmds_CXX \ -+ postuninstall_cmds_CXX \ -+ old_archive_from_expsyms_cmds_CXX \ -+ allow_undefined_flag_CXX \ -+ no_undefined_flag_CXX \ -+ export_symbols_cmds_CXX \ -+ hardcode_libdir_flag_spec_CXX \ -+ hardcode_libdir_flag_spec_ld_CXX \ -+ hardcode_libdir_separator_CXX \ -+ hardcode_automatic_CXX \ -+ module_cmds_CXX \ -+ module_expsym_cmds_CXX \ -+ lt_cv_prog_compiler_c_o_CXX \ -+ exclude_expsyms_CXX \ -+ include_expsyms_CXX; do -+ -+ case $var in -+ old_archive_cmds_CXX | \ -+ old_archive_from_new_cmds_CXX | \ -+ archive_cmds_CXX | \ -+ archive_expsym_cmds_CXX | \ -+ module_cmds_CXX | \ -+ module_expsym_cmds_CXX | \ -+ old_archive_from_expsyms_cmds_CXX | \ -+ export_symbols_cmds_CXX | \ -+ extract_expsyms_cmds | reload_cmds | finish_cmds | \ -+ postinstall_cmds | postuninstall_cmds | \ -+ old_postinstall_cmds | old_postuninstall_cmds | \ -+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) -+ # Double-quote double-evaled strings. -+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" -+ ;; -+ *) -+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" -+ ;; -+ esac -+ done -+ -+ case $lt_echo in -+ *'\$0 --fallback-echo"') -+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` -+ ;; -+ esac -+ -+cfgfile="$ofile" -+ -+ cat <<__EOF__ >> "$cfgfile" -+# ### BEGIN LIBTOOL TAG CONFIG: $tagname -+ -+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -+ -+# Shell to use when invoking shell scripts. -+SHELL=$lt_SHELL -+ -+# Whether or not to build shared libraries. -+build_libtool_libs=$enable_shared -+ -+# Whether or not to build static libraries. -+build_old_libs=$enable_static -+ -+# Whether or not to add -lc for building shared libraries. -+build_libtool_need_lc=$archive_cmds_need_lc_CXX -+ -+# Whether or not to disallow shared libs when runtime libs are static -+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX -+ -+# Whether or not to optimize for fast installation. -+fast_install=$enable_fast_install -+ -+# The host system. -+host_alias=$host_alias -+host=$host -+host_os=$host_os -+ -+# The build system. -+build_alias=$build_alias -+build=$build -+build_os=$build_os -+ -+# An echo program that does not interpret backslashes. -+echo=$lt_echo -+ -+# The archiver. -+AR=$lt_AR -+AR_FLAGS=$lt_AR_FLAGS -+ -+# A C compiler. -+LTCC=$lt_LTCC -+ -+# LTCC compiler flags. -+LTCFLAGS=$lt_LTCFLAGS -+ -+# A language-specific compiler. -+CC=$lt_compiler_CXX -+ -+# Is the compiler the GNU C compiler? -+with_gcc=$GCC_CXX -+ -+gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\` -+gcc_ver=\`gcc -dumpversion\` -+ -+# An ERE matcher. -+EGREP=$lt_EGREP -+ -+# The linker used to build libraries. -+LD=$lt_LD_CXX -+ -+# Whether we need hard or soft links. -+LN_S=$lt_LN_S -+ -+# A BSD-compatible nm program. -+NM=$lt_NM -+ -+# A symbol stripping program -+STRIP=$lt_STRIP -+ -+# Used to examine libraries when file_magic_cmd begins "file" -+MAGIC_CMD=$MAGIC_CMD -+ -+# Used on cygwin: DLL creation program. -+DLLTOOL="$DLLTOOL" -+ -+# Used on cygwin: object dumper. -+OBJDUMP="$OBJDUMP" -+ -+# Used on cygwin: assembler. -+AS="$AS" -+ -+# The name of the directory that contains temporary libtool files. -+objdir=$objdir -+ -+# How to create reloadable object files. -+reload_flag=$lt_reload_flag -+reload_cmds=$lt_reload_cmds -+ -+# How to pass a linker flag through the compiler. -+wl=$lt_lt_prog_compiler_wl_CXX -+ -+# Object file suffix (normally "o"). -+objext="$ac_objext" -+ -+# Old archive suffix (normally "a"). -+libext="$libext" -+ -+# Shared library suffix (normally ".so"). -+shrext_cmds='$shrext_cmds' -+ -+# Executable file suffix (normally ""). -+exeext="$exeext" -+ -+# Additional compiler flags for building library objects. -+pic_flag=$lt_lt_prog_compiler_pic_CXX -+pic_mode=$pic_mode -+ -+# What is the maximum length of a command? -+max_cmd_len=$lt_cv_sys_max_cmd_len -+ -+# Does compiler simultaneously support -c and -o options? -+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX -+ -+# Must we lock files when doing compilation? -+need_locks=$lt_need_locks -+ -+# Do we need the lib prefix for modules? -+need_lib_prefix=$need_lib_prefix -+ -+# Do we need a version for libraries? -+need_version=$need_version -+ -+# Whether dlopen is supported. -+dlopen_support=$enable_dlopen -+ -+# Whether dlopen of programs is supported. -+dlopen_self=$enable_dlopen_self -+ -+# Whether dlopen of statically linked programs is supported. -+dlopen_self_static=$enable_dlopen_self_static -+ -+# Compiler flag to prevent dynamic linking. -+link_static_flag=$lt_lt_prog_compiler_static_CXX -+ -+# Compiler flag to turn off builtin functions. -+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX -+ -+# Compiler flag to allow reflexive dlopens. -+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX -+ -+# Compiler flag to generate shared objects directly from archives. -+whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX -+ -+# Compiler flag to generate thread-safe objects. -+thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX -+ -+# Library versioning type. -+version_type=$version_type -+ -+# Format of library name prefix. -+libname_spec=$lt_libname_spec -+ -+# 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. -+library_names_spec=$lt_library_names_spec -+ -+# The coded name of the library, if different from the real name. -+soname_spec=$lt_soname_spec -+ -+# Commands used to build and install an old-style archive. -+RANLIB=$lt_RANLIB -+old_archive_cmds=$lt_old_archive_cmds_CXX -+old_postinstall_cmds=$lt_old_postinstall_cmds -+old_postuninstall_cmds=$lt_old_postuninstall_cmds -+ -+# Create an old-style archive from a shared archive. -+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX -+ -+# Create a temporary old-style archive to link instead of a shared archive. -+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX -+ -+# Commands used to build and install a shared archive. -+archive_cmds=$lt_archive_cmds_CXX -+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX -+postinstall_cmds=$lt_postinstall_cmds -+postuninstall_cmds=$lt_postuninstall_cmds -+ -+# Commands used to build a loadable module (assumed same as above if empty) -+module_cmds=$lt_module_cmds_CXX -+module_expsym_cmds=$lt_module_expsym_cmds_CXX -+ -+# Commands to strip libraries. -+old_striplib=$lt_old_striplib -+striplib=$lt_striplib -+ -+# Dependencies to place before the objects being linked to create a -+# shared library. -+predep_objects=\`echo $lt_predep_objects_CXX | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` -+ -+# Dependencies to place after the objects being linked to create a -+# shared library. -+postdep_objects=\`echo $lt_postdep_objects_CXX | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` -+ -+# Dependencies to place before the objects being linked to create a -+# shared library. -+predeps=$lt_predeps_CXX -+ -+# Dependencies to place after the objects being linked to create a -+# shared library. -+postdeps=$lt_postdeps_CXX -+ -+# The library search path used internally by the compiler when linking -+# a shared library. -+compiler_lib_search_path=\`echo $lt_compiler_lib_search_path_CXX | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` -+ -+# Method to check whether dependent libraries are shared objects. -+deplibs_check_method=$lt_deplibs_check_method -+ -+# Command to use when deplibs_check_method == file_magic. -+file_magic_cmd=$lt_file_magic_cmd -+ -+# Flag that allows shared libraries with undefined symbols to be built. -+allow_undefined_flag=$lt_allow_undefined_flag_CXX -+ -+# Flag that forces no undefined symbols. -+no_undefined_flag=$lt_no_undefined_flag_CXX -+ -+# Commands used to finish a libtool library installation in a directory. -+finish_cmds=$lt_finish_cmds -+ -+# Same as above, but a single script fragment to be evaled but not shown. -+finish_eval=$lt_finish_eval -+ -+# Take the output of nm and produce a listing of raw symbols and C names. -+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe -+ -+# Transform the output of nm in a proper C declaration -+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl -+ -+# Transform the output of nm in a C name address pair -+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address -+ -+# This is the shared library runtime path variable. -+runpath_var=$runpath_var -+ -+# This is the shared library path variable. -+shlibpath_var=$shlibpath_var -+ -+# Is shlibpath searched before the hard-coded library search path? -+shlibpath_overrides_runpath=$shlibpath_overrides_runpath -+ -+# How to hardcode a shared library path into an executable. -+hardcode_action=$hardcode_action_CXX -+ -+# Whether we should hardcode library paths into libraries. -+hardcode_into_libs=$hardcode_into_libs -+ -+# Flag to hardcode \$libdir into a binary during linking. -+# This must work even if \$libdir does not exist. -+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX -+ -+# If ld is used when linking, flag to hardcode \$libdir into -+# a binary during linking. This must work even if \$libdir does -+# not exist. -+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX -+ -+# Whether we need a single -rpath flag with a separated argument. -+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX -+ -+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the -+# resulting binary. -+hardcode_direct=$hardcode_direct_CXX -+ -+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -+# resulting binary. -+hardcode_minus_L=$hardcode_minus_L_CXX -+ -+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -+# the resulting binary. -+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX -+ -+# Set to yes if building a shared library automatically hardcodes DIR into the library -+# and all subsequent libraries and executables linked against it. -+hardcode_automatic=$hardcode_automatic_CXX -+ -+# Variables whose values should be saved in libtool wrapper scripts and -+# restored at relink time. -+variables_saved_for_relink="$variables_saved_for_relink" -+ -+# Whether libtool must link a program against all its dependency libraries. -+link_all_deplibs=$link_all_deplibs_CXX -+ -+# Compile-time system search path for libraries -+sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` -+ -+# Run-time system search path for libraries -+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec -+ -+# Fix the shell variable \$srcfile for the compiler. -+fix_srcfile_path="$fix_srcfile_path_CXX" -+ -+# Set to yes if exported symbols are required. -+always_export_symbols=$always_export_symbols_CXX -+ -+# The commands to list exported symbols. -+export_symbols_cmds=$lt_export_symbols_cmds_CXX -+ -+# The commands to extract the exported symbol list from a shared archive. -+extract_expsyms_cmds=$lt_extract_expsyms_cmds -+ -+# Symbols that should not be listed in the preloaded symbols. -+exclude_expsyms=$lt_exclude_expsyms_CXX -+ -+# Symbols that must always be exported. -+include_expsyms=$lt_include_expsyms_CXX -+ -+# ### END LIBTOOL TAG CONFIG: $tagname -+ -+__EOF__ -+ -+ -+else -+ # If there is no Makefile yet, we rely on a make rule to execute -+ # `config.status --recheck' to rerun these tests and create the -+ # libtool script then. -+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` -+ if test -f "$ltmain_in"; then -+ test -f Makefile && make "$ltmain" -+ fi -+fi -+ -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+CC=$lt_save_CC -+LDCXX=$LD -+LD=$lt_save_LD -+GCC=$lt_save_GCC -+with_gnu_ldcxx=$with_gnu_ld -+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 -+ -+ else -+ tagname="" -+ fi -+ ;; -+ -+ F77) -+ if test -n "$F77" && test "X$F77" != "Xno"; then -+ -+ac_ext=f -+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' -+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_f77_compiler_gnu -+ -+ -+archive_cmds_need_lc_F77=no -+allow_undefined_flag_F77= -+always_export_symbols_F77=no -+archive_expsym_cmds_F77= -+export_dynamic_flag_spec_F77= -+hardcode_direct_F77=no -+hardcode_libdir_flag_spec_F77= -+hardcode_libdir_flag_spec_ld_F77= -+hardcode_libdir_separator_F77= -+hardcode_minus_L_F77=no -+hardcode_automatic_F77=no -+module_cmds_F77= -+module_expsym_cmds_F77= -+link_all_deplibs_F77=unknown -+old_archive_cmds_F77=$old_archive_cmds -+no_undefined_flag_F77= -+whole_archive_flag_spec_F77= -+enable_shared_with_static_runtimes_F77=no -+ -+# Source file extension for f77 test sources. -+ac_ext=f -+ -+# Object file extension for compiled f77 test sources. -+objext=o -+objext_F77=$objext -+ -+# Code to be used in simple compile tests -+lt_simple_compile_test_code=" subroutine t\n return\n end\n" -+ -+# Code to be used in simple link tests -+lt_simple_link_test_code=" program t\n end\n" -+ -+# ltmain only uses $CC for tagged configurations so make sure $CC is set. -+ -+# 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 -+ -+ -+# save warnings/boilerplate of simple test code -+ac_outfile=conftest.$ac_objext -+printf "$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* -+ -+ac_outfile=conftest.$ac_objext -+printf "$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 conftest* -+ -+ -+# Allow CC to be a program name with arguments. -+lt_save_CC="$CC" -+CC=${F77-"f77"} -+compiler=$CC -+compiler_F77=$CC -+for cc_temp in $compiler""; do -+ case $cc_temp in -+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; -+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; -+ \-*) ;; -+ *) break;; -+ esac -+done -+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` -+ -+ -+echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 -+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6 -+echo "$as_me:$LINENO: result: $can_build_shared" >&5 -+echo "${ECHO_T}$can_build_shared" >&6 -+ -+echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 -+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&6 -+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 -+ ;; -+aix4* | aix5*) -+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then -+ test "$enable_shared" = yes && enable_static=no -+ fi -+ ;; -+esac -+echo "$as_me:$LINENO: result: $enable_shared" >&5 -+echo "${ECHO_T}$enable_shared" >&6 -+ -+echo "$as_me:$LINENO: checking whether to build static libraries" >&5 -+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6 -+# Make sure either enable_shared or enable_static is yes. -+test "$enable_shared" = yes || enable_static=yes -+echo "$as_me:$LINENO: result: $enable_static" >&5 -+echo "${ECHO_T}$enable_static" >&6 -+ -+GCC_F77="$G77" -+LD_F77="$LD" -+ -+lt_prog_compiler_wl_F77= -+lt_prog_compiler_pic_F77= -+lt_prog_compiler_static_F77= -+ -+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 -+ -+ if test "$GCC" = yes; then -+ lt_prog_compiler_wl_F77='-Wl,' -+ lt_prog_compiler_static_F77='-static' -+ -+ case $host_os in -+ aix*) -+ # All AIX code is PIC. -+ if test "$host_cpu" = ia64; then -+ # AIX 5 now supports IA64 processor -+ lt_prog_compiler_static_F77='-Bstatic' -+ fi -+ ;; -+ -+ amigaos*) -+ # 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_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' -+ ;; -+ -+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) -+ # PIC is the default for these OSes. -+ ;; -+ -+ mingw* | pw32* | os2*) -+ # 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). -+ lt_prog_compiler_pic_F77='-DDLL_EXPORT' -+ ;; -+ -+ darwin* | rhapsody*) -+ # PIC is the default on this platform -+ # Common symbols not allowed in MH_DYLIB files -+ lt_prog_compiler_pic_F77='-fno-common' -+ ;; -+ -+ interix3*) -+ # 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_prog_compiler_can_build_shared_F77=no -+ enable_shared=no -+ ;; -+ -+ sysv4*MP*) -+ if test -d /usr/nec; then -+ lt_prog_compiler_pic_F77=-Kconform_pic -+ fi -+ ;; -+ -+ hpux*) -+ # 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_prog_compiler_pic_F77='-fPIC' -+ ;; -+ esac -+ ;; -+ -+ *) -+ lt_prog_compiler_pic_F77='-fPIC' -+ ;; -+ esac -+ else -+ # PORTME Check for flag to pass linker flags through the system compiler. -+ case $host_os in -+ aix*) -+ lt_prog_compiler_wl_F77='-Wl,' -+ if test "$host_cpu" = ia64; then -+ # AIX 5 now supports IA64 processor -+ lt_prog_compiler_static_F77='-Bstatic' -+ else -+ lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' -+ fi -+ ;; -+ darwin*) -+ # PIC is the default on this platform -+ # Common symbols not allowed in MH_DYLIB files -+ case $cc_basename in -+ xlc*) -+ lt_prog_compiler_pic_F77='-qnocommon' -+ lt_prog_compiler_wl_F77='-Wl,' -+ ;; -+ esac -+ ;; -+ -+ mingw* | pw32* | os2*) -+ # 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). -+ lt_prog_compiler_pic_F77='-DDLL_EXPORT' -+ ;; -+ -+ hpux9* | hpux10* | hpux11*) -+ lt_prog_compiler_wl_F77='-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_prog_compiler_pic_F77='+Z' -+ ;; -+ esac -+ # Is there a better lt_prog_compiler_static that works with the bundled CC? -+ lt_prog_compiler_static_F77='${wl}-a ${wl}archive' -+ ;; -+ -+ irix5* | irix6* | nonstopux*) -+ lt_prog_compiler_wl_F77='-Wl,' -+ # PIC (with -KPIC) is the default. -+ lt_prog_compiler_static_F77='-non_shared' -+ ;; -+ -+ newsos6) -+ lt_prog_compiler_pic_F77='-KPIC' -+ lt_prog_compiler_static_F77='-Bstatic' -+ ;; -+ -+ linux*) -+ case $cc_basename in -+ icc* | ecc*) -+ lt_prog_compiler_wl_F77='-Wl,' -+ lt_prog_compiler_pic_F77='-KPIC' -+ lt_prog_compiler_static_F77='-static' -+ ;; -+ pgcc* | pgf77* | pgf90* | pgf95*) -+ # Portland Group compilers (*not* the Pentium gcc compiler, -+ # which looks to be a dead project) -+ lt_prog_compiler_wl_F77='-Wl,' -+ lt_prog_compiler_pic_F77='-fpic' -+ lt_prog_compiler_static_F77='-Bstatic' -+ ;; -+ ccc*) -+ lt_prog_compiler_wl_F77='-Wl,' -+ # All Alpha code is PIC. -+ lt_prog_compiler_static_F77='-non_shared' -+ ;; -+ esac -+ ;; -+ -+ osf3* | osf4* | osf5*) -+ lt_prog_compiler_wl_F77='-Wl,' -+ # All OSF/1 code is PIC. -+ lt_prog_compiler_static_F77='-non_shared' -+ ;; -+ -+ solaris*) -+ lt_prog_compiler_pic_F77='-KPIC' -+ lt_prog_compiler_static_F77='-Bstatic' -+ case $cc_basename in -+ f77* | f90* | f95*) -+ lt_prog_compiler_wl_F77='-Qoption ld ';; -+ *) -+ lt_prog_compiler_wl_F77='-Wl,';; -+ esac -+ ;; -+ -+ sunos4*) -+ lt_prog_compiler_wl_F77='-Qoption ld ' -+ lt_prog_compiler_pic_F77='-PIC' -+ lt_prog_compiler_static_F77='-Bstatic' -+ ;; -+ -+ sysv4 | sysv4.2uw2* | sysv4.3*) -+ lt_prog_compiler_wl_F77='-Wl,' -+ lt_prog_compiler_pic_F77='-KPIC' -+ lt_prog_compiler_static_F77='-Bstatic' -+ ;; -+ -+ sysv4*MP*) -+ if test -d /usr/nec ;then -+ lt_prog_compiler_pic_F77='-Kconform_pic' -+ lt_prog_compiler_static_F77='-Bstatic' -+ fi -+ ;; -+ -+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) -+ lt_prog_compiler_wl_F77='-Wl,' -+ lt_prog_compiler_pic_F77='-KPIC' -+ lt_prog_compiler_static_F77='-Bstatic' -+ ;; -+ -+ unicos*) -+ lt_prog_compiler_wl_F77='-Wl,' -+ lt_prog_compiler_can_build_shared_F77=no -+ ;; -+ -+ uts4*) -+ lt_prog_compiler_pic_F77='-pic' -+ lt_prog_compiler_static_F77='-Bstatic' -+ ;; -+ -+ *) -+ lt_prog_compiler_can_build_shared_F77=no -+ ;; -+ esac -+ fi -+ -+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 -+echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6 -+ -+# -+# Check to make sure the PIC flag actually works. -+# -+if test -n "$lt_prog_compiler_pic_F77"; then -+ -+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 -+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6 -+if test "${lt_prog_compiler_pic_works_F77+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ lt_prog_compiler_pic_works_F77=no -+ ac_outfile=conftest.$ac_objext -+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext -+ lt_compiler_flag="$lt_prog_compiler_pic_F77" -+ # 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:15894: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>conftest.err) -+ ac_status=$? -+ cat conftest.err >&5 -+ echo "$as_me:15898: \$? = $ac_status" >&5 -+ 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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp -+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 -+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then -+ lt_prog_compiler_pic_works_F77=yes -+ fi -+ fi -+ $rm conftest* -+ -+fi -+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5 -+echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6 -+ -+if test x"$lt_prog_compiler_pic_works_F77" = xyes; then -+ case $lt_prog_compiler_pic_F77 in -+ "" | " "*) ;; -+ *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; -+ esac -+else -+ lt_prog_compiler_pic_F77= -+ lt_prog_compiler_can_build_shared_F77=no -+fi -+ -+fi -+case $host_os in -+ # For platforms which do not support PIC, -DPIC is meaningless: -+ *djgpp*) -+ lt_prog_compiler_pic_F77= -+ ;; -+ *) -+ lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" -+ ;; -+esac -+ -+# -+# Check to make sure the static flag actually works. -+# -+wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\" -+echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6 -+if test "${lt_prog_compiler_static_works_F77+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ lt_prog_compiler_static_works_F77=no -+ save_LDFLAGS="$LDFLAGS" -+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag" -+ printf "$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>&5 -+ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp -+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 -+ if diff conftest.exp conftest.er2 >/dev/null; then -+ lt_prog_compiler_static_works_F77=yes -+ fi -+ else -+ lt_prog_compiler_static_works_F77=yes -+ fi -+ fi -+ $rm conftest* -+ LDFLAGS="$save_LDFLAGS" -+ -+fi -+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_F77" >&5 -+echo "${ECHO_T}$lt_prog_compiler_static_works_F77" >&6 -+ -+if test x"$lt_prog_compiler_static_works_F77" = xyes; then -+ : -+else -+ lt_prog_compiler_static_F77= -+fi -+ -+ -+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 -+if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ lt_cv_prog_compiler_c_o_F77=no -+ $rm -r conftest 2>/dev/null -+ mkdir conftest -+ cd conftest -+ mkdir out -+ printf "$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:15998: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>out/conftest.err) -+ ac_status=$? -+ cat out/conftest.err >&5 -+ echo "$as_me:16002: \$? = $ac_status" >&5 -+ 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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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_cv_prog_compiler_c_o_F77=yes -+ fi -+ fi -+ chmod u+w . 2>&5 -+ $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 .. -+ rmdir conftest -+ $rm conftest* -+ -+fi -+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 -+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6 -+ -+ -+hard_links="nottested" -+if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then -+ # do not overwrite the value of need_locks provided by the user -+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 -+ 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 -+ echo "$as_me:$LINENO: result: $hard_links" >&5 -+echo "${ECHO_T}$hard_links" >&6 -+ if test "$hard_links" = no; then -+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} -+ need_locks=warn -+ fi -+else -+ need_locks=no -+fi -+ -+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 -+ -+ runpath_var= -+ allow_undefined_flag_F77= -+ enable_shared_with_static_runtimes_F77=no -+ archive_cmds_F77= -+ archive_expsym_cmds_F77= -+ old_archive_From_new_cmds_F77= -+ old_archive_from_expsyms_cmds_F77= -+ export_dynamic_flag_spec_F77= -+ whole_archive_flag_spec_F77= -+ thread_safe_flag_spec_F77= -+ hardcode_libdir_flag_spec_F77= -+ hardcode_libdir_flag_spec_ld_F77= -+ hardcode_libdir_separator_F77= -+ hardcode_direct_F77=no -+ hardcode_minus_L_F77=no -+ hardcode_shlibpath_var_F77=unsupported -+ link_all_deplibs_F77=unknown -+ hardcode_automatic_F77=no -+ module_cmds_F77= -+ module_expsym_cmds_F77= -+ always_export_symbols_F77=no -+ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' -+ # include_expsyms should be a list of space-separated symbols to be *always* -+ # included in the symbol list -+ include_expsyms_F77= -+ # 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'. -+ exclude_expsyms_F77="_GLOBAL_OFFSET_TABLE_" -+ # 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. -+ extract_expsyms_cmds= -+ # Just being paranoid about ensuring that cc_basename is set. -+ for cc_temp in $compiler""; do -+ case $cc_temp in -+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; -+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; -+ \-*) ;; -+ *) break;; -+ esac -+done -+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` -+ -+ case $host_os in -+ cygwin* | mingw* | pw32*) -+ # 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 -+ ;; -+ esac -+ -+ ld_shlibs_F77=yes -+ if test "$with_gnu_ld" = 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 -+ hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' -+ export_dynamic_flag_spec_F77='${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 -+ whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' -+ else -+ whole_archive_flag_spec_F77= -+ fi -+ supports_anon_versioning=no -+ case `$LD -v 2>/dev/null` in -+ *\ [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 -+ aix3* | aix4* | aix5*) -+ # On AIX/PPC, the GNU linker is very broken -+ if test "$host_cpu" != ia64; then -+ ld_shlibs_F77=no -+ cat <&2 -+ -+*** Warning: the GNU linker, at least up to release 2.9.1, 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 modify your PATH -+*** so that a non-GNU linker is found, and then restart. -+ -+EOF -+ fi -+ ;; -+ -+ amigaos*) -+ archive_cmds_F77='$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)' -+ hardcode_libdir_flag_spec_F77='-L$libdir' -+ hardcode_minus_L_F77=yes -+ -+ # Samuel A. Falvo II reports -+ # that the semantics of dynamic libraries on AmigaOS, at least up -+ # to version 4, is to share data among multiple programs linked -+ # with the same dynamic library. Since this doesn't match the -+ # behavior of shared libraries on other platforms, we can't use -+ # them. -+ ld_shlibs_F77=no -+ ;; -+ -+ beos*) -+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then -+ allow_undefined_flag_F77=unsupported -+ # Joseph Beckenbach says some releases of gcc -+ # support --undefined. This deserves some investigation. FIXME -+ archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ else -+ ld_shlibs_F77=no -+ fi -+ ;; -+ -+ cygwin* | mingw* | pw32*) -+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, -+ # as there is no search path for DLLs. -+ hardcode_libdir_flag_spec_F77='-L$libdir' -+ allow_undefined_flag_F77=unsupported -+ always_export_symbols_F77=no -+ enable_shared_with_static_runtimes_F77=yes -+ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' -+ -+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then -+ archive_cmds_F77='$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... -+ archive_expsym_cmds_F77='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 -+ ld_shlibs_F77=no -+ fi -+ ;; -+ -+ interix3*) -+ hardcode_direct_F77=no -+ hardcode_shlibpath_var_F77=no -+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' -+ export_dynamic_flag_spec_F77='${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. -+ archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' -+ archive_expsym_cmds_F77='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' -+ ;; -+ -+ linux*) -+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then -+ tmp_addflag= -+ case $cc_basename,$host_cpu in -+ pgcc*) # Portland Group C compiler -+ whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' -+ tmp_addflag=' $pic_flag' -+ ;; -+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers -+ whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$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' ;; -+ esac -+ archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ -+ if test $supports_anon_versioning = yes; then -+ archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ -+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ -+ $echo "local: *; };" >> $output_objdir/$libname.ver~ -+ $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' -+ fi -+ else -+ ld_shlibs_F77=no -+ fi -+ ;; -+ -+ netbsd*) -+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then -+ archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' -+ wlarc= -+ else -+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ archive_expsym_cmds_F77='$CC -shared $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 -+ ld_shlibs_F77=no -+ cat <&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. -+ -+EOF -+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then -+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ else -+ ld_shlibs_F77=no -+ fi -+ ;; -+ -+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) -+ case `$LD -v 2>&1` in -+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) -+ ld_shlibs_F77=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 -+ ;; -+ *) -+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then -+ hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' -+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' -+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' -+ else -+ ld_shlibs_F77=no -+ fi -+ ;; -+ esac -+ ;; -+ -+ sunos4*) -+ archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' -+ wlarc= -+ hardcode_direct_F77=yes -+ hardcode_shlibpath_var_F77=no -+ ;; -+ -+ *) -+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then -+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ else -+ ld_shlibs_F77=no -+ fi -+ ;; -+ esac -+ -+ if test "$ld_shlibs_F77" = no; then -+ runpath_var= -+ hardcode_libdir_flag_spec_F77= -+ export_dynamic_flag_spec_F77= -+ whole_archive_flag_spec_F77= -+ fi -+ else -+ # PORTME fill in a description of your system's linker (not GNU ld) -+ case $host_os in -+ aix3*) -+ allow_undefined_flag_F77=unsupported -+ always_export_symbols_F77=yes -+ archive_expsym_cmds_F77='$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. -+ hardcode_minus_L_F77=yes -+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then -+ # Neither direct hardcoding nor static linking is supported with a -+ # broken collect2. -+ hardcode_direct_F77=unsupported -+ fi -+ ;; -+ -+ aix4* | aix5*) -+ 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 -+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then -+ export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' -+ else -+ export_symbols_cmds_F77='$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].*|aix5*) -+ 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. -+ -+ archive_cmds_F77='' -+ hardcode_direct_F77=yes -+ hardcode_libdir_separator_F77=':' -+ link_all_deplibs_F77=yes -+ -+ 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 -+ hardcode_direct_F77=yes -+ else -+ # We have old collect2 -+ hardcode_direct_F77=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 -+ hardcode_minus_L_F77=yes -+ hardcode_libdir_flag_spec_F77='-L$libdir' -+ hardcode_libdir_separator_F77= -+ 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 -+ -+ # It seems that -bexpall does not export symbols beginning with -+ # underscore (_), so it is better to generate a list of symbols to export. -+ always_export_symbols_F77=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. -+ allow_undefined_flag_F77='-berok' -+ # Determine the default libpath from the value encoded in an empty executable. -+ cat >conftest.$ac_ext <<_ACEOF -+ program main -+ -+ end -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -+ (eval $ac_link) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_f77_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest$ac_exeext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ -+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -+}'` -+# Check for a 64-bit object if we didn't find anything. -+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -+}'`; fi -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi -+ -+ hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" -+ archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" -+ else -+ if test "$host_cpu" = ia64; then -+ hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' -+ allow_undefined_flag_F77="-z nodefs" -+ archive_expsym_cmds_F77="\$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. -+ cat >conftest.$ac_ext <<_ACEOF -+ program main -+ -+ end -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -+ (eval $ac_link) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_f77_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest$ac_exeext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ -+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -+}'` -+# Check for a 64-bit object if we didn't find anything. -+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -+}'`; fi -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi -+ -+ hardcode_libdir_flag_spec_F77='${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. -+ no_undefined_flag_F77=' ${wl}-bernotok' -+ allow_undefined_flag_F77=' ${wl}-berok' -+ # Exported symbols can be pulled into shared objects from archives -+ whole_archive_flag_spec_F77='$convenience' -+ archive_cmds_need_lc_F77=yes -+ # This is similar to how AIX traditionally builds its shared libraries. -+ archive_expsym_cmds_F77="\$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*) -+ archive_cmds_F77='$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)' -+ hardcode_libdir_flag_spec_F77='-L$libdir' -+ hardcode_minus_L_F77=yes -+ # see comment about different semantics on the GNU ld section -+ ld_shlibs_F77=no -+ ;; -+ -+ bsdi[45]*) -+ export_dynamic_flag_spec_F77=-rdynamic -+ ;; -+ -+ cygwin* | mingw* | pw32*) -+ # 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. -+ hardcode_libdir_flag_spec_F77=' ' -+ allow_undefined_flag_F77=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. -+ archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' -+ # The linker will automatically build a .lib file if we build a DLL. -+ old_archive_From_new_cmds_F77='true' -+ # FIXME: Should let the user specify the lib program. -+ old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs' -+ fix_srcfile_path_F77='`cygpath -w "$srcfile"`' -+ enable_shared_with_static_runtimes_F77=yes -+ ;; -+ -+ darwin* | rhapsody*) -+ case $host_os in -+ rhapsody* | darwin1.[012]) -+ allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' -+ ;; -+ *) # Darwin 1.3 on -+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then -+ allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' -+ else -+ case ${MACOSX_DEPLOYMENT_TARGET} in -+ 10.[012]) -+ allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' -+ ;; -+ 10.*) -+ allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' -+ ;; -+ esac -+ fi -+ ;; -+ esac -+ archive_cmds_need_lc_F77=no -+ hardcode_direct_F77=no -+ hardcode_automatic_F77=yes -+ hardcode_shlibpath_var_F77=unsupported -+ whole_archive_flag_spec_F77='' -+ link_all_deplibs_F77=yes -+ if test "$GCC" = yes ; then -+ output_verbose_link_cmd='echo' -+ archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' -+ module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' -+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds -+ archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ else -+ case $cc_basename in -+ xlc*) -+ output_verbose_link_cmd='echo' -+ archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' -+ module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' -+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds -+ archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ ;; -+ *) -+ ld_shlibs_F77=no -+ ;; -+ esac -+ fi -+ ;; -+ -+ dgux*) -+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_libdir_flag_spec_F77='-L$libdir' -+ hardcode_shlibpath_var_F77=no -+ ;; -+ -+ freebsd1*) -+ ld_shlibs_F77=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*) -+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' -+ hardcode_libdir_flag_spec_F77='-R$libdir' -+ hardcode_direct_F77=yes -+ hardcode_shlibpath_var_F77=no -+ ;; -+ -+ # Unfortunately, older versions of FreeBSD 2 do not have this feature. -+ freebsd2*) -+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_direct_F77=yes -+ hardcode_minus_L_F77=yes -+ hardcode_shlibpath_var_F77=no -+ ;; -+ -+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries. -+ freebsd* | kfreebsd*-gnu | dragonfly*) -+ archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' -+ hardcode_libdir_flag_spec_F77='-R$libdir' -+ hardcode_direct_F77=yes -+ hardcode_shlibpath_var_F77=no -+ ;; -+ -+ hpux9*) -+ if test "$GCC" = yes; then -+ archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' -+ else -+ archive_cmds_F77='$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 -+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' -+ hardcode_libdir_separator_F77=: -+ hardcode_direct_F77=yes -+ -+ # hardcode_minus_L: Not really in the search PATH, -+ # but as the default location of the library. -+ hardcode_minus_L_F77=yes -+ export_dynamic_flag_spec_F77='${wl}-E' -+ ;; -+ -+ hpux10*) -+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then -+ archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -+ fi -+ if test "$with_gnu_ld" = no; then -+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' -+ hardcode_libdir_separator_F77=: -+ -+ hardcode_direct_F77=yes -+ export_dynamic_flag_spec_F77='${wl}-E' -+ -+ # hardcode_minus_L: Not really in the search PATH, -+ # but as the default location of the library. -+ hardcode_minus_L_F77=yes -+ fi -+ ;; -+ -+ hpux11*) -+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then -+ case $host_cpu in -+ hppa*64*) -+ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ ia64*) -+ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ *) -+ archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ esac -+ else -+ case $host_cpu in -+ hppa*64*) -+ archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ ia64*) -+ archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ *) -+ archive_cmds_F77='$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 -+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' -+ hardcode_libdir_separator_F77=: -+ -+ case $host_cpu in -+ hppa*64*|ia64*) -+ hardcode_libdir_flag_spec_ld_F77='+b $libdir' -+ hardcode_direct_F77=no -+ hardcode_shlibpath_var_F77=no -+ ;; -+ *) -+ hardcode_direct_F77=yes -+ export_dynamic_flag_spec_F77='${wl}-E' -+ -+ # hardcode_minus_L: Not really in the search PATH, -+ # but as the default location of the library. -+ hardcode_minus_L_F77=yes -+ ;; -+ esac -+ fi -+ ;; -+ -+ irix5* | irix6* | nonstopux*) -+ if test "$GCC" = yes; then -+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ else -+ archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' -+ hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' -+ fi -+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' -+ hardcode_libdir_separator_F77=: -+ link_all_deplibs_F77=yes -+ ;; -+ -+ netbsd*) -+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then -+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out -+ else -+ archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF -+ fi -+ hardcode_libdir_flag_spec_F77='-R$libdir' -+ hardcode_direct_F77=yes -+ hardcode_shlibpath_var_F77=no -+ ;; -+ -+ newsos6) -+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_direct_F77=yes -+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' -+ hardcode_libdir_separator_F77=: -+ hardcode_shlibpath_var_F77=no -+ ;; -+ -+ openbsd*) -+ hardcode_direct_F77=yes -+ hardcode_shlibpath_var_F77=no -+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then -+ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' -+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' -+ export_dynamic_flag_spec_F77='${wl}-E' -+ else -+ case $host_os in -+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) -+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_libdir_flag_spec_F77='-R$libdir' -+ ;; -+ *) -+ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' -+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' -+ ;; -+ esac -+ fi -+ ;; -+ -+ os2*) -+ hardcode_libdir_flag_spec_F77='-L$libdir' -+ hardcode_minus_L_F77=yes -+ allow_undefined_flag_F77=unsupported -+ archive_cmds_F77='$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' -+ old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' -+ ;; -+ -+ osf3*) -+ if test "$GCC" = yes; then -+ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' -+ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ else -+ allow_undefined_flag_F77=' -expect_unresolved \*' -+ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' -+ fi -+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' -+ hardcode_libdir_separator_F77=: -+ ;; -+ -+ osf4* | osf5*) # as osf3* with the addition of -msym flag -+ if test "$GCC" = yes; then -+ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' -+ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' -+ else -+ allow_undefined_flag_F77=' -expect_unresolved \*' -+ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' -+ archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ -+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_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 -+ hardcode_libdir_flag_spec_F77='-rpath $libdir' -+ fi -+ hardcode_libdir_separator_F77=: -+ ;; -+ -+ solaris*) -+ no_undefined_flag_F77=' -z text' -+ if test "$GCC" = yes; then -+ wlarc='${wl}' -+ archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ -+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' -+ else -+ wlarc='' -+ archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ archive_expsym_cmds_F77='$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' -+ fi -+ hardcode_libdir_flag_spec_F77='-R$libdir' -+ hardcode_shlibpath_var_F77=no -+ case $host_os in -+ solaris2.[0-5] | solaris2.[0-5].*) ;; -+ *) -+ # The compiler driver will combine linker options so we -+ # cannot just pass the convience library names through -+ # without $wl, iff we do not link with $LD. -+ # Luckily, gcc supports the same syntax we need for Sun Studio. -+ # Supported since Solaris 2.6 (maybe 2.5.1?) -+ case $wlarc in -+ '') -+ whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;; -+ *) -+ whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; -+ esac ;; -+ esac -+ link_all_deplibs_F77=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. -+ archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' -+ fi -+ hardcode_libdir_flag_spec_F77='-L$libdir' -+ hardcode_direct_F77=yes -+ hardcode_minus_L_F77=yes -+ hardcode_shlibpath_var_F77=no -+ ;; -+ -+ sysv4) -+ case $host_vendor in -+ sni) -+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_direct_F77=yes # is this really true??? -+ ;; -+ siemens) -+ ## LD is ld it makes a PLAMLIB -+ ## CC just makes a GrossModule. -+ archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' -+ reload_cmds_F77='$CC -r -o $output$reload_objs' -+ hardcode_direct_F77=no -+ ;; -+ motorola) -+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie -+ ;; -+ esac -+ runpath_var='LD_RUN_PATH' -+ hardcode_shlibpath_var_F77=no -+ ;; -+ -+ sysv4.3*) -+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_shlibpath_var_F77=no -+ export_dynamic_flag_spec_F77='-Bexport' -+ ;; -+ -+ sysv4*MP*) -+ if test -d /usr/nec; then -+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_shlibpath_var_F77=no -+ runpath_var=LD_RUN_PATH -+ hardcode_runpath_var=yes -+ ld_shlibs_F77=yes -+ fi -+ ;; -+ -+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*) -+ no_undefined_flag_F77='${wl}-z,text' -+ archive_cmds_need_lc_F77=no -+ hardcode_shlibpath_var_F77=no -+ runpath_var='LD_RUN_PATH' -+ -+ if test "$GCC" = yes; then -+ archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds_F77='$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. -+ no_undefined_flag_F77='${wl}-z,text' -+ allow_undefined_flag_F77='${wl}-z,nodefs' -+ archive_cmds_need_lc_F77=no -+ hardcode_shlibpath_var_F77=no -+ hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' -+ hardcode_libdir_separator_F77=':' -+ link_all_deplibs_F77=yes -+ export_dynamic_flag_spec_F77='${wl}-Bexport' -+ runpath_var='LD_RUN_PATH' -+ -+ if test "$GCC" = yes; then -+ archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ fi -+ ;; -+ -+ uts4*) -+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_libdir_flag_spec_F77='-L$libdir' -+ hardcode_shlibpath_var_F77=no -+ ;; -+ -+ *) -+ ld_shlibs_F77=no -+ ;; -+ esac -+ fi -+ -+echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 -+echo "${ECHO_T}$ld_shlibs_F77" >&6 -+test "$ld_shlibs_F77" = no && can_build_shared=no -+ -+# -+# Do we need to explicitly link libc? -+# -+case "x$archive_cmds_need_lc_F77" in -+x|xyes) -+ # Assume -lc should be added -+ archive_cmds_need_lc_F77=yes -+ -+ if test "$enable_shared" = yes && test "$GCC" = yes; then -+ case $archive_cmds_F77 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. -+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 -+ $rm conftest* -+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext -+ -+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } 2>conftest.err; then -+ soname=conftest -+ lib=conftest -+ libobjs=conftest.$ac_objext -+ deplibs= -+ wl=$lt_prog_compiler_wl_F77 -+ pic_flag=$lt_prog_compiler_pic_F77 -+ compiler_flags=-v -+ linker_flags=-v -+ verstring= -+ output_objdir=. -+ libname=conftest -+ lt_save_allow_undefined_flag=$allow_undefined_flag_F77 -+ allow_undefined_flag_F77= -+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 -+ (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } -+ then -+ archive_cmds_need_lc_F77=no -+ else -+ archive_cmds_need_lc_F77=yes -+ fi -+ allow_undefined_flag_F77=$lt_save_allow_undefined_flag -+ else -+ cat conftest.err 1>&5 -+ fi -+ $rm conftest* -+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 -+echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6 -+ ;; -+ esac -+ fi -+ ;; -+esac -+ -+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 -+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" -+if test "$GCC" = yes; then -+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` -+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then -+ # 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. -+ 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 -+else -+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -+fi -+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 -+ 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' -+ ;; -+ -+aix4* | aix5*) -+ version_type=linux -+ 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*) -+ 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=`$echo "X$lib" | $Xsed -e '\''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' -+ ;; -+ -+beos*) -+ library_names_spec='${libname}${shared_ext}' -+ dynamic_linker="$host_os ld.so" -+ shlibpath_var=LIBRARY_PATH -+ ;; -+ -+bsdi[45]*) -+ version_type=linux -+ 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*) -+ version_type=windows -+ shrext_cmds=".dll" -+ need_version=no -+ need_lib_prefix=no -+ -+ case $GCC,$host_os in -+ yes,cygwin* | yes,mingw* | yes,pw32*) -+ 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' -+ 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}' -+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" -+ ;; -+ mingw*) -+ # MinGW DLLs use traditional 'lib' prefix -+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' -+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` -+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then -+ # It is most probably a Windows format PATH printed by -+ # mingw gcc, but we are running on Cygwin. Gcc prints its search -+ # path with ; separators, and with drive letters. We can handle the -+ # drive letters (cygwin fileutils understands them), so leave them, -+ # especially as we might pass files found there to a mingw objdump, -+ # which wouldn't understand a cygwinified path. Ahh. -+ 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 -+ ;; -+ 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 -+ ;; -+ -+ *) -+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' -+ ;; -+ esac -+ dynamic_linker='Win32 ld.exe' -+ # 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}${versuffix}$shared_ext ${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`' -+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. -+ if test "$GCC" = yes; then -+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` -+ else -+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' -+ fi -+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' -+ ;; -+ -+dgux*) -+ 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 -+ ;; -+ -+freebsd1*) -+ dynamic_linker=no -+ ;; -+ -+kfreebsd*-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='GNU ld.so' -+ ;; -+ -+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[123]*) 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 -+ ;; -+ freebsd*) # from 4.6 on -+ shlibpath_overrides_runpath=yes -+ hardcode_into_libs=yes -+ ;; -+ esac -+ ;; -+ -+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 -+ 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' -+ ;; -+ -+interix3*) -+ 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' -+ 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 -+ 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 Linux ELF. -+linux*) -+ 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' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ # 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 -+ -+ # find out which ABI we are using -+ libsuff= -+ case "$host_cpu" in -+ x86_64*|s390x*|powerpc64*) -+ echo '#line 17447 "configure"' > conftest.$ac_ext -+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; then -+ case `/usr/bin/file conftest.$ac_objext` in -+ *64-bit*) -+ libsuff=64 -+ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" -+ ;; -+ esac -+ fi -+ rm -rf conftest* -+ ;; -+ esac -+ -+ # 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/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` -+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $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' -+ ;; -+ -+knetbsd*-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='GNU ld.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 -+ 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=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=yes -+ ;; -+ -+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" -+ ;; -+ -+solaris*) -+ 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=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 -+ 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 -+ export_dynamic_flag_spec='${wl}-Blargedynsym' -+ 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 -+ 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 -+ 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' -+ shlibpath_overrides_runpath=no -+ else -+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' -+ shlibpath_overrides_runpath=yes -+ 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' -+ ;; -+ -+uts4*) -+ version_type=linux -+ 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 -+echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -+echo "${ECHO_T}$dynamic_linker" >&6 -+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 -+ -+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 -+hardcode_action_F77= -+if test -n "$hardcode_libdir_flag_spec_F77" || \ -+ test -n "$runpath_var_F77" || \ -+ test "X$hardcode_automatic_F77" = "Xyes" ; then -+ -+ # We can hardcode non-existant directories. -+ if test "$hardcode_direct_F77" != 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_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && -+ test "$hardcode_minus_L_F77" != no; then -+ # Linking always hardcodes the temporary library directory. -+ hardcode_action_F77=relink -+ else -+ # We can link without hardcoding, and we can hardcode nonexisting dirs. -+ hardcode_action_F77=immediate -+ fi -+else -+ # We cannot hardcode anything, or else we can only hardcode existing -+ # directories. -+ hardcode_action_F77=unsupported -+fi -+echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 -+echo "${ECHO_T}$hardcode_action_F77" >&6 -+ -+if test "$hardcode_action_F77" = relink; 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 -+ -+ -+# The else clause should only fire when bootstrapping the -+# libtool distribution, otherwise you forgot to ship ltmain.sh -+# with your package, and you will get complaints that there are -+# no rules to generate ltmain.sh. -+if test -f "$ltmain"; then -+ # 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 -+ # Now quote all the things that may contain metacharacters while being -+ # careful not to overquote the AC_SUBSTed values. We take copies of the -+ # variables and quote the copies for generation of the libtool script. -+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ -+ SED SHELL STRIP \ -+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ -+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ -+ deplibs_check_method reload_flag reload_cmds need_locks \ -+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ -+ lt_cv_sys_global_symbol_to_c_name_address \ -+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ -+ old_postinstall_cmds old_postuninstall_cmds \ -+ compiler_F77 \ -+ CC_F77 \ -+ LD_F77 \ -+ lt_prog_compiler_wl_F77 \ -+ lt_prog_compiler_pic_F77 \ -+ lt_prog_compiler_static_F77 \ -+ lt_prog_compiler_no_builtin_flag_F77 \ -+ export_dynamic_flag_spec_F77 \ -+ thread_safe_flag_spec_F77 \ -+ whole_archive_flag_spec_F77 \ -+ enable_shared_with_static_runtimes_F77 \ -+ old_archive_cmds_F77 \ -+ old_archive_from_new_cmds_F77 \ -+ predep_objects_F77 \ -+ postdep_objects_F77 \ -+ predeps_F77 \ -+ postdeps_F77 \ -+ compiler_lib_search_path_F77 \ -+ archive_cmds_F77 \ -+ archive_expsym_cmds_F77 \ -+ postinstall_cmds_F77 \ -+ postuninstall_cmds_F77 \ -+ old_archive_from_expsyms_cmds_F77 \ -+ allow_undefined_flag_F77 \ -+ no_undefined_flag_F77 \ -+ export_symbols_cmds_F77 \ -+ hardcode_libdir_flag_spec_F77 \ -+ hardcode_libdir_flag_spec_ld_F77 \ -+ hardcode_libdir_separator_F77 \ -+ hardcode_automatic_F77 \ -+ module_cmds_F77 \ -+ module_expsym_cmds_F77 \ -+ lt_cv_prog_compiler_c_o_F77 \ -+ exclude_expsyms_F77 \ -+ include_expsyms_F77; do -+ -+ case $var in -+ old_archive_cmds_F77 | \ -+ old_archive_from_new_cmds_F77 | \ -+ archive_cmds_F77 | \ -+ archive_expsym_cmds_F77 | \ -+ module_cmds_F77 | \ -+ module_expsym_cmds_F77 | \ -+ old_archive_from_expsyms_cmds_F77 | \ -+ export_symbols_cmds_F77 | \ -+ extract_expsyms_cmds | reload_cmds | finish_cmds | \ -+ postinstall_cmds | postuninstall_cmds | \ -+ old_postinstall_cmds | old_postuninstall_cmds | \ -+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) -+ # Double-quote double-evaled strings. -+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" -+ ;; -+ *) -+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" -+ ;; -+ esac -+ done -+ -+ case $lt_echo in -+ *'\$0 --fallback-echo"') -+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` -+ ;; -+ esac -+ -+cfgfile="$ofile" -+ -+ cat <<__EOF__ >> "$cfgfile" -+# ### BEGIN LIBTOOL TAG CONFIG: $tagname -+ -+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -+ -+# Shell to use when invoking shell scripts. -+SHELL=$lt_SHELL -+ -+# Whether or not to build shared libraries. -+build_libtool_libs=$enable_shared -+ -+# Whether or not to build static libraries. -+build_old_libs=$enable_static -+ -+# Whether or not to add -lc for building shared libraries. -+build_libtool_need_lc=$archive_cmds_need_lc_F77 -+ -+# Whether or not to disallow shared libs when runtime libs are static -+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 -+ -+# Whether or not to optimize for fast installation. -+fast_install=$enable_fast_install -+ -+# The host system. -+host_alias=$host_alias -+host=$host -+host_os=$host_os -+ -+# The build system. -+build_alias=$build_alias -+build=$build -+build_os=$build_os -+ -+# An echo program that does not interpret backslashes. -+echo=$lt_echo -+ -+# The archiver. -+AR=$lt_AR -+AR_FLAGS=$lt_AR_FLAGS -+ -+# A C compiler. -+LTCC=$lt_LTCC -+ -+# LTCC compiler flags. -+LTCFLAGS=$lt_LTCFLAGS -+ -+# A language-specific compiler. -+CC=$lt_compiler_F77 -+ -+# Is the compiler the GNU C compiler? -+with_gcc=$GCC_F77 -+ -+gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\` -+gcc_ver=\`gcc -dumpversion\` -+ -+# An ERE matcher. -+EGREP=$lt_EGREP -+ -+# The linker used to build libraries. -+LD=$lt_LD_F77 -+ -+# Whether we need hard or soft links. -+LN_S=$lt_LN_S -+ -+# A BSD-compatible nm program. -+NM=$lt_NM -+ -+# A symbol stripping program -+STRIP=$lt_STRIP -+ -+# Used to examine libraries when file_magic_cmd begins "file" -+MAGIC_CMD=$MAGIC_CMD -+ -+# Used on cygwin: DLL creation program. -+DLLTOOL="$DLLTOOL" -+ -+# Used on cygwin: object dumper. -+OBJDUMP="$OBJDUMP" -+ -+# Used on cygwin: assembler. -+AS="$AS" -+ -+# The name of the directory that contains temporary libtool files. -+objdir=$objdir -+ -+# How to create reloadable object files. -+reload_flag=$lt_reload_flag -+reload_cmds=$lt_reload_cmds -+ -+# How to pass a linker flag through the compiler. -+wl=$lt_lt_prog_compiler_wl_F77 -+ -+# Object file suffix (normally "o"). -+objext="$ac_objext" -+ -+# Old archive suffix (normally "a"). -+libext="$libext" -+ -+# Shared library suffix (normally ".so"). -+shrext_cmds='$shrext_cmds' -+ -+# Executable file suffix (normally ""). -+exeext="$exeext" -+ -+# Additional compiler flags for building library objects. -+pic_flag=$lt_lt_prog_compiler_pic_F77 -+pic_mode=$pic_mode -+ -+# What is the maximum length of a command? -+max_cmd_len=$lt_cv_sys_max_cmd_len -+ -+# Does compiler simultaneously support -c and -o options? -+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 -+ -+# Must we lock files when doing compilation? -+need_locks=$lt_need_locks -+ -+# Do we need the lib prefix for modules? -+need_lib_prefix=$need_lib_prefix -+ -+# Do we need a version for libraries? -+need_version=$need_version -+ -+# Whether dlopen is supported. -+dlopen_support=$enable_dlopen -+ -+# Whether dlopen of programs is supported. -+dlopen_self=$enable_dlopen_self -+ -+# Whether dlopen of statically linked programs is supported. -+dlopen_self_static=$enable_dlopen_self_static -+ -+# Compiler flag to prevent dynamic linking. -+link_static_flag=$lt_lt_prog_compiler_static_F77 -+ -+# Compiler flag to turn off builtin functions. -+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 -+ -+# Compiler flag to allow reflexive dlopens. -+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 -+ -+# Compiler flag to generate shared objects directly from archives. -+whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 -+ -+# Compiler flag to generate thread-safe objects. -+thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 -+ -+# Library versioning type. -+version_type=$version_type -+ -+# Format of library name prefix. -+libname_spec=$lt_libname_spec -+ -+# 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. -+library_names_spec=$lt_library_names_spec -+ -+# The coded name of the library, if different from the real name. -+soname_spec=$lt_soname_spec -+ -+# Commands used to build and install an old-style archive. -+RANLIB=$lt_RANLIB -+old_archive_cmds=$lt_old_archive_cmds_F77 -+old_postinstall_cmds=$lt_old_postinstall_cmds -+old_postuninstall_cmds=$lt_old_postuninstall_cmds -+ -+# Create an old-style archive from a shared archive. -+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 -+ -+# Create a temporary old-style archive to link instead of a shared archive. -+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 -+ -+# Commands used to build and install a shared archive. -+archive_cmds=$lt_archive_cmds_F77 -+archive_expsym_cmds=$lt_archive_expsym_cmds_F77 -+postinstall_cmds=$lt_postinstall_cmds -+postuninstall_cmds=$lt_postuninstall_cmds -+ -+# Commands used to build a loadable module (assumed same as above if empty) -+module_cmds=$lt_module_cmds_F77 -+module_expsym_cmds=$lt_module_expsym_cmds_F77 -+ -+# Commands to strip libraries. -+old_striplib=$lt_old_striplib -+striplib=$lt_striplib -+ -+# Dependencies to place before the objects being linked to create a -+# shared library. -+predep_objects=\`echo $lt_predep_objects_F77 | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` -+ -+# Dependencies to place after the objects being linked to create a -+# shared library. -+postdep_objects=\`echo $lt_postdep_objects_F77 | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` -+ -+# Dependencies to place before the objects being linked to create a -+# shared library. -+predeps=$lt_predeps_F77 -+ -+# Dependencies to place after the objects being linked to create a -+# shared library. -+postdeps=$lt_postdeps_F77 -+ -+# The library search path used internally by the compiler when linking -+# a shared library. -+compiler_lib_search_path=\`echo $lt_compiler_lib_search_path_F77 | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` -+ -+# Method to check whether dependent libraries are shared objects. -+deplibs_check_method=$lt_deplibs_check_method -+ -+# Command to use when deplibs_check_method == file_magic. -+file_magic_cmd=$lt_file_magic_cmd -+ -+# Flag that allows shared libraries with undefined symbols to be built. -+allow_undefined_flag=$lt_allow_undefined_flag_F77 -+ -+# Flag that forces no undefined symbols. -+no_undefined_flag=$lt_no_undefined_flag_F77 -+ -+# Commands used to finish a libtool library installation in a directory. -+finish_cmds=$lt_finish_cmds -+ -+# Same as above, but a single script fragment to be evaled but not shown. -+finish_eval=$lt_finish_eval -+ -+# Take the output of nm and produce a listing of raw symbols and C names. -+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe -+ -+# Transform the output of nm in a proper C declaration -+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl -+ -+# Transform the output of nm in a C name address pair -+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address -+ -+# This is the shared library runtime path variable. -+runpath_var=$runpath_var -+ -+# This is the shared library path variable. -+shlibpath_var=$shlibpath_var -+ -+# Is shlibpath searched before the hard-coded library search path? -+shlibpath_overrides_runpath=$shlibpath_overrides_runpath -+ -+# How to hardcode a shared library path into an executable. -+hardcode_action=$hardcode_action_F77 -+ -+# Whether we should hardcode library paths into libraries. -+hardcode_into_libs=$hardcode_into_libs -+ -+# Flag to hardcode \$libdir into a binary during linking. -+# This must work even if \$libdir does not exist. -+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 -+ -+# If ld is used when linking, flag to hardcode \$libdir into -+# a binary during linking. This must work even if \$libdir does -+# not exist. -+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 -+ -+# Whether we need a single -rpath flag with a separated argument. -+hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 -+ -+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the -+# resulting binary. -+hardcode_direct=$hardcode_direct_F77 -+ -+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -+# resulting binary. -+hardcode_minus_L=$hardcode_minus_L_F77 -+ -+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -+# the resulting binary. -+hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 -+ -+# Set to yes if building a shared library automatically hardcodes DIR into the library -+# and all subsequent libraries and executables linked against it. -+hardcode_automatic=$hardcode_automatic_F77 -+ -+# Variables whose values should be saved in libtool wrapper scripts and -+# restored at relink time. -+variables_saved_for_relink="$variables_saved_for_relink" -+ -+# Whether libtool must link a program against all its dependency libraries. -+link_all_deplibs=$link_all_deplibs_F77 -+ -+# Compile-time system search path for libraries -+sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` -+ -+# Run-time system search path for libraries -+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec -+ -+# Fix the shell variable \$srcfile for the compiler. -+fix_srcfile_path="$fix_srcfile_path_F77" -+ -+# Set to yes if exported symbols are required. -+always_export_symbols=$always_export_symbols_F77 -+ -+# The commands to list exported symbols. -+export_symbols_cmds=$lt_export_symbols_cmds_F77 -+ -+# The commands to extract the exported symbol list from a shared archive. -+extract_expsyms_cmds=$lt_extract_expsyms_cmds -+ -+# Symbols that should not be listed in the preloaded symbols. -+exclude_expsyms=$lt_exclude_expsyms_F77 -+ -+# Symbols that must always be exported. -+include_expsyms=$lt_include_expsyms_F77 -+ -+# ### END LIBTOOL TAG CONFIG: $tagname -+ -+__EOF__ -+ -+ -+else -+ # If there is no Makefile yet, we rely on a make rule to execute -+ # `config.status --recheck' to rerun these tests and create the -+ # libtool script then. -+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` -+ if test -f "$ltmain_in"; then -+ test -f Makefile && make "$ltmain" -+ fi -+fi -+ -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+CC="$lt_save_CC" -+ -+ else -+ tagname="" -+ fi -+ ;; -+ -+ GCJ) -+ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then -+ -+ -+ -+# Source file extension for Java test sources. -+ac_ext=java -+ -+# Object file extension for compiled Java test sources. -+objext=o -+objext_GCJ=$objext -+ -+# Code to be used in simple compile tests -+lt_simple_compile_test_code="class foo {}\n" -+ -+# Code to be used in simple link tests -+lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n' -+ -+# ltmain only uses $CC for tagged configurations so make sure $CC is set. -+ -+# 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 -+ -+ -+# save warnings/boilerplate of simple test code -+ac_outfile=conftest.$ac_objext -+printf "$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* -+ -+ac_outfile=conftest.$ac_objext -+printf "$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 conftest* -+ -+ -+# Allow CC to be a program name with arguments. -+lt_save_CC="$CC" -+CC=${GCJ-"gcj"} -+compiler=$CC -+compiler_GCJ=$CC -+for cc_temp in $compiler""; do -+ case $cc_temp in -+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; -+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; -+ \-*) ;; -+ *) break;; -+ esac -+done -+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` -+ -+ -+# GCJ did not exist at the time GCC didn't implicitly link libc in. -+archive_cmds_need_lc_GCJ=no -+ -+old_archive_cmds_GCJ=$old_archive_cmds -+ -+ -+lt_prog_compiler_no_builtin_flag_GCJ= -+ -+if test "$GCC" = yes; then -+ lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' -+ -+ -+echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6 -+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ lt_cv_prog_compiler_rtti_exceptions=no -+ ac_outfile=conftest.$ac_objext -+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext -+ lt_compiler_flag="-fno-rtti -fno-exceptions" -+ # 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:18225: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>conftest.err) -+ ac_status=$? -+ cat conftest.err >&5 -+ echo "$as_me:18229: \$? = $ac_status" >&5 -+ 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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp -+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 -+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then -+ lt_cv_prog_compiler_rtti_exceptions=yes -+ fi -+ fi -+ $rm conftest* -+ -+fi -+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6 -+ -+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then -+ lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" -+else -+ : -+fi -+ -+fi -+ -+lt_prog_compiler_wl_GCJ= -+lt_prog_compiler_pic_GCJ= -+lt_prog_compiler_static_GCJ= -+ -+echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 -+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 -+ -+ if test "$GCC" = yes; then -+ lt_prog_compiler_wl_GCJ='-Wl,' -+ lt_prog_compiler_static_GCJ='-static' -+ -+ case $host_os in -+ aix*) -+ # All AIX code is PIC. -+ if test "$host_cpu" = ia64; then -+ # AIX 5 now supports IA64 processor -+ lt_prog_compiler_static_GCJ='-Bstatic' -+ fi -+ ;; -+ -+ amigaos*) -+ # 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_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' -+ ;; -+ -+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) -+ # PIC is the default for these OSes. -+ ;; -+ -+ mingw* | pw32* | os2*) -+ # 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). -+ lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' -+ ;; -+ -+ darwin* | rhapsody*) -+ # PIC is the default on this platform -+ # Common symbols not allowed in MH_DYLIB files -+ lt_prog_compiler_pic_GCJ='-fno-common' -+ ;; -+ -+ interix3*) -+ # 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_prog_compiler_can_build_shared_GCJ=no -+ enable_shared=no -+ ;; -+ -+ sysv4*MP*) -+ if test -d /usr/nec; then -+ lt_prog_compiler_pic_GCJ=-Kconform_pic -+ fi -+ ;; -+ -+ hpux*) -+ # 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_prog_compiler_pic_GCJ='-fPIC' -+ ;; -+ esac -+ ;; -+ -+ *) -+ lt_prog_compiler_pic_GCJ='-fPIC' -+ ;; -+ esac -+ else -+ # PORTME Check for flag to pass linker flags through the system compiler. -+ case $host_os in -+ aix*) -+ lt_prog_compiler_wl_GCJ='-Wl,' -+ if test "$host_cpu" = ia64; then -+ # AIX 5 now supports IA64 processor -+ lt_prog_compiler_static_GCJ='-Bstatic' -+ else -+ lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' -+ fi -+ ;; -+ darwin*) -+ # PIC is the default on this platform -+ # Common symbols not allowed in MH_DYLIB files -+ case $cc_basename in -+ xlc*) -+ lt_prog_compiler_pic_GCJ='-qnocommon' -+ lt_prog_compiler_wl_GCJ='-Wl,' -+ ;; -+ esac -+ ;; -+ -+ mingw* | pw32* | os2*) -+ # 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). -+ lt_prog_compiler_pic_GCJ='-DDLL_EXPORT' -+ ;; -+ -+ hpux9* | hpux10* | hpux11*) -+ lt_prog_compiler_wl_GCJ='-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_prog_compiler_pic_GCJ='+Z' -+ ;; -+ esac -+ # Is there a better lt_prog_compiler_static that works with the bundled CC? -+ lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' -+ ;; -+ -+ irix5* | irix6* | nonstopux*) -+ lt_prog_compiler_wl_GCJ='-Wl,' -+ # PIC (with -KPIC) is the default. -+ lt_prog_compiler_static_GCJ='-non_shared' -+ ;; -+ -+ newsos6) -+ lt_prog_compiler_pic_GCJ='-KPIC' -+ lt_prog_compiler_static_GCJ='-Bstatic' -+ ;; -+ -+ linux*) -+ case $cc_basename in -+ icc* | ecc*) -+ lt_prog_compiler_wl_GCJ='-Wl,' -+ lt_prog_compiler_pic_GCJ='-KPIC' -+ lt_prog_compiler_static_GCJ='-static' -+ ;; -+ pgcc* | pgf77* | pgf90* | pgf95*) -+ # Portland Group compilers (*not* the Pentium gcc compiler, -+ # which looks to be a dead project) -+ lt_prog_compiler_wl_GCJ='-Wl,' -+ lt_prog_compiler_pic_GCJ='-fpic' -+ lt_prog_compiler_static_GCJ='-Bstatic' -+ ;; -+ ccc*) -+ lt_prog_compiler_wl_GCJ='-Wl,' -+ # All Alpha code is PIC. -+ lt_prog_compiler_static_GCJ='-non_shared' -+ ;; -+ esac -+ ;; -+ -+ osf3* | osf4* | osf5*) -+ lt_prog_compiler_wl_GCJ='-Wl,' -+ # All OSF/1 code is PIC. -+ lt_prog_compiler_static_GCJ='-non_shared' -+ ;; -+ -+ solaris*) -+ lt_prog_compiler_pic_GCJ='-KPIC' -+ lt_prog_compiler_static_GCJ='-Bstatic' -+ case $cc_basename in -+ f77* | f90* | f95*) -+ lt_prog_compiler_wl_GCJ='-Qoption ld ';; -+ *) -+ lt_prog_compiler_wl_GCJ='-Wl,';; -+ esac -+ ;; -+ -+ sunos4*) -+ lt_prog_compiler_wl_GCJ='-Qoption ld ' -+ lt_prog_compiler_pic_GCJ='-PIC' -+ lt_prog_compiler_static_GCJ='-Bstatic' -+ ;; -+ -+ sysv4 | sysv4.2uw2* | sysv4.3*) -+ lt_prog_compiler_wl_GCJ='-Wl,' -+ lt_prog_compiler_pic_GCJ='-KPIC' -+ lt_prog_compiler_static_GCJ='-Bstatic' -+ ;; -+ -+ sysv4*MP*) -+ if test -d /usr/nec ;then -+ lt_prog_compiler_pic_GCJ='-Kconform_pic' -+ lt_prog_compiler_static_GCJ='-Bstatic' -+ fi -+ ;; -+ -+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) -+ lt_prog_compiler_wl_GCJ='-Wl,' -+ lt_prog_compiler_pic_GCJ='-KPIC' -+ lt_prog_compiler_static_GCJ='-Bstatic' -+ ;; -+ -+ unicos*) -+ lt_prog_compiler_wl_GCJ='-Wl,' -+ lt_prog_compiler_can_build_shared_GCJ=no -+ ;; -+ -+ uts4*) -+ lt_prog_compiler_pic_GCJ='-pic' -+ lt_prog_compiler_static_GCJ='-Bstatic' -+ ;; -+ -+ *) -+ lt_prog_compiler_can_build_shared_GCJ=no -+ ;; -+ esac -+ fi -+ -+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 -+echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6 -+ -+# -+# Check to make sure the PIC flag actually works. -+# -+if test -n "$lt_prog_compiler_pic_GCJ"; then -+ -+echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 -+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6 -+if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ lt_prog_compiler_pic_works_GCJ=no -+ ac_outfile=conftest.$ac_objext -+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext -+ lt_compiler_flag="$lt_prog_compiler_pic_GCJ" -+ # 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:18493: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>conftest.err) -+ ac_status=$? -+ cat conftest.err >&5 -+ echo "$as_me:18497: \$? = $ac_status" >&5 -+ 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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp -+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 -+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then -+ lt_prog_compiler_pic_works_GCJ=yes -+ fi -+ fi -+ $rm conftest* -+ -+fi -+echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5 -+echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6 -+ -+if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then -+ case $lt_prog_compiler_pic_GCJ in -+ "" | " "*) ;; -+ *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; -+ esac -+else -+ lt_prog_compiler_pic_GCJ= -+ lt_prog_compiler_can_build_shared_GCJ=no -+fi -+ -+fi -+case $host_os in -+ # For platforms which do not support PIC, -DPIC is meaningless: -+ *djgpp*) -+ lt_prog_compiler_pic_GCJ= -+ ;; -+ *) -+ lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" -+ ;; -+esac -+ -+# -+# Check to make sure the static flag actually works. -+# -+wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\" -+echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6 -+if test "${lt_prog_compiler_static_works_GCJ+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ lt_prog_compiler_static_works_GCJ=no -+ save_LDFLAGS="$LDFLAGS" -+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag" -+ printf "$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>&5 -+ $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp -+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 -+ if diff conftest.exp conftest.er2 >/dev/null; then -+ lt_prog_compiler_static_works_GCJ=yes -+ fi -+ else -+ lt_prog_compiler_static_works_GCJ=yes -+ fi -+ fi -+ $rm conftest* -+ LDFLAGS="$save_LDFLAGS" -+ -+fi -+echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_GCJ" >&5 -+echo "${ECHO_T}$lt_prog_compiler_static_works_GCJ" >&6 -+ -+if test x"$lt_prog_compiler_static_works_GCJ" = xyes; then -+ : -+else -+ lt_prog_compiler_static_GCJ= -+fi -+ -+ -+echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 -+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6 -+if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then -+ echo $ECHO_N "(cached) $ECHO_C" >&6 -+else -+ lt_cv_prog_compiler_c_o_GCJ=no -+ $rm -r conftest 2>/dev/null -+ mkdir conftest -+ cd conftest -+ mkdir out -+ printf "$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:18597: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>out/conftest.err) -+ ac_status=$? -+ cat out/conftest.err >&5 -+ echo "$as_me:18601: \$? = $ac_status" >&5 -+ 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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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_cv_prog_compiler_c_o_GCJ=yes -+ fi -+ fi -+ chmod u+w . 2>&5 -+ $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 .. -+ rmdir conftest -+ $rm conftest* -+ -+fi -+echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 -+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6 -+ -+ -+hard_links="nottested" -+if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then -+ # do not overwrite the value of need_locks provided by the user -+ echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 -+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&6 -+ 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 -+ echo "$as_me:$LINENO: result: $hard_links" >&5 -+echo "${ECHO_T}$hard_links" >&6 -+ if test "$hard_links" = no; then -+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -+echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} -+ need_locks=warn -+ fi -+else -+ need_locks=no -+fi -+ -+echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6 -+ -+ runpath_var= -+ allow_undefined_flag_GCJ= -+ enable_shared_with_static_runtimes_GCJ=no -+ archive_cmds_GCJ= -+ archive_expsym_cmds_GCJ= -+ old_archive_From_new_cmds_GCJ= -+ old_archive_from_expsyms_cmds_GCJ= -+ export_dynamic_flag_spec_GCJ= -+ whole_archive_flag_spec_GCJ= -+ thread_safe_flag_spec_GCJ= -+ hardcode_libdir_flag_spec_GCJ= -+ hardcode_libdir_flag_spec_ld_GCJ= -+ hardcode_libdir_separator_GCJ= -+ hardcode_direct_GCJ=no -+ hardcode_minus_L_GCJ=no -+ hardcode_shlibpath_var_GCJ=unsupported -+ link_all_deplibs_GCJ=unknown -+ hardcode_automatic_GCJ=no -+ module_cmds_GCJ= -+ module_expsym_cmds_GCJ= -+ always_export_symbols_GCJ=no -+ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' -+ # include_expsyms should be a list of space-separated symbols to be *always* -+ # included in the symbol list -+ include_expsyms_GCJ= -+ # 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'. -+ exclude_expsyms_GCJ="_GLOBAL_OFFSET_TABLE_" -+ # 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. -+ extract_expsyms_cmds= -+ # Just being paranoid about ensuring that cc_basename is set. -+ for cc_temp in $compiler""; do -+ case $cc_temp in -+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; -+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; -+ \-*) ;; -+ *) break;; -+ esac -+done -+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` -+ -+ case $host_os in -+ cygwin* | mingw* | pw32*) -+ # 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 -+ ;; -+ esac -+ -+ ld_shlibs_GCJ=yes -+ if test "$with_gnu_ld" = 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 -+ hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' -+ export_dynamic_flag_spec_GCJ='${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 -+ whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' -+ else -+ whole_archive_flag_spec_GCJ= -+ fi -+ supports_anon_versioning=no -+ case `$LD -v 2>/dev/null` in -+ *\ [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 -+ aix3* | aix4* | aix5*) -+ # On AIX/PPC, the GNU linker is very broken -+ if test "$host_cpu" != ia64; then -+ ld_shlibs_GCJ=no -+ cat <&2 -+ -+*** Warning: the GNU linker, at least up to release 2.9.1, 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 modify your PATH -+*** so that a non-GNU linker is found, and then restart. -+ -+EOF -+ fi -+ ;; -+ -+ amigaos*) -+ archive_cmds_GCJ='$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)' -+ hardcode_libdir_flag_spec_GCJ='-L$libdir' -+ hardcode_minus_L_GCJ=yes -+ -+ # Samuel A. Falvo II reports -+ # that the semantics of dynamic libraries on AmigaOS, at least up -+ # to version 4, is to share data among multiple programs linked -+ # with the same dynamic library. Since this doesn't match the -+ # behavior of shared libraries on other platforms, we can't use -+ # them. -+ ld_shlibs_GCJ=no -+ ;; -+ -+ beos*) -+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then -+ allow_undefined_flag_GCJ=unsupported -+ # Joseph Beckenbach says some releases of gcc -+ # support --undefined. This deserves some investigation. FIXME -+ archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ else -+ ld_shlibs_GCJ=no -+ fi -+ ;; -+ -+ cygwin* | mingw* | pw32*) -+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, -+ # as there is no search path for DLLs. -+ hardcode_libdir_flag_spec_GCJ='-L$libdir' -+ allow_undefined_flag_GCJ=unsupported -+ always_export_symbols_GCJ=no -+ enable_shared_with_static_runtimes_GCJ=yes -+ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols' -+ -+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then -+ archive_cmds_GCJ='$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... -+ archive_expsym_cmds_GCJ='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 -+ ld_shlibs_GCJ=no -+ fi -+ ;; -+ -+ interix3*) -+ hardcode_direct_GCJ=no -+ hardcode_shlibpath_var_GCJ=no -+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' -+ export_dynamic_flag_spec_GCJ='${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. -+ archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' -+ archive_expsym_cmds_GCJ='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' -+ ;; -+ -+ linux*) -+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then -+ tmp_addflag= -+ case $cc_basename,$host_cpu in -+ pgcc*) # Portland Group C compiler -+ whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' -+ tmp_addflag=' $pic_flag' -+ ;; -+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers -+ whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$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' ;; -+ esac -+ archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ -+ if test $supports_anon_versioning = yes; then -+ archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ -+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ -+ $echo "local: *; };" >> $output_objdir/$libname.ver~ -+ $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' -+ fi -+ else -+ ld_shlibs_GCJ=no -+ fi -+ ;; -+ -+ netbsd*) -+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then -+ archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' -+ wlarc= -+ else -+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ archive_expsym_cmds_GCJ='$CC -shared $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 -+ ld_shlibs_GCJ=no -+ cat <&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. -+ -+EOF -+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then -+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ else -+ ld_shlibs_GCJ=no -+ fi -+ ;; -+ -+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) -+ case `$LD -v 2>&1` in -+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) -+ ld_shlibs_GCJ=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 -+ ;; -+ *) -+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then -+ hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' -+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' -+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' -+ else -+ ld_shlibs_GCJ=no -+ fi -+ ;; -+ esac -+ ;; -+ -+ sunos4*) -+ archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' -+ wlarc= -+ hardcode_direct_GCJ=yes -+ hardcode_shlibpath_var_GCJ=no -+ ;; -+ -+ *) -+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then -+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ else -+ ld_shlibs_GCJ=no -+ fi -+ ;; -+ esac -+ -+ if test "$ld_shlibs_GCJ" = no; then -+ runpath_var= -+ hardcode_libdir_flag_spec_GCJ= -+ export_dynamic_flag_spec_GCJ= -+ whole_archive_flag_spec_GCJ= -+ fi -+ else -+ # PORTME fill in a description of your system's linker (not GNU ld) -+ case $host_os in -+ aix3*) -+ allow_undefined_flag_GCJ=unsupported -+ always_export_symbols_GCJ=yes -+ archive_expsym_cmds_GCJ='$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. -+ hardcode_minus_L_GCJ=yes -+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then -+ # Neither direct hardcoding nor static linking is supported with a -+ # broken collect2. -+ hardcode_direct_GCJ=unsupported -+ fi -+ ;; -+ -+ aix4* | aix5*) -+ 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 -+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then -+ export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' -+ else -+ export_symbols_cmds_GCJ='$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].*|aix5*) -+ 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. -+ -+ archive_cmds_GCJ='' -+ hardcode_direct_GCJ=yes -+ hardcode_libdir_separator_GCJ=':' -+ link_all_deplibs_GCJ=yes -+ -+ 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 -+ hardcode_direct_GCJ=yes -+ else -+ # We have old collect2 -+ hardcode_direct_GCJ=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 -+ hardcode_minus_L_GCJ=yes -+ hardcode_libdir_flag_spec_GCJ='-L$libdir' -+ hardcode_libdir_separator_GCJ= -+ 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 -+ -+ # It seems that -bexpall does not export symbols beginning with -+ # underscore (_), so it is better to generate a list of symbols to export. -+ always_export_symbols_GCJ=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. -+ allow_undefined_flag_GCJ='-berok' -+ # Determine the default libpath from the value encoded in an empty executable. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -+ (eval $ac_link) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest$ac_exeext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ -+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -+}'` -+# Check for a 64-bit object if we didn't find anything. -+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -+}'`; fi -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi -+ -+ hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" -+ archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" -+ else -+ if test "$host_cpu" = ia64; then -+ hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' -+ allow_undefined_flag_GCJ="-z nodefs" -+ archive_expsym_cmds_GCJ="\$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. -+ cat >conftest.$ac_ext <<_ACEOF -+/* confdefs.h. */ -+_ACEOF -+cat confdefs.h >>conftest.$ac_ext -+cat >>conftest.$ac_ext <<_ACEOF -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.$ac_objext conftest$ac_exeext -+if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 -+ (eval $ac_link) 2>conftest.er1 -+ ac_status=$? -+ grep -v '^ *+' conftest.er1 >conftest.err -+ rm -f conftest.er1 -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } && -+ { ac_try='test -z "$ac_c_werror_flag" -+ || test ! -s conftest.err' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; } && -+ { ac_try='test -s conftest$ac_exeext' -+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; }; then -+ -+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -+}'` -+# Check for a 64-bit object if we didn't find anything. -+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; } -+}'`; fi -+else -+ echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+fi -+rm -f conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi -+ -+ hardcode_libdir_flag_spec_GCJ='${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. -+ no_undefined_flag_GCJ=' ${wl}-bernotok' -+ allow_undefined_flag_GCJ=' ${wl}-berok' -+ # Exported symbols can be pulled into shared objects from archives -+ whole_archive_flag_spec_GCJ='$convenience' -+ archive_cmds_need_lc_GCJ=yes -+ # This is similar to how AIX traditionally builds its shared libraries. -+ archive_expsym_cmds_GCJ="\$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*) -+ archive_cmds_GCJ='$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)' -+ hardcode_libdir_flag_spec_GCJ='-L$libdir' -+ hardcode_minus_L_GCJ=yes -+ # see comment about different semantics on the GNU ld section -+ ld_shlibs_GCJ=no -+ ;; -+ -+ bsdi[45]*) -+ export_dynamic_flag_spec_GCJ=-rdynamic -+ ;; -+ -+ cygwin* | mingw* | pw32*) -+ # 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. -+ hardcode_libdir_flag_spec_GCJ=' ' -+ allow_undefined_flag_GCJ=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. -+ archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' -+ # The linker will automatically build a .lib file if we build a DLL. -+ old_archive_From_new_cmds_GCJ='true' -+ # FIXME: Should let the user specify the lib program. -+ old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs' -+ fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' -+ enable_shared_with_static_runtimes_GCJ=yes -+ ;; -+ -+ darwin* | rhapsody*) -+ case $host_os in -+ rhapsody* | darwin1.[012]) -+ allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' -+ ;; -+ *) # Darwin 1.3 on -+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then -+ allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' -+ else -+ case ${MACOSX_DEPLOYMENT_TARGET} in -+ 10.[012]) -+ allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' -+ ;; -+ 10.*) -+ allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' -+ ;; -+ esac -+ fi -+ ;; -+ esac -+ archive_cmds_need_lc_GCJ=no -+ hardcode_direct_GCJ=no -+ hardcode_automatic_GCJ=yes -+ hardcode_shlibpath_var_GCJ=unsupported -+ whole_archive_flag_spec_GCJ='' -+ link_all_deplibs_GCJ=yes -+ if test "$GCC" = yes ; then -+ output_verbose_link_cmd='echo' -+ archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' -+ module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' -+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds -+ archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ else -+ case $cc_basename in -+ xlc*) -+ output_verbose_link_cmd='echo' -+ archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring' -+ module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' -+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds -+ archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ ;; -+ *) -+ ld_shlibs_GCJ=no -+ ;; -+ esac -+ fi -+ ;; -+ -+ dgux*) -+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_libdir_flag_spec_GCJ='-L$libdir' -+ hardcode_shlibpath_var_GCJ=no -+ ;; -+ -+ freebsd1*) -+ ld_shlibs_GCJ=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*) -+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' -+ hardcode_libdir_flag_spec_GCJ='-R$libdir' -+ hardcode_direct_GCJ=yes -+ hardcode_shlibpath_var_GCJ=no -+ ;; -+ -+ # Unfortunately, older versions of FreeBSD 2 do not have this feature. -+ freebsd2*) -+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_direct_GCJ=yes -+ hardcode_minus_L_GCJ=yes -+ hardcode_shlibpath_var_GCJ=no -+ ;; -+ -+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries. -+ freebsd* | kfreebsd*-gnu | dragonfly*) -+ archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' -+ hardcode_libdir_flag_spec_GCJ='-R$libdir' -+ hardcode_direct_GCJ=yes -+ hardcode_shlibpath_var_GCJ=no -+ ;; -+ -+ hpux9*) -+ if test "$GCC" = yes; then -+ archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' -+ else -+ archive_cmds_GCJ='$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 -+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' -+ hardcode_libdir_separator_GCJ=: -+ hardcode_direct_GCJ=yes -+ -+ # hardcode_minus_L: Not really in the search PATH, -+ # but as the default location of the library. -+ hardcode_minus_L_GCJ=yes -+ export_dynamic_flag_spec_GCJ='${wl}-E' -+ ;; -+ -+ hpux10*) -+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then -+ archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -+ fi -+ if test "$with_gnu_ld" = no; then -+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' -+ hardcode_libdir_separator_GCJ=: -+ -+ hardcode_direct_GCJ=yes -+ export_dynamic_flag_spec_GCJ='${wl}-E' -+ -+ # hardcode_minus_L: Not really in the search PATH, -+ # but as the default location of the library. -+ hardcode_minus_L_GCJ=yes -+ fi -+ ;; -+ -+ hpux11*) -+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then -+ case $host_cpu in -+ hppa*64*) -+ archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ ia64*) -+ archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ *) -+ archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ esac -+ else -+ case $host_cpu in -+ hppa*64*) -+ archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ ia64*) -+ archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ *) -+ archive_cmds_GCJ='$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 -+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' -+ hardcode_libdir_separator_GCJ=: -+ -+ case $host_cpu in -+ hppa*64*|ia64*) -+ hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' -+ hardcode_direct_GCJ=no -+ hardcode_shlibpath_var_GCJ=no -+ ;; -+ *) -+ hardcode_direct_GCJ=yes -+ export_dynamic_flag_spec_GCJ='${wl}-E' -+ -+ # hardcode_minus_L: Not really in the search PATH, -+ # but as the default location of the library. -+ hardcode_minus_L_GCJ=yes -+ ;; -+ esac -+ fi -+ ;; -+ -+ irix5* | irix6* | nonstopux*) -+ if test "$GCC" = yes; then -+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ else -+ archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' -+ hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' -+ fi -+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' -+ hardcode_libdir_separator_GCJ=: -+ link_all_deplibs_GCJ=yes -+ ;; -+ -+ netbsd*) -+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then -+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out -+ else -+ archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF -+ fi -+ hardcode_libdir_flag_spec_GCJ='-R$libdir' -+ hardcode_direct_GCJ=yes -+ hardcode_shlibpath_var_GCJ=no -+ ;; -+ -+ newsos6) -+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_direct_GCJ=yes -+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' -+ hardcode_libdir_separator_GCJ=: -+ hardcode_shlibpath_var_GCJ=no -+ ;; -+ -+ openbsd*) -+ hardcode_direct_GCJ=yes -+ hardcode_shlibpath_var_GCJ=no -+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then -+ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' -+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' -+ export_dynamic_flag_spec_GCJ='${wl}-E' -+ else -+ case $host_os in -+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) -+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_libdir_flag_spec_GCJ='-R$libdir' -+ ;; -+ *) -+ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' -+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' -+ ;; -+ esac -+ fi -+ ;; -+ -+ os2*) -+ hardcode_libdir_flag_spec_GCJ='-L$libdir' -+ hardcode_minus_L_GCJ=yes -+ allow_undefined_flag_GCJ=unsupported -+ archive_cmds_GCJ='$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' -+ old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' -+ ;; -+ -+ osf3*) -+ if test "$GCC" = yes; then -+ allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' -+ archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ else -+ allow_undefined_flag_GCJ=' -expect_unresolved \*' -+ archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' -+ fi -+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' -+ hardcode_libdir_separator_GCJ=: -+ ;; -+ -+ osf4* | osf5*) # as osf3* with the addition of -msym flag -+ if test "$GCC" = yes; then -+ allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' -+ archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' -+ else -+ allow_undefined_flag_GCJ=' -expect_unresolved \*' -+ archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' -+ archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ -+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_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 -+ hardcode_libdir_flag_spec_GCJ='-rpath $libdir' -+ fi -+ hardcode_libdir_separator_GCJ=: -+ ;; -+ -+ solaris*) -+ no_undefined_flag_GCJ=' -z text' -+ if test "$GCC" = yes; then -+ wlarc='${wl}' -+ archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ -+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' -+ else -+ wlarc='' -+ archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ archive_expsym_cmds_GCJ='$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' -+ fi -+ hardcode_libdir_flag_spec_GCJ='-R$libdir' -+ hardcode_shlibpath_var_GCJ=no -+ case $host_os in -+ solaris2.[0-5] | solaris2.[0-5].*) ;; -+ *) -+ # The compiler driver will combine linker options so we -+ # cannot just pass the convience library names through -+ # without $wl, iff we do not link with $LD. -+ # Luckily, gcc supports the same syntax we need for Sun Studio. -+ # Supported since Solaris 2.6 (maybe 2.5.1?) -+ case $wlarc in -+ '') -+ whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;; -+ *) -+ whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;; -+ esac ;; -+ esac -+ link_all_deplibs_GCJ=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. -+ archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' -+ fi -+ hardcode_libdir_flag_spec_GCJ='-L$libdir' -+ hardcode_direct_GCJ=yes -+ hardcode_minus_L_GCJ=yes -+ hardcode_shlibpath_var_GCJ=no -+ ;; -+ -+ sysv4) -+ case $host_vendor in -+ sni) -+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_direct_GCJ=yes # is this really true??? -+ ;; -+ siemens) -+ ## LD is ld it makes a PLAMLIB -+ ## CC just makes a GrossModule. -+ archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' -+ reload_cmds_GCJ='$CC -r -o $output$reload_objs' -+ hardcode_direct_GCJ=no -+ ;; -+ motorola) -+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie -+ ;; -+ esac -+ runpath_var='LD_RUN_PATH' -+ hardcode_shlibpath_var_GCJ=no -+ ;; -+ -+ sysv4.3*) -+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_shlibpath_var_GCJ=no -+ export_dynamic_flag_spec_GCJ='-Bexport' -+ ;; -+ -+ sysv4*MP*) -+ if test -d /usr/nec; then -+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_shlibpath_var_GCJ=no -+ runpath_var=LD_RUN_PATH -+ hardcode_runpath_var=yes -+ ld_shlibs_GCJ=yes -+ fi -+ ;; -+ -+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*) -+ no_undefined_flag_GCJ='${wl}-z,text' -+ archive_cmds_need_lc_GCJ=no -+ hardcode_shlibpath_var_GCJ=no -+ runpath_var='LD_RUN_PATH' -+ -+ if test "$GCC" = yes; then -+ archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds_GCJ='$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. -+ no_undefined_flag_GCJ='${wl}-z,text' -+ allow_undefined_flag_GCJ='${wl}-z,nodefs' -+ archive_cmds_need_lc_GCJ=no -+ hardcode_shlibpath_var_GCJ=no -+ hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' -+ hardcode_libdir_separator_GCJ=':' -+ link_all_deplibs_GCJ=yes -+ export_dynamic_flag_spec_GCJ='${wl}-Bexport' -+ runpath_var='LD_RUN_PATH' -+ -+ if test "$GCC" = yes; then -+ archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ fi -+ ;; -+ -+ uts4*) -+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_libdir_flag_spec_GCJ='-L$libdir' -+ hardcode_shlibpath_var_GCJ=no -+ ;; -+ -+ *) -+ ld_shlibs_GCJ=no -+ ;; -+ esac -+ fi -+ -+echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 -+echo "${ECHO_T}$ld_shlibs_GCJ" >&6 -+test "$ld_shlibs_GCJ" = no && can_build_shared=no -+ -+# -+# Do we need to explicitly link libc? -+# -+case "x$archive_cmds_need_lc_GCJ" in -+x|xyes) -+ # Assume -lc should be added -+ archive_cmds_need_lc_GCJ=yes -+ -+ if test "$enable_shared" = yes && test "$GCC" = yes; then -+ case $archive_cmds_GCJ 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. -+ echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 -+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6 -+ $rm conftest* -+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext -+ -+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } 2>conftest.err; then -+ soname=conftest -+ lib=conftest -+ libobjs=conftest.$ac_objext -+ deplibs= -+ wl=$lt_prog_compiler_wl_GCJ -+ pic_flag=$lt_prog_compiler_pic_GCJ -+ compiler_flags=-v -+ linker_flags=-v -+ verstring= -+ output_objdir=. -+ libname=conftest -+ lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ -+ allow_undefined_flag_GCJ= -+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 -+ (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); } -+ then -+ archive_cmds_need_lc_GCJ=no -+ else -+ archive_cmds_need_lc_GCJ=yes -+ fi -+ allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag -+ else -+ cat conftest.err 1>&5 -+ fi -+ $rm conftest* -+ echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 -+echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6 -+ ;; -+ esac -+ fi -+ ;; -+esac -+ -+echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 -+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 -+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" -+if test "$GCC" = yes; then -+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` -+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then -+ # 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. -+ 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 -+else -+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -+fi -+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 -+ 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' -+ ;; -+ -+aix4* | aix5*) -+ version_type=linux -+ 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*) -+ 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=`$echo "X$lib" | $Xsed -e '\''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' -+ ;; -+ -+beos*) -+ library_names_spec='${libname}${shared_ext}' -+ dynamic_linker="$host_os ld.so" -+ shlibpath_var=LIBRARY_PATH -+ ;; -+ -+bsdi[45]*) -+ version_type=linux -+ 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*) -+ version_type=windows -+ shrext_cmds=".dll" -+ need_version=no -+ need_lib_prefix=no -+ -+ case $GCC,$host_os in -+ yes,cygwin* | yes,mingw* | yes,pw32*) -+ 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' -+ 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}' -+ sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" -+ ;; -+ mingw*) -+ # MinGW DLLs use traditional 'lib' prefix -+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' -+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` -+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then -+ # It is most probably a Windows format PATH printed by -+ # mingw gcc, but we are running on Cygwin. Gcc prints its search -+ # path with ; separators, and with drive letters. We can handle the -+ # drive letters (cygwin fileutils understands them), so leave them, -+ # especially as we might pass files found there to a mingw objdump, -+ # which wouldn't understand a cygwinified path. Ahh. -+ 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 -+ ;; -+ 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 -+ ;; -+ -+ *) -+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' -+ ;; -+ esac -+ dynamic_linker='Win32 ld.exe' -+ # 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}${versuffix}$shared_ext ${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`' -+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same. -+ if test "$GCC" = yes; then -+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"` -+ else -+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib' -+ fi -+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' -+ ;; -+ -+dgux*) -+ 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 -+ ;; -+ -+freebsd1*) -+ dynamic_linker=no -+ ;; -+ -+kfreebsd*-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='GNU ld.so' -+ ;; -+ -+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[123]*) 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 -+ ;; -+ freebsd*) # from 4.6 on -+ shlibpath_overrides_runpath=yes -+ hardcode_into_libs=yes -+ ;; -+ esac -+ ;; -+ -+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 -+ 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' -+ ;; -+ -+interix3*) -+ 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' -+ 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 -+ 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 Linux ELF. -+linux*) -+ 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' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ # 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 -+ -+ # find out which ABI we are using -+ libsuff= -+ case "$host_cpu" in -+ x86_64*|s390x*|powerpc64*) -+ echo '#line 20066 "configure"' > conftest.$ac_ext -+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 -+ (eval $ac_compile) 2>&5 -+ ac_status=$? -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ (exit $ac_status); }; then -+ case `/usr/bin/file conftest.$ac_objext` in -+ *64-bit*) -+ libsuff=64 -+ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}" -+ ;; -+ esac -+ fi -+ rm -rf conftest* -+ ;; -+ esac -+ -+ # 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/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` -+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $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' -+ ;; -+ -+knetbsd*-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='GNU ld.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 -+ 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=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=yes -+ ;; -+ -+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" -+ ;; -+ -+solaris*) -+ 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=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 -+ 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 -+ export_dynamic_flag_spec='${wl}-Blargedynsym' -+ 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 -+ 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 -+ 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' -+ shlibpath_overrides_runpath=no -+ else -+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' -+ shlibpath_overrides_runpath=yes -+ 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' -+ ;; -+ -+uts4*) -+ version_type=linux -+ 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 -+echo "$as_me:$LINENO: result: $dynamic_linker" >&5 -+echo "${ECHO_T}$dynamic_linker" >&6 -+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 -+ -+echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 -+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6 -+hardcode_action_GCJ= -+if test -n "$hardcode_libdir_flag_spec_GCJ" || \ -+ test -n "$runpath_var_GCJ" || \ -+ test "X$hardcode_automatic_GCJ" = "Xyes" ; then -+ -+ # We can hardcode non-existant directories. -+ if test "$hardcode_direct_GCJ" != 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_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && -+ test "$hardcode_minus_L_GCJ" != no; then -+ # Linking always hardcodes the temporary library directory. -+ hardcode_action_GCJ=relink -+ else -+ # We can link without hardcoding, and we can hardcode nonexisting dirs. -+ hardcode_action_GCJ=immediate -+ fi -+else -+ # We cannot hardcode anything, or else we can only hardcode existing -+ # directories. -+ hardcode_action_GCJ=unsupported -+fi -+echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 -+echo "${ECHO_T}$hardcode_action_GCJ" >&6 -+ -+if test "$hardcode_action_GCJ" = relink; 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 -+ -+ -+# The else clause should only fire when bootstrapping the -+# libtool distribution, otherwise you forgot to ship ltmain.sh -+# with your package, and you will get complaints that there are -+# no rules to generate ltmain.sh. -+if test -f "$ltmain"; then -+ # 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 -+ # Now quote all the things that may contain metacharacters while being -+ # careful not to overquote the AC_SUBSTed values. We take copies of the -+ # variables and quote the copies for generation of the libtool script. -+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ -+ SED SHELL STRIP \ -+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ -+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ -+ deplibs_check_method reload_flag reload_cmds need_locks \ -+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ -+ lt_cv_sys_global_symbol_to_c_name_address \ -+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ -+ old_postinstall_cmds old_postuninstall_cmds \ -+ compiler_GCJ \ -+ CC_GCJ \ -+ LD_GCJ \ -+ lt_prog_compiler_wl_GCJ \ -+ lt_prog_compiler_pic_GCJ \ -+ lt_prog_compiler_static_GCJ \ -+ lt_prog_compiler_no_builtin_flag_GCJ \ -+ export_dynamic_flag_spec_GCJ \ -+ thread_safe_flag_spec_GCJ \ -+ whole_archive_flag_spec_GCJ \ -+ enable_shared_with_static_runtimes_GCJ \ -+ old_archive_cmds_GCJ \ -+ old_archive_from_new_cmds_GCJ \ -+ predep_objects_GCJ \ -+ postdep_objects_GCJ \ -+ predeps_GCJ \ -+ postdeps_GCJ \ -+ compiler_lib_search_path_GCJ \ -+ archive_cmds_GCJ \ -+ archive_expsym_cmds_GCJ \ -+ postinstall_cmds_GCJ \ -+ postuninstall_cmds_GCJ \ -+ old_archive_from_expsyms_cmds_GCJ \ -+ allow_undefined_flag_GCJ \ -+ no_undefined_flag_GCJ \ -+ export_symbols_cmds_GCJ \ -+ hardcode_libdir_flag_spec_GCJ \ -+ hardcode_libdir_flag_spec_ld_GCJ \ -+ hardcode_libdir_separator_GCJ \ -+ hardcode_automatic_GCJ \ -+ module_cmds_GCJ \ -+ module_expsym_cmds_GCJ \ -+ lt_cv_prog_compiler_c_o_GCJ \ -+ exclude_expsyms_GCJ \ -+ include_expsyms_GCJ; do -+ -+ case $var in -+ old_archive_cmds_GCJ | \ -+ old_archive_from_new_cmds_GCJ | \ -+ archive_cmds_GCJ | \ -+ archive_expsym_cmds_GCJ | \ -+ module_cmds_GCJ | \ -+ module_expsym_cmds_GCJ | \ -+ old_archive_from_expsyms_cmds_GCJ | \ -+ export_symbols_cmds_GCJ | \ -+ extract_expsyms_cmds | reload_cmds | finish_cmds | \ -+ postinstall_cmds | postuninstall_cmds | \ -+ old_postinstall_cmds | old_postuninstall_cmds | \ -+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) -+ # Double-quote double-evaled strings. -+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" -+ ;; -+ *) -+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" -+ ;; -+ esac -+ done -+ -+ case $lt_echo in -+ *'\$0 --fallback-echo"') -+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` -+ ;; -+ esac -+ -+cfgfile="$ofile" -+ -+ cat <<__EOF__ >> "$cfgfile" -+# ### BEGIN LIBTOOL TAG CONFIG: $tagname -+ -+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -+ -+# Shell to use when invoking shell scripts. -+SHELL=$lt_SHELL -+ -+# Whether or not to build shared libraries. -+build_libtool_libs=$enable_shared -+ -+# Whether or not to build static libraries. -+build_old_libs=$enable_static -+ -+# Whether or not to add -lc for building shared libraries. -+build_libtool_need_lc=$archive_cmds_need_lc_GCJ -+ -+# Whether or not to disallow shared libs when runtime libs are static -+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ -+ -+# Whether or not to optimize for fast installation. -+fast_install=$enable_fast_install -+ -+# The host system. -+host_alias=$host_alias -+host=$host -+host_os=$host_os -+ -+# The build system. -+build_alias=$build_alias -+build=$build -+build_os=$build_os -+ -+# An echo program that does not interpret backslashes. -+echo=$lt_echo -+ -+# The archiver. -+AR=$lt_AR -+AR_FLAGS=$lt_AR_FLAGS -+ -+# A C compiler. -+LTCC=$lt_LTCC -+ -+# LTCC compiler flags. -+LTCFLAGS=$lt_LTCFLAGS -+ -+# A language-specific compiler. -+CC=$lt_compiler_GCJ -+ -+# Is the compiler the GNU C compiler? -+with_gcc=$GCC_GCJ -+ -+gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\` -+gcc_ver=\`gcc -dumpversion\` -+ -+# An ERE matcher. -+EGREP=$lt_EGREP -+ -+# The linker used to build libraries. -+LD=$lt_LD_GCJ -+ -+# Whether we need hard or soft links. -+LN_S=$lt_LN_S -+ -+# A BSD-compatible nm program. -+NM=$lt_NM -+ -+# A symbol stripping program -+STRIP=$lt_STRIP -+ -+# Used to examine libraries when file_magic_cmd begins "file" -+MAGIC_CMD=$MAGIC_CMD -+ -+# Used on cygwin: DLL creation program. -+DLLTOOL="$DLLTOOL" -+ -+# Used on cygwin: object dumper. -+OBJDUMP="$OBJDUMP" -+ -+# Used on cygwin: assembler. -+AS="$AS" -+ -+# The name of the directory that contains temporary libtool files. -+objdir=$objdir -+ -+# How to create reloadable object files. -+reload_flag=$lt_reload_flag -+reload_cmds=$lt_reload_cmds -+ -+# How to pass a linker flag through the compiler. -+wl=$lt_lt_prog_compiler_wl_GCJ -+ -+# Object file suffix (normally "o"). -+objext="$ac_objext" -+ -+# Old archive suffix (normally "a"). -+libext="$libext" -+ -+# Shared library suffix (normally ".so"). -+shrext_cmds='$shrext_cmds' -+ -+# Executable file suffix (normally ""). -+exeext="$exeext" -+ -+# Additional compiler flags for building library objects. -+pic_flag=$lt_lt_prog_compiler_pic_GCJ -+pic_mode=$pic_mode -+ -+# What is the maximum length of a command? -+max_cmd_len=$lt_cv_sys_max_cmd_len -+ -+# Does compiler simultaneously support -c and -o options? -+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ -+ -+# Must we lock files when doing compilation? -+need_locks=$lt_need_locks -+ -+# Do we need the lib prefix for modules? -+need_lib_prefix=$need_lib_prefix -+ -+# Do we need a version for libraries? -+need_version=$need_version -+ -+# Whether dlopen is supported. -+dlopen_support=$enable_dlopen -+ -+# Whether dlopen of programs is supported. -+dlopen_self=$enable_dlopen_self -+ -+# Whether dlopen of statically linked programs is supported. -+dlopen_self_static=$enable_dlopen_self_static -+ -+# Compiler flag to prevent dynamic linking. -+link_static_flag=$lt_lt_prog_compiler_static_GCJ -+ -+# Compiler flag to turn off builtin functions. -+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ -+ -+# Compiler flag to allow reflexive dlopens. -+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ -+ -+# Compiler flag to generate shared objects directly from archives. -+whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ -+ -+# Compiler flag to generate thread-safe objects. -+thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ -+ -+# Library versioning type. -+version_type=$version_type -+ -+# Format of library name prefix. -+libname_spec=$lt_libname_spec -+ -+# 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. -+library_names_spec=$lt_library_names_spec -+ -+# The coded name of the library, if different from the real name. -+soname_spec=$lt_soname_spec -+ -+# Commands used to build and install an old-style archive. -+RANLIB=$lt_RANLIB -+old_archive_cmds=$lt_old_archive_cmds_GCJ -+old_postinstall_cmds=$lt_old_postinstall_cmds -+old_postuninstall_cmds=$lt_old_postuninstall_cmds -+ -+# Create an old-style archive from a shared archive. -+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ -+ -+# Create a temporary old-style archive to link instead of a shared archive. -+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ -+ -+# Commands used to build and install a shared archive. -+archive_cmds=$lt_archive_cmds_GCJ -+archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ -+postinstall_cmds=$lt_postinstall_cmds -+postuninstall_cmds=$lt_postuninstall_cmds -+ -+# Commands used to build a loadable module (assumed same as above if empty) -+module_cmds=$lt_module_cmds_GCJ -+module_expsym_cmds=$lt_module_expsym_cmds_GCJ -+ -+# Commands to strip libraries. -+old_striplib=$lt_old_striplib -+striplib=$lt_striplib -+ -+# Dependencies to place before the objects being linked to create a -+# shared library. -+predep_objects=\`echo $lt_predep_objects_GCJ | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` -+ -+# Dependencies to place after the objects being linked to create a -+# shared library. -+postdep_objects=\`echo $lt_postdep_objects_GCJ | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` -+ -+# Dependencies to place before the objects being linked to create a -+# shared library. -+predeps=$lt_predeps_GCJ -+ -+# Dependencies to place after the objects being linked to create a -+# shared library. -+postdeps=$lt_postdeps_GCJ -+ -+# The library search path used internally by the compiler when linking -+# a shared library. -+compiler_lib_search_path=\`echo $lt_compiler_lib_search_path_GCJ | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` -+ -+# Method to check whether dependent libraries are shared objects. -+deplibs_check_method=$lt_deplibs_check_method -+ -+# Command to use when deplibs_check_method == file_magic. -+file_magic_cmd=$lt_file_magic_cmd -+ -+# Flag that allows shared libraries with undefined symbols to be built. -+allow_undefined_flag=$lt_allow_undefined_flag_GCJ -+ -+# Flag that forces no undefined symbols. -+no_undefined_flag=$lt_no_undefined_flag_GCJ -+ -+# Commands used to finish a libtool library installation in a directory. -+finish_cmds=$lt_finish_cmds -+ -+# Same as above, but a single script fragment to be evaled but not shown. -+finish_eval=$lt_finish_eval -+ -+# Take the output of nm and produce a listing of raw symbols and C names. -+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe -+ -+# Transform the output of nm in a proper C declaration -+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl -+ -+# Transform the output of nm in a C name address pair -+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address -+ -+# This is the shared library runtime path variable. -+runpath_var=$runpath_var -+ -+# This is the shared library path variable. -+shlibpath_var=$shlibpath_var -+ -+# Is shlibpath searched before the hard-coded library search path? -+shlibpath_overrides_runpath=$shlibpath_overrides_runpath -+ -+# How to hardcode a shared library path into an executable. -+hardcode_action=$hardcode_action_GCJ -+ -+# Whether we should hardcode library paths into libraries. -+hardcode_into_libs=$hardcode_into_libs -+ -+# Flag to hardcode \$libdir into a binary during linking. -+# This must work even if \$libdir does not exist. -+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ -+ -+# If ld is used when linking, flag to hardcode \$libdir into -+# a binary during linking. This must work even if \$libdir does -+# not exist. -+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ -+ -+# Whether we need a single -rpath flag with a separated argument. -+hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ -+ -+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the -+# resulting binary. -+hardcode_direct=$hardcode_direct_GCJ -+ -+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -+# resulting binary. -+hardcode_minus_L=$hardcode_minus_L_GCJ -+ -+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -+# the resulting binary. -+hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ -+ -+# Set to yes if building a shared library automatically hardcodes DIR into the library -+# and all subsequent libraries and executables linked against it. -+hardcode_automatic=$hardcode_automatic_GCJ -+ -+# Variables whose values should be saved in libtool wrapper scripts and -+# restored at relink time. -+variables_saved_for_relink="$variables_saved_for_relink" -+ -+# Whether libtool must link a program against all its dependency libraries. -+link_all_deplibs=$link_all_deplibs_GCJ -+ -+# Compile-time system search path for libraries -+sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` -+ -+# Run-time system search path for libraries -+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec -+ -+# Fix the shell variable \$srcfile for the compiler. -+fix_srcfile_path="$fix_srcfile_path_GCJ" -+ -+# Set to yes if exported symbols are required. -+always_export_symbols=$always_export_symbols_GCJ -+ -+# The commands to list exported symbols. -+export_symbols_cmds=$lt_export_symbols_cmds_GCJ -+ -+# The commands to extract the exported symbol list from a shared archive. -+extract_expsyms_cmds=$lt_extract_expsyms_cmds -+ -+# Symbols that should not be listed in the preloaded symbols. -+exclude_expsyms=$lt_exclude_expsyms_GCJ -+ -+# Symbols that must always be exported. -+include_expsyms=$lt_include_expsyms_GCJ -+ -+# ### END LIBTOOL TAG CONFIG: $tagname -+ -+__EOF__ -+ -+ -+else -+ # If there is no Makefile yet, we rely on a make rule to execute -+ # `config.status --recheck' to rerun these tests and create the -+ # libtool script then. -+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` -+ if test -f "$ltmain_in"; then -+ test -f Makefile && make "$ltmain" -+ fi -+fi -+ -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+CC="$lt_save_CC" -+ -+ else -+ tagname="" -+ fi -+ ;; -+ -+ RC) -+ -+ -+ -+# Source file extension for RC test sources. -+ac_ext=rc -+ -+# Object file extension for compiled RC test sources. -+objext=o -+objext_RC=$objext -+ -+# Code to be used in simple compile tests -+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n' -+ -+# 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. -+ -+# 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 -+ -+ -+# save warnings/boilerplate of simple test code -+ac_outfile=conftest.$ac_objext -+printf "$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* -+ -+ac_outfile=conftest.$ac_objext -+printf "$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 conftest* -+ -+ -+# Allow CC to be a program name with arguments. -+lt_save_CC="$CC" -+CC=${RC-"windres"} -+compiler=$CC -+compiler_RC=$CC -+for cc_temp in $compiler""; do -+ case $cc_temp in -+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; -+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; -+ \-*) ;; -+ *) break;; -+ esac -+done -+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` -+ -+lt_cv_prog_compiler_c_o_RC=yes -+ -+# The else clause should only fire when bootstrapping the -+# libtool distribution, otherwise you forgot to ship ltmain.sh -+# with your package, and you will get complaints that there are -+# no rules to generate ltmain.sh. -+if test -f "$ltmain"; then -+ # 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 -+ # Now quote all the things that may contain metacharacters while being -+ # careful not to overquote the AC_SUBSTed values. We take copies of the -+ # variables and quote the copies for generation of the libtool script. -+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ -+ SED SHELL STRIP \ -+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \ -+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \ -+ deplibs_check_method reload_flag reload_cmds need_locks \ -+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ -+ lt_cv_sys_global_symbol_to_c_name_address \ -+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ -+ old_postinstall_cmds old_postuninstall_cmds \ -+ compiler_RC \ -+ CC_RC \ -+ LD_RC \ -+ lt_prog_compiler_wl_RC \ -+ lt_prog_compiler_pic_RC \ -+ lt_prog_compiler_static_RC \ -+ lt_prog_compiler_no_builtin_flag_RC \ -+ export_dynamic_flag_spec_RC \ -+ thread_safe_flag_spec_RC \ -+ whole_archive_flag_spec_RC \ -+ enable_shared_with_static_runtimes_RC \ -+ old_archive_cmds_RC \ -+ old_archive_from_new_cmds_RC \ -+ predep_objects_RC \ -+ postdep_objects_RC \ -+ predeps_RC \ -+ postdeps_RC \ -+ compiler_lib_search_path_RC \ -+ archive_cmds_RC \ -+ archive_expsym_cmds_RC \ -+ postinstall_cmds_RC \ -+ postuninstall_cmds_RC \ -+ old_archive_from_expsyms_cmds_RC \ -+ allow_undefined_flag_RC \ -+ no_undefined_flag_RC \ -+ export_symbols_cmds_RC \ -+ hardcode_libdir_flag_spec_RC \ -+ hardcode_libdir_flag_spec_ld_RC \ -+ hardcode_libdir_separator_RC \ -+ hardcode_automatic_RC \ -+ module_cmds_RC \ -+ module_expsym_cmds_RC \ -+ lt_cv_prog_compiler_c_o_RC \ -+ exclude_expsyms_RC \ -+ include_expsyms_RC; do -+ -+ case $var in -+ old_archive_cmds_RC | \ -+ old_archive_from_new_cmds_RC | \ -+ archive_cmds_RC | \ -+ archive_expsym_cmds_RC | \ -+ module_cmds_RC | \ -+ module_expsym_cmds_RC | \ -+ old_archive_from_expsyms_cmds_RC | \ -+ export_symbols_cmds_RC | \ -+ extract_expsyms_cmds | reload_cmds | finish_cmds | \ -+ postinstall_cmds | postuninstall_cmds | \ -+ old_postinstall_cmds | old_postuninstall_cmds | \ -+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) -+ # Double-quote double-evaled strings. -+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" -+ ;; -+ *) -+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" -+ ;; -+ esac -+ done -+ -+ case $lt_echo in -+ *'\$0 --fallback-echo"') -+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` -+ ;; -+ esac -+ -+cfgfile="$ofile" -+ -+ cat <<__EOF__ >> "$cfgfile" -+# ### BEGIN LIBTOOL TAG CONFIG: $tagname -+ -+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -+ -+# Shell to use when invoking shell scripts. -+SHELL=$lt_SHELL -+ -+# Whether or not to build shared libraries. -+build_libtool_libs=$enable_shared -+ -+# Whether or not to build static libraries. -+build_old_libs=$enable_static -+ -+# Whether or not to add -lc for building shared libraries. -+build_libtool_need_lc=$archive_cmds_need_lc_RC -+ -+# Whether or not to disallow shared libs when runtime libs are static -+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC -+ -+# Whether or not to optimize for fast installation. -+fast_install=$enable_fast_install -+ -+# The host system. -+host_alias=$host_alias -+host=$host -+host_os=$host_os -+ -+# The build system. -+build_alias=$build_alias -+build=$build -+build_os=$build_os -+ -+# An echo program that does not interpret backslashes. -+echo=$lt_echo -+ -+# The archiver. -+AR=$lt_AR -+AR_FLAGS=$lt_AR_FLAGS -+ -+# A C compiler. -+LTCC=$lt_LTCC -+ -+# LTCC compiler flags. -+LTCFLAGS=$lt_LTCFLAGS -+ -+# A language-specific compiler. -+CC=$lt_compiler_RC -+ -+# Is the compiler the GNU C compiler? -+with_gcc=$GCC_RC -+ -+gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\` -+gcc_ver=\`gcc -dumpversion\` -+ -+# An ERE matcher. -+EGREP=$lt_EGREP -+ -+# The linker used to build libraries. -+LD=$lt_LD_RC -+ -+# Whether we need hard or soft links. -+LN_S=$lt_LN_S -+ -+# A BSD-compatible nm program. -+NM=$lt_NM -+ -+# A symbol stripping program -+STRIP=$lt_STRIP -+ -+# Used to examine libraries when file_magic_cmd begins "file" -+MAGIC_CMD=$MAGIC_CMD -+ -+# Used on cygwin: DLL creation program. -+DLLTOOL="$DLLTOOL" -+ -+# Used on cygwin: object dumper. -+OBJDUMP="$OBJDUMP" -+ -+# Used on cygwin: assembler. -+AS="$AS" -+ -+# The name of the directory that contains temporary libtool files. -+objdir=$objdir -+ -+# How to create reloadable object files. -+reload_flag=$lt_reload_flag -+reload_cmds=$lt_reload_cmds -+ -+# How to pass a linker flag through the compiler. -+wl=$lt_lt_prog_compiler_wl_RC -+ -+# Object file suffix (normally "o"). -+objext="$ac_objext" -+ -+# Old archive suffix (normally "a"). -+libext="$libext" -+ -+# Shared library suffix (normally ".so"). -+shrext_cmds='$shrext_cmds' -+ -+# Executable file suffix (normally ""). -+exeext="$exeext" -+ -+# Additional compiler flags for building library objects. -+pic_flag=$lt_lt_prog_compiler_pic_RC -+pic_mode=$pic_mode -+ -+# What is the maximum length of a command? -+max_cmd_len=$lt_cv_sys_max_cmd_len -+ -+# Does compiler simultaneously support -c and -o options? -+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC -+ -+# Must we lock files when doing compilation? -+need_locks=$lt_need_locks -+ -+# Do we need the lib prefix for modules? -+need_lib_prefix=$need_lib_prefix -+ -+# Do we need a version for libraries? -+need_version=$need_version -+ -+# Whether dlopen is supported. -+dlopen_support=$enable_dlopen -+ -+# Whether dlopen of programs is supported. -+dlopen_self=$enable_dlopen_self -+ -+# Whether dlopen of statically linked programs is supported. -+dlopen_self_static=$enable_dlopen_self_static -+ -+# Compiler flag to prevent dynamic linking. -+link_static_flag=$lt_lt_prog_compiler_static_RC -+ -+# Compiler flag to turn off builtin functions. -+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC -+ -+# Compiler flag to allow reflexive dlopens. -+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC -+ -+# Compiler flag to generate shared objects directly from archives. -+whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC -+ -+# Compiler flag to generate thread-safe objects. -+thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC -+ -+# Library versioning type. -+version_type=$version_type -+ -+# Format of library name prefix. -+libname_spec=$lt_libname_spec -+ -+# 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. -+library_names_spec=$lt_library_names_spec -+ -+# The coded name of the library, if different from the real name. -+soname_spec=$lt_soname_spec -+ -+# Commands used to build and install an old-style archive. -+RANLIB=$lt_RANLIB -+old_archive_cmds=$lt_old_archive_cmds_RC -+old_postinstall_cmds=$lt_old_postinstall_cmds -+old_postuninstall_cmds=$lt_old_postuninstall_cmds -+ -+# Create an old-style archive from a shared archive. -+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC -+ -+# Create a temporary old-style archive to link instead of a shared archive. -+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC -+ -+# Commands used to build and install a shared archive. -+archive_cmds=$lt_archive_cmds_RC -+archive_expsym_cmds=$lt_archive_expsym_cmds_RC -+postinstall_cmds=$lt_postinstall_cmds -+postuninstall_cmds=$lt_postuninstall_cmds -+ -+# Commands used to build a loadable module (assumed same as above if empty) -+module_cmds=$lt_module_cmds_RC -+module_expsym_cmds=$lt_module_expsym_cmds_RC -+ -+# Commands to strip libraries. -+old_striplib=$lt_old_striplib -+striplib=$lt_striplib -+ -+# Dependencies to place before the objects being linked to create a -+# shared library. -+predep_objects=\`echo $lt_predep_objects_RC | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` -+ -+# Dependencies to place after the objects being linked to create a -+# shared library. -+postdep_objects=\`echo $lt_postdep_objects_RC | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` -+ -+# Dependencies to place before the objects being linked to create a -+# shared library. -+predeps=$lt_predeps_RC -+ -+# Dependencies to place after the objects being linked to create a -+# shared library. -+postdeps=$lt_postdeps_RC -+ -+# The library search path used internally by the compiler when linking -+# a shared library. -+compiler_lib_search_path=\`echo $lt_compiler_lib_search_path_RC | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` -+ -+# Method to check whether dependent libraries are shared objects. -+deplibs_check_method=$lt_deplibs_check_method -+ -+# Command to use when deplibs_check_method == file_magic. -+file_magic_cmd=$lt_file_magic_cmd -+ -+# Flag that allows shared libraries with undefined symbols to be built. -+allow_undefined_flag=$lt_allow_undefined_flag_RC -+ -+# Flag that forces no undefined symbols. -+no_undefined_flag=$lt_no_undefined_flag_RC -+ -+# Commands used to finish a libtool library installation in a directory. -+finish_cmds=$lt_finish_cmds -+ -+# Same as above, but a single script fragment to be evaled but not shown. -+finish_eval=$lt_finish_eval -+ -+# Take the output of nm and produce a listing of raw symbols and C names. -+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe -+ -+# Transform the output of nm in a proper C declaration -+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl -+ -+# Transform the output of nm in a C name address pair -+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address -+ -+# This is the shared library runtime path variable. -+runpath_var=$runpath_var -+ -+# This is the shared library path variable. -+shlibpath_var=$shlibpath_var -+ -+# Is shlibpath searched before the hard-coded library search path? -+shlibpath_overrides_runpath=$shlibpath_overrides_runpath -+ -+# How to hardcode a shared library path into an executable. -+hardcode_action=$hardcode_action_RC -+ -+# Whether we should hardcode library paths into libraries. -+hardcode_into_libs=$hardcode_into_libs -+ -+# Flag to hardcode \$libdir into a binary during linking. -+# This must work even if \$libdir does not exist. -+hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC -+ -+# If ld is used when linking, flag to hardcode \$libdir into -+# a binary during linking. This must work even if \$libdir does -+# not exist. -+hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC -+ -+# Whether we need a single -rpath flag with a separated argument. -+hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC -+ -+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the -+# resulting binary. -+hardcode_direct=$hardcode_direct_RC -+ -+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the -+# resulting binary. -+hardcode_minus_L=$hardcode_minus_L_RC -+ -+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into -+# the resulting binary. -+hardcode_shlibpath_var=$hardcode_shlibpath_var_RC -+ -+# Set to yes if building a shared library automatically hardcodes DIR into the library -+# and all subsequent libraries and executables linked against it. -+hardcode_automatic=$hardcode_automatic_RC -+ -+# Variables whose values should be saved in libtool wrapper scripts and -+# restored at relink time. -+variables_saved_for_relink="$variables_saved_for_relink" -+ -+# Whether libtool must link a program against all its dependency libraries. -+link_all_deplibs=$link_all_deplibs_RC -+ -+# Compile-time system search path for libraries -+sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\` -+ -+# Run-time system search path for libraries -+sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec -+ -+# Fix the shell variable \$srcfile for the compiler. -+fix_srcfile_path="$fix_srcfile_path_RC" -+ -+# Set to yes if exported symbols are required. -+always_export_symbols=$always_export_symbols_RC -+ -+# The commands to list exported symbols. -+export_symbols_cmds=$lt_export_symbols_cmds_RC -+ -+# The commands to extract the exported symbol list from a shared archive. -+extract_expsyms_cmds=$lt_extract_expsyms_cmds -+ -+# Symbols that should not be listed in the preloaded symbols. -+exclude_expsyms=$lt_exclude_expsyms_RC -+ -+# Symbols that must always be exported. -+include_expsyms=$lt_include_expsyms_RC -+ -+# ### END LIBTOOL TAG CONFIG: $tagname -+ -+__EOF__ -+ -+ -+else -+ # If there is no Makefile yet, we rely on a make rule to execute -+ # `config.status --recheck' to rerun these tests and create the -+ # libtool script then. -+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` -+ if test -f "$ltmain_in"; then -+ test -f Makefile && make "$ltmain" -+ fi -+fi -+ -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+CC="$lt_save_CC" -+ -+ ;; -+ -+ *) -+ { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 -+echo "$as_me: error: Unsupported tag name: $tagname" >&2;} -+ { (exit 1); exit 1; }; } -+ ;; -+ esac -+ -+ # Append the new tag name to the list of available tags. -+ if test -n "$tagname" ; then -+ available_tags="$available_tags $tagname" -+ fi -+ fi -+ done -+ IFS="$lt_save_ifs" -+ -+ # Now substitute the updated list of available tags. -+ if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then -+ mv "${ofile}T" "$ofile" -+ chmod +x "$ofile" -+ else -+ rm -f "${ofile}T" -+ { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 -+echo "$as_me: error: unable to update list of available tagged configurations." >&2;} -+ { (exit 1); exit 1; }; } -+ fi -+fi -+ -+ -+ -+# This can be used to rebuild libtool when needed -+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" -+ -+# Always use our own libtool. -+LIBTOOL='$(SHELL) $(top_builddir)/libtool' -+ -+# Prevent multiple expansion -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+CFLAGS="-O2 -Wall" -+## check for --enable-debug first before checking CFLAGS before -+## so that we don't mix -O and -g -+# Check whether --enable-debug or --disable-debug was given. -+if test "${enable_debug+set}" = set; then -+ enableval="$enable_debug" -+ if eval "test x$enable_debug = xyes"; then -+ CFLAGS="${CFLAGS} -g -O0" -+ fi -+fi; -+ -+ -+if test x$debug = xtrue; then -+ DEBUG_TRUE= -+ DEBUG_FALSE='#' -+else -+ DEBUG_TRUE='#' -+ DEBUG_FALSE= -+fi -+ -+ -+ISCSID_VERSION_DEFAULT="871" -+ISCSID_VERSION=$ISCSID_VERSION_DEFAULT -+which iscsid 2>&1 > /dev/null -+if test $? -eq 0 ; then -+ ISCSID_VERSION=`iscsid -v | awk '{ print $3 }' | awk -F- '{ print $2 }'` -+ echo "Detected iscsid version $ISCSID_VERSION" -+fi -+ -+ -+# Check whether --with-iscsid-version or --without-iscsid-version was given. -+if test "${with_iscsid_version+set}" = set; then -+ withval="$with_iscsid_version" -+ ISCSID_VERSION=$withval -+fi; -+ -+echo "ISCSID_VERSION: $ISCSID_VERSION" -+CFLAGS="${CFLAGS} -DISCSID_VERSION=$ISCSID_VERSION" -+CFLAGS=${CFLAGS} -+ -+ -+ ac_config_commands="$ac_config_commands default" -+ -+ -+ -+ -+ ac_config_files="$ac_config_files Makefile src/Makefile src/apps/Makefile src/apps/dhcpc/Makefile src/apps/brcm-iscsi/Makefile src/uip/Makefile src/unix/Makefile src/unix/libs/Makefile" -+cat >confcache <<\_ACEOF -+# This file is a shell script that caches the results of configure -+# tests run on this system so they can be shared between configure -+# scripts and configure runs, see configure's option --config-cache. -+# It is not useful on other systems. If it contains results you don't -+# want to keep, you may remove or edit it. -+# -+# config.status only pays attention to the cache file if you give it -+# the --recheck option to rerun configure. -+# -+# `ac_cv_env_foo' variables (set or unset) will be overridden when -+# loading this file, other *unset* `ac_cv_foo' will be assigned the -+# following values. -+ -+_ACEOF -+ -+# The following way of writing the cache mishandles newlines in values, -+# but we know of no workaround that is simple, portable, and efficient. -+# So, don't put newlines in cache variables' values. -+# Ultrix sh set writes to stderr and can't be redirected directly, -+# and sets the high bit in the cache file unless we assign to the vars. -+{ -+ (set) 2>&1 | -+ case `(ac_space=' '; set | grep ac_space) 2>&1` in -+ *ac_space=\ *) -+ # `set' does not quote correctly, so add quotes (double-quote -+ # substitution turns \\\\ into \\, and sed turns \\ into \). -+ sed -n \ -+ "s/'/'\\\\''/g; -+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" -+ ;; -+ *) -+ # `set' quotes correctly as required by POSIX, so do not add quotes. -+ sed -n \ -+ "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" -+ ;; -+ esac; -+} | -+ sed ' -+ t clear -+ : clear -+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ -+ t end -+ /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ -+ : end' >>confcache -+if diff $cache_file confcache >/dev/null 2>&1; then :; else -+ if test -w $cache_file; then -+ test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" -+ cat confcache >$cache_file -+ else -+ echo "not updating unwritable cache $cache_file" -+ fi -+fi -+rm -f confcache -+ -+test "x$prefix" = xNONE && prefix=$ac_default_prefix -+# Let make expand exec_prefix. -+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' -+ -+# VPATH may cause trouble with some makes, so we remove $(srcdir), -+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -+# trailing colons and then remove the whole line if VPATH becomes empty -+# (actually we leave an empty line to preserve line numbers). -+if test "x$srcdir" = x.; then -+ ac_vpsub='/^[ ]*VPATH[ ]*=/{ -+s/:*\$(srcdir):*/:/; -+s/:*\${srcdir}:*/:/; -+s/:*@srcdir@:*/:/; -+s/^\([^=]*=[ ]*\):*/\1/; -+s/:*$//; -+s/^[^=]*=[ ]*$//; -+}' -+fi -+ -+DEFS=-DHAVE_CONFIG_H -+ -+ac_libobjs= -+ac_ltlibobjs= -+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue -+ # 1. Remove the extension, and $U if already installed. -+ ac_i=`echo "$ac_i" | -+ sed 's/\$U\././;s/\.o$//;s/\.obj$//'` -+ # 2. Add them. -+ ac_libobjs="$ac_libobjs $ac_i\$U.$ac_objext" -+ ac_ltlibobjs="$ac_ltlibobjs $ac_i"'$U.lo' -+done -+LIBOBJS=$ac_libobjs -+ -+LTLIBOBJS=$ac_ltlibobjs -+ -+ -+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then -+ { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. -+Usually this means the macro was only invoked conditionally." >&5 -+echo "$as_me: error: conditional \"AMDEP\" was never defined. -+Usually this means the macro was only invoked conditionally." >&2;} -+ { (exit 1); exit 1; }; } -+fi -+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then -+ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. -+Usually this means the macro was only invoked conditionally." >&5 -+echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. -+Usually this means the macro was only invoked conditionally." >&2;} -+ { (exit 1); exit 1; }; } -+fi -+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then -+ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. -+Usually this means the macro was only invoked conditionally." >&5 -+echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. -+Usually this means the macro was only invoked conditionally." >&2;} -+ { (exit 1); exit 1; }; } -+fi -+if test -z "${DEBUG_TRUE}" && test -z "${DEBUG_FALSE}"; then -+ { { echo "$as_me:$LINENO: error: conditional \"DEBUG\" was never defined. -+Usually this means the macro was only invoked conditionally." >&5 -+echo "$as_me: error: conditional \"DEBUG\" was never defined. -+Usually this means the macro was only invoked conditionally." >&2;} -+ { (exit 1); exit 1; }; } -+fi -+ -+: ${CONFIG_STATUS=./config.status} -+ac_clean_files_save=$ac_clean_files -+ac_clean_files="$ac_clean_files $CONFIG_STATUS" -+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 -+echo "$as_me: creating $CONFIG_STATUS" >&6;} -+cat >$CONFIG_STATUS <<_ACEOF -+#! $SHELL -+# Generated by $as_me. -+# Run this file to recreate the current configuration. -+# Compiler output produced by configure, useful for debugging -+# configure, is in config.log if it exists. -+ -+debug=false -+ac_cs_recheck=false -+ac_cs_silent=false -+SHELL=\${CONFIG_SHELL-$SHELL} -+_ACEOF -+ -+cat >>$CONFIG_STATUS <<\_ACEOF -+## --------------------- ## -+## M4sh Initialization. ## -+## --------------------- ## -+ -+# Be Bourne compatible -+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then -+ emulate sh -+ NULLCMD=: -+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which -+ # is contrary to our usage. Disable this feature. -+ alias -g '${1+"$@"}'='"$@"' -+elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then -+ set -o posix -+fi -+DUALCASE=1; export DUALCASE # for MKS sh -+ -+# Support unset when possible. -+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then -+ as_unset=unset -+else -+ as_unset=false -+fi -+ -+ -+# Work around bugs in pre-3.0 UWIN ksh. -+$as_unset ENV MAIL MAILPATH -+PS1='$ ' -+PS2='> ' -+PS4='+ ' -+ -+# NLS nuisances. -+for as_var in \ -+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ -+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ -+ LC_TELEPHONE LC_TIME -+do -+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then -+ eval $as_var=C; export $as_var -+ else -+ $as_unset $as_var -+ fi -+done -+ -+# Required to use basename. -+if expr a : '\(a\)' >/dev/null 2>&1; then -+ as_expr=expr -+else -+ as_expr=false -+fi -+ -+if (basename /) >/dev/null 2>&1 && test "X`basename / 2>&1`" = "X/"; then -+ as_basename=basename -+else -+ as_basename=false -+fi -+ -+ -+# Name of the executable. -+as_me=`$as_basename "$0" || -+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ -+ X"$0" : 'X\(//\)$' \| \ -+ X"$0" : 'X\(/\)$' \| \ -+ . : '\(.\)' 2>/dev/null || -+echo X/"$0" | -+ sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/; q; } -+ /^X\/\(\/\/\)$/{ s//\1/; q; } -+ /^X\/\(\/\).*/{ s//\1/; q; } -+ s/.*/./; q'` -+ -+ -+# PATH needs CR, and LINENO needs CR and PATH. -+# Avoid depending upon Character Ranges. -+as_cr_letters='abcdefghijklmnopqrstuvwxyz' -+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -+as_cr_Letters=$as_cr_letters$as_cr_LETTERS -+as_cr_digits='0123456789' -+as_cr_alnum=$as_cr_Letters$as_cr_digits -+ -+# The user is always right. -+if test "${PATH_SEPARATOR+set}" != set; then -+ echo "#! /bin/sh" >conf$$.sh -+ echo "exit 0" >>conf$$.sh -+ chmod +x conf$$.sh -+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then -+ PATH_SEPARATOR=';' -+ else -+ PATH_SEPARATOR=: -+ fi -+ rm -f conf$$.sh -+fi -+ -+ -+ as_lineno_1=$LINENO -+ as_lineno_2=$LINENO -+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` -+ test "x$as_lineno_1" != "x$as_lineno_2" && -+ test "x$as_lineno_3" = "x$as_lineno_2" || { -+ # Find who we are. Look in the path if we contain no path at all -+ # relative or not. -+ case $0 in -+ *[\\/]* ) as_myself=$0 ;; -+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -+done -+ -+ ;; -+ esac -+ # We did not find ourselves, most probably we were run as `sh COMMAND' -+ # in which case we are not to be found in the path. -+ if test "x$as_myself" = x; then -+ as_myself=$0 -+ fi -+ if test ! -f "$as_myself"; then -+ { { echo "$as_me:$LINENO: error: cannot find myself; rerun with an absolute path" >&5 -+echo "$as_me: error: cannot find myself; rerun with an absolute path" >&2;} -+ { (exit 1); exit 1; }; } -+ fi -+ case $CONFIG_SHELL in -+ '') -+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for as_base in sh bash ksh sh5; do -+ case $as_dir in -+ /*) -+ if ("$as_dir/$as_base" -c ' -+ as_lineno_1=$LINENO -+ as_lineno_2=$LINENO -+ as_lineno_3=`(expr $as_lineno_1 + 1) 2>/dev/null` -+ test "x$as_lineno_1" != "x$as_lineno_2" && -+ test "x$as_lineno_3" = "x$as_lineno_2" ') 2>/dev/null; then -+ $as_unset BASH_ENV || test "${BASH_ENV+set}" != set || { BASH_ENV=; export BASH_ENV; } -+ $as_unset ENV || test "${ENV+set}" != set || { ENV=; export ENV; } -+ CONFIG_SHELL=$as_dir/$as_base -+ export CONFIG_SHELL -+ exec "$CONFIG_SHELL" "$0" ${1+"$@"} -+ fi;; -+ esac -+ done -+done -+;; -+ esac -+ -+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO -+ # uniformly replaced by the line number. The first 'sed' inserts a -+ # line-number line before each line; the second 'sed' does the real -+ # work. The second script uses 'N' to pair each line-number line -+ # with the numbered line, and appends trailing '-' during -+ # substitution so that $LINENO is not a special case at line end. -+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the -+ # second 'sed' script. Blame Lee E. McMahon for sed's syntax. :-) -+ sed '=' <$as_myself | -+ sed ' -+ N -+ s,$,-, -+ : loop -+ s,^\(['$as_cr_digits']*\)\(.*\)[$]LINENO\([^'$as_cr_alnum'_]\),\1\2\1\3, -+ t loop -+ s,-$,, -+ s,^['$as_cr_digits']*\n,, -+ ' >$as_me.lineno && -+ chmod +x $as_me.lineno || -+ { { echo "$as_me:$LINENO: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&5 -+echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2;} -+ { (exit 1); exit 1; }; } -+ -+ # Don't try to exec as it changes $[0], causing all sort of problems -+ # (the dirname of $[0] is not the place where we might find the -+ # original and so on. Autoconf is especially sensible to this). -+ . ./$as_me.lineno -+ # Exit status is that of the last command. -+ exit -+} -+ -+ -+case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in -+ *c*,-n*) ECHO_N= ECHO_C=' -+' ECHO_T=' ' ;; -+ *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; -+ *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -+esac -+ -+if expr a : '\(a\)' >/dev/null 2>&1; then -+ as_expr=expr -+else -+ as_expr=false -+fi -+ -+rm -f conf$$ conf$$.exe conf$$.file -+echo >conf$$.file -+if ln -s conf$$.file conf$$ 2>/dev/null; then -+ # We could just check for DJGPP; but this test a) works b) is more generic -+ # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). -+ if test -f conf$$.exe; then -+ # Don't use ln at all; we don't have any links -+ as_ln_s='cp -p' -+ else -+ as_ln_s='ln -s' -+ fi -+elif ln conf$$.file conf$$ 2>/dev/null; then -+ as_ln_s=ln -+else -+ as_ln_s='cp -p' -+fi -+rm -f conf$$ conf$$.exe conf$$.file -+ -+if mkdir -p . 2>/dev/null; then -+ as_mkdir_p=: -+else -+ test -d ./-p && rmdir ./-p -+ as_mkdir_p=false -+fi -+ -+as_executable_p="test -f" -+ -+# Sed expression to map a string onto a valid CPP name. -+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" -+ -+# Sed expression to map a string onto a valid variable name. -+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -+ -+ -+# IFS -+# We need space, tab and new line, in precisely that order. -+as_nl=' -+' -+IFS=" $as_nl" -+ -+# CDPATH. -+$as_unset CDPATH -+ -+exec 6>&1 -+ -+# Open the log real soon, to keep \$[0] and so on meaningful, and to -+# report actual input values of CONFIG_FILES etc. instead of their -+# values after options handling. Logging --version etc. is OK. -+exec 5>>config.log -+{ -+ echo -+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -+## Running $as_me. ## -+_ASBOX -+} >&5 -+cat >&5 <<_CSEOF -+ -+This file was extended by iscsiuio $as_me 0.7.0.12, which was -+generated by GNU Autoconf 2.59. Invocation command line was -+ -+ CONFIG_FILES = $CONFIG_FILES -+ CONFIG_HEADERS = $CONFIG_HEADERS -+ CONFIG_LINKS = $CONFIG_LINKS -+ CONFIG_COMMANDS = $CONFIG_COMMANDS -+ $ $0 $@ -+ -+_CSEOF -+echo "on `(hostname || uname -n) 2>/dev/null | sed 1q`" >&5 -+echo >&5 -+_ACEOF -+ -+# Files that config.status was made for. -+if test -n "$ac_config_files"; then -+ echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -+fi -+ -+if test -n "$ac_config_headers"; then -+ echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -+fi -+ -+if test -n "$ac_config_links"; then -+ echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -+fi -+ -+if test -n "$ac_config_commands"; then -+ echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -+fi -+ -+cat >>$CONFIG_STATUS <<\_ACEOF -+ -+ac_cs_usage="\ -+\`$as_me' instantiates files from templates according to the -+current configuration. -+ -+Usage: $0 [OPTIONS] [FILE]... -+ -+ -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 -+ --recheck update $as_me by reconfiguring in the same conditions -+ --file=FILE[:TEMPLATE] -+ instantiate the configuration file FILE -+ --header=FILE[:TEMPLATE] -+ instantiate the configuration header FILE -+ -+Configuration files: -+$config_files -+ -+Configuration headers: -+$config_headers -+ -+Configuration commands: -+$config_commands -+ -+Report bugs to ." -+_ACEOF -+ -+cat >>$CONFIG_STATUS <<_ACEOF -+ac_cs_version="\\ -+iscsiuio config.status 0.7.0.12 -+configured by $0, generated by GNU Autoconf 2.59, -+ with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" -+ -+Copyright (C) 2003 Free Software Foundation, Inc. -+This config.status script is free software; the Free Software Foundation -+gives unlimited permission to copy, distribute and modify it." -+srcdir=$srcdir -+INSTALL="$INSTALL" -+_ACEOF -+ -+cat >>$CONFIG_STATUS <<\_ACEOF -+# If no file are specified by the user, then we need to provide default -+# value. By we need to know if files were specified by the user. -+ac_need_defaults=: -+while test $# != 0 -+do -+ case $1 in -+ --*=*) -+ ac_option=`expr "x$1" : 'x\([^=]*\)='` -+ ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` -+ ac_shift=: -+ ;; -+ -*) -+ ac_option=$1 -+ ac_optarg=$2 -+ ac_shift=shift -+ ;; -+ *) # This is not an option, so the user has probably given explicit -+ # arguments. -+ ac_option=$1 -+ ac_need_defaults=false;; -+ esac -+ -+ case $ac_option in -+ # Handling of the options. -+_ACEOF -+cat >>$CONFIG_STATUS <<\_ACEOF -+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) -+ ac_cs_recheck=: ;; -+ --version | --vers* | -V ) -+ echo "$ac_cs_version"; exit 0 ;; -+ --he | --h) -+ # Conflict between --help and --header -+ { { echo "$as_me:$LINENO: error: ambiguous option: $1 -+Try \`$0 --help' for more information." >&5 -+echo "$as_me: error: ambiguous option: $1 -+Try \`$0 --help' for more information." >&2;} -+ { (exit 1); exit 1; }; };; -+ --help | --hel | -h ) -+ echo "$ac_cs_usage"; exit 0 ;; -+ --debug | --d* | -d ) -+ debug=: ;; -+ --file | --fil | --fi | --f ) -+ $ac_shift -+ CONFIG_FILES="$CONFIG_FILES $ac_optarg" -+ ac_need_defaults=false;; -+ --header | --heade | --head | --hea ) -+ $ac_shift -+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg" -+ ac_need_defaults=false;; -+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ -+ | -silent | --silent | --silen | --sile | --sil | --si | --s) -+ ac_cs_silent=: ;; -+ -+ # This is an error. -+ -*) { { echo "$as_me:$LINENO: error: unrecognized option: $1 -+Try \`$0 --help' for more information." >&5 -+echo "$as_me: error: unrecognized option: $1 -+Try \`$0 --help' for more information." >&2;} -+ { (exit 1); exit 1; }; } ;; -+ -+ *) ac_config_targets="$ac_config_targets $1" ;; -+ -+ esac -+ shift -+done -+ -+ac_configure_extra_args= -+ -+if $ac_cs_silent; then -+ exec 6>/dev/null -+ ac_configure_extra_args="$ac_configure_extra_args --silent" -+fi -+ -+_ACEOF -+cat >>$CONFIG_STATUS <<_ACEOF -+if \$ac_cs_recheck; then -+ echo "running $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 -+ exec $SHELL $0 $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion -+fi -+ -+_ACEOF -+ -+cat >>$CONFIG_STATUS <<_ACEOF -+# -+# INIT-COMMANDS section. -+# -+ -+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" -+ -+ -+_ACEOF -+ -+ -+ -+cat >>$CONFIG_STATUS <<\_ACEOF -+for ac_config_target in $ac_config_targets -+do -+ case "$ac_config_target" in -+ # Handling of arguments. -+ "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; -+ "src/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; -+ "src/apps/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/apps/Makefile" ;; -+ "src/apps/dhcpc/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/apps/dhcpc/Makefile" ;; -+ "src/apps/brcm-iscsi/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/apps/brcm-iscsi/Makefile" ;; -+ "src/uip/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/uip/Makefile" ;; -+ "src/unix/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/unix/Makefile" ;; -+ "src/unix/libs/Makefile" ) CONFIG_FILES="$CONFIG_FILES src/unix/libs/Makefile" ;; -+ "depfiles" ) CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; -+ "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; -+ "config.h" ) CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; -+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 -+echo "$as_me: error: invalid argument: $ac_config_target" >&2;} -+ { (exit 1); exit 1; }; };; -+ esac -+done -+ -+# If the user did not use the arguments to specify the items to instantiate, -+# then the envvar interface is used. Set only those that are not. -+# We use the long form for the default assignment because of an extremely -+# bizarre bug on SunOS 4.1.3. -+if $ac_need_defaults; then -+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files -+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers -+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -+fi -+ -+# Have a temporary directory for convenience. Make it in the build tree -+# simply because there is no reason to put it here, and in addition, -+# creating and moving files from /tmp can sometimes cause problems. -+# Create a temporary directory, and hook for its removal unless debugging. -+$debug || -+{ -+ trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 -+ trap '{ (exit 1); exit 1; }' 1 2 13 15 -+} -+ -+# Create a (secure) tmp directory for tmp files. -+ -+{ -+ tmp=`(umask 077 && mktemp -d -q "./confstatXXXXXX") 2>/dev/null` && -+ test -n "$tmp" && test -d "$tmp" -+} || -+{ -+ tmp=./confstat$$-$RANDOM -+ (umask 077 && mkdir $tmp) -+} || -+{ -+ echo "$me: cannot create a temporary directory in ." >&2 -+ { (exit 1); exit 1; } -+} -+ -+_ACEOF -+ -+cat >>$CONFIG_STATUS <<_ACEOF -+ -+# -+# CONFIG_FILES section. -+# -+ -+# No need to generate the scripts if there are no CONFIG_FILES. -+# This happens for instance when ./config.status config.h -+if test -n "\$CONFIG_FILES"; then -+ # Protect against being on the right side of a sed subst in config.status. -+ sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; -+ s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF -+s,@SHELL@,$SHELL,;t t -+s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t -+s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t -+s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t -+s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t -+s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t -+s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t -+s,@exec_prefix@,$exec_prefix,;t t -+s,@prefix@,$prefix,;t t -+s,@program_transform_name@,$program_transform_name,;t t -+s,@bindir@,$bindir,;t t -+s,@sbindir@,$sbindir,;t t -+s,@libexecdir@,$libexecdir,;t t -+s,@datadir@,$datadir,;t t -+s,@sysconfdir@,$sysconfdir,;t t -+s,@sharedstatedir@,$sharedstatedir,;t t -+s,@localstatedir@,$localstatedir,;t t -+s,@libdir@,$libdir,;t t -+s,@includedir@,$includedir,;t t -+s,@oldincludedir@,$oldincludedir,;t t -+s,@infodir@,$infodir,;t t -+s,@mandir@,$mandir,;t t -+s,@build_alias@,$build_alias,;t t -+s,@host_alias@,$host_alias,;t t -+s,@target_alias@,$target_alias,;t t -+s,@DEFS@,$DEFS,;t t -+s,@ECHO_C@,$ECHO_C,;t t -+s,@ECHO_N@,$ECHO_N,;t t -+s,@ECHO_T@,$ECHO_T,;t t -+s,@LIBS@,$LIBS,;t t -+s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t -+s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t -+s,@INSTALL_DATA@,$INSTALL_DATA,;t t -+s,@CYGPATH_W@,$CYGPATH_W,;t t -+s,@PACKAGE@,$PACKAGE,;t t -+s,@VERSION@,$VERSION,;t t -+s,@ACLOCAL@,$ACLOCAL,;t t -+s,@AUTOCONF@,$AUTOCONF,;t t -+s,@AUTOMAKE@,$AUTOMAKE,;t t -+s,@AUTOHEADER@,$AUTOHEADER,;t t -+s,@MAKEINFO@,$MAKEINFO,;t t -+s,@install_sh@,$install_sh,;t t -+s,@STRIP@,$STRIP,;t t -+s,@ac_ct_STRIP@,$ac_ct_STRIP,;t t -+s,@INSTALL_STRIP_PROGRAM@,$INSTALL_STRIP_PROGRAM,;t t -+s,@mkdir_p@,$mkdir_p,;t t -+s,@AWK@,$AWK,;t t -+s,@SET_MAKE@,$SET_MAKE,;t t -+s,@am__leading_dot@,$am__leading_dot,;t t -+s,@AMTAR@,$AMTAR,;t t -+s,@am__tar@,$am__tar,;t t -+s,@am__untar@,$am__untar,;t t -+s,@BASH@,$BASH,;t t -+s,@CC@,$CC,;t t -+s,@CFLAGS@,$CFLAGS,;t t -+s,@LDFLAGS@,$LDFLAGS,;t t -+s,@CPPFLAGS@,$CPPFLAGS,;t t -+s,@ac_ct_CC@,$ac_ct_CC,;t t -+s,@EXEEXT@,$EXEEXT,;t t -+s,@OBJEXT@,$OBJEXT,;t t -+s,@DEPDIR@,$DEPDIR,;t t -+s,@am__include@,$am__include,;t t -+s,@am__quote@,$am__quote,;t t -+s,@AMDEP_TRUE@,$AMDEP_TRUE,;t t -+s,@AMDEP_FALSE@,$AMDEP_FALSE,;t t -+s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t -+s,@CCDEPMODE@,$CCDEPMODE,;t t -+s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t -+s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t -+s,@RANLIB@,$RANLIB,;t t -+s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t -+s,@CPP@,$CPP,;t t -+s,@EGREP@,$EGREP,;t t -+s,@ENDIAN@,$ENDIAN,;t t -+s,@build@,$build,;t t -+s,@build_cpu@,$build_cpu,;t t -+s,@build_vendor@,$build_vendor,;t t -+s,@build_os@,$build_os,;t t -+s,@host@,$host,;t t -+s,@host_cpu@,$host_cpu,;t t -+s,@host_vendor@,$host_vendor,;t t -+s,@host_os@,$host_os,;t t -+s,@SED@,$SED,;t t -+s,@LN_S@,$LN_S,;t t -+s,@ECHO@,$ECHO,;t t -+s,@AR@,$AR,;t t -+s,@ac_ct_AR@,$ac_ct_AR,;t t -+s,@CXX@,$CXX,;t t -+s,@CXXFLAGS@,$CXXFLAGS,;t t -+s,@ac_ct_CXX@,$ac_ct_CXX,;t t -+s,@CXXDEPMODE@,$CXXDEPMODE,;t t -+s,@am__fastdepCXX_TRUE@,$am__fastdepCXX_TRUE,;t t -+s,@am__fastdepCXX_FALSE@,$am__fastdepCXX_FALSE,;t t -+s,@CXXCPP@,$CXXCPP,;t t -+s,@F77@,$F77,;t t -+s,@FFLAGS@,$FFLAGS,;t t -+s,@ac_ct_F77@,$ac_ct_F77,;t t -+s,@LIBTOOL@,$LIBTOOL,;t t -+s,@DEBUG_TRUE@,$DEBUG_TRUE,;t t -+s,@DEBUG_FALSE@,$DEBUG_FALSE,;t t -+s,@LIBOBJS@,$LIBOBJS,;t t -+s,@LTLIBOBJS@,$LTLIBOBJS,;t t -+CEOF -+ -+_ACEOF -+ -+ cat >>$CONFIG_STATUS <<\_ACEOF -+ # Split the substitutions into bite-sized pieces for seds with -+ # small command number limits, like on Digital OSF/1 and HP-UX. -+ ac_max_sed_lines=48 -+ ac_sed_frag=1 # Number of current file. -+ ac_beg=1 # First line for current file. -+ ac_end=$ac_max_sed_lines # Line after last line for current file. -+ ac_more_lines=: -+ ac_sed_cmds= -+ while $ac_more_lines; do -+ if test $ac_beg -gt 1; then -+ sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag -+ else -+ sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag -+ fi -+ if test ! -s $tmp/subs.frag; then -+ ac_more_lines=false -+ else -+ # The purpose of the label and of the branching condition is to -+ # speed up the sed processing (if there are no `@' at all, there -+ # is no need to browse any of the substitutions). -+ # These are the two extra sed commands mentioned above. -+ (echo ':t -+ /@[a-zA-Z_][a-zA-Z_0-9]*@/!b' && cat $tmp/subs.frag) >$tmp/subs-$ac_sed_frag.sed -+ if test -z "$ac_sed_cmds"; then -+ ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" -+ else -+ ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" -+ fi -+ ac_sed_frag=`expr $ac_sed_frag + 1` -+ ac_beg=$ac_end -+ ac_end=`expr $ac_end + $ac_max_sed_lines` -+ fi -+ done -+ if test -z "$ac_sed_cmds"; then -+ ac_sed_cmds=cat -+ fi -+fi # test -n "$CONFIG_FILES" -+ -+_ACEOF -+cat >>$CONFIG_STATUS <<\_ACEOF -+for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue -+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". -+ case $ac_file in -+ - | *:- | *:-:* ) # input from stdin -+ cat >$tmp/stdin -+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` -+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; -+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` -+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; -+ * ) ac_file_in=$ac_file.in ;; -+ esac -+ -+ # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. -+ ac_dir=`(dirname "$ac_file") 2>/dev/null || -+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$ac_file" : 'X\(//\)[^/]' \| \ -+ X"$ac_file" : 'X\(//\)$' \| \ -+ X"$ac_file" : 'X\(/\)' \| \ -+ . : '\(.\)' 2>/dev/null || -+echo X"$ac_file" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } -+ /^X\(\/\/\)[^/].*/{ s//\1/; q; } -+ /^X\(\/\/\)$/{ s//\1/; q; } -+ /^X\(\/\).*/{ s//\1/; q; } -+ s/.*/./; q'` -+ { if $as_mkdir_p; then -+ mkdir -p "$ac_dir" -+ else -+ as_dir="$ac_dir" -+ as_dirs= -+ while test ! -d "$as_dir"; do -+ as_dirs="$as_dir $as_dirs" -+ as_dir=`(dirname "$as_dir") 2>/dev/null || -+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$as_dir" : 'X\(//\)[^/]' \| \ -+ X"$as_dir" : 'X\(//\)$' \| \ -+ X"$as_dir" : 'X\(/\)' \| \ -+ . : '\(.\)' 2>/dev/null || -+echo X"$as_dir" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } -+ /^X\(\/\/\)[^/].*/{ s//\1/; q; } -+ /^X\(\/\/\)$/{ s//\1/; q; } -+ /^X\(\/\).*/{ s//\1/; q; } -+ s/.*/./; q'` -+ done -+ test ! -n "$as_dirs" || mkdir $as_dirs -+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} -+ { (exit 1); exit 1; }; }; } -+ -+ ac_builddir=. -+ -+if test "$ac_dir" != .; then -+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` -+ # A "../" for each directory in $ac_dir_suffix. -+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -+else -+ ac_dir_suffix= ac_top_builddir= -+fi -+ -+case $srcdir in -+ .) # No --srcdir option. We are building in place. -+ ac_srcdir=. -+ if test -z "$ac_top_builddir"; then -+ ac_top_srcdir=. -+ else -+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` -+ fi ;; -+ [\\/]* | ?:[\\/]* ) # Absolute path. -+ ac_srcdir=$srcdir$ac_dir_suffix; -+ ac_top_srcdir=$srcdir ;; -+ *) # Relative path. -+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix -+ ac_top_srcdir=$ac_top_builddir$srcdir ;; -+esac -+ -+# Do not use `cd foo && pwd` to compute absolute paths, because -+# the directories may not exist. -+case `pwd` in -+.) ac_abs_builddir="$ac_dir";; -+*) -+ case "$ac_dir" in -+ .) ac_abs_builddir=`pwd`;; -+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; -+ *) ac_abs_builddir=`pwd`/"$ac_dir";; -+ esac;; -+esac -+case $ac_abs_builddir in -+.) ac_abs_top_builddir=${ac_top_builddir}.;; -+*) -+ case ${ac_top_builddir}. in -+ .) ac_abs_top_builddir=$ac_abs_builddir;; -+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; -+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; -+ esac;; -+esac -+case $ac_abs_builddir in -+.) ac_abs_srcdir=$ac_srcdir;; -+*) -+ case $ac_srcdir in -+ .) ac_abs_srcdir=$ac_abs_builddir;; -+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; -+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; -+ esac;; -+esac -+case $ac_abs_builddir in -+.) ac_abs_top_srcdir=$ac_top_srcdir;; -+*) -+ case $ac_top_srcdir in -+ .) ac_abs_top_srcdir=$ac_abs_builddir;; -+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; -+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; -+ esac;; -+esac -+ -+ -+ case $INSTALL in -+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; -+ *) ac_INSTALL=$ac_top_builddir$INSTALL ;; -+ esac -+ -+ if test x"$ac_file" != x-; then -+ { echo "$as_me:$LINENO: creating $ac_file" >&5 -+echo "$as_me: creating $ac_file" >&6;} -+ rm -f "$ac_file" -+ fi -+ # Let's still pretend it is `configure' which instantiates (i.e., don't -+ # use $as_me), people would be surprised to read: -+ # /* config.h. Generated by config.status. */ -+ if test x"$ac_file" = x-; then -+ configure_input= -+ else -+ configure_input="$ac_file. " -+ fi -+ configure_input=$configure_input"Generated from `echo $ac_file_in | -+ sed 's,.*/,,'` by configure." -+ -+ # First look for the input files in the build tree, otherwise in the -+ # src tree. -+ ac_file_inputs=`IFS=: -+ for f in $ac_file_in; do -+ case $f in -+ -) echo $tmp/stdin ;; -+ [\\/$]*) -+ # Absolute (can't be DOS-style, as IFS=:) -+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -+echo "$as_me: error: cannot find input file: $f" >&2;} -+ { (exit 1); exit 1; }; } -+ echo "$f";; -+ *) # Relative -+ if test -f "$f"; then -+ # Build tree -+ echo "$f" -+ elif test -f "$srcdir/$f"; then -+ # Source tree -+ echo "$srcdir/$f" -+ else -+ # /dev/null tree -+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -+echo "$as_me: error: cannot find input file: $f" >&2;} -+ { (exit 1); exit 1; }; } -+ fi;; -+ esac -+ done` || { (exit 1); exit 1; } -+_ACEOF -+cat >>$CONFIG_STATUS <<_ACEOF -+ sed "$ac_vpsub -+$extrasub -+_ACEOF -+cat >>$CONFIG_STATUS <<\_ACEOF -+:t -+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -+s,@configure_input@,$configure_input,;t t -+s,@srcdir@,$ac_srcdir,;t t -+s,@abs_srcdir@,$ac_abs_srcdir,;t t -+s,@top_srcdir@,$ac_top_srcdir,;t t -+s,@abs_top_srcdir@,$ac_abs_top_srcdir,;t t -+s,@builddir@,$ac_builddir,;t t -+s,@abs_builddir@,$ac_abs_builddir,;t t -+s,@top_builddir@,$ac_top_builddir,;t t -+s,@abs_top_builddir@,$ac_abs_top_builddir,;t t -+s,@INSTALL@,$ac_INSTALL,;t t -+" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out -+ rm -f $tmp/stdin -+ if test x"$ac_file" != x-; then -+ mv $tmp/out $ac_file -+ else -+ cat $tmp/out -+ rm -f $tmp/out -+ fi -+ -+done -+_ACEOF -+cat >>$CONFIG_STATUS <<\_ACEOF -+ -+# -+# CONFIG_HEADER section. -+# -+ -+# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -+# NAME is the cpp macro being defined and VALUE is the value it is being given. -+# -+# ac_d sets the value in "#define NAME VALUE" lines. -+ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' -+ac_dB='[ ].*$,\1#\2' -+ac_dC=' ' -+ac_dD=',;t' -+# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -+ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -+ac_uB='$,\1#\2define\3' -+ac_uC=' ' -+ac_uD=',;t' -+ -+for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue -+ # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". -+ case $ac_file in -+ - | *:- | *:-:* ) # input from stdin -+ cat >$tmp/stdin -+ ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` -+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; -+ *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` -+ ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; -+ * ) ac_file_in=$ac_file.in ;; -+ esac -+ -+ test x"$ac_file" != x- && { echo "$as_me:$LINENO: creating $ac_file" >&5 -+echo "$as_me: creating $ac_file" >&6;} -+ -+ # First look for the input files in the build tree, otherwise in the -+ # src tree. -+ ac_file_inputs=`IFS=: -+ for f in $ac_file_in; do -+ case $f in -+ -) echo $tmp/stdin ;; -+ [\\/$]*) -+ # Absolute (can't be DOS-style, as IFS=:) -+ test -f "$f" || { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -+echo "$as_me: error: cannot find input file: $f" >&2;} -+ { (exit 1); exit 1; }; } -+ # Do quote $f, to prevent DOS paths from being IFS'd. -+ echo "$f";; -+ *) # Relative -+ if test -f "$f"; then -+ # Build tree -+ echo "$f" -+ elif test -f "$srcdir/$f"; then -+ # Source tree -+ echo "$srcdir/$f" -+ else -+ # /dev/null tree -+ { { echo "$as_me:$LINENO: error: cannot find input file: $f" >&5 -+echo "$as_me: error: cannot find input file: $f" >&2;} -+ { (exit 1); exit 1; }; } -+ fi;; -+ esac -+ done` || { (exit 1); exit 1; } -+ # Remove the trailing spaces. -+ sed 's/[ ]*$//' $ac_file_inputs >$tmp/in -+ -+_ACEOF -+ -+# Transform confdefs.h into two sed scripts, `conftest.defines' and -+# `conftest.undefs', that substitutes the proper values into -+# config.h.in to produce config.h. The first handles `#define' -+# templates, and the second `#undef' templates. -+# And first: Protect against being on the right side of a sed subst in -+# config.status. Protect against being in an unquoted here document -+# in config.status. -+rm -f conftest.defines conftest.undefs -+# Using a here document instead of a string reduces the quoting nightmare. -+# Putting comments in sed scripts is not portable. -+# -+# `end' is used to avoid that the second main sed command (meant for -+# 0-ary CPP macros) applies to n-ary macro definitions. -+# See the Autoconf documentation for `clear'. -+cat >confdef2sed.sed <<\_ACEOF -+s/[\\&,]/\\&/g -+s,[\\$`],\\&,g -+t clear -+: clear -+s,^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*\)\(([^)]*)\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1\2${ac_dC}\3${ac_dD},gp -+t end -+s,^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)$,${ac_dA}\1${ac_dB}\1${ac_dC}\2${ac_dD},gp -+: end -+_ACEOF -+# If some macros were called several times there might be several times -+# the same #defines, which is useless. Nevertheless, we may not want to -+# sort them, since we want the *last* AC-DEFINE to be honored. -+uniq confdefs.h | sed -n -f confdef2sed.sed >conftest.defines -+sed 's/ac_d/ac_u/g' conftest.defines >conftest.undefs -+rm -f confdef2sed.sed -+ -+# This sed command replaces #undef with comments. This is necessary, for -+# example, in the case of _POSIX_SOURCE, which is predefined and required -+# on some systems where configure will not decide to define it. -+cat >>conftest.undefs <<\_ACEOF -+s,^[ ]*#[ ]*undef[ ][ ]*[a-zA-Z_][a-zA-Z_0-9]*,/* & */, -+_ACEOF -+ -+# Break up conftest.defines because some shells have a limit on the size -+# of here documents, and old seds have small limits too (100 cmds). -+echo ' # Handle all the #define templates only if necessary.' >>$CONFIG_STATUS -+echo ' if grep "^[ ]*#[ ]*define" $tmp/in >/dev/null; then' >>$CONFIG_STATUS -+echo ' # If there are no defines, we may have an empty if/fi' >>$CONFIG_STATUS -+echo ' :' >>$CONFIG_STATUS -+rm -f conftest.tail -+while grep . conftest.defines >/dev/null -+do -+ # Write a limited-size here document to $tmp/defines.sed. -+ echo ' cat >$tmp/defines.sed <>$CONFIG_STATUS -+ # Speed up: don't consider the non `#define' lines. -+ echo '/^[ ]*#[ ]*define/!b' >>$CONFIG_STATUS -+ # Work around the forget-to-reset-the-flag bug. -+ echo 't clr' >>$CONFIG_STATUS -+ echo ': clr' >>$CONFIG_STATUS -+ sed ${ac_max_here_lines}q conftest.defines >>$CONFIG_STATUS -+ echo 'CEOF -+ sed -f $tmp/defines.sed $tmp/in >$tmp/out -+ rm -f $tmp/in -+ mv $tmp/out $tmp/in -+' >>$CONFIG_STATUS -+ sed 1,${ac_max_here_lines}d conftest.defines >conftest.tail -+ rm -f conftest.defines -+ mv conftest.tail conftest.defines -+done -+rm -f conftest.defines -+echo ' fi # grep' >>$CONFIG_STATUS -+echo >>$CONFIG_STATUS -+ -+# Break up conftest.undefs because some shells have a limit on the size -+# of here documents, and old seds have small limits too (100 cmds). -+echo ' # Handle all the #undef templates' >>$CONFIG_STATUS -+rm -f conftest.tail -+while grep . conftest.undefs >/dev/null -+do -+ # Write a limited-size here document to $tmp/undefs.sed. -+ echo ' cat >$tmp/undefs.sed <>$CONFIG_STATUS -+ # Speed up: don't consider the non `#undef' -+ echo '/^[ ]*#[ ]*undef/!b' >>$CONFIG_STATUS -+ # Work around the forget-to-reset-the-flag bug. -+ echo 't clr' >>$CONFIG_STATUS -+ echo ': clr' >>$CONFIG_STATUS -+ sed ${ac_max_here_lines}q conftest.undefs >>$CONFIG_STATUS -+ echo 'CEOF -+ sed -f $tmp/undefs.sed $tmp/in >$tmp/out -+ rm -f $tmp/in -+ mv $tmp/out $tmp/in -+' >>$CONFIG_STATUS -+ sed 1,${ac_max_here_lines}d conftest.undefs >conftest.tail -+ rm -f conftest.undefs -+ mv conftest.tail conftest.undefs -+done -+rm -f conftest.undefs -+ -+cat >>$CONFIG_STATUS <<\_ACEOF -+ # Let's still pretend it is `configure' which instantiates (i.e., don't -+ # use $as_me), people would be surprised to read: -+ # /* config.h. Generated by config.status. */ -+ if test x"$ac_file" = x-; then -+ echo "/* Generated by configure. */" >$tmp/config.h -+ else -+ echo "/* $ac_file. Generated by configure. */" >$tmp/config.h -+ fi -+ cat $tmp/in >>$tmp/config.h -+ rm -f $tmp/in -+ if test x"$ac_file" != x-; then -+ if diff $ac_file $tmp/config.h >/dev/null 2>&1; then -+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5 -+echo "$as_me: $ac_file is unchanged" >&6;} -+ else -+ ac_dir=`(dirname "$ac_file") 2>/dev/null || -+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$ac_file" : 'X\(//\)[^/]' \| \ -+ X"$ac_file" : 'X\(//\)$' \| \ -+ X"$ac_file" : 'X\(/\)' \| \ -+ . : '\(.\)' 2>/dev/null || -+echo X"$ac_file" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } -+ /^X\(\/\/\)[^/].*/{ s//\1/; q; } -+ /^X\(\/\/\)$/{ s//\1/; q; } -+ /^X\(\/\).*/{ s//\1/; q; } -+ s/.*/./; q'` -+ { if $as_mkdir_p; then -+ mkdir -p "$ac_dir" -+ else -+ as_dir="$ac_dir" -+ as_dirs= -+ while test ! -d "$as_dir"; do -+ as_dirs="$as_dir $as_dirs" -+ as_dir=`(dirname "$as_dir") 2>/dev/null || -+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$as_dir" : 'X\(//\)[^/]' \| \ -+ X"$as_dir" : 'X\(//\)$' \| \ -+ X"$as_dir" : 'X\(/\)' \| \ -+ . : '\(.\)' 2>/dev/null || -+echo X"$as_dir" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } -+ /^X\(\/\/\)[^/].*/{ s//\1/; q; } -+ /^X\(\/\/\)$/{ s//\1/; q; } -+ /^X\(\/\).*/{ s//\1/; q; } -+ s/.*/./; q'` -+ done -+ test ! -n "$as_dirs" || mkdir $as_dirs -+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} -+ { (exit 1); exit 1; }; }; } -+ -+ rm -f $ac_file -+ mv $tmp/config.h $ac_file -+ fi -+ else -+ cat $tmp/config.h -+ rm -f $tmp/config.h -+ fi -+# Compute $ac_file's index in $config_headers. -+_am_stamp_count=1 -+for _am_header in $config_headers :; do -+ case $_am_header in -+ $ac_file | $ac_file:* ) -+ break ;; -+ * ) -+ _am_stamp_count=`expr $_am_stamp_count + 1` ;; -+ esac -+done -+echo "timestamp for $ac_file" >`(dirname $ac_file) 2>/dev/null || -+$as_expr X$ac_file : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X$ac_file : 'X\(//\)[^/]' \| \ -+ X$ac_file : 'X\(//\)$' \| \ -+ X$ac_file : 'X\(/\)' \| \ -+ . : '\(.\)' 2>/dev/null || -+echo X$ac_file | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } -+ /^X\(\/\/\)[^/].*/{ s//\1/; q; } -+ /^X\(\/\/\)$/{ s//\1/; q; } -+ /^X\(\/\).*/{ s//\1/; q; } -+ s/.*/./; q'`/stamp-h$_am_stamp_count -+done -+_ACEOF -+cat >>$CONFIG_STATUS <<\_ACEOF -+ -+# -+# CONFIG_COMMANDS section. -+# -+for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue -+ ac_dest=`echo "$ac_file" | sed 's,:.*,,'` -+ ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` -+ ac_dir=`(dirname "$ac_dest") 2>/dev/null || -+$as_expr X"$ac_dest" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$ac_dest" : 'X\(//\)[^/]' \| \ -+ X"$ac_dest" : 'X\(//\)$' \| \ -+ X"$ac_dest" : 'X\(/\)' \| \ -+ . : '\(.\)' 2>/dev/null || -+echo X"$ac_dest" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } -+ /^X\(\/\/\)[^/].*/{ s//\1/; q; } -+ /^X\(\/\/\)$/{ s//\1/; q; } -+ /^X\(\/\).*/{ s//\1/; q; } -+ s/.*/./; q'` -+ { if $as_mkdir_p; then -+ mkdir -p "$ac_dir" -+ else -+ as_dir="$ac_dir" -+ as_dirs= -+ while test ! -d "$as_dir"; do -+ as_dirs="$as_dir $as_dirs" -+ as_dir=`(dirname "$as_dir") 2>/dev/null || -+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$as_dir" : 'X\(//\)[^/]' \| \ -+ X"$as_dir" : 'X\(//\)$' \| \ -+ X"$as_dir" : 'X\(/\)' \| \ -+ . : '\(.\)' 2>/dev/null || -+echo X"$as_dir" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } -+ /^X\(\/\/\)[^/].*/{ s//\1/; q; } -+ /^X\(\/\/\)$/{ s//\1/; q; } -+ /^X\(\/\).*/{ s//\1/; q; } -+ s/.*/./; q'` -+ done -+ test ! -n "$as_dirs" || mkdir $as_dirs -+ fi || { { echo "$as_me:$LINENO: error: cannot create directory \"$ac_dir\"" >&5 -+echo "$as_me: error: cannot create directory \"$ac_dir\"" >&2;} -+ { (exit 1); exit 1; }; }; } -+ -+ ac_builddir=. -+ -+if test "$ac_dir" != .; then -+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'` -+ # A "../" for each directory in $ac_dir_suffix. -+ ac_top_builddir=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,../,g'` -+else -+ ac_dir_suffix= ac_top_builddir= -+fi -+ -+case $srcdir in -+ .) # No --srcdir option. We are building in place. -+ ac_srcdir=. -+ if test -z "$ac_top_builddir"; then -+ ac_top_srcdir=. -+ else -+ ac_top_srcdir=`echo $ac_top_builddir | sed 's,/$,,'` -+ fi ;; -+ [\\/]* | ?:[\\/]* ) # Absolute path. -+ ac_srcdir=$srcdir$ac_dir_suffix; -+ ac_top_srcdir=$srcdir ;; -+ *) # Relative path. -+ ac_srcdir=$ac_top_builddir$srcdir$ac_dir_suffix -+ ac_top_srcdir=$ac_top_builddir$srcdir ;; -+esac -+ -+# Do not use `cd foo && pwd` to compute absolute paths, because -+# the directories may not exist. -+case `pwd` in -+.) ac_abs_builddir="$ac_dir";; -+*) -+ case "$ac_dir" in -+ .) ac_abs_builddir=`pwd`;; -+ [\\/]* | ?:[\\/]* ) ac_abs_builddir="$ac_dir";; -+ *) ac_abs_builddir=`pwd`/"$ac_dir";; -+ esac;; -+esac -+case $ac_abs_builddir in -+.) ac_abs_top_builddir=${ac_top_builddir}.;; -+*) -+ case ${ac_top_builddir}. in -+ .) ac_abs_top_builddir=$ac_abs_builddir;; -+ [\\/]* | ?:[\\/]* ) ac_abs_top_builddir=${ac_top_builddir}.;; -+ *) ac_abs_top_builddir=$ac_abs_builddir/${ac_top_builddir}.;; -+ esac;; -+esac -+case $ac_abs_builddir in -+.) ac_abs_srcdir=$ac_srcdir;; -+*) -+ case $ac_srcdir in -+ .) ac_abs_srcdir=$ac_abs_builddir;; -+ [\\/]* | ?:[\\/]* ) ac_abs_srcdir=$ac_srcdir;; -+ *) ac_abs_srcdir=$ac_abs_builddir/$ac_srcdir;; -+ esac;; -+esac -+case $ac_abs_builddir in -+.) ac_abs_top_srcdir=$ac_top_srcdir;; -+*) -+ case $ac_top_srcdir in -+ .) ac_abs_top_srcdir=$ac_abs_builddir;; -+ [\\/]* | ?:[\\/]* ) ac_abs_top_srcdir=$ac_top_srcdir;; -+ *) ac_abs_top_srcdir=$ac_abs_builddir/$ac_top_srcdir;; -+ esac;; -+esac -+ -+ -+ { echo "$as_me:$LINENO: executing $ac_dest commands" >&5 -+echo "$as_me: executing $ac_dest commands" >&6;} -+ case $ac_dest in -+ depfiles ) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do -+ # Strip MF so we end up with the name of the file. -+ mf=`echo "$mf" | sed -e 's/:.*$//'` -+ # Check whether this is an Automake generated Makefile or not. -+ # We used to match only the files named `Makefile.in', but -+ # some people rename them; so instead we look at the file content. -+ # Grep'ing the first line is not enough: some people post-process -+ # each Makefile.in and add a new line on top of each file to say so. -+ # So let's grep whole file. -+ if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then -+ dirpart=`(dirname "$mf") 2>/dev/null || -+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$mf" : 'X\(//\)[^/]' \| \ -+ X"$mf" : 'X\(//\)$' \| \ -+ X"$mf" : 'X\(/\)' \| \ -+ . : '\(.\)' 2>/dev/null || -+echo X"$mf" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } -+ /^X\(\/\/\)[^/].*/{ s//\1/; q; } -+ /^X\(\/\/\)$/{ s//\1/; q; } -+ /^X\(\/\).*/{ s//\1/; q; } -+ s/.*/./; q'` -+ else -+ continue -+ fi -+ # Extract the definition of DEPDIR, am__include, and am__quote -+ # from the Makefile without running `make'. -+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` -+ test -z "$DEPDIR" && continue -+ am__include=`sed -n 's/^am__include = //p' < "$mf"` -+ test -z "am__include" && continue -+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"` -+ # When using ansi2knr, U may be empty or an underscore; expand it -+ U=`sed -n 's/^U = //p' < "$mf"` -+ # Find all dependency output files, they are included files with -+ # $(DEPDIR) in their names. We invoke sed twice because it is the -+ # simplest approach to changing $(DEPDIR) to its actual value in the -+ # expansion. -+ for file in `sed -n " -+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ -+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do -+ # Make sure the directory exists. -+ test -f "$dirpart/$file" && continue -+ fdir=`(dirname "$file") 2>/dev/null || -+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$file" : 'X\(//\)[^/]' \| \ -+ X"$file" : 'X\(//\)$' \| \ -+ X"$file" : 'X\(/\)' \| \ -+ . : '\(.\)' 2>/dev/null || -+echo X"$file" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } -+ /^X\(\/\/\)[^/].*/{ s//\1/; q; } -+ /^X\(\/\/\)$/{ s//\1/; q; } -+ /^X\(\/\).*/{ s//\1/; q; } -+ s/.*/./; q'` -+ { if $as_mkdir_p; then -+ mkdir -p $dirpart/$fdir -+ else -+ as_dir=$dirpart/$fdir -+ as_dirs= -+ while test ! -d "$as_dir"; do -+ as_dirs="$as_dir $as_dirs" -+ as_dir=`(dirname "$as_dir") 2>/dev/null || -+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$as_dir" : 'X\(//\)[^/]' \| \ -+ X"$as_dir" : 'X\(//\)$' \| \ -+ X"$as_dir" : 'X\(/\)' \| \ -+ . : '\(.\)' 2>/dev/null || -+echo X"$as_dir" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } -+ /^X\(\/\/\)[^/].*/{ s//\1/; q; } -+ /^X\(\/\/\)$/{ s//\1/; q; } -+ /^X\(\/\).*/{ s//\1/; q; } -+ s/.*/./; q'` -+ done -+ test ! -n "$as_dirs" || mkdir $as_dirs -+ fi || { { echo "$as_me:$LINENO: error: cannot create directory $dirpart/$fdir" >&5 -+echo "$as_me: error: cannot create directory $dirpart/$fdir" >&2;} -+ { (exit 1); exit 1; }; }; } -+ -+ # echo "creating $dirpart/$file" -+ echo '# dummy' > "$dirpart/$file" -+ done -+done -+ ;; -+ default ) echo 'char *build_date ="'`date`'";' > src/unix/build_date.c && echo 'char *build_date; '> src/unix/build_date.h ;; -+ esac -+done -+_ACEOF -+ -+cat >>$CONFIG_STATUS <<\_ACEOF -+ -+{ (exit 0); exit 0; } -+_ACEOF -+chmod +x $CONFIG_STATUS -+ac_clean_files=$ac_clean_files_save -+ -+ -+# configure is writing to config.log, and then calls config.status. -+# config.status does its own redirection, appending to config.log. -+# Unfortunately, on DOS this fails, as config.log is still kept open -+# by configure, so config.status won't be able to write to it; its -+# output is simply discarded. So we exec the FD to /dev/null, -+# effectively closing config.log, so it can be properly (re)opened and -+# appended to by config.status. When coming back to configure, we -+# need to make the FD available again. -+if test "$no_create" != yes; then -+ ac_cs_success=: -+ ac_config_status_args= -+ test "$silent" = yes && -+ ac_config_status_args="$ac_config_status_args --quiet" -+ exec 5>/dev/null -+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false -+ exec 5>>config.log -+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which -+ # would make configure fail if this is the last instruction. -+ $ac_cs_success || { (exit 1); exit 1; } -+fi -+ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/configure.ac open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/configure.ac ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/configure.ac 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/configure.ac 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,92 @@ -+dnl iscsiuio uIP user space stack configure.ac file -+dnl -+dnl Copyright (c) 2004-2011 Broadcom Corporation -+dnl -+dnl This program is free software; you can redistribute it and/or modify -+dnl it under the terms of the GNU General Public License as published by -+dnl the Free Software Foundation. -+dnl -+dnl Written by: Benjamin Li (benli@broadcom.com) -+dnl Maintained by: Eddie Wai (eddie.wai@broadcom.com) -+dnl -+ -+PACKAGE=iscsiuio -+VERSION=0.7.0.12 -+ -+AC_INIT(iscsiuio, 0.7.0.12, eddie.wai@broadcom.com) -+ -+AM_INIT_AUTOMAKE($PACKAGE, $VERSION) -+AC_CONFIG_HEADER(config.h) -+AC_PATH_PROGS(BASH, bash) -+ -+AC_PROG_CC -+AM_PROG_CC_C_O -+ -+AC_PROG_RANLIB -+ -+AC_GNU_SOURCE -+AC_PROG_INSTALL -+AC_PROG_GCC_TRADITIONAL -+ -+# Checks for typedefs, structures, and compiler characteristics. -+AC_C_CONST -+AC_C_INLINE -+AC_TYPE_OFF_T -+AC_TYPE_SIZE_T -+AC_CHECK_TYPES(int8_t) -+AC_CHECK_TYPES(uint8_t) -+AC_CHECK_TYPES(int16_t) -+AC_CHECK_TYPES(uint16_t) -+AC_CHECK_TYPES(int32_t) -+AC_CHECK_TYPES(uint32_t) -+AC_CHECK_TYPES(int64_t) -+AC_CHECK_TYPES(uint64_t) -+AC_CHECK_SIZEOF(short, 2) -+AC_CHECK_SIZEOF(int, 4) -+AC_CHECK_SIZEOF(long, 4) -+ -+AC_C_BIGENDIAN(AC_SUBST([ENDIAN],[BIG]),AC_SUBST([ENDIAN],[LITTLE])) -+ -+AC_LIBTOOL_DLOPEN -+ -+# libtool stuff -+AC_PROG_LIBTOOL -+ -+CFLAGS="-O2 -Wall" -+## check for --enable-debug first before checking CFLAGS before -+## so that we don't mix -O and -g -+AC_ARG_ENABLE(debug, -+[ --enable-debug Turn on compiler debugging information (default=no)], -+ [if eval "test x$enable_debug = xyes"; then -+ CFLAGS="${CFLAGS} -g -O0" -+ fi]) -+AM_CONDITIONAL([DEBUG], [test x$debug = xtrue]) -+ -+ISCSID_VERSION_DEFAULT="871" -+ISCSID_VERSION=$ISCSID_VERSION_DEFAULT -+which iscsid 2>&1 > /dev/null -+if [ test $? -eq 0 ]; then -+ ISCSID_VERSION=`iscsid -v | awk '{ print $3 }' | awk -F- '{ print $2 }'` -+ echo "Detected iscsid version $ISCSID_VERSION" -+fi -+ -+AC_ARG_WITH(iscsid-version, -+[ --with-iscsid-version Compile against a certain version of iscsid (default="$ISCSID_VERSION_DEFAULT")], -+ ISCSID_VERSION=$withval) -+ -+echo "ISCSID_VERSION: $ISCSID_VERSION" -+CFLAGS="${CFLAGS} -DISCSID_VERSION=$ISCSID_VERSION" -+AC_SUBST(CFLAGS, ${CFLAGS}) -+ -+AC_CONFIG_COMMANDS([default],[[ echo 'char *build_date ="'`date`'";' > src/unix/build_date.c && echo 'char *build_date; '> src/unix/build_date.h]],[[]]) -+ -+AC_PREFIX_DEFAULT() -+ -+AC_OUTPUT([Makefile -+src/Makefile -+src/apps/Makefile -+src/apps/dhcpc/Makefile -+src/apps/brcm-iscsi/Makefile -+src/uip/Makefile -+src/unix/Makefile -+src/unix/libs/Makefile]) -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/COPYING open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/COPYING ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/COPYING 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/COPYING 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,674 @@ -+ GNU GENERAL PUBLIC LICENSE -+ Version 3, 29 June 2007 -+ -+ Copyright (C) 2007 Free Software Foundation, Inc. -+ Everyone is permitted to copy and distribute verbatim copies -+ of this license document, but changing it is not allowed. -+ -+ Preamble -+ -+ The GNU General Public License is a free, copyleft license for -+software and other kinds of works. -+ -+ The licenses for most software and other practical works are designed -+to take away your freedom to share and change the works. By contrast, -+the GNU General Public License is intended to guarantee your freedom to -+share and change all versions of a program--to make sure it remains free -+software for all its users. We, the Free Software Foundation, use the -+GNU General Public License for most of our software; it applies also to -+any other work released this way by its authors. You can apply it to -+your programs, too. -+ -+ When we speak of free software, we are referring to freedom, not -+price. Our General Public Licenses are designed to make sure that you -+have the freedom to distribute copies of free software (and charge for -+them if you wish), that you receive source code or can get it if you -+want it, that you can change the software or use pieces of it in new -+free programs, and that you know you can do these things. -+ -+ To protect your rights, we need to prevent others from denying you -+these rights or asking you to surrender the rights. Therefore, you have -+certain responsibilities if you distribute copies of the software, or if -+you modify it: responsibilities to respect the freedom of others. -+ -+ For example, if you distribute copies of such a program, whether -+gratis or for a fee, you must pass on to the recipients the same -+freedoms that you received. You must make sure that they, too, receive -+or can get the source code. And you must show them these terms so they -+know their rights. -+ -+ Developers that use the GNU GPL protect your rights with two steps: -+(1) assert copyright on the software, and (2) offer you this License -+giving you legal permission to copy, distribute and/or modify it. -+ -+ For the developers' and authors' protection, the GPL clearly explains -+that there is no warranty for this free software. For both users' and -+authors' sake, the GPL requires that modified versions be marked as -+changed, so that their problems will not be attributed erroneously to -+authors of previous versions. -+ -+ Some devices are designed to deny users access to install or run -+modified versions of the software inside them, although the manufacturer -+can do so. This is fundamentally incompatible with the aim of -+protecting users' freedom to change the software. The systematic -+pattern of such abuse occurs in the area of products for individuals to -+use, which is precisely where it is most unacceptable. Therefore, we -+have designed this version of the GPL to prohibit the practice for those -+products. If such problems arise substantially in other domains, we -+stand ready to extend this provision to those domains in future versions -+of the GPL, as needed to protect the freedom of users. -+ -+ Finally, every program is threatened constantly by software patents. -+States should not allow patents to restrict development and use of -+software on general-purpose computers, but in those that do, we wish to -+avoid the special danger that patents applied to a free program could -+make it effectively proprietary. To prevent this, the GPL assures that -+patents cannot be used to render the program non-free. -+ -+ The precise terms and conditions for copying, distribution and -+modification follow. -+ -+ TERMS AND CONDITIONS -+ -+ 0. Definitions. -+ -+ "This License" refers to version 3 of the GNU General Public License. -+ -+ "Copyright" also means copyright-like laws that apply to other kinds of -+works, such as semiconductor masks. -+ -+ "The Program" refers to any copyrightable work licensed under this -+License. Each licensee is addressed as "you". "Licensees" and -+"recipients" may be individuals or organizations. -+ -+ To "modify" a work means to copy from or adapt all or part of the work -+in a fashion requiring copyright permission, other than the making of an -+exact copy. The resulting work is called a "modified version" of the -+earlier work or a work "based on" the earlier work. -+ -+ A "covered work" means either the unmodified Program or a work based -+on the Program. -+ -+ To "propagate" a work means to do anything with it that, without -+permission, would make you directly or secondarily liable for -+infringement under applicable copyright law, except executing it on a -+computer or modifying a private copy. Propagation includes copying, -+distribution (with or without modification), making available to the -+public, and in some countries other activities as well. -+ -+ To "convey" a work means any kind of propagation that enables other -+parties to make or receive copies. Mere interaction with a user through -+a computer network, with no transfer of a copy, is not conveying. -+ -+ An interactive user interface displays "Appropriate Legal Notices" -+to the extent that it includes a convenient and prominently visible -+feature that (1) displays an appropriate copyright notice, and (2) -+tells the user that there is no warranty for the work (except to the -+extent that warranties are provided), that licensees may convey the -+work under this License, and how to view a copy of this License. If -+the interface presents a list of user commands or options, such as a -+menu, a prominent item in the list meets this criterion. -+ -+ 1. Source Code. -+ -+ The "source code" for a work means the preferred form of the work -+for making modifications to it. "Object code" means any non-source -+form of a work. -+ -+ A "Standard Interface" means an interface that either is an official -+standard defined by a recognized standards body, or, in the case of -+interfaces specified for a particular programming language, one that -+is widely used among developers working in that language. -+ -+ The "System Libraries" of an executable work include anything, other -+than the work as a whole, that (a) is included in the normal form of -+packaging a Major Component, but which is not part of that Major -+Component, and (b) serves only to enable use of the work with that -+Major Component, or to implement a Standard Interface for which an -+implementation is available to the public in source code form. A -+"Major Component", in this context, means a major essential component -+(kernel, window system, and so on) of the specific operating system -+(if any) on which the executable work runs, or a compiler used to -+produce the work, or an object code interpreter used to run it. -+ -+ The "Corresponding Source" for a work in object code form means all -+the source code needed to generate, install, and (for an executable -+work) run the object code and to modify the work, including scripts to -+control those activities. However, it does not include the work's -+System Libraries, or general-purpose tools or generally available free -+programs which are used unmodified in performing those activities but -+which are not part of the work. For example, Corresponding Source -+includes interface definition files associated with source files for -+the work, and the source code for shared libraries and dynamically -+linked subprograms that the work is specifically designed to require, -+such as by intimate data communication or control flow between those -+subprograms and other parts of the work. -+ -+ The Corresponding Source need not include anything that users -+can regenerate automatically from other parts of the Corresponding -+Source. -+ -+ The Corresponding Source for a work in source code form is that -+same work. -+ -+ 2. Basic Permissions. -+ -+ All rights granted under this License are granted for the term of -+copyright on the Program, and are irrevocable provided the stated -+conditions are met. This License explicitly affirms your unlimited -+permission to run the unmodified Program. The output from running a -+covered work is covered by this License only if the output, given its -+content, constitutes a covered work. This License acknowledges your -+rights of fair use or other equivalent, as provided by copyright law. -+ -+ You may make, run and propagate covered works that you do not -+convey, without conditions so long as your license otherwise remains -+in force. You may convey covered works to others for the sole purpose -+of having them make modifications exclusively for you, or provide you -+with facilities for running those works, provided that you comply with -+the terms of this License in conveying all material for which you do -+not control copyright. Those thus making or running the covered works -+for you must do so exclusively on your behalf, under your direction -+and control, on terms that prohibit them from making any copies of -+your copyrighted material outside their relationship with you. -+ -+ Conveying under any other circumstances is permitted solely under -+the conditions stated below. Sublicensing is not allowed; section 10 -+makes it unnecessary. -+ -+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law. -+ -+ No covered work shall be deemed part of an effective technological -+measure under any applicable law fulfilling obligations under article -+11 of the WIPO copyright treaty adopted on 20 December 1996, or -+similar laws prohibiting or restricting circumvention of such -+measures. -+ -+ When you convey a covered work, you waive any legal power to forbid -+circumvention of technological measures to the extent such circumvention -+is effected by exercising rights under this License with respect to -+the covered work, and you disclaim any intention to limit operation or -+modification of the work as a means of enforcing, against the work's -+users, your or third parties' legal rights to forbid circumvention of -+technological measures. -+ -+ 4. Conveying Verbatim Copies. -+ -+ You may convey verbatim copies of the Program's source code as you -+receive it, in any medium, provided that you conspicuously and -+appropriately publish on each copy an appropriate copyright notice; -+keep intact all notices stating that this License and any -+non-permissive terms added in accord with section 7 apply to the code; -+keep intact all notices of the absence of any warranty; and give all -+recipients a copy of this License along with the Program. -+ -+ You may charge any price or no price for each copy that you convey, -+and you may offer support or warranty protection for a fee. -+ -+ 5. Conveying Modified Source Versions. -+ -+ You may convey a work based on the Program, or the modifications to -+produce it from the Program, in the form of source code under the -+terms of section 4, provided that you also meet all of these conditions: -+ -+ a) The work must carry prominent notices stating that you modified -+ it, and giving a relevant date. -+ -+ b) The work must carry prominent notices stating that it is -+ released under this License and any conditions added under section -+ 7. This requirement modifies the requirement in section 4 to -+ "keep intact all notices". -+ -+ c) You must license the entire work, as a whole, under this -+ License to anyone who comes into possession of a copy. This -+ License will therefore apply, along with any applicable section 7 -+ additional terms, to the whole of the work, and all its parts, -+ regardless of how they are packaged. This License gives no -+ permission to license the work in any other way, but it does not -+ invalidate such permission if you have separately received it. -+ -+ d) If the work has interactive user interfaces, each must display -+ Appropriate Legal Notices; however, if the Program has interactive -+ interfaces that do not display Appropriate Legal Notices, your -+ work need not make them do so. -+ -+ A compilation of a covered work with other separate and independent -+works, which are not by their nature extensions of the covered work, -+and which are not combined with it such as to form a larger program, -+in or on a volume of a storage or distribution medium, is called an -+"aggregate" if the compilation and its resulting copyright are not -+used to limit the access or legal rights of the compilation's users -+beyond what the individual works permit. Inclusion of a covered work -+in an aggregate does not cause this License to apply to the other -+parts of the aggregate. -+ -+ 6. Conveying Non-Source Forms. -+ -+ You may convey a covered work in object code form under the terms -+of sections 4 and 5, provided that you also convey the -+machine-readable Corresponding Source under the terms of this License, -+in one of these ways: -+ -+ a) Convey the object code in, or embodied in, a physical product -+ (including a physical distribution medium), accompanied by the -+ Corresponding Source fixed on a durable physical medium -+ customarily used for software interchange. -+ -+ b) Convey the object code in, or embodied in, a physical product -+ (including a physical distribution medium), accompanied by a -+ written offer, valid for at least three years and valid for as -+ long as you offer spare parts or customer support for that product -+ model, to give anyone who possesses the object code either (1) a -+ copy of the Corresponding Source for all the software in the -+ product that is covered by this License, on a durable physical -+ medium customarily used for software interchange, for a price no -+ more than your reasonable cost of physically performing this -+ conveying of source, or (2) access to copy the -+ Corresponding Source from a network server at no charge. -+ -+ c) Convey individual copies of the object code with a copy of the -+ written offer to provide the Corresponding Source. This -+ alternative is allowed only occasionally and noncommercially, and -+ only if you received the object code with such an offer, in accord -+ with subsection 6b. -+ -+ d) Convey the object code by offering access from a designated -+ place (gratis or for a charge), and offer equivalent access to the -+ Corresponding Source in the same way through the same place at no -+ further charge. You need not require recipients to copy the -+ Corresponding Source along with the object code. If the place to -+ copy the object code is a network server, the Corresponding Source -+ may be on a different server (operated by you or a third party) -+ that supports equivalent copying facilities, provided you maintain -+ clear directions next to the object code saying where to find the -+ Corresponding Source. Regardless of what server hosts the -+ Corresponding Source, you remain obligated to ensure that it is -+ available for as long as needed to satisfy these requirements. -+ -+ e) Convey the object code using peer-to-peer transmission, provided -+ you inform other peers where the object code and Corresponding -+ Source of the work are being offered to the general public at no -+ charge under subsection 6d. -+ -+ A separable portion of the object code, whose source code is excluded -+from the Corresponding Source as a System Library, need not be -+included in conveying the object code work. -+ -+ A "User Product" is either (1) a "consumer product", which means any -+tangible personal property which is normally used for personal, family, -+or household purposes, or (2) anything designed or sold for incorporation -+into a dwelling. In determining whether a product is a consumer product, -+doubtful cases shall be resolved in favor of coverage. For a particular -+product received by a particular user, "normally used" refers to a -+typical or common use of that class of product, regardless of the status -+of the particular user or of the way in which the particular user -+actually uses, or expects or is expected to use, the product. A product -+is a consumer product regardless of whether the product has substantial -+commercial, industrial or non-consumer uses, unless such uses represent -+the only significant mode of use of the product. -+ -+ "Installation Information" for a User Product means any methods, -+procedures, authorization keys, or other information required to install -+and execute modified versions of a covered work in that User Product from -+a modified version of its Corresponding Source. The information must -+suffice to ensure that the continued functioning of the modified object -+code is in no case prevented or interfered with solely because -+modification has been made. -+ -+ If you convey an object code work under this section in, or with, or -+specifically for use in, a User Product, and the conveying occurs as -+part of a transaction in which the right of possession and use of the -+User Product is transferred to the recipient in perpetuity or for a -+fixed term (regardless of how the transaction is characterized), the -+Corresponding Source conveyed under this section must be accompanied -+by the Installation Information. But this requirement does not apply -+if neither you nor any third party retains the ability to install -+modified object code on the User Product (for example, the work has -+been installed in ROM). -+ -+ The requirement to provide Installation Information does not include a -+requirement to continue to provide support service, warranty, or updates -+for a work that has been modified or installed by the recipient, or for -+the User Product in which it has been modified or installed. Access to a -+network may be denied when the modification itself materially and -+adversely affects the operation of the network or violates the rules and -+protocols for communication across the network. -+ -+ Corresponding Source conveyed, and Installation Information provided, -+in accord with this section must be in a format that is publicly -+documented (and with an implementation available to the public in -+source code form), and must require no special password or key for -+unpacking, reading or copying. -+ -+ 7. Additional Terms. -+ -+ "Additional permissions" are terms that supplement the terms of this -+License by making exceptions from one or more of its conditions. -+Additional permissions that are applicable to the entire Program shall -+be treated as though they were included in this License, to the extent -+that they are valid under applicable law. If additional permissions -+apply only to part of the Program, that part may be used separately -+under those permissions, but the entire Program remains governed by -+this License without regard to the additional permissions. -+ -+ When you convey a copy of a covered work, you may at your option -+remove any additional permissions from that copy, or from any part of -+it. (Additional permissions may be written to require their own -+removal in certain cases when you modify the work.) You may place -+additional permissions on material, added by you to a covered work, -+for which you have or can give appropriate copyright permission. -+ -+ Notwithstanding any other provision of this License, for material you -+add to a covered work, you may (if authorized by the copyright holders of -+that material) supplement the terms of this License with terms: -+ -+ a) Disclaiming warranty or limiting liability differently from the -+ terms of sections 15 and 16 of this License; or -+ -+ b) Requiring preservation of specified reasonable legal notices or -+ author attributions in that material or in the Appropriate Legal -+ Notices displayed by works containing it; or -+ -+ c) Prohibiting misrepresentation of the origin of that material, or -+ requiring that modified versions of such material be marked in -+ reasonable ways as different from the original version; or -+ -+ d) Limiting the use for publicity purposes of names of licensors or -+ authors of the material; or -+ -+ e) Declining to grant rights under trademark law for use of some -+ trade names, trademarks, or service marks; or -+ -+ f) Requiring indemnification of licensors and authors of that -+ material by anyone who conveys the material (or modified versions of -+ it) with contractual assumptions of liability to the recipient, for -+ any liability that these contractual assumptions directly impose on -+ those licensors and authors. -+ -+ All other non-permissive additional terms are considered "further -+restrictions" within the meaning of section 10. If the Program as you -+received it, or any part of it, contains a notice stating that it is -+governed by this License along with a term that is a further -+restriction, you may remove that term. If a license document contains -+a further restriction but permits relicensing or conveying under this -+License, you may add to a covered work material governed by the terms -+of that license document, provided that the further restriction does -+not survive such relicensing or conveying. -+ -+ If you add terms to a covered work in accord with this section, you -+must place, in the relevant source files, a statement of the -+additional terms that apply to those files, or a notice indicating -+where to find the applicable terms. -+ -+ Additional terms, permissive or non-permissive, may be stated in the -+form of a separately written license, or stated as exceptions; -+the above requirements apply either way. -+ -+ 8. Termination. -+ -+ You may not propagate or modify a covered work except as expressly -+provided under this License. Any attempt otherwise to propagate or -+modify it is void, and will automatically terminate your rights under -+this License (including any patent licenses granted under the third -+paragraph of section 11). -+ -+ However, if you cease all violation of this License, then your -+license from a particular copyright holder is reinstated (a) -+provisionally, unless and until the copyright holder explicitly and -+finally terminates your license, and (b) permanently, if the copyright -+holder fails to notify you of the violation by some reasonable means -+prior to 60 days after the cessation. -+ -+ Moreover, your license from a particular copyright holder is -+reinstated permanently if the copyright holder notifies you of the -+violation by some reasonable means, this is the first time you have -+received notice of violation of this License (for any work) from that -+copyright holder, and you cure the violation prior to 30 days after -+your receipt of the notice. -+ -+ Termination of your rights under this section does not terminate the -+licenses of parties who have received copies or rights from you under -+this License. If your rights have been terminated and not permanently -+reinstated, you do not qualify to receive new licenses for the same -+material under section 10. -+ -+ 9. Acceptance Not Required for Having Copies. -+ -+ You are not required to accept this License in order to receive or -+run a copy of the Program. Ancillary propagation of a covered work -+occurring solely as a consequence of using peer-to-peer transmission -+to receive a copy likewise does not require acceptance. However, -+nothing other than this License grants you permission to propagate or -+modify any covered work. These actions infringe copyright if you do -+not accept this License. Therefore, by modifying or propagating a -+covered work, you indicate your acceptance of this License to do so. -+ -+ 10. Automatic Licensing of Downstream Recipients. -+ -+ Each time you convey a covered work, the recipient automatically -+receives a license from the original licensors, to run, modify and -+propagate that work, subject to this License. You are not responsible -+for enforcing compliance by third parties with this License. -+ -+ An "entity transaction" is a transaction transferring control of an -+organization, or substantially all assets of one, or subdividing an -+organization, or merging organizations. If propagation of a covered -+work results from an entity transaction, each party to that -+transaction who receives a copy of the work also receives whatever -+licenses to the work the party's predecessor in interest had or could -+give under the previous paragraph, plus a right to possession of the -+Corresponding Source of the work from the predecessor in interest, if -+the predecessor has it or can get it with reasonable efforts. -+ -+ You may not impose any further restrictions on the exercise of the -+rights granted or affirmed under this License. For example, you may -+not impose a license fee, royalty, or other charge for exercise of -+rights granted under this License, and you may not initiate litigation -+(including a cross-claim or counterclaim in a lawsuit) alleging that -+any patent claim is infringed by making, using, selling, offering for -+sale, or importing the Program or any portion of it. -+ -+ 11. Patents. -+ -+ A "contributor" is a copyright holder who authorizes use under this -+License of the Program or a work on which the Program is based. The -+work thus licensed is called the contributor's "contributor version". -+ -+ A contributor's "essential patent claims" are all patent claims -+owned or controlled by the contributor, whether already acquired or -+hereafter acquired, that would be infringed by some manner, permitted -+by this License, of making, using, or selling its contributor version, -+but do not include claims that would be infringed only as a -+consequence of further modification of the contributor version. For -+purposes of this definition, "control" includes the right to grant -+patent sublicenses in a manner consistent with the requirements of -+this License. -+ -+ Each contributor grants you a non-exclusive, worldwide, royalty-free -+patent license under the contributor's essential patent claims, to -+make, use, sell, offer for sale, import and otherwise run, modify and -+propagate the contents of its contributor version. -+ -+ In the following three paragraphs, a "patent license" is any express -+agreement or commitment, however denominated, not to enforce a patent -+(such as an express permission to practice a patent or covenant not to -+sue for patent infringement). To "grant" such a patent license to a -+party means to make such an agreement or commitment not to enforce a -+patent against the party. -+ -+ If you convey a covered work, knowingly relying on a patent license, -+and the Corresponding Source of the work is not available for anyone -+to copy, free of charge and under the terms of this License, through a -+publicly available network server or other readily accessible means, -+then you must either (1) cause the Corresponding Source to be so -+available, or (2) arrange to deprive yourself of the benefit of the -+patent license for this particular work, or (3) arrange, in a manner -+consistent with the requirements of this License, to extend the patent -+license to downstream recipients. "Knowingly relying" means you have -+actual knowledge that, but for the patent license, your conveying the -+covered work in a country, or your recipient's use of the covered work -+in a country, would infringe one or more identifiable patents in that -+country that you have reason to believe are valid. -+ -+ If, pursuant to or in connection with a single transaction or -+arrangement, you convey, or propagate by procuring conveyance of, a -+covered work, and grant a patent license to some of the parties -+receiving the covered work authorizing them to use, propagate, modify -+or convey a specific copy of the covered work, then the patent license -+you grant is automatically extended to all recipients of the covered -+work and works based on it. -+ -+ A patent license is "discriminatory" if it does not include within -+the scope of its coverage, prohibits the exercise of, or is -+conditioned on the non-exercise of one or more of the rights that are -+specifically granted under this License. You may not convey a covered -+work if you are a party to an arrangement with a third party that is -+in the business of distributing software, under which you make payment -+to the third party based on the extent of your activity of conveying -+the work, and under which the third party grants, to any of the -+parties who would receive the covered work from you, a discriminatory -+patent license (a) in connection with copies of the covered work -+conveyed by you (or copies made from those copies), or (b) primarily -+for and in connection with specific products or compilations that -+contain the covered work, unless you entered into that arrangement, -+or that patent license was granted, prior to 28 March 2007. -+ -+ Nothing in this License shall be construed as excluding or limiting -+any implied license or other defenses to infringement that may -+otherwise be available to you under applicable patent law. -+ -+ 12. No Surrender of Others' Freedom. -+ -+ If conditions are imposed on you (whether by court order, agreement or -+otherwise) that contradict the conditions of this License, they do not -+excuse you from the conditions of this License. If you cannot convey a -+covered work so as to satisfy simultaneously your obligations under this -+License and any other pertinent obligations, then as a consequence you may -+not convey it at all. For example, if you agree to terms that obligate you -+to collect a royalty for further conveying from those to whom you convey -+the Program, the only way you could satisfy both those terms and this -+License would be to refrain entirely from conveying the Program. -+ -+ 13. Use with the GNU Affero General Public License. -+ -+ Notwithstanding any other provision of this License, you have -+permission to link or combine any covered work with a work licensed -+under version 3 of the GNU Affero General Public License into a single -+combined work, and to convey the resulting work. The terms of this -+License will continue to apply to the part which is the covered work, -+but the special requirements of the GNU Affero General Public License, -+section 13, concerning interaction through a network will apply to the -+combination as such. -+ -+ 14. Revised Versions of this License. -+ -+ The Free Software Foundation may publish revised and/or new versions of -+the GNU General Public License from time to time. Such new versions will -+be similar in spirit to the present version, but may differ in detail to -+address new problems or concerns. -+ -+ Each version is given a distinguishing version number. If the -+Program specifies that a certain numbered version of the GNU General -+Public License "or any later version" applies to it, you have the -+option of following the terms and conditions either of that numbered -+version or of any later version published by the Free Software -+Foundation. If the Program does not specify a version number of the -+GNU General Public License, you may choose any version ever published -+by the Free Software Foundation. -+ -+ If the Program specifies that a proxy can decide which future -+versions of the GNU General Public License can be used, that proxy's -+public statement of acceptance of a version permanently authorizes you -+to choose that version for the Program. -+ -+ Later license versions may give you additional or different -+permissions. However, no additional obligations are imposed on any -+author or copyright holder as a result of your choosing to follow a -+later version. -+ -+ 15. Disclaimer of Warranty. -+ -+ THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -+APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -+IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -+ALL NECESSARY SERVICING, REPAIR OR CORRECTION. -+ -+ 16. Limitation of Liability. -+ -+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -+SUCH DAMAGES. -+ -+ 17. Interpretation of Sections 15 and 16. -+ -+ If the disclaimer of warranty and limitation of liability provided -+above cannot be given local legal effect according to their terms, -+reviewing courts shall apply local law that most closely approximates -+an absolute waiver of all civil liability in connection with the -+Program, unless a warranty or assumption of liability accompanies a -+copy of the Program in return for a fee. -+ -+ END OF TERMS AND CONDITIONS -+ -+ How to Apply These Terms to Your New Programs -+ -+ If you develop a new program, and you want it to be of the greatest -+possible use to the public, the best way to achieve this is to make it -+free software which everyone can redistribute and change under these terms. -+ -+ To do so, attach the following notices to the program. It is safest -+to attach them to the start of each source file to most effectively -+state the exclusion of warranty; and each file should have at least -+the "copyright" line and a pointer to where the full notice is found. -+ -+ -+ Copyright (C) -+ -+ This program 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 3 of the License, or -+ (at your option) any later version. -+ -+ This program 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 this program. If not, see . -+ -+Also add information on how to contact you by electronic and paper mail. -+ -+ If the program does terminal interaction, make it output a short -+notice like this when it starts in an interactive mode: -+ -+ Copyright (C) -+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. -+ This is free software, and you are welcome to redistribute it -+ under certain conditions; type `show c' for details. -+ -+The hypothetical commands `show w' and `show c' should show the appropriate -+parts of the General Public License. Of course, your program's commands -+might be different; for a GUI interface, you would use an "about box". -+ -+ You should also get your employer (if you work as a programmer) or school, -+if any, to sign a "copyright disclaimer" for the program, if necessary. -+For more information on this, and how to apply and follow the GNU GPL, see -+. -+ -+ The GNU General Public License does not permit incorporating your program -+into proprietary programs. If your program is a subroutine library, you -+may consider it more useful to permit linking proprietary applications with -+the library. If this is what you want to do, use the GNU Lesser General -+Public License instead of this License. But first, please read -+. -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/depcomp open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/depcomp ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/depcomp 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/depcomp 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,589 @@ -+#! /bin/sh -+# depcomp - compile a program generating dependencies as side-effects -+ -+scriptversion=2007-03-29.01 -+ -+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 Free Software -+# Foundation, Inc. -+ -+# This program 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, or (at your option) -+# any later version. -+ -+# This program 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 this program; if not, write to the Free Software -+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -+# 02110-1301, USA. -+ -+# As a special exception to the GNU General Public License, if you -+# distribute this file as part of a program that contains a -+# configuration script generated by Autoconf, you may include it under -+# the same distribution terms that you use for the rest of that program. -+ -+# Originally written by Alexandre Oliva . -+ -+case $1 in -+ '') -+ echo "$0: No command. Try \`$0 --help' for more information." 1>&2 -+ exit 1; -+ ;; -+ -h | --h*) -+ cat <<\EOF -+Usage: depcomp [--help] [--version] PROGRAM [ARGS] -+ -+Run PROGRAMS ARGS to compile a file, generating dependencies -+as side-effects. -+ -+Environment variables: -+ depmode Dependency tracking mode. -+ source Source file read by `PROGRAMS ARGS'. -+ object Object file output by `PROGRAMS ARGS'. -+ DEPDIR directory where to store dependencies. -+ depfile Dependency file to output. -+ tmpdepfile Temporary file to use when outputing dependencies. -+ libtool Whether libtool is used (yes/no). -+ -+Report bugs to . -+EOF -+ exit $? -+ ;; -+ -v | --v*) -+ echo "depcomp $scriptversion" -+ exit $? -+ ;; -+esac -+ -+if test -z "$depmode" || test -z "$source" || test -z "$object"; then -+ echo "depcomp: Variables source, object and depmode must be set" 1>&2 -+ exit 1 -+fi -+ -+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. -+depfile=${depfile-`echo "$object" | -+ sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} -+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} -+ -+rm -f "$tmpdepfile" -+ -+# Some modes work just like other modes, but use different flags. We -+# parameterize here, but still list the modes in the big case below, -+# to make depend.m4 easier to write. Note that we *cannot* use a case -+# here, because this file can only contain one case statement. -+if test "$depmode" = hp; then -+ # HP compiler uses -M and no extra arg. -+ gccflag=-M -+ depmode=gcc -+fi -+ -+if test "$depmode" = dashXmstdout; then -+ # This is just like dashmstdout with a different argument. -+ dashmflag=-xM -+ depmode=dashmstdout -+fi -+ -+case "$depmode" in -+gcc3) -+## gcc 3 implements dependency tracking that does exactly what -+## we want. Yay! Note: for some reason libtool 1.4 doesn't like -+## it if -MD -MP comes after the -MF stuff. Hmm. -+## Unfortunately, FreeBSD c89 acceptance of flags depends upon -+## the command line argument order; so add the flags where they -+## appear in depend2.am. Note that the slowdown incurred here -+## affects only configure: in makefiles, %FASTDEP% shortcuts this. -+ for arg -+ do -+ case $arg in -+ -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; -+ *) set fnord "$@" "$arg" ;; -+ esac -+ shift # fnord -+ shift # $arg -+ done -+ "$@" -+ stat=$? -+ if test $stat -eq 0; then : -+ else -+ rm -f "$tmpdepfile" -+ exit $stat -+ fi -+ mv "$tmpdepfile" "$depfile" -+ ;; -+ -+gcc) -+## There are various ways to get dependency output from gcc. Here's -+## why we pick this rather obscure method: -+## - Don't want to use -MD because we'd like the dependencies to end -+## up in a subdir. Having to rename by hand is ugly. -+## (We might end up doing this anyway to support other compilers.) -+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -+## -MM, not -M (despite what the docs say). -+## - Using -M directly means running the compiler twice (even worse -+## than renaming). -+ if test -z "$gccflag"; then -+ gccflag=-MD, -+ fi -+ "$@" -Wp,"$gccflag$tmpdepfile" -+ stat=$? -+ if test $stat -eq 0; then : -+ else -+ rm -f "$tmpdepfile" -+ exit $stat -+ fi -+ rm -f "$depfile" -+ echo "$object : \\" > "$depfile" -+ alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -+## The second -e expression handles DOS-style file names with drive letters. -+ sed -e 's/^[^:]*: / /' \ -+ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -+## This next piece of magic avoids the `deleted header file' problem. -+## The problem is that when a header file which appears in a .P file -+## is deleted, the dependency causes make to die (because there is -+## typically no way to rebuild the header). We avoid this by adding -+## dummy dependencies for each header file. Too bad gcc doesn't do -+## this for us directly. -+ tr ' ' ' -+' < "$tmpdepfile" | -+## Some versions of gcc put a space before the `:'. On the theory -+## that the space means something, we add a space to the output as -+## well. -+## Some versions of the HPUX 10.20 sed can't process this invocation -+## correctly. Breaking it into two sed invocations is a workaround. -+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" -+ rm -f "$tmpdepfile" -+ ;; -+ -+hp) -+ # This case exists only to let depend.m4 do its work. It works by -+ # looking at the text of this script. This case will never be run, -+ # since it is checked for above. -+ exit 1 -+ ;; -+ -+sgi) -+ if test "$libtool" = yes; then -+ "$@" "-Wp,-MDupdate,$tmpdepfile" -+ else -+ "$@" -MDupdate "$tmpdepfile" -+ fi -+ stat=$? -+ if test $stat -eq 0; then : -+ else -+ rm -f "$tmpdepfile" -+ exit $stat -+ fi -+ rm -f "$depfile" -+ -+ if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files -+ echo "$object : \\" > "$depfile" -+ -+ # Clip off the initial element (the dependent). Don't try to be -+ # clever and replace this with sed code, as IRIX sed won't handle -+ # lines with more than a fixed number of characters (4096 in -+ # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; -+ # the IRIX cc adds comments like `#:fec' to the end of the -+ # dependency line. -+ tr ' ' ' -+' < "$tmpdepfile" \ -+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ -+ tr ' -+' ' ' >> $depfile -+ echo >> $depfile -+ -+ # The second pass generates a dummy entry for each header file. -+ tr ' ' ' -+' < "$tmpdepfile" \ -+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ -+ >> $depfile -+ else -+ # The sourcefile does not contain any dependencies, so just -+ # store a dummy comment line, to avoid errors with the Makefile -+ # "include basename.Plo" scheme. -+ echo "#dummy" > "$depfile" -+ fi -+ rm -f "$tmpdepfile" -+ ;; -+ -+aix) -+ # The C for AIX Compiler uses -M and outputs the dependencies -+ # in a .u file. In older versions, this file always lives in the -+ # current directory. Also, the AIX compiler puts `$object:' at the -+ # start of each line; $object doesn't have directory information. -+ # Version 6 uses the directory in both cases. -+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` -+ test "x$dir" = "x$object" && dir= -+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` -+ if test "$libtool" = yes; then -+ tmpdepfile1=$dir$base.u -+ tmpdepfile2=$base.u -+ tmpdepfile3=$dir.libs/$base.u -+ "$@" -Wc,-M -+ else -+ tmpdepfile1=$dir$base.u -+ tmpdepfile2=$dir$base.u -+ tmpdepfile3=$dir$base.u -+ "$@" -M -+ fi -+ stat=$? -+ -+ if test $stat -eq 0; then : -+ else -+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" -+ exit $stat -+ fi -+ -+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" -+ do -+ test -f "$tmpdepfile" && break -+ done -+ if test -f "$tmpdepfile"; then -+ # Each line is of the form `foo.o: dependent.h'. -+ # Do two passes, one to just change these to -+ # `$object: dependent.h' and one to simply `dependent.h:'. -+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" -+ # That's a tab and a space in the []. -+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" -+ else -+ # The sourcefile does not contain any dependencies, so just -+ # store a dummy comment line, to avoid errors with the Makefile -+ # "include basename.Plo" scheme. -+ echo "#dummy" > "$depfile" -+ fi -+ rm -f "$tmpdepfile" -+ ;; -+ -+icc) -+ # Intel's C compiler understands `-MD -MF file'. However on -+ # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c -+ # ICC 7.0 will fill foo.d with something like -+ # foo.o: sub/foo.c -+ # foo.o: sub/foo.h -+ # which is wrong. We want: -+ # sub/foo.o: sub/foo.c -+ # sub/foo.o: sub/foo.h -+ # sub/foo.c: -+ # sub/foo.h: -+ # ICC 7.1 will output -+ # foo.o: sub/foo.c sub/foo.h -+ # and will wrap long lines using \ : -+ # foo.o: sub/foo.c ... \ -+ # sub/foo.h ... \ -+ # ... -+ -+ "$@" -MD -MF "$tmpdepfile" -+ stat=$? -+ if test $stat -eq 0; then : -+ else -+ rm -f "$tmpdepfile" -+ exit $stat -+ fi -+ rm -f "$depfile" -+ # Each line is of the form `foo.o: dependent.h', -+ # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. -+ # Do two passes, one to just change these to -+ # `$object: dependent.h' and one to simply `dependent.h:'. -+ sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" -+ # Some versions of the HPUX 10.20 sed can't process this invocation -+ # correctly. Breaking it into two sed invocations is a workaround. -+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | -+ sed -e 's/$/ :/' >> "$depfile" -+ rm -f "$tmpdepfile" -+ ;; -+ -+hp2) -+ # The "hp" stanza above does not work with aCC (C++) and HP's ia64 -+ # compilers, which have integrated preprocessors. The correct option -+ # to use with these is +Maked; it writes dependencies to a file named -+ # 'foo.d', which lands next to the object file, wherever that -+ # happens to be. -+ # Much of this is similar to the tru64 case; see comments there. -+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` -+ test "x$dir" = "x$object" && dir= -+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` -+ if test "$libtool" = yes; then -+ tmpdepfile1=$dir$base.d -+ tmpdepfile2=$dir.libs/$base.d -+ "$@" -Wc,+Maked -+ else -+ tmpdepfile1=$dir$base.d -+ tmpdepfile2=$dir$base.d -+ "$@" +Maked -+ fi -+ stat=$? -+ if test $stat -eq 0; then : -+ else -+ rm -f "$tmpdepfile1" "$tmpdepfile2" -+ exit $stat -+ fi -+ -+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" -+ do -+ test -f "$tmpdepfile" && break -+ done -+ if test -f "$tmpdepfile"; then -+ sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" -+ # Add `dependent.h:' lines. -+ sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" -+ else -+ echo "#dummy" > "$depfile" -+ fi -+ rm -f "$tmpdepfile" "$tmpdepfile2" -+ ;; -+ -+tru64) -+ # The Tru64 compiler uses -MD to generate dependencies as a side -+ # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. -+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put -+ # dependencies in `foo.d' instead, so we check for that too. -+ # Subdirectories are respected. -+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` -+ test "x$dir" = "x$object" && dir= -+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` -+ -+ if test "$libtool" = yes; then -+ # With Tru64 cc, shared objects can also be used to make a -+ # static library. This mechanism is used in libtool 1.4 series to -+ # handle both shared and static libraries in a single compilation. -+ # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. -+ # -+ # With libtool 1.5 this exception was removed, and libtool now -+ # generates 2 separate objects for the 2 libraries. These two -+ # compilations output dependencies in $dir.libs/$base.o.d and -+ # in $dir$base.o.d. We have to check for both files, because -+ # one of the two compilations can be disabled. We should prefer -+ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is -+ # automatically cleaned when .libs/ is deleted, while ignoring -+ # the former would cause a distcleancheck panic. -+ tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 -+ tmpdepfile2=$dir$base.o.d # libtool 1.5 -+ tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 -+ tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 -+ "$@" -Wc,-MD -+ else -+ tmpdepfile1=$dir$base.o.d -+ tmpdepfile2=$dir$base.d -+ tmpdepfile3=$dir$base.d -+ tmpdepfile4=$dir$base.d -+ "$@" -MD -+ fi -+ -+ stat=$? -+ if test $stat -eq 0; then : -+ else -+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" -+ exit $stat -+ fi -+ -+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" -+ do -+ test -f "$tmpdepfile" && break -+ done -+ if test -f "$tmpdepfile"; then -+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" -+ # That's a tab and a space in the []. -+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" -+ else -+ echo "#dummy" > "$depfile" -+ fi -+ rm -f "$tmpdepfile" -+ ;; -+ -+#nosideeffect) -+ # This comment above is used by automake to tell side-effect -+ # dependency tracking mechanisms from slower ones. -+ -+dashmstdout) -+ # Important note: in order to support this mode, a compiler *must* -+ # always write the preprocessed file to stdout, regardless of -o. -+ "$@" || exit $? -+ -+ # Remove the call to Libtool. -+ if test "$libtool" = yes; then -+ while test $1 != '--mode=compile'; do -+ shift -+ done -+ shift -+ fi -+ -+ # Remove `-o $object'. -+ IFS=" " -+ for arg -+ do -+ case $arg in -+ -o) -+ shift -+ ;; -+ $object) -+ shift -+ ;; -+ *) -+ set fnord "$@" "$arg" -+ shift # fnord -+ shift # $arg -+ ;; -+ esac -+ done -+ -+ test -z "$dashmflag" && dashmflag=-M -+ # Require at least two characters before searching for `:' -+ # in the target name. This is to cope with DOS-style filenames: -+ # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. -+ "$@" $dashmflag | -+ sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" -+ rm -f "$depfile" -+ cat < "$tmpdepfile" > "$depfile" -+ tr ' ' ' -+' < "$tmpdepfile" | \ -+## Some versions of the HPUX 10.20 sed can't process this invocation -+## correctly. Breaking it into two sed invocations is a workaround. -+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" -+ rm -f "$tmpdepfile" -+ ;; -+ -+dashXmstdout) -+ # This case only exists to satisfy depend.m4. It is never actually -+ # run, as this mode is specially recognized in the preamble. -+ exit 1 -+ ;; -+ -+makedepend) -+ "$@" || exit $? -+ # Remove any Libtool call -+ if test "$libtool" = yes; then -+ while test $1 != '--mode=compile'; do -+ shift -+ done -+ shift -+ fi -+ # X makedepend -+ shift -+ cleared=no -+ for arg in "$@"; do -+ case $cleared in -+ no) -+ set ""; shift -+ cleared=yes ;; -+ esac -+ case "$arg" in -+ -D*|-I*) -+ set fnord "$@" "$arg"; shift ;; -+ # Strip any option that makedepend may not understand. Remove -+ # the object too, otherwise makedepend will parse it as a source file. -+ -*|$object) -+ ;; -+ *) -+ set fnord "$@" "$arg"; shift ;; -+ esac -+ done -+ obj_suffix="`echo $object | sed 's/^.*\././'`" -+ touch "$tmpdepfile" -+ ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" -+ rm -f "$depfile" -+ cat < "$tmpdepfile" > "$depfile" -+ sed '1,2d' "$tmpdepfile" | tr ' ' ' -+' | \ -+## Some versions of the HPUX 10.20 sed can't process this invocation -+## correctly. Breaking it into two sed invocations is a workaround. -+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" -+ rm -f "$tmpdepfile" "$tmpdepfile".bak -+ ;; -+ -+cpp) -+ # Important note: in order to support this mode, a compiler *must* -+ # always write the preprocessed file to stdout. -+ "$@" || exit $? -+ -+ # Remove the call to Libtool. -+ if test "$libtool" = yes; then -+ while test $1 != '--mode=compile'; do -+ shift -+ done -+ shift -+ fi -+ -+ # Remove `-o $object'. -+ IFS=" " -+ for arg -+ do -+ case $arg in -+ -o) -+ shift -+ ;; -+ $object) -+ shift -+ ;; -+ *) -+ set fnord "$@" "$arg" -+ shift # fnord -+ shift # $arg -+ ;; -+ esac -+ done -+ -+ "$@" -E | -+ sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -+ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | -+ sed '$ s: \\$::' > "$tmpdepfile" -+ rm -f "$depfile" -+ echo "$object : \\" > "$depfile" -+ cat < "$tmpdepfile" >> "$depfile" -+ sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" -+ rm -f "$tmpdepfile" -+ ;; -+ -+msvisualcpp) -+ # Important note: in order to support this mode, a compiler *must* -+ # always write the preprocessed file to stdout, regardless of -o, -+ # because we must use -o when running libtool. -+ "$@" || exit $? -+ IFS=" " -+ for arg -+ do -+ case "$arg" in -+ "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") -+ set fnord "$@" -+ shift -+ shift -+ ;; -+ *) -+ set fnord "$@" "$arg" -+ shift -+ shift -+ ;; -+ esac -+ done -+ "$@" -E | -+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" -+ rm -f "$depfile" -+ echo "$object : \\" > "$depfile" -+ . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" -+ echo " " >> "$depfile" -+ . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" -+ rm -f "$tmpdepfile" -+ ;; -+ -+none) -+ exec "$@" -+ ;; -+ -+*) -+ echo "Unknown depmode $depmode" 1>&2 -+ exit 1 -+ ;; -+esac -+ -+exit 0 -+ -+# Local Variables: -+# mode: shell-script -+# sh-indentation: 2 -+# eval: (add-hook 'write-file-hooks 'time-stamp) -+# time-stamp-start: "scriptversion=" -+# time-stamp-format: "%:y-%02m-%02d.%02H" -+# time-stamp-end: "$" -+# End: -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/docs/iscsiuio.8 open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/docs/iscsiuio.8 ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/docs/iscsiuio.8 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/docs/iscsiuio.8 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,77 @@ -+.\" Copyright (c) 2010-2011 Broadcom Corporation -+.\" This is free documentation; you can redistribute it and/or -+.\" modify it under the terms of the GNU General Public License as -+.\" published by the Free Software Foundation. -+.\" -+.\" bnx2.4,v 0.7.0.12 -+.\" -+.TH iscsiuio 8 "08/04/2011" "Broadcom Corporation" -+.\" -+.\" NAME part -+.\" -+.SH NAME -+iscsiuio \- iSCSI UserSpace I/O driver -+.\" -+.\" SYNOPSIS part -+.\" -+.SH SYNOPSIS -+.B iscsiuio -+.RB [ -d -f -v ] -+.PP -+.\" -+.\" DESCRIPTION part -+.\" -+.SH DESCRIPTION -+iscsiuio is the UserSpace I/O driver for the Broadcom NetXtreme II -+BCM5706/5708/5709 series PCI/PCI-X Gigabit Ethernet Network Interface Card -+(NIC) and for the Broadcom NetXtreme II BCM57710/57711/57712/57800/57810/57840 -+series PCI-E 10 Gigabit Ethernet Network Interface Card. -+The driver has been tested on 2.6.28 kernels and above. -+.PP -+Refer to the README.TXT from the driver package on how to -+compile and install the driver. -+.PP -+Refer to various Linux documentations -+on how to configure network protocol and address. -+.\" -+.\" DRIVER DEPENDENCIES part -+.\" -+.SH DRIVER DEPENDENCIES -+ -+.\" -+.\" PARAMETER part -+.\" -+.SH PARAMETERS -+There are very few parameters when running this application. -+.TP -+.BI -d -+This is to enable debug mode where debug messages will be sent to stdout -+The following debug modes are supported -+.P -+.RS -+DEBUG 4 - Print all messages -+.P -+INFO 3 - Print messages needed to follow the uIP code (default) -+.P -+WARN 2 - Print warning messages -+.P -+ERROR 1 - Only print critical errors -+.RE -+.PP -+.TP -+.TP -+.BI -f -+This is to enable forground mode so that this application doesn't get sent -+into the background. -+.PP -+.TP -+.BI -v -+This is to print the version. -+ -+.\" -+.\" AUTHOR part -+.\" -+.SH AUTHOR -+Benjamin Li \- benli@broadcom.com -+.P -+Eddie Wai \- eddie.wai@broadcom.com -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/include/config.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/include/config.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/include/config.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/include/config.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,94 @@ -+/* -+ * iSCSI Configuration -+ * -+ * Copyright (C) 2002 Cisco Systems, Inc. -+ * maintained by linux-iscsi-devel@lists.sourceforge.net -+ * -+ * This program 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. -+ * -+ * This program 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. -+ * -+ * See the file COPYING included with this distribution for more details. -+ */ -+ -+#ifndef CONFIG_H -+#define CONFIG_H -+ -+#include -+#include "list.h" -+ -+/* ISIDs now have a typed naming authority in them. We use an OUI */ -+#define DRIVER_ISID_0 0x00 -+#define DRIVER_ISID_1 0x02 -+#define DRIVER_ISID_2 0x3D -+ -+/* max len of interface */ -+#define ISCSI_MAX_IFACE_LEN 65 -+ -+#if (ISCSID_VERSION == 872) /* 2.0-872 (RHEL 6.0) */ -+ -+#define ISCSI_HWADDRESS_BUF_SIZE 18 -+#define ISCSI_TRANSPORT_NAME_MAXLEN 16 -+ -+typedef struct iface_rec { -+ struct list_head list; -+ /* iscsi iface record name */ -+ char name[ISCSI_MAX_IFACE_LEN]; -+ /* network layer iface name (eth0) */ -+ char netdev[IFNAMSIZ]; -+ char ipaddress[NI_MAXHOST]; -+ /* -+ * TODO: we may have to make this bigger and interconnect -+ * specific for infinniband -+ */ -+ char hwaddress[ISCSI_HWADDRESS_BUF_SIZE]; -+ char transport_name[ISCSI_TRANSPORT_NAME_MAXLEN]; -+ /* -+ * This is only used for boot now, but the iser guys -+ * can use this for their virtualization idea. -+ */ -+ char alias[TARGET_NAME_MAXLEN + 1]; -+ char iname[TARGET_NAME_MAXLEN + 1]; -+ -+ char vlan[ISCSI_MAX_IFACE_LEN]; -+} iface_rec_t; -+ -+#else /* 2.0-871 (RHEL 5.5) */ -+/* number of possible connections per session */ -+#define ISCSI_CONN_MAX 1 -+ -+#define ISCSI_TRANSPORT_NAME_MAXLEN 16 -+ -+typedef struct iface_rec { -+ struct list_head list; -+ /* iscsi iface record name */ -+ char name[ISCSI_MAX_IFACE_LEN]; -+ /* network layer iface name (eth0) */ -+ char netdev[IFNAMSIZ]; -+ char ipaddress[NI_MAXHOST]; -+ -+ /* -+ * TODO: we may have to make this bigger and interconnect -+ * specific for infinniband -+ */ -+ char hwaddress[ISCSI_MAX_IFACE_LEN]; -+ char transport_name[ISCSI_TRANSPORT_NAME_MAXLEN]; -+ /* -+ * This is only used for boot now, but the iser guys -+ * can use this for their virtualization idea. -+ */ -+ char alias[TARGET_NAME_MAXLEN + 1]; -+ char iname[TARGET_NAME_MAXLEN + 1]; -+ -+ char vlan[ISCSI_MAX_IFACE_LEN]; -+} iface_rec_t; -+ -+#endif /* ISCSID_VERSION */ -+ -+#endif /* CONFIG_H */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/include/fw_context.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/include/fw_context.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/include/fw_context.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/include/fw_context.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,64 @@ -+/* -+ * This program 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. -+ * -+ * This program 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 this program; if not, write to the Free Software -+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA -+ * -+ * Copyright (C) IBM Corporation. 2007 -+ * Author: Doug Maxey -+ * "Prasanna Mumbai" -+ * -+ */ -+#ifndef FWPARAM_CONTEXT_H_ -+#define FWPARAM_CONTEXT_H_ -+ -+#include -+ -+#include "iscsi_proto.h" -+#include "list.h" -+#include "auth.h" -+ -+struct boot_context { -+ struct list_head list; -+ -+ /* target settings */ -+ int target_port; -+ char targetname[TARGET_NAME_MAXLEN + 1]; -+ char target_ipaddr[32]; -+ char chap_name[AUTH_STR_MAX_LEN]; -+ char chap_password[AUTH_STR_MAX_LEN]; -+ char chap_name_in[AUTH_STR_MAX_LEN]; -+ char chap_password_in[AUTH_STR_MAX_LEN]; -+ -+ /* initiator settings */ -+ char isid[10]; -+ char initiatorname[TARGET_NAME_MAXLEN + 1]; -+ -+ /* network settings */ -+ char dhcp[18]; -+ char iface[IF_NAMESIZE]; -+ char mac[18]; -+ char ipaddr[18]; -+ char gateway[18]; -+ char primary_dns[18]; -+ char secondary_dns[18]; -+ char mask[18]; -+ char lun[17]; -+ char vlan[15]; -+}; -+ -+extern int fw_get_entry(struct boot_context *context); -+extern void fw_print_entry(struct boot_context *context); -+extern int fw_get_targets(struct list_head *list); -+extern void fw_free_targets(struct list_head *list); -+ -+#endif /* FWPARAM_CONTEXT_H_ */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/include/iscsi_if.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/include/iscsi_if.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/include/iscsi_if.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/include/iscsi_if.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,473 @@ -+/* -+ * iSCSI User/Kernel Shares (Defines, Constants, Protocol definitions, etc) -+ * -+ * Copyright (C) 2005 Dmitry Yusupov -+ * Copyright (C) 2005 Alex Aizman -+ * maintained by open-iscsi@googlegroups.com -+ * -+ * This program 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. -+ * -+ * This program 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. -+ * -+ * See the file COPYING included with this distribution for more details. -+ */ -+ -+#ifndef ISCSI_IF_H -+#define ISCSI_IF_H -+ -+#include "iscsi_proto.h" -+#include -+//#include -+ -+#define ISCSI_NL_GRP_ISCSID 1 -+#define ISCSI_NL_GRP_UIP 2 -+ -+#define UEVENT_BASE 10 -+#define KEVENT_BASE 100 -+#define ISCSI_ERR_BASE 1000 -+ -+enum iscsi_uevent_e { -+ ISCSI_UEVENT_UNKNOWN = 0, -+ -+ /* down events */ -+ ISCSI_UEVENT_CREATE_SESSION = UEVENT_BASE + 1, -+ ISCSI_UEVENT_DESTROY_SESSION = UEVENT_BASE + 2, -+ ISCSI_UEVENT_CREATE_CONN = UEVENT_BASE + 3, -+ ISCSI_UEVENT_DESTROY_CONN = UEVENT_BASE + 4, -+ ISCSI_UEVENT_BIND_CONN = UEVENT_BASE + 5, -+ ISCSI_UEVENT_SET_PARAM = UEVENT_BASE + 6, -+ ISCSI_UEVENT_START_CONN = UEVENT_BASE + 7, -+ ISCSI_UEVENT_STOP_CONN = UEVENT_BASE + 8, -+ ISCSI_UEVENT_SEND_PDU = UEVENT_BASE + 9, -+ ISCSI_UEVENT_GET_STATS = UEVENT_BASE + 10, -+ ISCSI_UEVENT_GET_PARAM = UEVENT_BASE + 11, -+ -+ ISCSI_UEVENT_TRANSPORT_EP_CONNECT = UEVENT_BASE + 12, -+ ISCSI_UEVENT_TRANSPORT_EP_POLL = UEVENT_BASE + 13, -+ ISCSI_UEVENT_TRANSPORT_EP_DISCONNECT = UEVENT_BASE + 14, -+ -+ ISCSI_UEVENT_TGT_DSCVR = UEVENT_BASE + 15, -+ ISCSI_UEVENT_SET_HOST_PARAM = UEVENT_BASE + 16, -+ ISCSI_UEVENT_UNBIND_SESSION = UEVENT_BASE + 17, -+ ISCSI_UEVENT_CREATE_BOUND_SESSION = UEVENT_BASE + 18, -+ ISCSI_UEVENT_TRANSPORT_EP_CONNECT_THROUGH_HOST = UEVENT_BASE + 19, -+ -+ ISCSI_UEVENT_PATH_UPDATE = UEVENT_BASE + 20, -+ -+ /* up events */ -+ ISCSI_KEVENT_RECV_PDU = KEVENT_BASE + 1, -+ ISCSI_KEVENT_CONN_ERROR = KEVENT_BASE + 2, -+ ISCSI_KEVENT_IF_ERROR = KEVENT_BASE + 3, -+ ISCSI_KEVENT_DESTROY_SESSION = KEVENT_BASE + 4, -+ ISCSI_KEVENT_UNBIND_SESSION = KEVENT_BASE + 5, -+ ISCSI_KEVENT_CREATE_SESSION = KEVENT_BASE + 6, -+ -+ ISCSI_KEVENT_PATH_REQ = KEVENT_BASE + 7, -+ ISCSI_KEVENT_IF_DOWN = KEVENT_BASE + 8, -+}; -+ -+enum iscsi_tgt_dscvr { -+ ISCSI_TGT_DSCVR_SEND_TARGETS = 1, -+ ISCSI_TGT_DSCVR_ISNS = 2, -+ ISCSI_TGT_DSCVR_SLP = 3, -+}; -+ -+struct iscsi_uevent { -+ uint32_t type; /* k/u events type */ -+ uint32_t iferror; /* carries interface or resource errors */ -+ uint64_t transport_handle; -+ -+ union { -+ /* messages u -> k */ -+ struct msg_create_session { -+ uint32_t initial_cmdsn; -+ uint16_t cmds_max; -+ uint16_t queue_depth; -+ } c_session; -+ struct msg_create_bound_session { -+ uint64_t ep_handle; -+ uint32_t initial_cmdsn; -+ uint16_t cmds_max; -+ uint16_t queue_depth; -+ } c_bound_session; -+ struct msg_destroy_session { -+ uint32_t sid; -+ } d_session; -+ struct msg_create_conn { -+ uint32_t sid; -+ uint32_t cid; -+ } c_conn; -+ struct msg_bind_conn { -+ uint32_t sid; -+ uint32_t cid; -+ uint64_t transport_eph; -+ uint32_t is_leading; -+ } b_conn; -+ struct msg_destroy_conn { -+ uint32_t sid; -+ uint32_t cid; -+ } d_conn; -+ struct msg_send_pdu { -+ uint32_t sid; -+ uint32_t cid; -+ uint32_t hdr_size; -+ uint32_t data_size; -+ } send_pdu; -+ struct msg_set_param { -+ uint32_t sid; -+ uint32_t cid; -+ uint32_t param; /* enum iscsi_param */ -+ uint32_t len; -+ } set_param; -+ struct msg_start_conn { -+ uint32_t sid; -+ uint32_t cid; -+ } start_conn; -+ struct msg_stop_conn { -+ uint32_t sid; -+ uint32_t cid; -+ uint64_t conn_handle; -+ uint32_t flag; -+ } stop_conn; -+ struct msg_get_stats { -+ uint32_t sid; -+ uint32_t cid; -+ } get_stats; -+ struct msg_transport_connect { -+ uint32_t non_blocking; -+ } ep_connect; -+ struct msg_transport_connect_through_host { -+ uint32_t host_no; -+ uint32_t non_blocking; -+ } ep_connect_through_host; -+ struct msg_transport_poll { -+ uint64_t ep_handle; -+ uint32_t timeout_ms; -+ } ep_poll; -+ struct msg_transport_disconnect { -+ uint64_t ep_handle; -+ } ep_disconnect; -+ struct msg_tgt_dscvr { -+ enum iscsi_tgt_dscvr type; -+ uint32_t host_no; -+ /* -+ * enable = 1 to establish a new connection -+ * with the server. enable = 0 to disconnect -+ * from the server. Used primarily to switch -+ * from one iSNS server to another. -+ */ -+ uint32_t enable; -+ } tgt_dscvr; -+ struct msg_set_host_param { -+ uint32_t host_no; -+ uint32_t param; /* enum iscsi_host_param */ -+ uint32_t len; -+ } set_host_param; -+ struct msg_set_path { -+ uint32_t host_no; -+ } set_path; -+ } u; -+ union { -+ /* messages k -> u */ -+ int retcode; -+ struct msg_create_session_ret { -+ uint32_t sid; -+ uint32_t host_no; -+ } c_session_ret; -+ struct msg_create_conn_ret { -+ uint32_t sid; -+ uint32_t cid; -+ } c_conn_ret; -+ struct msg_unbind_session { -+ uint32_t sid; -+ uint32_t host_no; -+ } unbind_session; -+ struct msg_recv_req { -+ uint32_t sid; -+ uint32_t cid; -+ uint64_t recv_handle; -+ } recv_req; -+ struct msg_conn_error { -+ uint32_t sid; -+ uint32_t cid; -+ uint32_t error; /* enum iscsi_err */ -+ } connerror; -+ struct msg_session_destroyed { -+ uint32_t host_no; -+ uint32_t sid; -+ } d_session; -+ struct msg_transport_connect_ret { -+ uint64_t handle; -+ } ep_connect_ret; -+ struct msg_req_path { -+ uint32_t host_no; -+ } req_path; -+ struct msg_notify_if_down { -+ uint32_t host_no; -+ } notify_if_down; -+ } r; -+} __attribute__ ((aligned (sizeof(uint64_t)))); -+ -+/* -+ * To keep the struct iscsi_uevent size the same for userspace code -+ * compatibility, the main structure for ISCSI_UEVENT_PATH_UPDATE and -+ * ISCSI_KEVENT_PATH_REQ is defined separately and comes after the -+ * struct iscsi_uevent in the NETLINK_ISCSI message. -+ */ -+struct iscsi_path { -+ uint64_t handle; -+ uint8_t mac_addr[6]; -+ uint8_t mac_addr_old[6]; -+ uint32_t ip_addr_len; /* 4 or 16 */ -+ union { -+ struct in_addr v4_addr; -+ struct in6_addr v6_addr; -+ } src; -+ union { -+ struct in_addr v4_addr; -+ struct in6_addr v6_addr; -+ } dst; -+ uint16_t vlan_id; -+ uint16_t pmtu; -+} __attribute__ ((aligned (sizeof(uint64_t)))); -+ -+ -+/* -+ * Common error codes -+ */ -+enum iscsi_err { -+ ISCSI_OK = 0, -+ -+ ISCSI_ERR_DATASN = ISCSI_ERR_BASE + 1, -+ ISCSI_ERR_DATA_OFFSET = ISCSI_ERR_BASE + 2, -+ ISCSI_ERR_MAX_CMDSN = ISCSI_ERR_BASE + 3, -+ ISCSI_ERR_EXP_CMDSN = ISCSI_ERR_BASE + 4, -+ ISCSI_ERR_BAD_OPCODE = ISCSI_ERR_BASE + 5, -+ ISCSI_ERR_DATALEN = ISCSI_ERR_BASE + 6, -+ ISCSI_ERR_AHSLEN = ISCSI_ERR_BASE + 7, -+ ISCSI_ERR_PROTO = ISCSI_ERR_BASE + 8, -+ ISCSI_ERR_LUN = ISCSI_ERR_BASE + 9, -+ ISCSI_ERR_BAD_ITT = ISCSI_ERR_BASE + 10, -+ ISCSI_ERR_CONN_FAILED = ISCSI_ERR_BASE + 11, -+ ISCSI_ERR_R2TSN = ISCSI_ERR_BASE + 12, -+ ISCSI_ERR_SESSION_FAILED = ISCSI_ERR_BASE + 13, -+ ISCSI_ERR_HDR_DGST = ISCSI_ERR_BASE + 14, -+ ISCSI_ERR_DATA_DGST = ISCSI_ERR_BASE + 15, -+ ISCSI_ERR_PARAM_NOT_FOUND = ISCSI_ERR_BASE + 16, -+ ISCSI_ERR_NO_SCSI_CMD = ISCSI_ERR_BASE + 17, -+ ISCSI_ERR_INVALID_HOST = ISCSI_ERR_BASE + 18, -+ ISCSI_ERR_XMIT_FAILED = ISCSI_ERR_BASE + 19, -+}; -+ -+/* -+ * iSCSI Parameters (RFC3720) -+ */ -+enum iscsi_param { -+ /* passed in using netlink set param */ -+ ISCSI_PARAM_MAX_RECV_DLENGTH, -+ ISCSI_PARAM_MAX_XMIT_DLENGTH, -+ ISCSI_PARAM_HDRDGST_EN, -+ ISCSI_PARAM_DATADGST_EN, -+ ISCSI_PARAM_INITIAL_R2T_EN, -+ ISCSI_PARAM_MAX_R2T, -+ ISCSI_PARAM_IMM_DATA_EN, -+ ISCSI_PARAM_FIRST_BURST, -+ ISCSI_PARAM_MAX_BURST, -+ ISCSI_PARAM_PDU_INORDER_EN, -+ ISCSI_PARAM_DATASEQ_INORDER_EN, -+ ISCSI_PARAM_ERL, -+ ISCSI_PARAM_IFMARKER_EN, -+ ISCSI_PARAM_OFMARKER_EN, -+ ISCSI_PARAM_EXP_STATSN, -+ ISCSI_PARAM_TARGET_NAME, -+ ISCSI_PARAM_TPGT, -+ ISCSI_PARAM_PERSISTENT_ADDRESS, -+ ISCSI_PARAM_PERSISTENT_PORT, -+ ISCSI_PARAM_SESS_RECOVERY_TMO, -+ -+ /* pased in through bind conn using transport_fd */ -+ ISCSI_PARAM_CONN_PORT, -+ ISCSI_PARAM_CONN_ADDRESS, -+ -+ ISCSI_PARAM_USERNAME, -+ ISCSI_PARAM_USERNAME_IN, -+ ISCSI_PARAM_PASSWORD, -+ ISCSI_PARAM_PASSWORD_IN, -+ -+ ISCSI_PARAM_FAST_ABORT, -+ ISCSI_PARAM_ABORT_TMO, -+ ISCSI_PARAM_LU_RESET_TMO, -+ ISCSI_PARAM_HOST_RESET_TMO, -+ -+ ISCSI_PARAM_PING_TMO, -+ ISCSI_PARAM_RECV_TMO, -+ -+ ISCSI_PARAM_IFACE_NAME, -+ ISCSI_PARAM_ISID, -+ ISCSI_PARAM_INITIATOR_NAME, -+ /* must always be last */ -+ ISCSI_PARAM_MAX, -+}; -+ -+#define ISCSI_MAX_RECV_DLENGTH (1ULL << ISCSI_PARAM_MAX_RECV_DLENGTH) -+#define ISCSI_MAX_XMIT_DLENGTH (1ULL << ISCSI_PARAM_MAX_XMIT_DLENGTH) -+#define ISCSI_HDRDGST_EN (1ULL << ISCSI_PARAM_HDRDGST_EN) -+#define ISCSI_DATADGST_EN (1ULL << ISCSI_PARAM_DATADGST_EN) -+#define ISCSI_INITIAL_R2T_EN (1ULL << ISCSI_PARAM_INITIAL_R2T_EN) -+#define ISCSI_MAX_R2T (1ULL << ISCSI_PARAM_MAX_R2T) -+#define ISCSI_IMM_DATA_EN (1ULL << ISCSI_PARAM_IMM_DATA_EN) -+#define ISCSI_FIRST_BURST (1ULL << ISCSI_PARAM_FIRST_BURST) -+#define ISCSI_MAX_BURST (1ULL << ISCSI_PARAM_MAX_BURST) -+#define ISCSI_PDU_INORDER_EN (1ULL << ISCSI_PARAM_PDU_INORDER_EN) -+#define ISCSI_DATASEQ_INORDER_EN (1ULL << ISCSI_PARAM_DATASEQ_INORDER_EN) -+#define ISCSI_ERL (1ULL << ISCSI_PARAM_ERL) -+#define ISCSI_IFMARKER_EN (1ULL << ISCSI_PARAM_IFMARKER_EN) -+#define ISCSI_OFMARKER_EN (1ULL << ISCSI_PARAM_OFMARKER_EN) -+#define ISCSI_EXP_STATSN (1ULL << ISCSI_PARAM_EXP_STATSN) -+#define ISCSI_TARGET_NAME (1ULL << ISCSI_PARAM_TARGET_NAME) -+#define ISCSI_TPGT (1ULL << ISCSI_PARAM_TPGT) -+#define ISCSI_PERSISTENT_ADDRESS (1ULL << ISCSI_PARAM_PERSISTENT_ADDRESS) -+#define ISCSI_PERSISTENT_PORT (1ULL << ISCSI_PARAM_PERSISTENT_PORT) -+#define ISCSI_SESS_RECOVERY_TMO (1ULL << ISCSI_PARAM_SESS_RECOVERY_TMO) -+#define ISCSI_CONN_PORT (1ULL << ISCSI_PARAM_CONN_PORT) -+#define ISCSI_CONN_ADDRESS (1ULL << ISCSI_PARAM_CONN_ADDRESS) -+#define ISCSI_USERNAME (1ULL << ISCSI_PARAM_USERNAME) -+#define ISCSI_USERNAME_IN (1ULL << ISCSI_PARAM_USERNAME_IN) -+#define ISCSI_PASSWORD (1ULL << ISCSI_PARAM_PASSWORD) -+#define ISCSI_PASSWORD_IN (1ULL << ISCSI_PARAM_PASSWORD_IN) -+#define ISCSI_FAST_ABORT (1ULL << ISCSI_PARAM_FAST_ABORT) -+#define ISCSI_ABORT_TMO (1ULL << ISCSI_PARAM_ABORT_TMO) -+#define ISCSI_LU_RESET_TMO (1ULL << ISCSI_PARAM_LU_RESET_TMO) -+#define ISCSI_HOST_RESET_TMO (1ULL << ISCSI_PARAM_HOST_RESET_TMO) -+#define ISCSI_PING_TMO (1ULL << ISCSI_PARAM_PING_TMO) -+#define ISCSI_RECV_TMO (1ULL << ISCSI_PARAM_RECV_TMO) -+#define ISCSI_IFACE_NAME (1ULL << ISCSI_PARAM_IFACE_NAME) -+#define ISCSI_ISID (1ULL << ISCSI_PARAM_ISID) -+#define ISCSI_INITIATOR_NAME (1ULL << ISCSI_PARAM_INITIATOR_NAME) -+ -+/* iSCSI HBA params */ -+enum iscsi_host_param { -+ ISCSI_HOST_PARAM_HWADDRESS, -+ ISCSI_HOST_PARAM_INITIATOR_NAME, -+ ISCSI_HOST_PARAM_NETDEV_NAME, -+ ISCSI_HOST_PARAM_IPADDRESS, -+ ISCSI_HOST_PARAM_MAX, -+}; -+ -+#define ISCSI_HOST_HWADDRESS (1ULL << ISCSI_HOST_PARAM_HWADDRESS) -+#define ISCSI_HOST_INITIATOR_NAME (1ULL << ISCSI_HOST_PARAM_INITIATOR_NAME) -+#define ISCSI_HOST_NETDEV_NAME (1ULL << ISCSI_HOST_PARAM_NETDEV_NAME) -+#define ISCSI_HOST_IPADDRESS (1ULL << ISCSI_HOST_PARAM_IPADDRESS) -+ -+#define iscsi_ptr(_handle) ((void*)(unsigned long)_handle) -+#define iscsi_handle(_ptr) ((uint64_t)(unsigned long)_ptr) -+ -+/* -+ * These flags presents iSCSI Data-Path capabilities. -+ */ -+#define CAP_RECOVERY_L0 0x1 -+#define CAP_RECOVERY_L1 0x2 -+#define CAP_RECOVERY_L2 0x4 -+#define CAP_MULTI_R2T 0x8 -+#define CAP_HDRDGST 0x10 -+#define CAP_DATADGST 0x20 -+#define CAP_MULTI_CONN 0x40 -+#define CAP_TEXT_NEGO 0x80 -+#define CAP_MARKERS 0x100 -+#define CAP_FW_DB 0x200 -+#define CAP_SENDTARGETS_OFFLOAD 0x400 /* offload discovery process */ -+#define CAP_DATA_PATH_OFFLOAD 0x800 /* offload entire IO path */ -+#define CAP_DIGEST_OFFLOAD 0x1000 /* offload hdr and data digests */ -+#define CAP_PADDING_OFFLOAD 0x2000 /* offload padding insertion, removal, -+ and verification */ -+ -+/* -+ * These flags describes reason of stop_conn() call -+ */ -+#define STOP_CONN_TERM 0x1 -+#define STOP_CONN_SUSPEND 0x2 -+#define STOP_CONN_RECOVER 0x3 -+ -+#define ISCSI_STATS_CUSTOM_MAX 32 -+#define ISCSI_STATS_CUSTOM_DESC_MAX 64 -+struct iscsi_stats_custom { -+ char desc[ISCSI_STATS_CUSTOM_DESC_MAX]; -+ uint64_t value; -+}; -+ -+/* -+ * struct iscsi_stats - iSCSI Statistics (iSCSI MIB) -+ * -+ * Note: this structure contains counters collected on per-connection basis. -+ */ -+struct iscsi_stats { -+ /* octets */ -+ uint64_t txdata_octets; -+ uint64_t rxdata_octets; -+ -+ /* xmit pdus */ -+ uint32_t noptx_pdus; -+ uint32_t scsicmd_pdus; -+ uint32_t tmfcmd_pdus; -+ uint32_t login_pdus; -+ uint32_t text_pdus; -+ uint32_t dataout_pdus; -+ uint32_t logout_pdus; -+ uint32_t snack_pdus; -+ -+ /* recv pdus */ -+ uint32_t noprx_pdus; -+ uint32_t scsirsp_pdus; -+ uint32_t tmfrsp_pdus; -+ uint32_t textrsp_pdus; -+ uint32_t datain_pdus; -+ uint32_t logoutrsp_pdus; -+ uint32_t r2t_pdus; -+ uint32_t async_pdus; -+ uint32_t rjt_pdus; -+ -+ /* errors */ -+ uint32_t digest_err; -+ uint32_t timeout_err; -+ -+ /* -+ * iSCSI Custom Statistics support, i.e. Transport could -+ * extend existing MIB statistics with its own specific statistics -+ * up to ISCSI_STATS_CUSTOM_MAX -+ */ -+ uint32_t custom_length; -+ struct iscsi_stats_custom custom[0] -+ __attribute__ ((aligned (sizeof(uint64_t)))); -+}; -+ -+/* -+ * Network interface configuration -+ */ -+enum iscsi_net_param { -+ ISCSI_NET_PARAM_UNKNOWN = 0x00, -+ ISCSI_NET_PARAM_MAC_ADDR = ISCSI_NET_PARAM_UNKNOWN + 1, -+ ISCSI_NET_PARAM_IPV4_ADDR = ISCSI_NET_PARAM_UNKNOWN + 2, -+ ISCSI_NET_PARAM_IPV6_ADDR = ISCSI_NET_PARAM_UNKNOWN + 3, -+ ISCSI_NET_PARAM_IPV4_NETMASK = ISCSI_NET_PARAM_UNKNOWN + 4, -+ ISCSI_NET_PARAM_IPV6_NETMASK = ISCSI_NET_PARAM_UNKNOWN + 5, -+ ISCSI_NET_PARAM_IPV4_GATEWAY = ISCSI_NET_PARAM_UNKNOWN + 6, -+ ISCSI_NET_PARAM_IPV6_GATEWAY = ISCSI_NET_PARAM_UNKNOWN + 7, -+ ISCSI_NET_PARAM_BOOTPROTO = ISCSI_NET_PARAM_UNKNOWN + 8, -+ ISCSI_NET_PARAM_IPV6_AUTO_PARAM = ISCSI_NET_PARAM_UNKNOWN + 9, -+ ISCSI_NET_PARAM_MTU = ISCSI_NET_PARAM_UNKNOWN + 10, -+ ISCSI_NET_PARAM_VLAN = ISCSI_NET_PARAM_UNKNOWN + 11, -+}; -+ -+struct iscsi_net_config { -+ uint32_t param; -+ uint32_t length; -+ uint8_t value[1]; -+}; -+ -+#endif -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/include/iscsi_proto.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/include/iscsi_proto.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/include/iscsi_proto.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/include/iscsi_proto.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,637 @@ -+/* -+ * RFC 3720 (iSCSI) protocol data types -+ * -+ * Copyright (C) 2005 Dmitry Yusupov -+ * Copyright (C) 2005 Alex Aizman -+ * maintained by open-iscsi@googlegroups.com -+ * -+ * This program 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. -+ * -+ * This program 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. -+ * -+ * See the file COPYING included with this distribution for more details. -+ */ -+ -+#ifndef ISCSI_PROTO_H -+#define ISCSI_PROTO_H -+ -+#ifndef __KERNEL__ -+#include -+#endif -+#include -+ -+#define ISCSI_DRAFT20_VERSION 0x00 -+ -+/* default iSCSI listen port for incoming connections */ -+#define ISCSI_LISTEN_PORT 3260 -+ -+/* Padding word length */ -+#define ISCSI_PAD_LEN 4 -+ -+/* -+ * useful common(control and data pathes) macro -+ */ -+#define ntoh24(p) (((p)[0] << 16) | ((p)[1] << 8) | ((p)[2])) -+#define hton24(p, v) { \ -+ p[0] = (((v) >> 16) & 0xFF); \ -+ p[1] = (((v) >> 8) & 0xFF); \ -+ p[2] = ((v) & 0xFF); \ -+} -+#define zero_data(p) {p[0]=0;p[1]=0;p[2]=0;} -+ -+/* -+ * If running svn modules we may need to define these. -+ * This should not go upstream since this is already properly defined there -+ */ -+#ifdef __CHECKER__ -+#define __bitwise__ __attribute__((bitwise)) -+#else -+#define __bitwise__ -+#endif -+#ifdef __CHECK_ENDIAN__ -+#define __bitwise __bitwise__ -+#else -+#define __bitwise -+#endif -+ -+/* initiator tags; opaque for target */ -+typedef uint32_t __bitwise__ itt_t; -+/* below makes sense only for initiator that created this tag */ -+#define build_itt(itt, age) ((__force itt_t)\ -+ ((itt) | ((age) << ISCSI_AGE_SHIFT))) -+#define get_itt(itt) ((__force uint32_t)(itt_t)(itt) & ISCSI_ITT_MASK) -+#define RESERVED_ITT ((__force itt_t)0xffffffff) -+ -+/* -+ * iSCSI Template Message Header -+ */ -+struct iscsi_hdr { -+ uint8_t opcode; -+ uint8_t flags; /* Final bit */ -+ uint8_t rsvd2[2]; -+ uint8_t hlength; /* AHSs total length */ -+ uint8_t dlength[3]; /* Data length */ -+ uint8_t lun[8]; -+ itt_t itt; /* Initiator Task Tag, opaque for target */ -+ __be32 ttt; /* Target Task Tag */ -+ __be32 statsn; -+ __be32 exp_statsn; -+ __be32 max_statsn; -+ uint8_t other[12]; -+}; -+ -+/************************* RFC 3720 Begin *****************************/ -+ -+#define ISCSI_RESERVED_TAG 0xffffffff -+ -+/* Opcode encoding bits */ -+#define ISCSI_OP_RETRY 0x80 -+#define ISCSI_OP_IMMEDIATE 0x40 -+#define ISCSI_OPCODE_MASK 0x3F -+ -+/* Initiator Opcode values */ -+#define ISCSI_OP_NOOP_OUT 0x00 -+#define ISCSI_OP_SCSI_CMD 0x01 -+#define ISCSI_OP_SCSI_TMFUNC 0x02 -+#define ISCSI_OP_LOGIN 0x03 -+#define ISCSI_OP_TEXT 0x04 -+#define ISCSI_OP_SCSI_DATA_OUT 0x05 -+#define ISCSI_OP_LOGOUT 0x06 -+#define ISCSI_OP_SNACK 0x10 -+ -+#define ISCSI_OP_VENDOR1_CMD 0x1c -+#define ISCSI_OP_VENDOR2_CMD 0x1d -+#define ISCSI_OP_VENDOR3_CMD 0x1e -+#define ISCSI_OP_VENDOR4_CMD 0x1f -+ -+/* Target Opcode values */ -+#define ISCSI_OP_NOOP_IN 0x20 -+#define ISCSI_OP_SCSI_CMD_RSP 0x21 -+#define ISCSI_OP_SCSI_TMFUNC_RSP 0x22 -+#define ISCSI_OP_LOGIN_RSP 0x23 -+#define ISCSI_OP_TEXT_RSP 0x24 -+#define ISCSI_OP_SCSI_DATA_IN 0x25 -+#define ISCSI_OP_LOGOUT_RSP 0x26 -+#define ISCSI_OP_R2T 0x31 -+#define ISCSI_OP_ASYNC_EVENT 0x32 -+#define ISCSI_OP_REJECT 0x3f -+ -+struct iscsi_ahs_hdr { -+ __be16 ahslength; -+ uint8_t ahstype; -+ uint8_t ahspec[5]; -+}; -+ -+#define ISCSI_AHSTYPE_CDB 1 -+#define ISCSI_AHSTYPE_RLENGTH 2 -+#define ISCSI_CDB_SIZE 16 -+ -+/* iSCSI PDU Header */ -+struct iscsi_cmd { -+ uint8_t opcode; -+ uint8_t flags; -+ __be16 rsvd2; -+ uint8_t hlength; -+ uint8_t dlength[3]; -+ uint8_t lun[8]; -+ itt_t itt; /* Initiator Task Tag */ -+ __be32 data_length; -+ __be32 cmdsn; -+ __be32 exp_statsn; -+ uint8_t cdb[ISCSI_CDB_SIZE]; /* SCSI Command Block */ -+ /* Additional Data (Command Dependent) */ -+}; -+ -+/* Command PDU flags */ -+#define ISCSI_FLAG_CMD_FINAL 0x80 -+#define ISCSI_FLAG_CMD_READ 0x40 -+#define ISCSI_FLAG_CMD_WRITE 0x20 -+#define ISCSI_FLAG_CMD_ATTR_MASK 0x07 /* 3 bits */ -+ -+/* SCSI Command Attribute values */ -+#define ISCSI_ATTR_UNTAGGED 0 -+#define ISCSI_ATTR_SIMPLE 1 -+#define ISCSI_ATTR_ORDERED 2 -+#define ISCSI_ATTR_HEAD_OF_QUEUE 3 -+#define ISCSI_ATTR_ACA 4 -+ -+struct iscsi_rlength_ahdr { -+ __be16 ahslength; -+ uint8_t ahstype; -+ uint8_t reserved; -+ __be32 read_length; -+}; -+ -+/* Extended CDB AHS */ -+struct iscsi_ecdb_ahdr { -+ __be16 ahslength; /* CDB length - 15, including reserved byte */ -+ uint8_t ahstype; -+ uint8_t reserved; -+ /* 4-byte aligned extended CDB spillover */ -+ uint8_t ecdb[260 - ISCSI_CDB_SIZE]; -+}; -+ -+/* SCSI Response Header */ -+struct iscsi_cmd_rsp { -+ uint8_t opcode; -+ uint8_t flags; -+ uint8_t response; -+ uint8_t cmd_status; -+ uint8_t hlength; -+ uint8_t dlength[3]; -+ uint8_t rsvd[8]; -+ itt_t itt; /* Initiator Task Tag */ -+ __be32 rsvd1; -+ __be32 statsn; -+ __be32 exp_cmdsn; -+ __be32 max_cmdsn; -+ __be32 exp_datasn; -+ __be32 bi_residual_count; -+ __be32 residual_count; -+ /* Response or Sense Data (optional) */ -+}; -+ -+/* Command Response PDU flags */ -+#define ISCSI_FLAG_CMD_BIDI_OVERFLOW 0x10 -+#define ISCSI_FLAG_CMD_BIDI_UNDERFLOW 0x08 -+#define ISCSI_FLAG_CMD_OVERFLOW 0x04 -+#define ISCSI_FLAG_CMD_UNDERFLOW 0x02 -+ -+/* iSCSI Status values. Valid if Rsp Selector bit is not set */ -+#define ISCSI_STATUS_CMD_COMPLETED 0 -+#define ISCSI_STATUS_TARGET_FAILURE 1 -+#define ISCSI_STATUS_SUBSYS_FAILURE 2 -+ -+/* Asynchronous Event Header */ -+struct iscsi_async { -+ uint8_t opcode; -+ uint8_t flags; -+ uint8_t rsvd2[2]; -+ uint8_t rsvd3; -+ uint8_t dlength[3]; -+ uint8_t lun[8]; -+ uint8_t rsvd4[8]; -+ __be32 statsn; -+ __be32 exp_cmdsn; -+ __be32 max_cmdsn; -+ uint8_t async_event; -+ uint8_t async_vcode; -+ __be16 param1; -+ __be16 param2; -+ __be16 param3; -+ uint8_t rsvd5[4]; -+}; -+ -+/* iSCSI Event Codes */ -+#define ISCSI_ASYNC_MSG_SCSI_EVENT 0 -+#define ISCSI_ASYNC_MSG_REQUEST_LOGOUT 1 -+#define ISCSI_ASYNC_MSG_DROPPING_CONNECTION 2 -+#define ISCSI_ASYNC_MSG_DROPPING_ALL_CONNECTIONS 3 -+#define ISCSI_ASYNC_MSG_PARAM_NEGOTIATION 4 -+#define ISCSI_ASYNC_MSG_VENDOR_SPECIFIC 255 -+ -+/* NOP-Out Message */ -+struct iscsi_nopout { -+ uint8_t opcode; -+ uint8_t flags; -+ __be16 rsvd2; -+ uint8_t rsvd3; -+ uint8_t dlength[3]; -+ uint8_t lun[8]; -+ itt_t itt; /* Initiator Task Tag */ -+ __be32 ttt; /* Target Transfer Tag */ -+ __be32 cmdsn; -+ __be32 exp_statsn; -+ uint8_t rsvd4[16]; -+}; -+ -+/* NOP-In Message */ -+struct iscsi_nopin { -+ uint8_t opcode; -+ uint8_t flags; -+ __be16 rsvd2; -+ uint8_t rsvd3; -+ uint8_t dlength[3]; -+ uint8_t lun[8]; -+ itt_t itt; /* Initiator Task Tag */ -+ __be32 ttt; /* Target Transfer Tag */ -+ __be32 statsn; -+ __be32 exp_cmdsn; -+ __be32 max_cmdsn; -+ uint8_t rsvd4[12]; -+}; -+ -+/* SCSI Task Management Message Header */ -+struct iscsi_tm { -+ uint8_t opcode; -+ uint8_t flags; -+ uint8_t rsvd1[2]; -+ uint8_t hlength; -+ uint8_t dlength[3]; -+ uint8_t lun[8]; -+ itt_t itt; /* Initiator Task Tag */ -+ itt_t rtt; /* Reference Task Tag */ -+ __be32 cmdsn; -+ __be32 exp_statsn; -+ __be32 refcmdsn; -+ __be32 exp_datasn; -+ uint8_t rsvd2[8]; -+}; -+ -+#define ISCSI_FLAG_TM_FUNC_MASK 0x7F -+ -+/* Function values */ -+#define ISCSI_TM_FUNC_ABORT_TASK 1 -+#define ISCSI_TM_FUNC_ABORT_TASK_SET 2 -+#define ISCSI_TM_FUNC_CLEAR_ACA 3 -+#define ISCSI_TM_FUNC_CLEAR_TASK_SET 4 -+#define ISCSI_TM_FUNC_LOGICAL_UNIT_RESET 5 -+#define ISCSI_TM_FUNC_TARGET_WARM_RESET 6 -+#define ISCSI_TM_FUNC_TARGET_COLD_RESET 7 -+#define ISCSI_TM_FUNC_TASK_REASSIGN 8 -+ -+/* SCSI Task Management Response Header */ -+struct iscsi_tm_rsp { -+ uint8_t opcode; -+ uint8_t flags; -+ uint8_t response; /* see Response values below */ -+ uint8_t qualifier; -+ uint8_t hlength; -+ uint8_t dlength[3]; -+ uint8_t rsvd2[8]; -+ itt_t itt; /* Initiator Task Tag */ -+ itt_t rtt; /* Reference Task Tag */ -+ __be32 statsn; -+ __be32 exp_cmdsn; -+ __be32 max_cmdsn; -+ uint8_t rsvd3[12]; -+}; -+ -+/* Response values */ -+#define ISCSI_TMF_RSP_COMPLETE 0x00 -+#define ISCSI_TMF_RSP_NO_TASK 0x01 -+#define ISCSI_TMF_RSP_NO_LUN 0x02 -+#define ISCSI_TMF_RSP_TASK_ALLEGIANT 0x03 -+#define ISCSI_TMF_RSP_NO_FAILOVER 0x04 -+#define ISCSI_TMF_RSP_NOT_SUPPORTED 0x05 -+#define ISCSI_TMF_RSP_AUTH_FAILED 0x06 -+#define ISCSI_TMF_RSP_REJECTED 0xff -+ -+/* Ready To Transfer Header */ -+struct iscsi_r2t_rsp { -+ uint8_t opcode; -+ uint8_t flags; -+ uint8_t rsvd2[2]; -+ uint8_t hlength; -+ uint8_t dlength[3]; -+ uint8_t lun[8]; -+ itt_t itt; /* Initiator Task Tag */ -+ __be32 ttt; /* Target Transfer Tag */ -+ __be32 statsn; -+ __be32 exp_cmdsn; -+ __be32 max_cmdsn; -+ __be32 r2tsn; -+ __be32 data_offset; -+ __be32 data_length; -+}; -+ -+/* SCSI Data Hdr */ -+struct iscsi_data { -+ uint8_t opcode; -+ uint8_t flags; -+ uint8_t rsvd2[2]; -+ uint8_t rsvd3; -+ uint8_t dlength[3]; -+ uint8_t lun[8]; -+ itt_t itt; -+ __be32 ttt; -+ __be32 rsvd4; -+ __be32 exp_statsn; -+ __be32 rsvd5; -+ __be32 datasn; -+ __be32 offset; -+ __be32 rsvd6; -+ /* Payload */ -+}; -+ -+/* SCSI Data Response Hdr */ -+struct iscsi_data_rsp { -+ uint8_t opcode; -+ uint8_t flags; -+ uint8_t rsvd2; -+ uint8_t cmd_status; -+ uint8_t hlength; -+ uint8_t dlength[3]; -+ uint8_t lun[8]; -+ itt_t itt; -+ __be32 ttt; -+ __be32 statsn; -+ __be32 exp_cmdsn; -+ __be32 max_cmdsn; -+ __be32 datasn; -+ __be32 offset; -+ __be32 residual_count; -+}; -+ -+/* Data Response PDU flags */ -+#define ISCSI_FLAG_DATA_ACK 0x40 -+#define ISCSI_FLAG_DATA_OVERFLOW 0x04 -+#define ISCSI_FLAG_DATA_UNDERFLOW 0x02 -+#define ISCSI_FLAG_DATA_STATUS 0x01 -+ -+/* Text Header */ -+struct iscsi_text { -+ uint8_t opcode; -+ uint8_t flags; -+ uint8_t rsvd2[2]; -+ uint8_t hlength; -+ uint8_t dlength[3]; -+ uint8_t rsvd4[8]; -+ itt_t itt; -+ __be32 ttt; -+ __be32 cmdsn; -+ __be32 exp_statsn; -+ uint8_t rsvd5[16]; -+ /* Text - key=value pairs */ -+}; -+ -+#define ISCSI_FLAG_TEXT_CONTINUE 0x40 -+ -+/* Text Response Header */ -+struct iscsi_text_rsp { -+ uint8_t opcode; -+ uint8_t flags; -+ uint8_t rsvd2[2]; -+ uint8_t hlength; -+ uint8_t dlength[3]; -+ uint8_t rsvd4[8]; -+ itt_t itt; -+ __be32 ttt; -+ __be32 statsn; -+ __be32 exp_cmdsn; -+ __be32 max_cmdsn; -+ uint8_t rsvd5[12]; -+ /* Text Response - key:value pairs */ -+}; -+ -+/* Login Header */ -+struct iscsi_login { -+ uint8_t opcode; -+ uint8_t flags; -+ uint8_t max_version; /* Max. version supported */ -+ uint8_t min_version; /* Min. version supported */ -+ uint8_t hlength; -+ uint8_t dlength[3]; -+ uint8_t isid[6]; /* Initiator Session ID */ -+ __be16 tsih; /* Target Session Handle */ -+ itt_t itt; /* Initiator Task Tag */ -+ __be16 cid; -+ __be16 rsvd3; -+ __be32 cmdsn; -+ __be32 exp_statsn; -+ uint8_t rsvd5[16]; -+}; -+ -+/* Login PDU flags */ -+#define ISCSI_FLAG_LOGIN_TRANSIT 0x80 -+#define ISCSI_FLAG_LOGIN_CONTINUE 0x40 -+#define ISCSI_FLAG_LOGIN_CURRENT_STAGE_MASK 0x0C /* 2 bits */ -+#define ISCSI_FLAG_LOGIN_NEXT_STAGE_MASK 0x03 /* 2 bits */ -+ -+#define ISCSI_LOGIN_CURRENT_STAGE(flags) \ -+ ((flags & ISCSI_FLAG_LOGIN_CURRENT_STAGE_MASK) >> 2) -+#define ISCSI_LOGIN_NEXT_STAGE(flags) \ -+ (flags & ISCSI_FLAG_LOGIN_NEXT_STAGE_MASK) -+ -+/* Login Response Header */ -+struct iscsi_login_rsp { -+ uint8_t opcode; -+ uint8_t flags; -+ uint8_t max_version; /* Max. version supported */ -+ uint8_t active_version; /* Active version */ -+ uint8_t hlength; -+ uint8_t dlength[3]; -+ uint8_t isid[6]; /* Initiator Session ID */ -+ __be16 tsih; /* Target Session Handle */ -+ itt_t itt; /* Initiator Task Tag */ -+ __be32 rsvd3; -+ __be32 statsn; -+ __be32 exp_cmdsn; -+ __be32 max_cmdsn; -+ uint8_t status_class; /* see Login RSP ststus classes below */ -+ uint8_t status_detail; /* see Login RSP Status details below */ -+ uint8_t rsvd4[10]; -+}; -+ -+/* Login stage (phase) codes for CSG, NSG */ -+#define ISCSI_INITIAL_LOGIN_STAGE -1 -+#define ISCSI_SECURITY_NEGOTIATION_STAGE 0 -+#define ISCSI_OP_PARMS_NEGOTIATION_STAGE 1 -+#define ISCSI_FULL_FEATURE_PHASE 3 -+ -+/* Login Status response classes */ -+#define ISCSI_STATUS_CLS_SUCCESS 0x00 -+#define ISCSI_STATUS_CLS_REDIRECT 0x01 -+#define ISCSI_STATUS_CLS_INITIATOR_ERR 0x02 -+#define ISCSI_STATUS_CLS_TARGET_ERR 0x03 -+ -+/* Login Status response detail codes */ -+/* Class-0 (Success) */ -+#define ISCSI_LOGIN_STATUS_ACCEPT 0x00 -+ -+/* Class-1 (Redirection) */ -+#define ISCSI_LOGIN_STATUS_TGT_MOVED_TEMP 0x01 -+#define ISCSI_LOGIN_STATUS_TGT_MOVED_PERM 0x02 -+ -+/* Class-2 (Initiator Error) */ -+#define ISCSI_LOGIN_STATUS_INIT_ERR 0x00 -+#define ISCSI_LOGIN_STATUS_AUTH_FAILED 0x01 -+#define ISCSI_LOGIN_STATUS_TGT_FORBIDDEN 0x02 -+#define ISCSI_LOGIN_STATUS_TGT_NOT_FOUND 0x03 -+#define ISCSI_LOGIN_STATUS_TGT_REMOVED 0x04 -+#define ISCSI_LOGIN_STATUS_NO_VERSION 0x05 -+#define ISCSI_LOGIN_STATUS_ISID_ERROR 0x06 -+#define ISCSI_LOGIN_STATUS_MISSING_FIELDS 0x07 -+#define ISCSI_LOGIN_STATUS_CONN_ADD_FAILED 0x08 -+#define ISCSI_LOGIN_STATUS_NO_SESSION_TYPE 0x09 -+#define ISCSI_LOGIN_STATUS_NO_SESSION 0x0a -+#define ISCSI_LOGIN_STATUS_INVALID_REQUEST 0x0b -+ -+/* Class-3 (Target Error) */ -+#define ISCSI_LOGIN_STATUS_TARGET_ERROR 0x00 -+#define ISCSI_LOGIN_STATUS_SVC_UNAVAILABLE 0x01 -+#define ISCSI_LOGIN_STATUS_NO_RESOURCES 0x02 -+ -+/* Logout Header */ -+struct iscsi_logout { -+ uint8_t opcode; -+ uint8_t flags; -+ uint8_t rsvd1[2]; -+ uint8_t hlength; -+ uint8_t dlength[3]; -+ uint8_t rsvd2[8]; -+ itt_t itt; /* Initiator Task Tag */ -+ __be16 cid; -+ uint8_t rsvd3[2]; -+ __be32 cmdsn; -+ __be32 exp_statsn; -+ uint8_t rsvd4[16]; -+}; -+ -+/* Logout PDU flags */ -+#define ISCSI_FLAG_LOGOUT_REASON_MASK 0x7F -+ -+/* logout reason_code values */ -+ -+#define ISCSI_LOGOUT_REASON_CLOSE_SESSION 0 -+#define ISCSI_LOGOUT_REASON_CLOSE_CONNECTION 1 -+#define ISCSI_LOGOUT_REASON_RECOVERY 2 -+#define ISCSI_LOGOUT_REASON_AEN_REQUEST 3 -+ -+/* Logout Response Header */ -+struct iscsi_logout_rsp { -+ uint8_t opcode; -+ uint8_t flags; -+ uint8_t response; /* see Logout response values below */ -+ uint8_t rsvd2; -+ uint8_t hlength; -+ uint8_t dlength[3]; -+ uint8_t rsvd3[8]; -+ itt_t itt; /* Initiator Task Tag */ -+ __be32 rsvd4; -+ __be32 statsn; -+ __be32 exp_cmdsn; -+ __be32 max_cmdsn; -+ __be32 rsvd5; -+ __be16 t2wait; -+ __be16 t2retain; -+ __be32 rsvd6; -+}; -+ -+/* logout response status values */ -+ -+#define ISCSI_LOGOUT_SUCCESS 0 -+#define ISCSI_LOGOUT_CID_NOT_FOUND 1 -+#define ISCSI_LOGOUT_RECOVERY_UNSUPPORTED 2 -+#define ISCSI_LOGOUT_CLEANUP_FAILED 3 -+ -+/* SNACK Header */ -+struct iscsi_snack { -+ uint8_t opcode; -+ uint8_t flags; -+ uint8_t rsvd2[14]; -+ itt_t itt; -+ __be32 begrun; -+ __be32 runlength; -+ __be32 exp_statsn; -+ __be32 rsvd3; -+ __be32 exp_datasn; -+ uint8_t rsvd6[8]; -+}; -+ -+/* SNACK PDU flags */ -+#define ISCSI_FLAG_SNACK_TYPE_MASK 0x0F /* 4 bits */ -+ -+/* Reject Message Header */ -+struct iscsi_reject { -+ uint8_t opcode; -+ uint8_t flags; -+ uint8_t reason; -+ uint8_t rsvd2; -+ uint8_t hlength; -+ uint8_t dlength[3]; -+ uint8_t rsvd3[8]; -+ __be32 ffffffff; -+ uint8_t rsvd4[4]; -+ __be32 statsn; -+ __be32 exp_cmdsn; -+ __be32 max_cmdsn; -+ __be32 datasn; -+ uint8_t rsvd5[8]; -+ /* Text - Rejected hdr */ -+}; -+ -+/* Reason for Reject */ -+#define ISCSI_REASON_CMD_BEFORE_LOGIN 1 -+#define ISCSI_REASON_DATA_DIGEST_ERROR 2 -+#define ISCSI_REASON_DATA_SNACK_REJECT 3 -+#define ISCSI_REASON_PROTOCOL_ERROR 4 -+#define ISCSI_REASON_CMD_NOT_SUPPORTED 5 -+#define ISCSI_REASON_IMM_CMD_REJECT 6 -+#define ISCSI_REASON_TASK_IN_PROGRESS 7 -+#define ISCSI_REASON_INVALID_SNACK 8 -+#define ISCSI_REASON_BOOKMARK_INVALID 9 -+#define ISCSI_REASON_BOOKMARK_NO_RESOURCES 10 -+#define ISCSI_REASON_NEGOTIATION_RESET 11 -+ -+/* Max. number of Key=Value pairs in a text message */ -+#define MAX_KEY_VALUE_PAIRS 8192 -+ -+/* maximum length for text keys/values */ -+#define KEY_MAXLEN 64 -+#define VALUE_MAXLEN 255 -+#define TARGET_NAME_MAXLEN VALUE_MAXLEN -+ -+#define ISCSI_DEF_MAX_RECV_SEG_LEN 8192 -+#define ISCSI_MIN_MAX_RECV_SEG_LEN 512 -+#define ISCSI_MAX_MAX_RECV_SEG_LEN 16777215 -+ -+#define ISCSI_DEF_FIRST_BURST_LEN 65536 -+#define ISCSI_MIN_FIRST_BURST_LEN 512 -+#define ISCSI_MAX_FIRST_BURST_LEN 16777215 -+ -+#define ISCSI_DEF_MAX_BURST_LEN 262144 -+#define ISCSI_MIN_MAX_BURST_LEN 512 -+#define ISCSI_MAX_MAX_BURST_LEN 16777215 -+ -+#define ISCSI_DEF_TIME2WAIT 2 -+ -+/************************* RFC 3720 End *****************************/ -+ -+#endif /* ISCSI_PROTO_H */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/include/list.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/include/list.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/include/list.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/include/list.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,93 @@ -+#ifndef __LIST_H__ -+#define __LIST_H__ -+ -+#include -+/* taken from linux kernel */ -+ -+#undef offsetof -+#ifdef __compiler_offsetof -+#define offsetof(TYPE,MEMBER) __compiler_offsetof(TYPE,MEMBER) -+#else -+#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) -+#endif -+ -+#define container_of(ptr, type, member) ({ \ -+ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ -+ (type *)( (char *)__mptr - offsetof(type,member) );}) -+ -+struct list_head { -+ struct list_head *next, *prev; -+}; -+ -+#define LIST_HEAD_INIT(name) { &(name), &(name) } -+ -+#define LIST_HEAD(name) \ -+ struct list_head name = LIST_HEAD_INIT(name) -+ -+static inline void INIT_LIST_HEAD(struct list_head *list) -+{ -+ list->next = list; -+ list->prev = list; -+} -+ -+static inline int list_empty(const struct list_head *head) -+{ -+ return head->next == head; -+} -+ -+#define list_entry(ptr, type, member) \ -+ container_of(ptr, type, member) -+ -+#define list_for_each(pos, head) \ -+ for (pos = (head)->next; pos != (head); pos = pos->next) -+ -+#define list_for_each_entry(pos, head, member) \ -+ for (pos = list_entry((head)->next, typeof(*pos), member); \ -+ &pos->member != (head); \ -+ pos = list_entry(pos->member.next, typeof(*pos), member)) -+ -+#define list_for_each_entry_safe(pos, n, head, member) \ -+ for (pos = list_entry((head)->next, typeof(*pos), member), \ -+ n = list_entry(pos->member.next, typeof(*pos), member); \ -+ &pos->member != (head); \ -+ pos = n, n = list_entry(n->member.next, typeof(*n), member)) -+ -+static inline void __list_add(struct list_head *new, -+ struct list_head *prev, -+ struct list_head *next) -+{ -+ next->prev = new; -+ new->next = next; -+ new->prev = prev; -+ prev->next = new; -+} -+ -+static inline void list_add(struct list_head *new, struct list_head *head) -+{ -+ __list_add(new, head, head->next); -+} -+ -+static inline void list_add_tail(struct list_head *new, struct list_head *head) -+{ -+ __list_add(new, head->prev, head); -+} -+ -+static inline void __list_del(struct list_head * prev, struct list_head * next) -+{ -+ next->prev = prev; -+ prev->next = next; -+} -+ -+static inline void list_del(struct list_head *entry) -+{ -+ __list_del(entry->prev, entry->next); -+ entry->next = entry->prev = NULL; -+} -+ -+static inline void list_del_init(struct list_head *entry) -+{ -+ __list_del(entry->prev, entry->next); -+ INIT_LIST_HEAD(entry); -+} -+ -+#endif -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/include/mgmt_ipc.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/include/mgmt_ipc.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/include/mgmt_ipc.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/include/mgmt_ipc.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,147 @@ -+/* -+ * iSCSI Daemon/Admin Management IPC -+ * -+ * Copyright (C) 2004 Dmitry Yusupov, Alex Aizman -+ * maintained by open-iscsi@googlegroups.com -+ * -+ * This program 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. -+ * -+ * This program 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. -+ * -+ * See the file COPYING included with this distribution for more details. -+ */ -+#ifndef MGMT_IPC_H -+#define MGMT_IPC_H -+ -+//#include "types.h" -+#include "iscsi_if.h" -+#include "config.h" -+ -+#define ISCSIADM_NAMESPACE "ISCSIADM_ABSTRACT_NAMESPACE" -+#define PEERUSER_MAX 64 -+ -+typedef enum mgmt_ipc_err { -+ MGMT_IPC_OK = 0, -+ MGMT_IPC_ERR = 1, -+ MGMT_IPC_ERR_NOT_FOUND = 2, -+ MGMT_IPC_ERR_NOMEM = 3, -+ MGMT_IPC_ERR_TRANS_FAILURE = 4, -+ MGMT_IPC_ERR_LOGIN_FAILURE = 5, -+ MGMT_IPC_ERR_IDBM_FAILURE = 6, -+ MGMT_IPC_ERR_INVAL = 7, -+ MGMT_IPC_ERR_TRANS_TIMEOUT = 8, -+ MGMT_IPC_ERR_INTERNAL = 9, -+ MGMT_IPC_ERR_LOGOUT_FAILURE = 10, -+ MGMT_IPC_ERR_PDU_TIMEOUT = 11, -+ MGMT_IPC_ERR_TRANS_NOT_FOUND = 12, -+ MGMT_IPC_ERR_ACCESS = 13, -+ MGMT_IPC_ERR_TRANS_CAPS = 14, -+ MGMT_IPC_ERR_EXISTS = 15, -+ MGMT_IPC_ERR_INVALID_REQ = 16, -+ MGMT_IPC_ERR_ISNS_UNAVAILABLE = 17, -+ MGMT_IPC_ERR_ISCSID_COMM_ERR = 18, -+ MGMT_IPC_ERR_FATAL_LOGIN_FAILURE = 19, -+ MGMT_IPC_ERR_ISCSID_NOTCONN = 20, -+} mgmt_ipc_err_e; -+ -+typedef enum iscsiadm_cmd { -+ MGMT_IPC_UNKNOWN = 0, -+ MGMT_IPC_SESSION_LOGIN = 1, -+ MGMT_IPC_SESSION_LOGOUT = 2, -+ MGMT_IPC_SESSION_ACTIVESTAT = 4, -+ MGMT_IPC_CONN_ADD = 5, -+ MGMT_IPC_CONN_REMOVE = 6, -+ MGMT_IPC_SESSION_STATS = 7, -+ MGMT_IPC_CONFIG_INAME = 8, -+ MGMT_IPC_CONFIG_IALIAS = 9, -+ MGMT_IPC_CONFIG_FILE = 10, -+ MGMT_IPC_IMMEDIATE_STOP = 11, -+ MGMT_IPC_SESSION_SYNC = 12, -+ MGMT_IPC_SESSION_INFO = 13, -+ MGMT_IPC_ISNS_DEV_ATTR_QUERY = 14, -+ MGMT_IPC_SEND_TARGETS = 15, -+ MGMT_IPC_SET_HOST_PARAM = 16, -+ MGMT_IPC_NOTIFY_ADD_NODE = 17, -+ MGMT_IPC_NOTIFY_DEL_NODE = 18, -+ MGMT_IPC_NOTIFY_ADD_PORTAL = 19, -+ MGMT_IPC_NOTIFY_DEL_PORTAL = 20, -+ MGMT_IPC_GET_IPADDR = 21, -+ -+ __MGMT_IPC_MAX_COMMAND -+} iscsiadm_cmd_e; -+ -+/* IPC Request */ -+typedef struct iscsiadm_req { -+ iscsiadm_cmd_e command; -+ uint32_t payload_len; -+ -+ union { -+ /* messages */ -+ struct ipc_msg_session { -+ int sid; -+// node_rec_t rec; -+ } session; -+ struct ipc_msg_conn { -+ int sid; -+ int cid; -+ } conn; -+ struct ipc_msg_send_targets { -+ int host_no; -+ int do_login; -+ struct sockaddr_storage ss; -+ } st; -+ struct ipc_msg_set_host_param { -+ int host_no; -+ int param; -+ /* TODO: make this variable len to support */ -+ char value[IFNAMSIZ + 1]; -+ -+ } set_host_param; -+ } u; -+} iscsiadm_req_t; -+ -+/* IPC Response */ -+typedef struct iscsiadm_rsp { -+ iscsiadm_cmd_e command; -+ mgmt_ipc_err_e err; -+ -+ union { -+#define MGMT_IPC_GETSTATS_BUF_MAX (sizeof(struct iscsi_uevent) + \ -+ sizeof(struct iscsi_stats) + \ -+ sizeof(struct iscsi_stats_custom) * \ -+ ISCSI_STATS_CUSTOM_MAX) -+ struct ipc_msg_getstats { -+ struct iscsi_uevent ev; -+ struct iscsi_stats stats; -+ char custom[sizeof(struct iscsi_stats_custom) * -+ ISCSI_STATS_CUSTOM_MAX]; -+ } getstats; -+ struct ipc_msg_config { -+ char var[VALUE_MAXLEN]; -+ } config; -+ struct ipc_msg_session_state { -+ int session_state; -+ int conn_state; -+ } session_state; -+ struct ipc_msg_get_ipaddr { -+ int addr; -+ } get_ipaddr; -+ } u; -+} iscsiadm_rsp_t; -+ -+struct queue_task; -+typedef mgmt_ipc_err_e mgmt_ipc_fn_t(struct queue_task *); -+ -+struct queue_task; -+void mgmt_ipc_write_rsp(struct queue_task *qtask, mgmt_ipc_err_e err); -+int mgmt_ipc_listen(void); -+void mgmt_ipc_close(int fd); -+void mgmt_ipc_handle(int accept_fd); -+ -+#endif /* MGMT_IPC_H */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/include/sysdeps.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/include/sysdeps.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/include/sysdeps.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/include/sysdeps.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,27 @@ -+/* -+ * wrapping of libc features and kernel interfaces -+ * -+ * Copyright (C) 2005-2006 Kay Sievers -+ * -+ * This program 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 version 2 of the License. -+ * -+ * This program 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 this program; if not, write to the Free Software Foundation, Inc., -+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -+ * -+ */ -+ -+#ifndef _SYSDEPS_H_ -+#define _SYSDEPS_H_ -+ -+extern size_t strlcpy(char *dst, const char *src, size_t size); -+extern size_t strlcat(char *dst, const char *src, size_t size); -+ -+#endif -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/include/uip_mgmt_ipc.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/include/uip_mgmt_ipc.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/include/uip_mgmt_ipc.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/include/uip_mgmt_ipc.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,66 @@ -+/* -+ * uIP iSCSI Daemon/Admin Management IPC -+ * -+ * This program 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. -+ * -+ * This program 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. -+ * -+ * See the file COPYING included with this distribution for more details. -+ */ -+#ifndef UIP_MGMT_IPC_H -+#define UIP_MGMT_IPC_H -+ -+//#include "types.h" -+#include "iscsi_if.h" -+#include "config.h" -+#include "mgmt_ipc.h" -+ -+#define ISCSID_UIP_NAMESPACE "ISCSID_UIP_ABSTRACT_NAMESPACE" -+ -+typedef enum iscsid_uip_cmd { -+ ISCSID_UIP_IPC_UNKNOWN = 0, -+ ISCSID_UIP_IPC_GET_IFACE = 1, -+ -+ __ISCSID_UIP_IPC_MAX_COMMAND -+} iscsid_uip_cmd_e; -+ -+ -+typedef struct iscsid_uip_broadcast_header { -+ iscsid_uip_cmd_e command; -+ uint32_t payload_len; -+} iscsid_uip_broadcast_header_t; -+ -+/* IPC Request */ -+typedef struct iscsid_uip_broadcast { -+ struct iscsid_uip_broadcast_header header; -+ -+ union { -+ /* messages */ -+ struct ipc_broadcast_iface_rec { -+ struct iface_rec rec; -+ } iface_rec; -+ } u; -+} iscsid_uip_broadcast_t; -+ -+typedef enum iscsid_uip_mgmt_ipc_err { -+ ISCSID_UIP_MGMT_IPC_OK = 0, -+ ISCISD_UIP_MGMT_IPC_ERR = 1, -+ ISCISD_UIP_MGMT_IPC_ERR_NOT_FOUND = 2, -+ ISCISD_UIP_MGMT_IPC_ERR_NOMEM = 3, -+ ISCISD_UIP_MGMT_IPC_DEVICE_UP = 4, -+ ISCISD_UIP_MGMT_IPC_DEVICE_INITIALIZING = 5, -+} iscsid_uip_mgmt_ipc_err_e; -+ -+/* IPC Response */ -+typedef struct iscsid_uip_mgmt_rsp { -+ iscsid_uip_cmd_e command; -+ iscsid_uip_mgmt_ipc_err_e err; -+} iscsid_uip_rsp_t; -+ -+#endif /* UIP_MGMT_IPC_H */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/INSTALL open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/INSTALL ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/INSTALL 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/INSTALL 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,291 @@ -+Installation Instructions -+************************* -+ -+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, -+2006, 2007, 2008 Free Software Foundation, Inc. -+ -+ This file is free documentation; the Free Software Foundation gives -+unlimited permission to copy, distribute and modify it. -+ -+Basic Installation -+================== -+ -+ Briefly, the shell commands `./configure; make; make install' should -+configure, build, and install this package. The following -+more-detailed instructions are generic; see the `README' file for -+instructions specific to this package. -+ -+ The `configure' shell script attempts to guess correct values for -+various system-dependent variables used during compilation. It uses -+those values to create a `Makefile' in each directory of the package. -+It may also create one or more `.h' files containing system-dependent -+definitions. Finally, it creates a shell script `config.status' that -+you can run in the future to recreate the current configuration, and a -+file `config.log' containing compiler output (useful mainly for -+debugging `configure'). -+ -+ It can also use an optional file (typically called `config.cache' -+and enabled with `--cache-file=config.cache' or simply `-C') that saves -+the results of its tests to speed up reconfiguring. Caching is -+disabled by default to prevent problems with accidental use of stale -+cache files. -+ -+ If you need to do unusual things to compile the package, please try -+to figure out how `configure' could check whether to do them, and mail -+diffs or instructions to the address given in the `README' so they can -+be considered for the next release. If you are using the cache, and at -+some point `config.cache' contains results you don't want to keep, you -+may remove or edit it. -+ -+ The file `configure.ac' (or `configure.in') is used to create -+`configure' by a program called `autoconf'. You need `configure.ac' if -+you want to change it or regenerate `configure' using a newer version -+of `autoconf'. -+ -+The simplest way to compile this package is: -+ -+ 1. `cd' to the directory containing the package's source code and type -+ `./configure' to configure the package for your system. -+ -+ Running `configure' might take a while. While running, it prints -+ some messages telling which features it is checking for. -+ -+ 2. Type `make' to compile the package. -+ -+ 3. Optionally, type `make check' to run any self-tests that come with -+ the package. -+ -+ 4. Type `make install' to install the programs and any data files and -+ documentation. -+ -+ 5. You can remove the program binaries and object files from the -+ source code directory by typing `make clean'. To also remove the -+ files that `configure' created (so you can compile the package for -+ a different kind of computer), type `make distclean'. There is -+ also a `make maintainer-clean' target, but that is intended mainly -+ for the package's developers. If you use it, you may have to get -+ all sorts of other programs in order to regenerate files that came -+ with the distribution. -+ -+ 6. Often, you can also type `make uninstall' to remove the installed -+ files again. -+ -+Compilers and Options -+===================== -+ -+ Some systems require unusual options for compilation or linking that -+the `configure' script does not know about. Run `./configure --help' -+for details on some of the pertinent environment variables. -+ -+ You can give `configure' initial values for configuration parameters -+by setting variables in the command line or in the environment. Here -+is an example: -+ -+ ./configure CC=c99 CFLAGS=-g LIBS=-lposix -+ -+ *Note Defining Variables::, for more details. -+ -+Compiling For Multiple Architectures -+==================================== -+ -+ You can compile the package for more than one kind of computer at the -+same time, by placing the object files for each architecture in their -+own directory. To do this, you can use GNU `make'. `cd' to the -+directory where you want the object files and executables to go and run -+the `configure' script. `configure' automatically checks for the -+source code in the directory that `configure' is in and in `..'. -+ -+ With a non-GNU `make', it is safer to compile the package for one -+architecture at a time in the source code directory. After you have -+installed the package for one architecture, use `make distclean' before -+reconfiguring for another architecture. -+ -+ On MacOS X 10.5 and later systems, you can create libraries and -+executables that work on multiple system types--known as "fat" or -+"universal" binaries--by specifying multiple `-arch' options to the -+compiler but only a single `-arch' option to the preprocessor. Like -+this: -+ -+ ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ -+ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ -+ CPP="gcc -E" CXXCPP="g++ -E" -+ -+ This is not guaranteed to produce working output in all cases, you -+may have to build one architecture at a time and combine the results -+using the `lipo' tool if you have problems. -+ -+Installation Names -+================== -+ -+ By default, `make install' installs the package's commands under -+`/usr/local/bin', include files under `/usr/local/include', etc. You -+can specify an installation prefix other than `/usr/local' by giving -+`configure' the option `--prefix=PREFIX'. -+ -+ You can specify separate installation prefixes for -+architecture-specific files and architecture-independent files. If you -+pass the option `--exec-prefix=PREFIX' to `configure', the package uses -+PREFIX as the prefix for installing programs and libraries. -+Documentation and other data files still use the regular prefix. -+ -+ In addition, if you use an unusual directory layout you can give -+options like `--bindir=DIR' to specify different values for particular -+kinds of files. Run `configure --help' for a list of the directories -+you can set and what kinds of files go in them. -+ -+ If the package supports it, you can cause programs to be installed -+with an extra prefix or suffix on their names by giving `configure' the -+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. -+ -+Optional Features -+================= -+ -+ Some packages pay attention to `--enable-FEATURE' options to -+`configure', where FEATURE indicates an optional part of the package. -+They may also pay attention to `--with-PACKAGE' options, where PACKAGE -+is something like `gnu-as' or `x' (for the X Window System). The -+`README' should mention any `--enable-' and `--with-' options that the -+package recognizes. -+ -+ For packages that use the X Window System, `configure' can usually -+find the X include and library files automatically, but if it doesn't, -+you can use the `configure' options `--x-includes=DIR' and -+`--x-libraries=DIR' to specify their locations. -+ -+Particular systems -+================== -+ -+ On HP-UX, the default C compiler is not ANSI C compatible. If GNU -+CC is not installed, it is recommended to use the following options in -+order to use an ANSI C compiler: -+ -+ ./configure CC="cc -Ae" -+ -+and if that doesn't work, install pre-built binaries of GCC for HP-UX. -+ -+ On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot -+parse its `' header file. The option `-nodtk' can be used as -+a workaround. If GNU CC is not installed, it is therefore recommended -+to try -+ -+ ./configure CC="cc" -+ -+and if that doesn't work, try -+ -+ ./configure CC="cc -nodtk" -+ -+Specifying the System Type -+========================== -+ -+ There may be some features `configure' cannot figure out -+automatically, but needs to determine by the type of machine the package -+will run on. Usually, assuming the package is built to be run on the -+_same_ architectures, `configure' can figure that out, but if it prints -+a message saying it cannot guess the machine type, give it the -+`--build=TYPE' option. TYPE can either be a short name for the system -+type, such as `sun4', or a canonical name which has the form: -+ -+ CPU-COMPANY-SYSTEM -+ -+where SYSTEM can have one of these forms: -+ -+ OS KERNEL-OS -+ -+ See the file `config.sub' for the possible values of each field. If -+`config.sub' isn't included in this package, then this package doesn't -+need to know the machine type. -+ -+ If you are _building_ compiler tools for cross-compiling, you should -+use the option `--target=TYPE' to select the type of system they will -+produce code for. -+ -+ If you want to _use_ a cross compiler, that generates code for a -+platform different from the build platform, you should specify the -+"host" platform (i.e., that on which the generated programs will -+eventually be run) with `--host=TYPE'. -+ -+Sharing Defaults -+================ -+ -+ If you want to set default values for `configure' scripts to share, -+you can create a site shell script called `config.site' that gives -+default values for variables like `CC', `cache_file', and `prefix'. -+`configure' looks for `PREFIX/share/config.site' if it exists, then -+`PREFIX/etc/config.site' if it exists. Or, you can set the -+`CONFIG_SITE' environment variable to the location of the site script. -+A warning: not all `configure' scripts look for a site script. -+ -+Defining Variables -+================== -+ -+ Variables not defined in a site shell script can be set in the -+environment passed to `configure'. However, some packages may run -+configure again during the build, and the customized values of these -+variables may be lost. In order to avoid this problem, you should set -+them in the `configure' command line, using `VAR=value'. For example: -+ -+ ./configure CC=/usr/local2/bin/gcc -+ -+causes the specified `gcc' to be used as the C compiler (unless it is -+overridden in the site shell script). -+ -+Unfortunately, this technique does not work for `CONFIG_SHELL' due to -+an Autoconf bug. Until the bug is fixed you can use this workaround: -+ -+ CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash -+ -+`configure' Invocation -+====================== -+ -+ `configure' recognizes the following options to control how it -+operates. -+ -+`--help' -+`-h' -+ Print a summary of all of the options to `configure', and exit. -+ -+`--help=short' -+`--help=recursive' -+ Print a summary of the options unique to this package's -+ `configure', and exit. The `short' variant lists options used -+ only in the top level, while the `recursive' variant lists options -+ also present in any nested packages. -+ -+`--version' -+`-V' -+ Print the version of Autoconf used to generate the `configure' -+ script, and exit. -+ -+`--cache-file=FILE' -+ Enable the cache: use and save the results of the tests in FILE, -+ traditionally `config.cache'. FILE defaults to `/dev/null' to -+ disable caching. -+ -+`--config-cache' -+`-C' -+ Alias for `--cache-file=config.cache'. -+ -+`--quiet' -+`--silent' -+`-q' -+ Do not print messages saying which checks are being made. To -+ suppress all normal output, redirect it to `/dev/null' (any error -+ messages will still be shown). -+ -+`--srcdir=DIR' -+ Look for the package's source code in directory DIR. Usually -+ `configure' can determine that directory automatically. -+ -+`--prefix=DIR' -+ Use DIR as the installation prefix. *Note Installation Names:: -+ for more details, including other options available for fine-tuning -+ the installation locations. -+ -+`--no-create' -+`-n' -+ Run the configure checks, but stop before creating any output -+ files. -+ -+`configure' also accepts some other, not widely useful, options. Run -+`configure --help' for more details. -+ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/install-sh open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/install-sh ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/install-sh 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/install-sh 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,519 @@ -+#!/bin/sh -+# install - install a program, script, or datafile -+ -+scriptversion=2006-12-25.00 -+ -+# This originates from X11R5 (mit/util/scripts/install.sh), which was -+# later released in X11R6 (xc/config/util/install.sh) with the -+# following copyright and license. -+# -+# Copyright (C) 1994 X Consortium -+# -+# Permission is hereby granted, free of charge, to any person obtaining a copy -+# of this software and associated documentation files (the "Software"), to -+# deal in the Software without restriction, including without limitation the -+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -+# sell copies of the Software, and to permit persons to whom the Software is -+# furnished to do so, subject to the following conditions: -+# -+# The above copyright notice and this permission notice shall be included in -+# all copies or substantial portions of the Software. -+# -+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- -+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+# -+# Except as contained in this notice, the name of the X Consortium shall not -+# be used in advertising or otherwise to promote the sale, use or other deal- -+# ings in this Software without prior written authorization from the X Consor- -+# tium. -+# -+# -+# FSF changes to this file are in the public domain. -+# -+# Calling this script install-sh is preferred over install.sh, to prevent -+# `make' implicit rules from creating a file called install from it -+# when there is no Makefile. -+# -+# This script is compatible with the BSD install script, but was written -+# from scratch. -+ -+nl=' -+' -+IFS=" "" $nl" -+ -+# set DOITPROG to echo to test this script -+ -+# Don't use :- since 4.3BSD and earlier shells don't like it. -+doit=${DOITPROG-} -+if test -z "$doit"; then -+ doit_exec=exec -+else -+ doit_exec=$doit -+fi -+ -+# Put in absolute file names if you don't have them in your path; -+# or use environment vars. -+ -+chgrpprog=${CHGRPPROG-chgrp} -+chmodprog=${CHMODPROG-chmod} -+chownprog=${CHOWNPROG-chown} -+cmpprog=${CMPPROG-cmp} -+cpprog=${CPPROG-cp} -+mkdirprog=${MKDIRPROG-mkdir} -+mvprog=${MVPROG-mv} -+rmprog=${RMPROG-rm} -+stripprog=${STRIPPROG-strip} -+ -+posix_glob='?' -+initialize_posix_glob=' -+ test "$posix_glob" != "?" || { -+ if (set -f) 2>/dev/null; then -+ posix_glob= -+ else -+ posix_glob=: -+ fi -+ } -+' -+ -+posix_mkdir= -+ -+# Desired mode of installed file. -+mode=0755 -+ -+chgrpcmd= -+chmodcmd=$chmodprog -+chowncmd= -+mvcmd=$mvprog -+rmcmd="$rmprog -f" -+stripcmd= -+ -+src= -+dst= -+dir_arg= -+dst_arg= -+ -+copy_on_change=false -+no_target_directory= -+ -+usage="\ -+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE -+ or: $0 [OPTION]... SRCFILES... DIRECTORY -+ or: $0 [OPTION]... -t DIRECTORY SRCFILES... -+ or: $0 [OPTION]... -d DIRECTORIES... -+ -+In the 1st form, copy SRCFILE to DSTFILE. -+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. -+In the 4th, create DIRECTORIES. -+ -+Options: -+ --help display this help and exit. -+ --version display version info and exit. -+ -+ -c (ignored) -+ -C install only if different (preserve the last data modification time) -+ -d create directories instead of installing files. -+ -g GROUP $chgrpprog installed files to GROUP. -+ -m MODE $chmodprog installed files to MODE. -+ -o USER $chownprog installed files to USER. -+ -s $stripprog installed files. -+ -t DIRECTORY install into DIRECTORY. -+ -T report an error if DSTFILE is a directory. -+ -+Environment variables override the default commands: -+ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG -+ RMPROG STRIPPROG -+" -+ -+while test $# -ne 0; do -+ case $1 in -+ -c) ;; -+ -+ -C) copy_on_change=true;; -+ -+ -d) dir_arg=true;; -+ -+ -g) chgrpcmd="$chgrpprog $2" -+ shift;; -+ -+ --help) echo "$usage"; exit $?;; -+ -+ -m) mode=$2 -+ case $mode in -+ *' '* | *' '* | *' -+'* | *'*'* | *'?'* | *'['*) -+ echo "$0: invalid mode: $mode" >&2 -+ exit 1;; -+ esac -+ shift;; -+ -+ -o) chowncmd="$chownprog $2" -+ shift;; -+ -+ -s) stripcmd=$stripprog;; -+ -+ -t) dst_arg=$2 -+ shift;; -+ -+ -T) no_target_directory=true;; -+ -+ --version) echo "$0 $scriptversion"; exit $?;; -+ -+ --) shift -+ break;; -+ -+ -*) echo "$0: invalid option: $1" >&2 -+ exit 1;; -+ -+ *) break;; -+ esac -+ shift -+done -+ -+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then -+ # When -d is used, all remaining arguments are directories to create. -+ # When -t is used, the destination is already specified. -+ # Otherwise, the last argument is the destination. Remove it from $@. -+ for arg -+ do -+ if test -n "$dst_arg"; then -+ # $@ is not empty: it contains at least $arg. -+ set fnord "$@" "$dst_arg" -+ shift # fnord -+ fi -+ shift # arg -+ dst_arg=$arg -+ done -+fi -+ -+if test $# -eq 0; then -+ if test -z "$dir_arg"; then -+ echo "$0: no input file specified." >&2 -+ exit 1 -+ fi -+ # It's OK to call `install-sh -d' without argument. -+ # This can happen when creating conditional directories. -+ exit 0 -+fi -+ -+if test -z "$dir_arg"; then -+ trap '(exit $?); exit' 1 2 13 15 -+ -+ # Set umask so as not to create temps with too-generous modes. -+ # However, 'strip' requires both read and write access to temps. -+ case $mode in -+ # Optimize common cases. -+ *644) cp_umask=133;; -+ *755) cp_umask=22;; -+ -+ *[0-7]) -+ if test -z "$stripcmd"; then -+ u_plus_rw= -+ else -+ u_plus_rw='% 200' -+ fi -+ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; -+ *) -+ if test -z "$stripcmd"; then -+ u_plus_rw= -+ else -+ u_plus_rw=,u+rw -+ fi -+ cp_umask=$mode$u_plus_rw;; -+ esac -+fi -+ -+for src -+do -+ # Protect names starting with `-'. -+ case $src in -+ -*) src=./$src;; -+ esac -+ -+ if test -n "$dir_arg"; then -+ dst=$src -+ dstdir=$dst -+ test -d "$dstdir" -+ dstdir_status=$? -+ else -+ -+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command -+ # might cause directories to be created, which would be especially bad -+ # if $src (and thus $dsttmp) contains '*'. -+ if test ! -f "$src" && test ! -d "$src"; then -+ echo "$0: $src does not exist." >&2 -+ exit 1 -+ fi -+ -+ if test -z "$dst_arg"; then -+ echo "$0: no destination specified." >&2 -+ exit 1 -+ fi -+ -+ dst=$dst_arg -+ # Protect names starting with `-'. -+ case $dst in -+ -*) dst=./$dst;; -+ esac -+ -+ # If destination is a directory, append the input filename; won't work -+ # if double slashes aren't ignored. -+ if test -d "$dst"; then -+ if test -n "$no_target_directory"; then -+ echo "$0: $dst_arg: Is a directory" >&2 -+ exit 1 -+ fi -+ dstdir=$dst -+ dst=$dstdir/`basename "$src"` -+ dstdir_status=0 -+ else -+ # Prefer dirname, but fall back on a substitute if dirname fails. -+ dstdir=` -+ (dirname "$dst") 2>/dev/null || -+ expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$dst" : 'X\(//\)[^/]' \| \ -+ X"$dst" : 'X\(//\)$' \| \ -+ X"$dst" : 'X\(/\)' \| . 2>/dev/null || -+ echo X"$dst" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)[^/].*/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q' -+ ` -+ -+ test -d "$dstdir" -+ dstdir_status=$? -+ fi -+ fi -+ -+ obsolete_mkdir_used=false -+ -+ if test $dstdir_status != 0; then -+ case $posix_mkdir in -+ '') -+ # Create intermediate dirs using mode 755 as modified by the umask. -+ # This is like FreeBSD 'install' as of 1997-10-28. -+ umask=`umask` -+ case $stripcmd.$umask in -+ # Optimize common cases. -+ *[2367][2367]) mkdir_umask=$umask;; -+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; -+ -+ *[0-7]) -+ mkdir_umask=`expr $umask + 22 \ -+ - $umask % 100 % 40 + $umask % 20 \ -+ - $umask % 10 % 4 + $umask % 2 -+ `;; -+ *) mkdir_umask=$umask,go-w;; -+ esac -+ -+ # With -d, create the new directory with the user-specified mode. -+ # Otherwise, rely on $mkdir_umask. -+ if test -n "$dir_arg"; then -+ mkdir_mode=-m$mode -+ else -+ mkdir_mode= -+ fi -+ -+ posix_mkdir=false -+ case $umask in -+ *[123567][0-7][0-7]) -+ # POSIX mkdir -p sets u+wx bits regardless of umask, which -+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0. -+ ;; -+ *) -+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ -+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 -+ -+ if (umask $mkdir_umask && -+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 -+ then -+ if test -z "$dir_arg" || { -+ # Check for POSIX incompatibilities with -m. -+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or -+ # other-writeable bit of parent directory when it shouldn't. -+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. -+ ls_ld_tmpdir=`ls -ld "$tmpdir"` -+ case $ls_ld_tmpdir in -+ d????-?r-*) different_mode=700;; -+ d????-?--*) different_mode=755;; -+ *) false;; -+ esac && -+ $mkdirprog -m$different_mode -p -- "$tmpdir" && { -+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"` -+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" -+ } -+ } -+ then posix_mkdir=: -+ fi -+ rmdir "$tmpdir/d" "$tmpdir" -+ else -+ # Remove any dirs left behind by ancient mkdir implementations. -+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null -+ fi -+ trap '' 0;; -+ esac;; -+ esac -+ -+ if -+ $posix_mkdir && ( -+ umask $mkdir_umask && -+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" -+ ) -+ then : -+ else -+ -+ # The umask is ridiculous, or mkdir does not conform to POSIX, -+ # or it failed possibly due to a race condition. Create the -+ # directory the slow way, step by step, checking for races as we go. -+ -+ case $dstdir in -+ /*) prefix='/';; -+ -*) prefix='./';; -+ *) prefix='';; -+ esac -+ -+ eval "$initialize_posix_glob" -+ -+ oIFS=$IFS -+ IFS=/ -+ $posix_glob set -f -+ set fnord $dstdir -+ shift -+ $posix_glob set +f -+ IFS=$oIFS -+ -+ prefixes= -+ -+ for d -+ do -+ test -z "$d" && continue -+ -+ prefix=$prefix$d -+ if test -d "$prefix"; then -+ prefixes= -+ else -+ if $posix_mkdir; then -+ (umask=$mkdir_umask && -+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break -+ # Don't fail if two instances are running concurrently. -+ test -d "$prefix" || exit 1 -+ else -+ case $prefix in -+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; -+ *) qprefix=$prefix;; -+ esac -+ prefixes="$prefixes '$qprefix'" -+ fi -+ fi -+ prefix=$prefix/ -+ done -+ -+ if test -n "$prefixes"; then -+ # Don't fail if two instances are running concurrently. -+ (umask $mkdir_umask && -+ eval "\$doit_exec \$mkdirprog $prefixes") || -+ test -d "$dstdir" || exit 1 -+ obsolete_mkdir_used=true -+ fi -+ fi -+ fi -+ -+ if test -n "$dir_arg"; then -+ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && -+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && -+ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || -+ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 -+ else -+ -+ # Make a couple of temp file names in the proper directory. -+ dsttmp=$dstdir/_inst.$$_ -+ rmtmp=$dstdir/_rm.$$_ -+ -+ # Trap to clean up those temp files at exit. -+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 -+ -+ # Copy the file name to the temp name. -+ (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && -+ -+ # and set any options; do chmod last to preserve setuid bits. -+ # -+ # If any of these fail, we abort the whole thing. If we want to -+ # ignore errors from any of these, just make sure not to ignore -+ # errors from the above "$doit $cpprog $src $dsttmp" command. -+ # -+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && -+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && -+ { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && -+ { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && -+ -+ # If -C, don't bother to copy if it wouldn't change the file. -+ if $copy_on_change && -+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && -+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && -+ -+ eval "$initialize_posix_glob" && -+ $posix_glob set -f && -+ set X $old && old=:$2:$4:$5:$6 && -+ set X $new && new=:$2:$4:$5:$6 && -+ $posix_glob set +f && -+ -+ test "$old" = "$new" && -+ $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 -+ then -+ rm -f "$dsttmp" -+ else -+ # Rename the file to the real destination. -+ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || -+ -+ # The rename failed, perhaps because mv can't rename something else -+ # to itself, or perhaps because mv is so ancient that it does not -+ # support -f. -+ { -+ # Now remove or move aside any old file at destination location. -+ # We try this two ways since rm can't unlink itself on some -+ # systems and the destination file might be busy for other -+ # reasons. In this case, the final cleanup might fail but the new -+ # file should still install successfully. -+ { -+ test ! -f "$dst" || -+ $doit $rmcmd -f "$dst" 2>/dev/null || -+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && -+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } -+ } || -+ { echo "$0: cannot unlink or rename $dst" >&2 -+ (exit 1); exit 1 -+ } -+ } && -+ -+ # Now rename the file to the real destination. -+ $doit $mvcmd "$dsttmp" "$dst" -+ } -+ fi || exit 1 -+ -+ trap '' 0 -+ fi -+done -+ -+# Local variables: -+# eval: (add-hook 'write-file-hooks 'time-stamp) -+# time-stamp-start: "scriptversion=" -+# time-stamp-format: "%:y-%02m-%02d.%02H" -+# time-stamp-end: "$" -+# End: -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/iscsiuiolog open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/iscsiuiolog ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/iscsiuiolog 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/iscsiuiolog 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,11 @@ -+/var/log/iscsiuio.log { -+ weekly -+ missingok -+ notifempty -+ rotate 4 -+ sharedscripts -+ postrotate -+ pkill -USR1 iscsiuio 2> /dev/null || true -+ endscript -+} -+ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/ltmain.sh open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/ltmain.sh ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/ltmain.sh 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/ltmain.sh 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,6911 @@ -+# ltmain.sh - Provide generalized library-building support services. -+# NOTE: Changing this file will not affect anything until you rerun configure. -+# -+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005 -+# Free Software Foundation, Inc. -+# Originally by Gordon Matzigkeit , 1996 -+# -+# This program 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. -+# -+# This program 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 this program; if not, write to the Free Software -+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -+# -+# As a special exception to the GNU General Public License, if you -+# distribute this file as part of a program that contains a -+# configuration script generated by Autoconf, you may include it under -+# the same distribution terms that you use for the rest of that program. -+ -+basename="s,^.*/,,g" -+ -+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -+# is ksh but when the shell is invoked as "sh" and the current value of -+# the _XPG environment variable is not equal to 1 (one), the special -+# positional parameter $0, within a function call, is the name of the -+# function. -+progpath="$0" -+ -+# The name of this program: -+progname=`echo "$progpath" | $SED $basename` -+modename="$progname" -+ -+# Global variables: -+EXIT_SUCCESS=0 -+EXIT_FAILURE=1 -+ -+PROGRAM=ltmain.sh -+PACKAGE=libtool -+VERSION=1.5.22 -+TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)" -+ -+# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). -+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then -+ emulate sh -+ NULLCMD=: -+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which -+ # is contrary to our usage. Disable this feature. -+ alias -g '${1+"$@"}'='"$@"' -+ setopt NO_GLOB_SUBST -+else -+ case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac -+fi -+ -+# Check that we have a working $echo. -+if test "X$1" = X--no-reexec; then -+ # Discard the --no-reexec flag, and continue. -+ shift -+elif test "X$1" = X--fallback-echo; then -+ # Avoid inline document here, it may be left over -+ : -+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then -+ # Yippee, $echo works! -+ : -+else -+ # Restart under the correct shell, and then maybe $echo will work. -+ exec $SHELL "$progpath" --no-reexec ${1+"$@"} -+fi -+ -+if test "X$1" = X--fallback-echo; then -+ # used as fallback echo -+ shift -+ cat <&2 -+ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 -+ exit $EXIT_FAILURE -+fi -+ -+# Global variables. -+mode=$default_mode -+nonopt= -+prev= -+prevopt= -+run= -+show="$echo" -+show_help= -+execute_dlfiles= -+duplicate_deps=no -+preserve_args= -+lo2o="s/\\.lo\$/.${objext}/" -+o2lo="s/\\.${objext}\$/.lo/" -+extracted_archives= -+extracted_serial=0 -+ -+##################################### -+# Shell function definitions: -+# This seems to be the best place for them -+ -+# func_mktempdir [string] -+# Make a temporary directory that won't clash with other running -+# libtool processes, and avoids race conditions if possible. If -+# given, STRING is the basename for that directory. -+func_mktempdir () -+{ -+ my_template="${TMPDIR-/tmp}/${1-$progname}" -+ -+ if test "$run" = ":"; then -+ # Return a directory name, but don't create it in dry-run mode -+ my_tmpdir="${my_template}-$$" -+ else -+ -+ # If mktemp works, use that first and foremost -+ my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` -+ -+ if test ! -d "$my_tmpdir"; then -+ # Failing that, at least try and use $RANDOM to avoid a race -+ my_tmpdir="${my_template}-${RANDOM-0}$$" -+ -+ save_mktempdir_umask=`umask` -+ umask 0077 -+ $mkdir "$my_tmpdir" -+ umask $save_mktempdir_umask -+ fi -+ -+ # If we're not in dry-run mode, bomb out on failure -+ test -d "$my_tmpdir" || { -+ $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 -+ exit $EXIT_FAILURE -+ } -+ fi -+ -+ $echo "X$my_tmpdir" | $Xsed -+} -+ -+ -+# func_win32_libid arg -+# return the library type of file 'arg' -+# -+# Need a lot of goo to handle *both* DLLs and import libs -+# Has to be a shell function in order to 'eat' the argument -+# that is supplied when $file_magic_command is called. -+func_win32_libid () -+{ -+ win32_libid_type="unknown" -+ win32_fileres=`file -L $1 2>/dev/null` -+ case $win32_fileres in -+ *ar\ archive\ import\ library*) # definitely import -+ win32_libid_type="x86 archive import" -+ ;; -+ *ar\ archive*) # could be an import, or static -+ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ -+ $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then -+ win32_nmres=`eval $NM -f posix -A $1 | \ -+ $SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'` -+ case $win32_nmres in -+ import*) win32_libid_type="x86 archive import";; -+ *) win32_libid_type="x86 archive static";; -+ esac -+ fi -+ ;; -+ *DLL*) -+ win32_libid_type="x86 DLL" -+ ;; -+ *executable*) # but shell scripts are "executable" too... -+ case $win32_fileres in -+ *MS\ Windows\ PE\ Intel*) -+ win32_libid_type="x86 DLL" -+ ;; -+ esac -+ ;; -+ esac -+ $echo $win32_libid_type -+} -+ -+ -+# func_infer_tag arg -+# Infer tagged configuration to use if any are available and -+# if one wasn't chosen via the "--tag" command line option. -+# Only attempt this if the compiler in the base compile -+# command doesn't match the default compiler. -+# arg is usually of the form 'gcc ...' -+func_infer_tag () -+{ -+ if test -n "$available_tags" && test -z "$tagname"; then -+ CC_quoted= -+ for arg in $CC; do -+ case $arg in -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -+ arg="\"$arg\"" -+ ;; -+ esac -+ CC_quoted="$CC_quoted $arg" -+ done -+ case $@ in -+ # Blanks in the command may have been stripped by the calling shell, -+ # but not from the CC environment variable when configure was run. -+ " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; -+ # Blanks at the start of $base_compile will cause this to fail -+ # if we don't check for them as well. -+ *) -+ for z in $available_tags; do -+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then -+ # Evaluate the configuration. -+ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" -+ CC_quoted= -+ for arg in $CC; do -+ # Double-quote args containing other shell metacharacters. -+ case $arg in -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -+ arg="\"$arg\"" -+ ;; -+ esac -+ CC_quoted="$CC_quoted $arg" -+ done -+ case "$@ " in -+ " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) -+ # The compiler in the base compile command matches -+ # the one in the tagged configuration. -+ # Assume this is the tagged configuration we want. -+ tagname=$z -+ break -+ ;; -+ esac -+ fi -+ done -+ # If $tagname still isn't set, then no tagged configuration -+ # was found and let the user know that the "--tag" command -+ # line option must be used. -+ if test -z "$tagname"; then -+ $echo "$modename: unable to infer tagged configuration" -+ $echo "$modename: specify a tag with \`--tag'" 1>&2 -+ exit $EXIT_FAILURE -+# else -+# $echo "$modename: using $tagname tagged configuration" -+ fi -+ ;; -+ esac -+ fi -+} -+ -+ -+# func_extract_an_archive dir oldlib -+func_extract_an_archive () -+{ -+ f_ex_an_ar_dir="$1"; shift -+ f_ex_an_ar_oldlib="$1" -+ -+ $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" -+ $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? -+ if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then -+ : -+ else -+ $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+} -+ -+# func_extract_archives gentop oldlib ... -+func_extract_archives () -+{ -+ my_gentop="$1"; shift -+ my_oldlibs=${1+"$@"} -+ my_oldobjs="" -+ my_xlib="" -+ my_xabs="" -+ my_xdir="" -+ my_status="" -+ -+ $show "${rm}r $my_gentop" -+ $run ${rm}r "$my_gentop" -+ $show "$mkdir $my_gentop" -+ $run $mkdir "$my_gentop" -+ my_status=$? -+ if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then -+ exit $my_status -+ fi -+ -+ for my_xlib in $my_oldlibs; do -+ # Extract the objects. -+ case $my_xlib in -+ [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; -+ *) my_xabs=`pwd`"/$my_xlib" ;; -+ esac -+ my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` -+ my_xlib_u=$my_xlib -+ while :; do -+ case " $extracted_archives " in -+ *" $my_xlib_u "*) -+ extracted_serial=`expr $extracted_serial + 1` -+ my_xlib_u=lt$extracted_serial-$my_xlib ;; -+ *) break ;; -+ esac -+ done -+ extracted_archives="$extracted_archives $my_xlib_u" -+ my_xdir="$my_gentop/$my_xlib_u" -+ -+ $show "${rm}r $my_xdir" -+ $run ${rm}r "$my_xdir" -+ $show "$mkdir $my_xdir" -+ $run $mkdir "$my_xdir" -+ exit_status=$? -+ if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then -+ exit $exit_status -+ fi -+ case $host in -+ *-darwin*) -+ $show "Extracting $my_xabs" -+ # Do not bother doing anything if just a dry run -+ if test -z "$run"; then -+ darwin_orig_dir=`pwd` -+ cd $my_xdir || exit $? -+ darwin_archive=$my_xabs -+ darwin_curdir=`pwd` -+ darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` -+ darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` -+ if test -n "$darwin_arches"; then -+ darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` -+ darwin_arch= -+ $show "$darwin_base_archive has multiple architectures $darwin_arches" -+ for darwin_arch in $darwin_arches ; do -+ mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" -+ lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" -+ cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" -+ func_extract_an_archive "`pwd`" "${darwin_base_archive}" -+ cd "$darwin_curdir" -+ $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" -+ done # $darwin_arches -+ ## Okay now we have a bunch of thin objects, gotta fatten them up :) -+ darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` -+ darwin_file= -+ darwin_files= -+ for darwin_file in $darwin_filelist; do -+ darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` -+ lipo -create -output "$darwin_file" $darwin_files -+ done # $darwin_filelist -+ ${rm}r unfat-$$ -+ cd "$darwin_orig_dir" -+ else -+ cd "$darwin_orig_dir" -+ func_extract_an_archive "$my_xdir" "$my_xabs" -+ fi # $darwin_arches -+ fi # $run -+ ;; -+ *) -+ func_extract_an_archive "$my_xdir" "$my_xabs" -+ ;; -+ esac -+ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` -+ done -+ func_extract_archives_result="$my_oldobjs" -+} -+# End of Shell function definitions -+##################################### -+ -+# Darwin sucks -+eval std_shrext=\"$shrext_cmds\" -+ -+disable_libs=no -+ -+# Parse our command line options once, thoroughly. -+while test "$#" -gt 0 -+do -+ arg="$1" -+ shift -+ -+ case $arg in -+ -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; -+ *) optarg= ;; -+ esac -+ -+ # If the previous option needs an argument, assign it. -+ if test -n "$prev"; then -+ case $prev in -+ execute_dlfiles) -+ execute_dlfiles="$execute_dlfiles $arg" -+ ;; -+ tag) -+ tagname="$arg" -+ preserve_args="${preserve_args}=$arg" -+ -+ # Check whether tagname contains only valid characters -+ case $tagname in -+ *[!-_A-Za-z0-9,/]*) -+ $echo "$progname: invalid tag name: $tagname" 1>&2 -+ exit $EXIT_FAILURE -+ ;; -+ esac -+ -+ case $tagname in -+ CC) -+ # Don't test for the "default" C tag, as we know, it's there, but -+ # not specially marked. -+ ;; -+ *) -+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then -+ taglist="$taglist $tagname" -+ # Evaluate the configuration. -+ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" -+ else -+ $echo "$progname: ignoring unknown tag $tagname" 1>&2 -+ fi -+ ;; -+ esac -+ ;; -+ *) -+ eval "$prev=\$arg" -+ ;; -+ esac -+ -+ prev= -+ prevopt= -+ continue -+ fi -+ -+ # Have we seen a non-optional argument yet? -+ case $arg in -+ --help) -+ show_help=yes -+ ;; -+ -+ --version) -+ $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP" -+ $echo -+ $echo "Copyright (C) 2005 Free Software Foundation, Inc." -+ $echo "This is free software; see the source for copying conditions. There is NO" -+ $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." -+ exit $? -+ ;; -+ -+ --config) -+ ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath -+ # Now print the configurations for the tags. -+ for tagname in $taglist; do -+ ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" -+ done -+ exit $? -+ ;; -+ -+ --debug) -+ $echo "$progname: enabling shell trace mode" -+ set -x -+ preserve_args="$preserve_args $arg" -+ ;; -+ -+ --dry-run | -n) -+ run=: -+ ;; -+ -+ --features) -+ $echo "host: $host" -+ if test "$build_libtool_libs" = yes; then -+ $echo "enable shared libraries" -+ else -+ $echo "disable shared libraries" -+ fi -+ if test "$build_old_libs" = yes; then -+ $echo "enable static libraries" -+ else -+ $echo "disable static libraries" -+ fi -+ exit $? -+ ;; -+ -+ --finish) mode="finish" ;; -+ -+ --mode) prevopt="--mode" prev=mode ;; -+ --mode=*) mode="$optarg" ;; -+ -+ --preserve-dup-deps) duplicate_deps="yes" ;; -+ -+ --quiet | --silent) -+ show=: -+ preserve_args="$preserve_args $arg" -+ ;; -+ -+ --tag) -+ prevopt="--tag" -+ prev=tag -+ preserve_args="$preserve_args --tag" -+ ;; -+ --tag=*) -+ set tag "$optarg" ${1+"$@"} -+ shift -+ prev=tag -+ preserve_args="$preserve_args --tag" -+ ;; -+ -+ -dlopen) -+ prevopt="-dlopen" -+ prev=execute_dlfiles -+ ;; -+ -+ -*) -+ $echo "$modename: unrecognized option \`$arg'" 1>&2 -+ $echo "$help" 1>&2 -+ exit $EXIT_FAILURE -+ ;; -+ -+ *) -+ nonopt="$arg" -+ break -+ ;; -+ esac -+done -+ -+if test -n "$prevopt"; then -+ $echo "$modename: option \`$prevopt' requires an argument" 1>&2 -+ $echo "$help" 1>&2 -+ exit $EXIT_FAILURE -+fi -+ -+case $disable_libs in -+no) -+ ;; -+shared) -+ build_libtool_libs=no -+ build_old_libs=yes -+ ;; -+static) -+ build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` -+ ;; -+esac -+ -+# If this variable is set in any of the actions, the command in it -+# will be execed at the end. This prevents here-documents from being -+# left over by shells. -+exec_cmd= -+ -+if test -z "$show_help"; then -+ -+ # Infer the operation mode. -+ if test -z "$mode"; then -+ $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 -+ $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 -+ case $nonopt in -+ *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) -+ mode=link -+ for arg -+ do -+ case $arg in -+ -c) -+ mode=compile -+ break -+ ;; -+ esac -+ done -+ ;; -+ *db | *dbx | *strace | *truss) -+ mode=execute -+ ;; -+ *install*|cp|mv) -+ mode=install -+ ;; -+ *rm) -+ mode=uninstall -+ ;; -+ *) -+ # If we have no mode, but dlfiles were specified, then do execute mode. -+ test -n "$execute_dlfiles" && mode=execute -+ -+ # Just use the default operation mode. -+ if test -z "$mode"; then -+ if test -n "$nonopt"; then -+ $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 -+ else -+ $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 -+ fi -+ fi -+ ;; -+ esac -+ fi -+ -+ # Only execute mode is allowed to have -dlopen flags. -+ if test -n "$execute_dlfiles" && test "$mode" != execute; then -+ $echo "$modename: unrecognized option \`-dlopen'" 1>&2 -+ $echo "$help" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ -+ # Change the help message to a mode-specific one. -+ generic_help="$help" -+ help="Try \`$modename --help --mode=$mode' for more information." -+ -+ # These modes are in order of execution frequency so that they run quickly. -+ case $mode in -+ # libtool compile mode -+ compile) -+ modename="$modename: compile" -+ # Get the compilation command and the source file. -+ base_compile= -+ srcfile="$nonopt" # always keep a non-empty value in "srcfile" -+ suppress_opt=yes -+ suppress_output= -+ arg_mode=normal -+ libobj= -+ later= -+ -+ for arg -+ do -+ case $arg_mode in -+ arg ) -+ # do not "continue". Instead, add this to base_compile -+ lastarg="$arg" -+ arg_mode=normal -+ ;; -+ -+ target ) -+ libobj="$arg" -+ arg_mode=normal -+ continue -+ ;; -+ -+ normal ) -+ # Accept any command-line options. -+ case $arg in -+ -o) -+ if test -n "$libobj" ; then -+ $echo "$modename: you cannot specify \`-o' more than once" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ arg_mode=target -+ continue -+ ;; -+ -+ -static | -prefer-pic | -prefer-non-pic) -+ later="$later $arg" -+ continue -+ ;; -+ -+ -no-suppress) -+ suppress_opt=no -+ continue -+ ;; -+ -+ -Xcompiler) -+ arg_mode=arg # the next one goes into the "base_compile" arg list -+ continue # The current "srcfile" will either be retained or -+ ;; # replaced later. I would guess that would be a bug. -+ -+ -Wc,*) -+ args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` -+ lastarg= -+ save_ifs="$IFS"; IFS=',' -+ for arg in $args; do -+ IFS="$save_ifs" -+ -+ # Double-quote args containing other shell metacharacters. -+ # Many Bourne shells cannot handle close brackets correctly -+ # in scan sets, so we specify it separately. -+ case $arg in -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -+ arg="\"$arg\"" -+ ;; -+ esac -+ lastarg="$lastarg $arg" -+ done -+ IFS="$save_ifs" -+ lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` -+ -+ # Add the arguments to base_compile. -+ base_compile="$base_compile $lastarg" -+ continue -+ ;; -+ -+ * ) -+ # Accept the current argument as the source file. -+ # The previous "srcfile" becomes the current argument. -+ # -+ lastarg="$srcfile" -+ srcfile="$arg" -+ ;; -+ esac # case $arg -+ ;; -+ esac # case $arg_mode -+ -+ # Aesthetically quote the previous argument. -+ lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` -+ -+ case $lastarg in -+ # Double-quote args containing other shell metacharacters. -+ # Many Bourne shells cannot handle close brackets correctly -+ # in scan sets, and some SunOS ksh mistreat backslash-escaping -+ # in scan sets (worked around with variable expansion), -+ # and furthermore cannot handle '|' '&' '(' ')' in scan sets -+ # at all, so we specify them separately. -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -+ lastarg="\"$lastarg\"" -+ ;; -+ esac -+ -+ base_compile="$base_compile $lastarg" -+ done # for arg -+ -+ case $arg_mode in -+ arg) -+ $echo "$modename: you must specify an argument for -Xcompile" -+ exit $EXIT_FAILURE -+ ;; -+ target) -+ $echo "$modename: you must specify a target with \`-o'" 1>&2 -+ exit $EXIT_FAILURE -+ ;; -+ *) -+ # Get the name of the library object. -+ [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` -+ ;; -+ esac -+ -+ # Recognize several different file suffixes. -+ # If the user specifies -o file.o, it is replaced with file.lo -+ xform='[cCFSifmso]' -+ case $libobj in -+ *.ada) xform=ada ;; -+ *.adb) xform=adb ;; -+ *.ads) xform=ads ;; -+ *.asm) xform=asm ;; -+ *.c++) xform=c++ ;; -+ *.cc) xform=cc ;; -+ *.ii) xform=ii ;; -+ *.class) xform=class ;; -+ *.cpp) xform=cpp ;; -+ *.cxx) xform=cxx ;; -+ *.f90) xform=f90 ;; -+ *.for) xform=for ;; -+ *.java) xform=java ;; -+ *.obj) xform=obj ;; -+ esac -+ -+ libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` -+ -+ case $libobj in -+ *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; -+ *) -+ $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 -+ exit $EXIT_FAILURE -+ ;; -+ esac -+ -+ func_infer_tag $base_compile -+ -+ for arg in $later; do -+ case $arg in -+ -static) -+ build_old_libs=yes -+ continue -+ ;; -+ -+ -prefer-pic) -+ pic_mode=yes -+ continue -+ ;; -+ -+ -prefer-non-pic) -+ pic_mode=no -+ continue -+ ;; -+ esac -+ done -+ -+ qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` -+ case $qlibobj in -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -+ qlibobj="\"$qlibobj\"" ;; -+ esac -+ test "X$libobj" != "X$qlibobj" \ -+ && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ -+ && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." -+ objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` -+ xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` -+ if test "X$xdir" = "X$obj"; then -+ xdir= -+ else -+ xdir=$xdir/ -+ fi -+ lobj=${xdir}$objdir/$objname -+ -+ if test -z "$base_compile"; then -+ $echo "$modename: you must specify a compilation command" 1>&2 -+ $echo "$help" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ -+ # Delete any leftover library objects. -+ if test "$build_old_libs" = yes; then -+ removelist="$obj $lobj $libobj ${libobj}T" -+ else -+ removelist="$lobj $libobj ${libobj}T" -+ fi -+ -+ $run $rm $removelist -+ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 -+ -+ # On Cygwin there's no "real" PIC flag so we must build both object types -+ case $host_os in -+ cygwin* | mingw* | pw32* | os2*) -+ pic_mode=default -+ ;; -+ esac -+ if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then -+ # non-PIC code in shared libraries is not supported -+ pic_mode=default -+ fi -+ -+ # Calculate the filename of the output object if compiler does -+ # not support -o with -c -+ if test "$compiler_c_o" = no; then -+ output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} -+ lockfile="$output_obj.lock" -+ removelist="$removelist $output_obj $lockfile" -+ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 -+ else -+ output_obj= -+ need_locks=no -+ lockfile= -+ fi -+ -+ # Lock this critical section if it is needed -+ # We use this script file to make the link, it avoids creating a new file -+ if test "$need_locks" = yes; then -+ until $run ln "$progpath" "$lockfile" 2>/dev/null; do -+ $show "Waiting for $lockfile to be removed" -+ sleep 2 -+ done -+ elif test "$need_locks" = warn; then -+ if test -f "$lockfile"; then -+ $echo "\ -+*** ERROR, $lockfile exists and contains: -+`cat $lockfile 2>/dev/null` -+ -+This indicates that another process is trying to use the same -+temporary object file, and libtool could not work around it because -+your compiler does not support \`-c' and \`-o' together. If you -+repeat this compilation, it may succeed, by chance, but you had better -+avoid parallel builds (make -j) in this platform, or get a better -+compiler." -+ -+ $run $rm $removelist -+ exit $EXIT_FAILURE -+ fi -+ $echo "$srcfile" > "$lockfile" -+ fi -+ -+ if test -n "$fix_srcfile_path"; then -+ eval srcfile=\"$fix_srcfile_path\" -+ fi -+ qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` -+ case $qsrcfile in -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -+ qsrcfile="\"$qsrcfile\"" ;; -+ esac -+ -+ $run $rm "$libobj" "${libobj}T" -+ -+ # Create a libtool object file (analogous to a ".la" file), -+ # but don't create it if we're doing a dry run. -+ test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then -+ $echo "\ -+*** ERROR, $lockfile contains: -+`cat $lockfile 2>/dev/null` -+ -+but it should contain: -+$srcfile -+ -+This indicates that another process is trying to use the same -+temporary object file, and libtool could not work around it because -+your compiler does not support \`-c' and \`-o' together. If you -+repeat this compilation, it may succeed, by chance, but you had better -+avoid parallel builds (make -j) in this platform, or get a better -+compiler." -+ -+ $run $rm $removelist -+ exit $EXIT_FAILURE -+ fi -+ -+ # Just move the object if needed, then go on to compile the next one -+ if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then -+ $show "$mv $output_obj $lobj" -+ if $run $mv $output_obj $lobj; then : -+ else -+ error=$? -+ $run $rm $removelist -+ exit $error -+ fi -+ fi -+ -+ # Append the name of the PIC object to the libtool object file. -+ test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then -+ $echo "\ -+*** ERROR, $lockfile contains: -+`cat $lockfile 2>/dev/null` -+ -+but it should contain: -+$srcfile -+ -+This indicates that another process is trying to use the same -+temporary object file, and libtool could not work around it because -+your compiler does not support \`-c' and \`-o' together. If you -+repeat this compilation, it may succeed, by chance, but you had better -+avoid parallel builds (make -j) in this platform, or get a better -+compiler." -+ -+ $run $rm $removelist -+ exit $EXIT_FAILURE -+ fi -+ -+ # Just move the object if needed -+ if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then -+ $show "$mv $output_obj $obj" -+ if $run $mv $output_obj $obj; then : -+ else -+ error=$? -+ $run $rm $removelist -+ exit $error -+ fi -+ fi -+ -+ # Append the name of the non-PIC object the libtool object file. -+ # Only append if the libtool object file exists. -+ test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 -+ fi -+ if test -n "$link_static_flag"; then -+ dlopen_self=$dlopen_self_static -+ fi -+ prefer_static_libs=yes -+ ;; -+ -static) -+ if test -z "$pic_flag" && test -n "$link_static_flag"; then -+ dlopen_self=$dlopen_self_static -+ fi -+ prefer_static_libs=built -+ ;; -+ -static-libtool-libs) -+ if test -z "$pic_flag" && test -n "$link_static_flag"; then -+ dlopen_self=$dlopen_self_static -+ fi -+ prefer_static_libs=yes -+ ;; -+ esac -+ build_libtool_libs=no -+ build_old_libs=yes -+ break -+ ;; -+ esac -+ done -+ -+ # See if our shared archives depend on static archives. -+ test -n "$old_archive_from_new_cmds" && build_old_libs=yes -+ -+ # Go through the arguments, transforming them on the way. -+ while test "$#" -gt 0; do -+ arg="$1" -+ shift -+ case $arg in -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -+ qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test -+ ;; -+ *) qarg=$arg ;; -+ esac -+ libtool_args="$libtool_args $qarg" -+ -+ # If the previous option needs an argument, assign it. -+ if test -n "$prev"; then -+ case $prev in -+ output) -+ compile_command="$compile_command @OUTPUT@" -+ finalize_command="$finalize_command @OUTPUT@" -+ ;; -+ esac -+ -+ case $prev in -+ dlfiles|dlprefiles) -+ if test "$preload" = no; then -+ # Add the symbol object into the linking commands. -+ compile_command="$compile_command @SYMFILE@" -+ finalize_command="$finalize_command @SYMFILE@" -+ preload=yes -+ fi -+ case $arg in -+ *.la | *.lo) ;; # We handle these cases below. -+ force) -+ if test "$dlself" = no; then -+ dlself=needless -+ export_dynamic=yes -+ fi -+ prev= -+ continue -+ ;; -+ self) -+ if test "$prev" = dlprefiles; then -+ dlself=yes -+ elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then -+ dlself=yes -+ else -+ dlself=needless -+ export_dynamic=yes -+ fi -+ prev= -+ continue -+ ;; -+ *) -+ if test "$prev" = dlfiles; then -+ dlfiles="$dlfiles $arg" -+ else -+ dlprefiles="$dlprefiles $arg" -+ fi -+ prev= -+ continue -+ ;; -+ esac -+ ;; -+ expsyms) -+ export_symbols="$arg" -+ if test ! -f "$arg"; then -+ $echo "$modename: symbol file \`$arg' does not exist" -+ exit $EXIT_FAILURE -+ fi -+ prev= -+ continue -+ ;; -+ expsyms_regex) -+ export_symbols_regex="$arg" -+ prev= -+ continue -+ ;; -+ inst_prefix) -+ inst_prefix_dir="$arg" -+ prev= -+ continue -+ ;; -+ precious_regex) -+ precious_files_regex="$arg" -+ prev= -+ continue -+ ;; -+ release) -+ release="-$arg" -+ prev= -+ continue -+ ;; -+ objectlist) -+ if test -f "$arg"; then -+ save_arg=$arg -+ moreargs= -+ for fil in `cat $save_arg` -+ do -+# moreargs="$moreargs $fil" -+ arg=$fil -+ # A libtool-controlled object. -+ -+ # Check to see that this really is a libtool object. -+ if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then -+ pic_object= -+ non_pic_object= -+ -+ # Read the .lo file -+ # If there is no directory component, then add one. -+ case $arg in -+ */* | *\\*) . $arg ;; -+ *) . ./$arg ;; -+ esac -+ -+ if test -z "$pic_object" || \ -+ test -z "$non_pic_object" || -+ test "$pic_object" = none && \ -+ test "$non_pic_object" = none; then -+ $echo "$modename: cannot find name of object for \`$arg'" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ -+ # Extract subdirectory from the argument. -+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` -+ if test "X$xdir" = "X$arg"; then -+ xdir= -+ else -+ xdir="$xdir/" -+ fi -+ -+ if test "$pic_object" != none; then -+ # Prepend the subdirectory the object is found in. -+ pic_object="$xdir$pic_object" -+ -+ if test "$prev" = dlfiles; then -+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then -+ dlfiles="$dlfiles $pic_object" -+ prev= -+ continue -+ else -+ # If libtool objects are unsupported, then we need to preload. -+ prev=dlprefiles -+ fi -+ fi -+ -+ # CHECK ME: I think I busted this. -Ossama -+ if test "$prev" = dlprefiles; then -+ # Preload the old-style object. -+ dlprefiles="$dlprefiles $pic_object" -+ prev= -+ fi -+ -+ # A PIC object. -+ libobjs="$libobjs $pic_object" -+ arg="$pic_object" -+ fi -+ -+ # Non-PIC object. -+ if test "$non_pic_object" != none; then -+ # Prepend the subdirectory the object is found in. -+ non_pic_object="$xdir$non_pic_object" -+ -+ # A standard non-PIC object -+ non_pic_objects="$non_pic_objects $non_pic_object" -+ if test -z "$pic_object" || test "$pic_object" = none ; then -+ arg="$non_pic_object" -+ fi -+ else -+ # If the PIC object exists, use it instead. -+ # $xdir was prepended to $pic_object above. -+ non_pic_object="$pic_object" -+ non_pic_objects="$non_pic_objects $non_pic_object" -+ fi -+ else -+ # Only an error if not doing a dry-run. -+ if test -z "$run"; then -+ $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 -+ exit $EXIT_FAILURE -+ else -+ # Dry-run case. -+ -+ # Extract subdirectory from the argument. -+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` -+ if test "X$xdir" = "X$arg"; then -+ xdir= -+ else -+ xdir="$xdir/" -+ fi -+ -+ pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` -+ non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` -+ libobjs="$libobjs $pic_object" -+ non_pic_objects="$non_pic_objects $non_pic_object" -+ fi -+ fi -+ done -+ else -+ $echo "$modename: link input file \`$save_arg' does not exist" -+ exit $EXIT_FAILURE -+ fi -+ arg=$save_arg -+ prev= -+ continue -+ ;; -+ rpath | xrpath) -+ # We need an absolute path. -+ case $arg in -+ [\\/]* | [A-Za-z]:[\\/]*) ;; -+ *) -+ $echo "$modename: only absolute run-paths are allowed" 1>&2 -+ exit $EXIT_FAILURE -+ ;; -+ esac -+ if test "$prev" = rpath; then -+ case "$rpath " in -+ *" $arg "*) ;; -+ *) rpath="$rpath $arg" ;; -+ esac -+ else -+ case "$xrpath " in -+ *" $arg "*) ;; -+ *) xrpath="$xrpath $arg" ;; -+ esac -+ fi -+ prev= -+ continue -+ ;; -+ xcompiler) -+ compiler_flags="$compiler_flags $qarg" -+ prev= -+ compile_command="$compile_command $qarg" -+ finalize_command="$finalize_command $qarg" -+ continue -+ ;; -+ xlinker) -+ linker_flags="$linker_flags $qarg" -+ compiler_flags="$compiler_flags $wl$qarg" -+ prev= -+ compile_command="$compile_command $wl$qarg" -+ finalize_command="$finalize_command $wl$qarg" -+ continue -+ ;; -+ xcclinker) -+ linker_flags="$linker_flags $qarg" -+ compiler_flags="$compiler_flags $qarg" -+ prev= -+ compile_command="$compile_command $qarg" -+ finalize_command="$finalize_command $qarg" -+ continue -+ ;; -+ shrext) -+ shrext_cmds="$arg" -+ prev= -+ continue -+ ;; -+ darwin_framework|darwin_framework_skip) -+ test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" -+ compile_command="$compile_command $arg" -+ finalize_command="$finalize_command $arg" -+ prev= -+ continue -+ ;; -+ *) -+ eval "$prev=\"\$arg\"" -+ prev= -+ continue -+ ;; -+ esac -+ fi # test -n "$prev" -+ -+ prevarg="$arg" -+ -+ case $arg in -+ -all-static) -+ if test -n "$link_static_flag"; then -+ compile_command="$compile_command $link_static_flag" -+ finalize_command="$finalize_command $link_static_flag" -+ fi -+ continue -+ ;; -+ -+ -allow-undefined) -+ # FIXME: remove this flag sometime in the future. -+ $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 -+ continue -+ ;; -+ -+ -avoid-version) -+ avoid_version=yes -+ continue -+ ;; -+ -+ -dlopen) -+ prev=dlfiles -+ continue -+ ;; -+ -+ -dlpreopen) -+ prev=dlprefiles -+ continue -+ ;; -+ -+ -export-dynamic) -+ export_dynamic=yes -+ continue -+ ;; -+ -+ -export-symbols | -export-symbols-regex) -+ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then -+ $echo "$modename: more than one -exported-symbols argument is not allowed" -+ exit $EXIT_FAILURE -+ fi -+ if test "X$arg" = "X-export-symbols"; then -+ prev=expsyms -+ else -+ prev=expsyms_regex -+ fi -+ continue -+ ;; -+ -+ -framework|-arch|-isysroot) -+ case " $CC " in -+ *" ${arg} ${1} "* | *" ${arg} ${1} "*) -+ prev=darwin_framework_skip ;; -+ *) compiler_flags="$compiler_flags $arg" -+ prev=darwin_framework ;; -+ esac -+ compile_command="$compile_command $arg" -+ finalize_command="$finalize_command $arg" -+ continue -+ ;; -+ -+ -inst-prefix-dir) -+ prev=inst_prefix -+ continue -+ ;; -+ -+ # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* -+ # so, if we see these flags be careful not to treat them like -L -+ -L[A-Z][A-Z]*:*) -+ case $with_gcc/$host in -+ no/*-*-irix* | /*-*-irix*) -+ compile_command="$compile_command $arg" -+ finalize_command="$finalize_command $arg" -+ ;; -+ esac -+ continue -+ ;; -+ -+ -L*) -+ dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` -+ # We need an absolute path. -+ case $dir in -+ [\\/]* | [A-Za-z]:[\\/]*) ;; -+ *) -+ absdir=`cd "$dir" && pwd` -+ if test -z "$absdir"; then -+ $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 -+ absdir="$dir" -+ notinst_path="$notinst_path $dir" -+ fi -+ dir="$absdir" -+ ;; -+ esac -+ case "$deplibs " in -+ *" -L$dir "*) ;; -+ *) -+ deplibs="$deplibs -L$dir" -+ lib_search_path="$lib_search_path $dir" -+ ;; -+ esac -+ case $host in -+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) -+ testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` -+ case :$dllsearchpath: in -+ *":$dir:"*) ;; -+ *) dllsearchpath="$dllsearchpath:$dir";; -+ esac -+ case :$dllsearchpath: in -+ *":$testbindir:"*) ;; -+ *) dllsearchpath="$dllsearchpath:$testbindir";; -+ esac -+ ;; -+ esac -+ continue -+ ;; -+ -+ -l*) -+ if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then -+ case $host in -+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) -+ # These systems don't actually have a C or math library (as such) -+ continue -+ ;; -+ *-*-os2*) -+ # These systems don't actually have a C library (as such) -+ test "X$arg" = "X-lc" && continue -+ ;; -+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) -+ # Do not include libc due to us having libc/libc_r. -+ test "X$arg" = "X-lc" && continue -+ ;; -+ *-*-rhapsody* | *-*-darwin1.[012]) -+ # Rhapsody C and math libraries are in the System framework -+ deplibs="$deplibs -framework System" -+ continue -+ ;; -+ *-*-sco3.2v5* | *-*-sco5v6*) -+ # Causes problems with __ctype -+ test "X$arg" = "X-lc" && continue -+ ;; -+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) -+ # Compiler inserts libc in the correct place for threads to work -+ test "X$arg" = "X-lc" && continue -+ ;; -+ esac -+ elif test "X$arg" = "X-lc_r"; then -+ case $host in -+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) -+ # Do not include libc_r directly, use -pthread flag. -+ continue -+ ;; -+ esac -+ fi -+ deplibs="$deplibs $arg" -+ continue -+ ;; -+ -+ # Tru64 UNIX uses -model [arg] to determine the layout of C++ -+ # classes, name mangling, and exception handling. -+ -model) -+ compile_command="$compile_command $arg" -+ compiler_flags="$compiler_flags $arg" -+ finalize_command="$finalize_command $arg" -+ prev=xcompiler -+ continue -+ ;; -+ -+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) -+ compiler_flags="$compiler_flags $arg" -+ compile_command="$compile_command $arg" -+ finalize_command="$finalize_command $arg" -+ continue -+ ;; -+ -+ -module) -+ module=yes -+ continue -+ ;; -+ -+ # -64, -mips[0-9] enable 64-bit mode on the SGI compiler -+ # -r[0-9][0-9]* specifies the processor on the SGI compiler -+ # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler -+ # +DA*, +DD* enable 64-bit mode on the HP compiler -+ # -q* pass through compiler args for the IBM compiler -+ # -m* pass through architecture-specific compiler args for GCC -+ # -m*, -t[45]*, -txscale* pass through architecture-specific -+ # compiler args for GCC -+ # -pg pass through profiling flag for GCC -+ # @file GCC response files -+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \ -+ -t[45]*|-txscale*|@*) -+ -+ # Unknown arguments in both finalize_command and compile_command need -+ # to be aesthetically quoted because they are evaled later. -+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` -+ case $arg in -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -+ arg="\"$arg\"" -+ ;; -+ esac -+ compile_command="$compile_command $arg" -+ finalize_command="$finalize_command $arg" -+ compiler_flags="$compiler_flags $arg" -+ continue -+ ;; -+ -+ -shrext) -+ prev=shrext -+ continue -+ ;; -+ -+ -no-fast-install) -+ fast_install=no -+ continue -+ ;; -+ -+ -no-install) -+ case $host in -+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) -+ # The PATH hackery in wrapper scripts is required on Windows -+ # in order for the loader to find any dlls it needs. -+ $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 -+ $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 -+ fast_install=no -+ ;; -+ *) no_install=yes ;; -+ esac -+ continue -+ ;; -+ -+ -no-undefined) -+ allow_undefined=no -+ continue -+ ;; -+ -+ -objectlist) -+ prev=objectlist -+ continue -+ ;; -+ -+ -o) prev=output ;; -+ -+ -precious-files-regex) -+ prev=precious_regex -+ continue -+ ;; -+ -+ -release) -+ prev=release -+ continue -+ ;; -+ -+ -rpath) -+ prev=rpath -+ continue -+ ;; -+ -+ -R) -+ prev=xrpath -+ continue -+ ;; -+ -+ -R*) -+ dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` -+ # We need an absolute path. -+ case $dir in -+ [\\/]* | [A-Za-z]:[\\/]*) ;; -+ *) -+ $echo "$modename: only absolute run-paths are allowed" 1>&2 -+ exit $EXIT_FAILURE -+ ;; -+ esac -+ case "$xrpath " in -+ *" $dir "*) ;; -+ *) xrpath="$xrpath $dir" ;; -+ esac -+ continue -+ ;; -+ -+ -static | -static-libtool-libs) -+ # The effects of -static are defined in a previous loop. -+ # We used to do the same as -all-static on platforms that -+ # didn't have a PIC flag, but the assumption that the effects -+ # would be equivalent was wrong. It would break on at least -+ # Digital Unix and AIX. -+ continue -+ ;; -+ -+ -thread-safe) -+ thread_safe=yes -+ continue -+ ;; -+ -+ -version-info) -+ prev=vinfo -+ continue -+ ;; -+ -version-number) -+ prev=vinfo -+ vinfo_number=yes -+ continue -+ ;; -+ -+ -Wc,*) -+ args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` -+ arg= -+ save_ifs="$IFS"; IFS=',' -+ for flag in $args; do -+ IFS="$save_ifs" -+ case $flag in -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -+ flag="\"$flag\"" -+ ;; -+ esac -+ arg="$arg $wl$flag" -+ compiler_flags="$compiler_flags $flag" -+ done -+ IFS="$save_ifs" -+ arg=`$echo "X$arg" | $Xsed -e "s/^ //"` -+ ;; -+ -+ -Wl,*) -+ args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` -+ arg= -+ save_ifs="$IFS"; IFS=',' -+ for flag in $args; do -+ IFS="$save_ifs" -+ case $flag in -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -+ flag="\"$flag\"" -+ ;; -+ esac -+ arg="$arg $wl$flag" -+ compiler_flags="$compiler_flags $wl$flag" -+ linker_flags="$linker_flags $flag" -+ done -+ IFS="$save_ifs" -+ arg=`$echo "X$arg" | $Xsed -e "s/^ //"` -+ ;; -+ -+ -Xcompiler) -+ prev=xcompiler -+ continue -+ ;; -+ -+ -Xlinker) -+ prev=xlinker -+ continue -+ ;; -+ -+ -XCClinker) -+ prev=xcclinker -+ continue -+ ;; -+ -+ # Some other compiler flag. -+ -* | +*) -+ # Unknown arguments in both finalize_command and compile_command need -+ # to be aesthetically quoted because they are evaled later. -+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` -+ case $arg in -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -+ arg="\"$arg\"" -+ ;; -+ esac -+ ;; -+ -+ *.$objext) -+ # A standard object. -+ objs="$objs $arg" -+ ;; -+ -+ *.lo) -+ # A libtool-controlled object. -+ -+ # Check to see that this really is a libtool object. -+ if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then -+ pic_object= -+ non_pic_object= -+ -+ # Read the .lo file -+ # If there is no directory component, then add one. -+ case $arg in -+ */* | *\\*) . $arg ;; -+ *) . ./$arg ;; -+ esac -+ -+ if test -z "$pic_object" || \ -+ test -z "$non_pic_object" || -+ test "$pic_object" = none && \ -+ test "$non_pic_object" = none; then -+ $echo "$modename: cannot find name of object for \`$arg'" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ -+ # Extract subdirectory from the argument. -+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` -+ if test "X$xdir" = "X$arg"; then -+ xdir= -+ else -+ xdir="$xdir/" -+ fi -+ -+ if test "$pic_object" != none; then -+ # Prepend the subdirectory the object is found in. -+ pic_object="$xdir$pic_object" -+ -+ if test "$prev" = dlfiles; then -+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then -+ dlfiles="$dlfiles $pic_object" -+ prev= -+ continue -+ else -+ # If libtool objects are unsupported, then we need to preload. -+ prev=dlprefiles -+ fi -+ fi -+ -+ # CHECK ME: I think I busted this. -Ossama -+ if test "$prev" = dlprefiles; then -+ # Preload the old-style object. -+ dlprefiles="$dlprefiles $pic_object" -+ prev= -+ fi -+ -+ # A PIC object. -+ libobjs="$libobjs $pic_object" -+ arg="$pic_object" -+ fi -+ -+ # Non-PIC object. -+ if test "$non_pic_object" != none; then -+ # Prepend the subdirectory the object is found in. -+ non_pic_object="$xdir$non_pic_object" -+ -+ # A standard non-PIC object -+ non_pic_objects="$non_pic_objects $non_pic_object" -+ if test -z "$pic_object" || test "$pic_object" = none ; then -+ arg="$non_pic_object" -+ fi -+ else -+ # If the PIC object exists, use it instead. -+ # $xdir was prepended to $pic_object above. -+ non_pic_object="$pic_object" -+ non_pic_objects="$non_pic_objects $non_pic_object" -+ fi -+ else -+ # Only an error if not doing a dry-run. -+ if test -z "$run"; then -+ $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 -+ exit $EXIT_FAILURE -+ else -+ # Dry-run case. -+ -+ # Extract subdirectory from the argument. -+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` -+ if test "X$xdir" = "X$arg"; then -+ xdir= -+ else -+ xdir="$xdir/" -+ fi -+ -+ pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` -+ non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` -+ libobjs="$libobjs $pic_object" -+ non_pic_objects="$non_pic_objects $non_pic_object" -+ fi -+ fi -+ ;; -+ -+ *.$libext) -+ # An archive. -+ deplibs="$deplibs $arg" -+ old_deplibs="$old_deplibs $arg" -+ continue -+ ;; -+ -+ *.la) -+ # A libtool-controlled library. -+ -+ if test "$prev" = dlfiles; then -+ # This library was specified with -dlopen. -+ dlfiles="$dlfiles $arg" -+ prev= -+ elif test "$prev" = dlprefiles; then -+ # The library was specified with -dlpreopen. -+ dlprefiles="$dlprefiles $arg" -+ prev= -+ else -+ deplibs="$deplibs $arg" -+ fi -+ continue -+ ;; -+ -+ # Some other compiler argument. -+ *) -+ # Unknown arguments in both finalize_command and compile_command need -+ # to be aesthetically quoted because they are evaled later. -+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` -+ case $arg in -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -+ arg="\"$arg\"" -+ ;; -+ esac -+ ;; -+ esac # arg -+ -+ # Now actually substitute the argument into the commands. -+ if test -n "$arg"; then -+ compile_command="$compile_command $arg" -+ finalize_command="$finalize_command $arg" -+ fi -+ done # argument parsing loop -+ -+ if test -n "$prev"; then -+ $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 -+ $echo "$help" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ -+ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then -+ eval arg=\"$export_dynamic_flag_spec\" -+ compile_command="$compile_command $arg" -+ finalize_command="$finalize_command $arg" -+ fi -+ -+ oldlibs= -+ # calculate the name of the file, without its directory -+ outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` -+ libobjs_save="$libobjs" -+ -+ if test -n "$shlibpath_var"; then -+ # get the directories listed in $shlibpath_var -+ eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` -+ else -+ shlib_search_path= -+ fi -+ eval sys_lib_search_path=\"$sys_lib_search_path_spec\" -+ eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" -+ -+ output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` -+ if test "X$output_objdir" = "X$output"; then -+ output_objdir="$objdir" -+ else -+ output_objdir="$output_objdir/$objdir" -+ fi -+ # Create the object directory. -+ if test ! -d "$output_objdir"; then -+ $show "$mkdir $output_objdir" -+ $run $mkdir $output_objdir -+ exit_status=$? -+ if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then -+ exit $exit_status -+ fi -+ fi -+ -+ # Determine the type of output -+ case $output in -+ "") -+ $echo "$modename: you must specify an output file" 1>&2 -+ $echo "$help" 1>&2 -+ exit $EXIT_FAILURE -+ ;; -+ *.$libext) linkmode=oldlib ;; -+ *.lo | *.$objext) linkmode=obj ;; -+ *.la) linkmode=lib ;; -+ *) linkmode=prog ;; # Anything else should be a program. -+ esac -+ -+ case $host in -+ *cygwin* | *mingw* | *pw32*) -+ # don't eliminate duplications in $postdeps and $predeps -+ duplicate_compiler_generated_deps=yes -+ ;; -+ *) -+ duplicate_compiler_generated_deps=$duplicate_deps -+ ;; -+ esac -+ specialdeplibs= -+ -+ libs= -+ # Find all interdependent deplibs by searching for libraries -+ # that are linked more than once (e.g. -la -lb -la) -+ for deplib in $deplibs; do -+ if test "X$duplicate_deps" = "Xyes" ; then -+ case "$libs " in -+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; -+ esac -+ fi -+ libs="$libs $deplib" -+ done -+ -+ if test "$linkmode" = lib; then -+ libs="$predeps $libs $compiler_lib_search_path $postdeps" -+ -+ # Compute libraries that are listed more than once in $predeps -+ # $postdeps and mark them as special (i.e., whose duplicates are -+ # not to be eliminated). -+ pre_post_deps= -+ if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then -+ for pre_post_dep in $predeps $postdeps; do -+ case "$pre_post_deps " in -+ *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; -+ esac -+ pre_post_deps="$pre_post_deps $pre_post_dep" -+ done -+ fi -+ pre_post_deps= -+ fi -+ -+ deplibs= -+ newdependency_libs= -+ newlib_search_path= -+ need_relink=no # whether we're linking any uninstalled libtool libraries -+ notinst_deplibs= # not-installed libtool libraries -+ case $linkmode in -+ lib) -+ passes="conv link" -+ for file in $dlfiles $dlprefiles; do -+ case $file in -+ *.la) ;; -+ *) -+ $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 -+ exit $EXIT_FAILURE -+ ;; -+ esac -+ done -+ ;; -+ prog) -+ compile_deplibs= -+ finalize_deplibs= -+ alldeplibs=no -+ newdlfiles= -+ newdlprefiles= -+ passes="conv scan dlopen dlpreopen link" -+ ;; -+ *) passes="conv" -+ ;; -+ esac -+ for pass in $passes; do -+ if test "$linkmode,$pass" = "lib,link" || -+ test "$linkmode,$pass" = "prog,scan"; then -+ libs="$deplibs" -+ deplibs= -+ fi -+ if test "$linkmode" = prog; then -+ case $pass in -+ dlopen) libs="$dlfiles" ;; -+ dlpreopen) libs="$dlprefiles" ;; -+ link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; -+ esac -+ fi -+ if test "$pass" = dlopen; then -+ # Collect dlpreopened libraries -+ save_deplibs="$deplibs" -+ deplibs= -+ fi -+ for deplib in $libs; do -+ lib= -+ found=no -+ case $deplib in -+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe) -+ if test "$linkmode,$pass" = "prog,link"; then -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ else -+ compiler_flags="$compiler_flags $deplib" -+ fi -+ continue -+ ;; -+ -l*) -+ if test "$linkmode" != lib && test "$linkmode" != prog; then -+ $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 -+ continue -+ fi -+ name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` -+ for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do -+ for search_ext in .la $std_shrext .so .a; do -+ # Search the libtool library -+ lib="$searchdir/lib${name}${search_ext}" -+ if test -f "$lib"; then -+ if test "$search_ext" = ".la"; then -+ found=yes -+ else -+ found=no -+ fi -+ break 2 -+ fi -+ done -+ done -+ if test "$found" != yes; then -+ # deplib doesn't seem to be a libtool library -+ if test "$linkmode,$pass" = "prog,link"; then -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ else -+ deplibs="$deplib $deplibs" -+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" -+ fi -+ continue -+ else # deplib is a libtool library -+ # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, -+ # We need to do some special things here, and not later. -+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then -+ case " $predeps $postdeps " in -+ *" $deplib "*) -+ if (${SED} -e '2q' $lib | -+ grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then -+ library_names= -+ old_library= -+ case $lib in -+ */* | *\\*) . $lib ;; -+ *) . ./$lib ;; -+ esac -+ for l in $old_library $library_names; do -+ ll="$l" -+ done -+ if test "X$ll" = "X$old_library" ; then # only static version available -+ found=no -+ ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` -+ test "X$ladir" = "X$lib" && ladir="." -+ lib=$ladir/$old_library -+ if test "$linkmode,$pass" = "prog,link"; then -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ else -+ deplibs="$deplib $deplibs" -+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" -+ fi -+ continue -+ fi -+ fi -+ ;; -+ *) ;; -+ esac -+ fi -+ fi -+ ;; # -l -+ -L*) -+ case $linkmode in -+ lib) -+ deplibs="$deplib $deplibs" -+ test "$pass" = conv && continue -+ newdependency_libs="$deplib $newdependency_libs" -+ newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` -+ ;; -+ prog) -+ if test "$pass" = conv; then -+ deplibs="$deplib $deplibs" -+ continue -+ fi -+ if test "$pass" = scan; then -+ deplibs="$deplib $deplibs" -+ else -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ fi -+ newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` -+ ;; -+ *) -+ $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 -+ ;; -+ esac # linkmode -+ continue -+ ;; # -L -+ -R*) -+ if test "$pass" = link; then -+ dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` -+ # Make sure the xrpath contains only unique directories. -+ case "$xrpath " in -+ *" $dir "*) ;; -+ *) xrpath="$xrpath $dir" ;; -+ esac -+ fi -+ deplibs="$deplib $deplibs" -+ continue -+ ;; -+ *.la) lib="$deplib" ;; -+ *.$libext) -+ if test "$pass" = conv; then -+ deplibs="$deplib $deplibs" -+ continue -+ fi -+ case $linkmode in -+ lib) -+ valid_a_lib=no -+ case $deplibs_check_method in -+ match_pattern*) -+ set dummy $deplibs_check_method -+ match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` -+ if eval $echo \"$deplib\" 2>/dev/null \ -+ | $SED 10q \ -+ | $EGREP "$match_pattern_regex" > /dev/null; then -+ valid_a_lib=yes -+ fi -+ ;; -+ pass_all) -+ valid_a_lib=yes -+ ;; -+ esac -+ if test "$valid_a_lib" != yes; then -+ $echo -+ $echo "*** Warning: Trying to link with static lib archive $deplib." -+ $echo "*** I have the capability to make that library automatically link in when" -+ $echo "*** you link to this library. But I can only do this if you have a" -+ $echo "*** shared version of the library, which you do not appear to have" -+ $echo "*** because the file extensions .$libext of this argument makes me believe" -+ $echo "*** that it is just a static archive that I should not used here." -+ else -+ $echo -+ $echo "*** Warning: Linking the shared library $output against the" -+ $echo "*** static library $deplib is not portable!" -+ deplibs="$deplib $deplibs" -+ fi -+ continue -+ ;; -+ prog) -+ if test "$pass" != link; then -+ deplibs="$deplib $deplibs" -+ else -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ fi -+ continue -+ ;; -+ esac # linkmode -+ ;; # *.$libext -+ *.lo | *.$objext) -+ if test "$pass" = conv; then -+ deplibs="$deplib $deplibs" -+ elif test "$linkmode" = prog; then -+ if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then -+ # If there is no dlopen support or we're linking statically, -+ # we need to preload. -+ newdlprefiles="$newdlprefiles $deplib" -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ else -+ newdlfiles="$newdlfiles $deplib" -+ fi -+ fi -+ continue -+ ;; -+ %DEPLIBS%) -+ alldeplibs=yes -+ continue -+ ;; -+ esac # case $deplib -+ if test "$found" = yes || test -f "$lib"; then : -+ else -+ $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ -+ # Check to see that this really is a libtool archive. -+ if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : -+ else -+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ -+ ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` -+ test "X$ladir" = "X$lib" && ladir="." -+ -+ dlname= -+ dlopen= -+ dlpreopen= -+ libdir= -+ library_names= -+ old_library= -+ # If the library was installed with an old release of libtool, -+ # it will not redefine variables installed, or shouldnotlink -+ installed=yes -+ shouldnotlink=no -+ avoidtemprpath= -+ -+ -+ # Read the .la file -+ case $lib in -+ */* | *\\*) . $lib ;; -+ *) . ./$lib ;; -+ esac -+ -+ if test "$linkmode,$pass" = "lib,link" || -+ test "$linkmode,$pass" = "prog,scan" || -+ { test "$linkmode" != prog && test "$linkmode" != lib; }; then -+ test -n "$dlopen" && dlfiles="$dlfiles $dlopen" -+ test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" -+ fi -+ -+ if test "$pass" = conv; then -+ # Only check for convenience libraries -+ deplibs="$lib $deplibs" -+ if test -z "$libdir"; then -+ if test -z "$old_library"; then -+ $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ # It is a libtool convenience library, so add in its objects. -+ convenience="$convenience $ladir/$objdir/$old_library" -+ old_convenience="$old_convenience $ladir/$objdir/$old_library" -+ tmp_libs= -+ for deplib in $dependency_libs; do -+ deplibs="$deplib $deplibs" -+ if test "X$duplicate_deps" = "Xyes" ; then -+ case "$tmp_libs " in -+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; -+ esac -+ fi -+ tmp_libs="$tmp_libs $deplib" -+ done -+ elif test "$linkmode" != prog && test "$linkmode" != lib; then -+ $echo "$modename: \`$lib' is not a convenience library" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ continue -+ fi # $pass = conv -+ -+ -+ # Get the name of the library we link against. -+ linklib= -+ for l in $old_library $library_names; do -+ linklib="$l" -+ done -+ if test -z "$linklib"; then -+ $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ -+ # This library was specified with -dlopen. -+ if test "$pass" = dlopen; then -+ if test -z "$libdir"; then -+ $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ if test -z "$dlname" || -+ test "$dlopen_support" != yes || -+ test "$build_libtool_libs" = no; then -+ # If there is no dlname, no dlopen support or we're linking -+ # statically, we need to preload. We also need to preload any -+ # dependent libraries so libltdl's deplib preloader doesn't -+ # bomb out in the load deplibs phase. -+ dlprefiles="$dlprefiles $lib $dependency_libs" -+ else -+ newdlfiles="$newdlfiles $lib" -+ fi -+ continue -+ fi # $pass = dlopen -+ -+ # We need an absolute path. -+ case $ladir in -+ [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; -+ *) -+ abs_ladir=`cd "$ladir" && pwd` -+ if test -z "$abs_ladir"; then -+ $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 -+ $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 -+ abs_ladir="$ladir" -+ fi -+ ;; -+ esac -+ laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` -+ -+ # Find the relevant object directory and library name. -+ if test "X$installed" = Xyes; then -+ if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then -+ $echo "$modename: warning: library \`$lib' was moved." 1>&2 -+ dir="$ladir" -+ absdir="$abs_ladir" -+ libdir="$abs_ladir" -+ else -+ dir="$libdir" -+ absdir="$libdir" -+ fi -+ test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes -+ else -+ if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then -+ dir="$ladir" -+ absdir="$abs_ladir" -+ # Remove this search path later -+ notinst_path="$notinst_path $abs_ladir" -+ else -+ dir="$ladir/$objdir" -+ absdir="$abs_ladir/$objdir" -+ # Remove this search path later -+ notinst_path="$notinst_path $abs_ladir" -+ fi -+ fi # $installed = yes -+ name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` -+ -+ # This library was specified with -dlpreopen. -+ if test "$pass" = dlpreopen; then -+ if test -z "$libdir"; then -+ $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ # Prefer using a static library (so that no silly _DYNAMIC symbols -+ # are required to link). -+ if test -n "$old_library"; then -+ newdlprefiles="$newdlprefiles $dir/$old_library" -+ # Otherwise, use the dlname, so that lt_dlopen finds it. -+ elif test -n "$dlname"; then -+ newdlprefiles="$newdlprefiles $dir/$dlname" -+ else -+ newdlprefiles="$newdlprefiles $dir/$linklib" -+ fi -+ fi # $pass = dlpreopen -+ -+ if test -z "$libdir"; then -+ # Link the convenience library -+ if test "$linkmode" = lib; then -+ deplibs="$dir/$old_library $deplibs" -+ elif test "$linkmode,$pass" = "prog,link"; then -+ compile_deplibs="$dir/$old_library $compile_deplibs" -+ finalize_deplibs="$dir/$old_library $finalize_deplibs" -+ else -+ deplibs="$lib $deplibs" # used for prog,scan pass -+ fi -+ continue -+ fi -+ -+ -+ if test "$linkmode" = prog && test "$pass" != link; then -+ newlib_search_path="$newlib_search_path $ladir" -+ deplibs="$lib $deplibs" -+ -+ linkalldeplibs=no -+ if test "$link_all_deplibs" != no || test -z "$library_names" || -+ test "$build_libtool_libs" = no; then -+ linkalldeplibs=yes -+ fi -+ -+ tmp_libs= -+ for deplib in $dependency_libs; do -+ case $deplib in -+ -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test -+ esac -+ # Need to link against all dependency_libs? -+ if test "$linkalldeplibs" = yes; then -+ deplibs="$deplib $deplibs" -+ else -+ # Need to hardcode shared library paths -+ # or/and link against static libraries -+ newdependency_libs="$deplib $newdependency_libs" -+ fi -+ if test "X$duplicate_deps" = "Xyes" ; then -+ case "$tmp_libs " in -+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; -+ esac -+ fi -+ tmp_libs="$tmp_libs $deplib" -+ done # for deplib -+ continue -+ fi # $linkmode = prog... -+ -+ if test "$linkmode,$pass" = "prog,link"; then -+ if test -n "$library_names" && -+ { { test "$prefer_static_libs" = no || -+ test "$prefer_static_libs,$installed" = "built,yes"; } || -+ test -z "$old_library"; }; then -+ # We need to hardcode the library path -+ if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then -+ # Make sure the rpath contains only unique directories. -+ case "$temp_rpath " in -+ *" $dir "*) ;; -+ *" $absdir "*) ;; -+ *) temp_rpath="$temp_rpath $absdir" ;; -+ esac -+ fi -+ -+ # Hardcode the library path. -+ # Skip directories that are in the system default run-time -+ # search path. -+ case " $sys_lib_dlsearch_path " in -+ *" $absdir "*) ;; -+ *) -+ case "$compile_rpath " in -+ *" $absdir "*) ;; -+ *) compile_rpath="$compile_rpath $absdir" -+ esac -+ ;; -+ esac -+ case " $sys_lib_dlsearch_path " in -+ *" $libdir "*) ;; -+ *) -+ case "$finalize_rpath " in -+ *" $libdir "*) ;; -+ *) finalize_rpath="$finalize_rpath $libdir" -+ esac -+ ;; -+ esac -+ fi # $linkmode,$pass = prog,link... -+ -+ if test "$alldeplibs" = yes && -+ { test "$deplibs_check_method" = pass_all || -+ { test "$build_libtool_libs" = yes && -+ test -n "$library_names"; }; }; then -+ # We only need to search for static libraries -+ continue -+ fi -+ fi -+ -+ link_static=no # Whether the deplib will be linked statically -+ use_static_libs=$prefer_static_libs -+ if test "$use_static_libs" = built && test "$installed" = yes ; then -+ use_static_libs=no -+ fi -+ if test -n "$library_names" && -+ { test "$use_static_libs" = no || test -z "$old_library"; }; then -+ if test "$installed" = no; then -+ notinst_deplibs="$notinst_deplibs $lib" -+ need_relink=yes -+ fi -+ # This is a shared library -+ -+ # Warn about portability, can't link against -module's on -+ # some systems (darwin) -+ if test "$shouldnotlink" = yes && test "$pass" = link ; then -+ $echo -+ if test "$linkmode" = prog; then -+ $echo "*** Warning: Linking the executable $output against the loadable module" -+ else -+ $echo "*** Warning: Linking the shared library $output against the loadable module" -+ fi -+ $echo "*** $linklib is not portable!" -+ fi -+ if test "$linkmode" = lib && -+ test "$hardcode_into_libs" = yes; then -+ # Hardcode the library path. -+ # Skip directories that are in the system default run-time -+ # search path. -+ case " $sys_lib_dlsearch_path " in -+ *" $absdir "*) ;; -+ *) -+ case "$compile_rpath " in -+ *" $absdir "*) ;; -+ *) compile_rpath="$compile_rpath $absdir" -+ esac -+ ;; -+ esac -+ case " $sys_lib_dlsearch_path " in -+ *" $libdir "*) ;; -+ *) -+ case "$finalize_rpath " in -+ *" $libdir "*) ;; -+ *) finalize_rpath="$finalize_rpath $libdir" -+ esac -+ ;; -+ esac -+ fi -+ -+ if test -n "$old_archive_from_expsyms_cmds"; then -+ # figure out the soname -+ set dummy $library_names -+ realname="$2" -+ shift; shift -+ libname=`eval \\$echo \"$libname_spec\"` -+ # use dlname if we got it. it's perfectly good, no? -+ if test -n "$dlname"; then -+ soname="$dlname" -+ elif test -n "$soname_spec"; then -+ # bleh windows -+ case $host in -+ *cygwin* | mingw*) -+ major=`expr $current - $age` -+ versuffix="-$major" -+ ;; -+ esac -+ eval soname=\"$soname_spec\" -+ else -+ soname="$realname" -+ fi -+ -+ # Make a new name for the extract_expsyms_cmds to use -+ soroot="$soname" -+ soname=`$echo $soroot | ${SED} -e 's/^.*\///'` -+ newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" -+ -+ # If the library has no export list, then create one now -+ if test -f "$output_objdir/$soname-def"; then : -+ else -+ $show "extracting exported symbol list from \`$soname'" -+ save_ifs="$IFS"; IFS='~' -+ cmds=$extract_expsyms_cmds -+ for cmd in $cmds; do -+ IFS="$save_ifs" -+ eval cmd=\"$cmd\" -+ $show "$cmd" -+ $run eval "$cmd" || exit $? -+ done -+ IFS="$save_ifs" -+ fi -+ -+ # Create $newlib -+ if test -f "$output_objdir/$newlib"; then :; else -+ $show "generating import library for \`$soname'" -+ save_ifs="$IFS"; IFS='~' -+ cmds=$old_archive_from_expsyms_cmds -+ for cmd in $cmds; do -+ IFS="$save_ifs" -+ eval cmd=\"$cmd\" -+ $show "$cmd" -+ $run eval "$cmd" || exit $? -+ done -+ IFS="$save_ifs" -+ fi -+ # make sure the library variables are pointing to the new library -+ dir=$output_objdir -+ linklib=$newlib -+ fi # test -n "$old_archive_from_expsyms_cmds" -+ -+ if test "$linkmode" = prog || test "$mode" != relink; then -+ add_shlibpath= -+ add_dir= -+ add= -+ lib_linked=yes -+ case $hardcode_action in -+ immediate | unsupported) -+ if test "$hardcode_direct" = no; then -+ add="$dir/$linklib" -+ case $host in -+ *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; -+ *-*-sysv4*uw2*) add_dir="-L$dir" ;; -+ *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ -+ *-*-unixware7*) add_dir="-L$dir" ;; -+ *-*-darwin* ) -+ # if the lib is a module then we can not link against -+ # it, someone is ignoring the new warnings I added -+ if /usr/bin/file -L $add 2> /dev/null | -+ $EGREP ": [^:]* bundle" >/dev/null ; then -+ $echo "** Warning, lib $linklib is a module, not a shared library" -+ if test -z "$old_library" ; then -+ $echo -+ $echo "** And there doesn't seem to be a static archive available" -+ $echo "** The link will probably fail, sorry" -+ else -+ add="$dir/$old_library" -+ fi -+ fi -+ esac -+ elif test "$hardcode_minus_L" = no; then -+ case $host in -+ *-*-sunos*) add_shlibpath="$dir" ;; -+ esac -+ add_dir="-L$dir" -+ add="-l$name" -+ elif test "$hardcode_shlibpath_var" = no; then -+ add_shlibpath="$dir" -+ add="-l$name" -+ else -+ lib_linked=no -+ fi -+ ;; -+ relink) -+ if test "$hardcode_direct" = yes; then -+ add="$dir/$linklib" -+ elif test "$hardcode_minus_L" = yes; then -+ add_dir="-L$dir" -+ # Try looking first in the location we're being installed to. -+ if test -n "$inst_prefix_dir"; then -+ case $libdir in -+ [\\/]*) -+ add_dir="$add_dir -L$inst_prefix_dir$libdir" -+ ;; -+ esac -+ fi -+ add="-l$name" -+ elif test "$hardcode_shlibpath_var" = yes; then -+ add_shlibpath="$dir" -+ add="-l$name" -+ else -+ lib_linked=no -+ fi -+ ;; -+ *) lib_linked=no ;; -+ esac -+ -+ if test "$lib_linked" != yes; then -+ $echo "$modename: configuration error: unsupported hardcode properties" -+ exit $EXIT_FAILURE -+ fi -+ -+ if test -n "$add_shlibpath"; then -+ case :$compile_shlibpath: in -+ *":$add_shlibpath:"*) ;; -+ *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; -+ esac -+ fi -+ if test "$linkmode" = prog; then -+ test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" -+ test -n "$add" && compile_deplibs="$add $compile_deplibs" -+ else -+ test -n "$add_dir" && deplibs="$add_dir $deplibs" -+ test -n "$add" && deplibs="$add $deplibs" -+ if test "$hardcode_direct" != yes && \ -+ test "$hardcode_minus_L" != yes && \ -+ test "$hardcode_shlibpath_var" = yes; then -+ case :$finalize_shlibpath: in -+ *":$libdir:"*) ;; -+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; -+ esac -+ fi -+ fi -+ fi -+ -+ if test "$linkmode" = prog || test "$mode" = relink; then -+ add_shlibpath= -+ add_dir= -+ add= -+ # Finalize command for both is simple: just hardcode it. -+ if test "$hardcode_direct" = yes; then -+ add="$libdir/$linklib" -+ elif test "$hardcode_minus_L" = yes; then -+ add_dir="-L$libdir" -+ add="-l$name" -+ elif test "$hardcode_shlibpath_var" = yes; then -+ case :$finalize_shlibpath: in -+ *":$libdir:"*) ;; -+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; -+ esac -+ add="-l$name" -+ elif test "$hardcode_automatic" = yes; then -+ if test -n "$inst_prefix_dir" && -+ test -f "$inst_prefix_dir$libdir/$linklib" ; then -+ add="$inst_prefix_dir$libdir/$linklib" -+ else -+ add="$libdir/$linklib" -+ fi -+ else -+ # We cannot seem to hardcode it, guess we'll fake it. -+ add_dir="-L$libdir" -+ # Try looking first in the location we're being installed to. -+ if test -n "$inst_prefix_dir"; then -+ case $libdir in -+ [\\/]*) -+ add_dir="$add_dir -L$inst_prefix_dir$libdir" -+ ;; -+ esac -+ fi -+ add="-l$name" -+ fi -+ -+ if test "$linkmode" = prog; then -+ test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" -+ test -n "$add" && finalize_deplibs="$add $finalize_deplibs" -+ else -+ test -n "$add_dir" && deplibs="$add_dir $deplibs" -+ test -n "$add" && deplibs="$add $deplibs" -+ fi -+ fi -+ elif test "$linkmode" = prog; then -+ # Here we assume that one of hardcode_direct or hardcode_minus_L -+ # is not unsupported. This is valid on all known static and -+ # shared platforms. -+ if test "$hardcode_direct" != unsupported; then -+ test -n "$old_library" && linklib="$old_library" -+ compile_deplibs="$dir/$linklib $compile_deplibs" -+ finalize_deplibs="$dir/$linklib $finalize_deplibs" -+ else -+ compile_deplibs="-l$name -L$dir $compile_deplibs" -+ finalize_deplibs="-l$name -L$dir $finalize_deplibs" -+ fi -+ elif test "$build_libtool_libs" = yes; then -+ # Not a shared library -+ if test "$deplibs_check_method" != pass_all; then -+ # We're trying link a shared library against a static one -+ # but the system doesn't support it. -+ -+ # Just print a warning and add the library to dependency_libs so -+ # that the program can be linked against the static library. -+ $echo -+ $echo "*** Warning: This system can not link to static lib archive $lib." -+ $echo "*** I have the capability to make that library automatically link in when" -+ $echo "*** you link to this library. But I can only do this if you have a" -+ $echo "*** shared version of the library, which you do not appear to have." -+ if test "$module" = yes; then -+ $echo "*** But as you try to build a module library, libtool will still create " -+ $echo "*** a static module, that should work as long as the dlopening application" -+ $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." -+ if test -z "$global_symbol_pipe"; then -+ $echo -+ $echo "*** However, this would only work if libtool was able to extract symbol" -+ $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" -+ $echo "*** not find such a program. So, this module is probably useless." -+ $echo "*** \`nm' from GNU binutils and a full rebuild may help." -+ fi -+ if test "$build_old_libs" = no; then -+ build_libtool_libs=module -+ build_old_libs=yes -+ else -+ build_libtool_libs=no -+ fi -+ fi -+ else -+ deplibs="$dir/$old_library $deplibs" -+ link_static=yes -+ fi -+ fi # link shared/static library? -+ -+ if test "$linkmode" = lib; then -+ if test -n "$dependency_libs" && -+ { test "$hardcode_into_libs" != yes || -+ test "$build_old_libs" = yes || -+ test "$link_static" = yes; }; then -+ # Extract -R from dependency_libs -+ temp_deplibs= -+ for libdir in $dependency_libs; do -+ case $libdir in -+ -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` -+ case " $xrpath " in -+ *" $temp_xrpath "*) ;; -+ *) xrpath="$xrpath $temp_xrpath";; -+ esac;; -+ *) temp_deplibs="$temp_deplibs $libdir";; -+ esac -+ done -+ dependency_libs="$temp_deplibs" -+ fi -+ -+ newlib_search_path="$newlib_search_path $absdir" -+ # Link against this library -+ test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" -+ # ... and its dependency_libs -+ tmp_libs= -+ for deplib in $dependency_libs; do -+ newdependency_libs="$deplib $newdependency_libs" -+ if test "X$duplicate_deps" = "Xyes" ; then -+ case "$tmp_libs " in -+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; -+ esac -+ fi -+ tmp_libs="$tmp_libs $deplib" -+ done -+ -+ if test "$link_all_deplibs" != no; then -+ # Add the search paths of all dependency libraries -+ for deplib in $dependency_libs; do -+ case $deplib in -+ -L*) path="$deplib" ;; -+ *.la) -+ dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` -+ test "X$dir" = "X$deplib" && dir="." -+ # We need an absolute path. -+ case $dir in -+ [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; -+ *) -+ absdir=`cd "$dir" && pwd` -+ if test -z "$absdir"; then -+ $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 -+ absdir="$dir" -+ fi -+ ;; -+ esac -+ if grep "^installed=no" $deplib > /dev/null; then -+ path="$absdir/$objdir" -+ else -+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` -+ if test -z "$libdir"; then -+ $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ if test "$absdir" != "$libdir"; then -+ $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 -+ fi -+ path="$absdir" -+ fi -+ depdepl= -+ case $host in -+ *-*-darwin*) -+ # we do not want to link against static libs, -+ # but need to link against shared -+ eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` -+ if test -n "$deplibrary_names" ; then -+ for tmp in $deplibrary_names ; do -+ depdepl=$tmp -+ done -+ if test -f "$path/$depdepl" ; then -+ depdepl="$path/$depdepl" -+ fi -+ # do not add paths which are already there -+ case " $newlib_search_path " in -+ *" $path "*) ;; -+ *) newlib_search_path="$newlib_search_path $path";; -+ esac -+ fi -+ path="" -+ ;; -+ *) -+ path="-L$path" -+ ;; -+ esac -+ ;; -+ -l*) -+ case $host in -+ *-*-darwin*) -+ # Again, we only want to link against shared libraries -+ eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` -+ for tmp in $newlib_search_path ; do -+ if test -f "$tmp/lib$tmp_libs.dylib" ; then -+ eval depdepl="$tmp/lib$tmp_libs.dylib" -+ break -+ fi -+ done -+ path="" -+ ;; -+ *) continue ;; -+ esac -+ ;; -+ *) continue ;; -+ esac -+ case " $deplibs " in -+ *" $path "*) ;; -+ *) deplibs="$path $deplibs" ;; -+ esac -+ case " $deplibs " in -+ *" $depdepl "*) ;; -+ *) deplibs="$depdepl $deplibs" ;; -+ esac -+ done -+ fi # link_all_deplibs != no -+ fi # linkmode = lib -+ done # for deplib in $libs -+ dependency_libs="$newdependency_libs" -+ if test "$pass" = dlpreopen; then -+ # Link the dlpreopened libraries before other libraries -+ for deplib in $save_deplibs; do -+ deplibs="$deplib $deplibs" -+ done -+ fi -+ if test "$pass" != dlopen; then -+ if test "$pass" != conv; then -+ # Make sure lib_search_path contains only unique directories. -+ lib_search_path= -+ for dir in $newlib_search_path; do -+ case "$lib_search_path " in -+ *" $dir "*) ;; -+ *) lib_search_path="$lib_search_path $dir" ;; -+ esac -+ done -+ newlib_search_path= -+ fi -+ -+ if test "$linkmode,$pass" != "prog,link"; then -+ vars="deplibs" -+ else -+ vars="compile_deplibs finalize_deplibs" -+ fi -+ for var in $vars dependency_libs; do -+ # Add libraries to $var in reverse order -+ eval tmp_libs=\"\$$var\" -+ new_libs= -+ for deplib in $tmp_libs; do -+ # FIXME: Pedantically, this is the right thing to do, so -+ # that some nasty dependency loop isn't accidentally -+ # broken: -+ #new_libs="$deplib $new_libs" -+ # Pragmatically, this seems to cause very few problems in -+ # practice: -+ case $deplib in -+ -L*) new_libs="$deplib $new_libs" ;; -+ -R*) ;; -+ *) -+ # And here is the reason: when a library appears more -+ # than once as an explicit dependence of a library, or -+ # is implicitly linked in more than once by the -+ # compiler, it is considered special, and multiple -+ # occurrences thereof are not removed. Compare this -+ # with having the same library being listed as a -+ # dependency of multiple other libraries: in this case, -+ # we know (pedantically, we assume) the library does not -+ # need to be listed more than once, so we keep only the -+ # last copy. This is not always right, but it is rare -+ # enough that we require users that really mean to play -+ # such unportable linking tricks to link the library -+ # using -Wl,-lname, so that libtool does not consider it -+ # for duplicate removal. -+ case " $specialdeplibs " in -+ *" $deplib "*) new_libs="$deplib $new_libs" ;; -+ *) -+ case " $new_libs " in -+ *" $deplib "*) ;; -+ *) new_libs="$deplib $new_libs" ;; -+ esac -+ ;; -+ esac -+ ;; -+ esac -+ done -+ tmp_libs= -+ for deplib in $new_libs; do -+ case $deplib in -+ -L*) -+ case " $tmp_libs " in -+ *" $deplib "*) ;; -+ *) tmp_libs="$tmp_libs $deplib" ;; -+ esac -+ ;; -+ *) tmp_libs="$tmp_libs $deplib" ;; -+ esac -+ done -+ eval $var=\"$tmp_libs\" -+ done # for var -+ fi -+ # Last step: remove runtime libs from dependency_libs -+ # (they stay in deplibs) -+ tmp_libs= -+ for i in $dependency_libs ; do -+ case " $predeps $postdeps $compiler_lib_search_path " in -+ *" $i "*) -+ i="" -+ ;; -+ esac -+ if test -n "$i" ; then -+ tmp_libs="$tmp_libs $i" -+ fi -+ done -+ dependency_libs=$tmp_libs -+ done # for pass -+ if test "$linkmode" = prog; then -+ dlfiles="$newdlfiles" -+ dlprefiles="$newdlprefiles" -+ fi -+ -+ case $linkmode in -+ oldlib) -+ if test -n "$deplibs"; then -+ $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 -+ fi -+ -+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then -+ $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 -+ fi -+ -+ if test -n "$rpath"; then -+ $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 -+ fi -+ -+ if test -n "$xrpath"; then -+ $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 -+ fi -+ -+ if test -n "$vinfo"; then -+ $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 -+ fi -+ -+ if test -n "$release"; then -+ $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 -+ fi -+ -+ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then -+ $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 -+ fi -+ -+ # Now set the variables for building old libraries. -+ build_libtool_libs=no -+ oldlibs="$output" -+ objs="$objs$old_deplibs" -+ ;; -+ -+ lib) -+ # Make sure we only generate libraries of the form `libNAME.la'. -+ case $outputname in -+ lib*) -+ name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` -+ eval shared_ext=\"$shrext_cmds\" -+ eval libname=\"$libname_spec\" -+ ;; -+ *) -+ if test "$module" = no; then -+ $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 -+ $echo "$help" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ if test "$need_lib_prefix" != no; then -+ # Add the "lib" prefix for modules if required -+ name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` -+ eval shared_ext=\"$shrext_cmds\" -+ eval libname=\"$libname_spec\" -+ else -+ libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` -+ fi -+ ;; -+ esac -+ -+ if test -n "$objs"; then -+ if test "$deplibs_check_method" != pass_all; then -+ $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 -+ exit $EXIT_FAILURE -+ else -+ $echo -+ $echo "*** Warning: Linking the shared library $output against the non-libtool" -+ $echo "*** objects $objs is not portable!" -+ libobjs="$libobjs $objs" -+ fi -+ fi -+ -+ if test "$dlself" != no; then -+ $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 -+ fi -+ -+ set dummy $rpath -+ if test "$#" -gt 2; then -+ $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 -+ fi -+ install_libdir="$2" -+ -+ oldlibs= -+ if test -z "$rpath"; then -+ if test "$build_libtool_libs" = yes; then -+ # Building a libtool convenience library. -+ # Some compilers have problems with a `.al' extension so -+ # convenience libraries should have the same extension an -+ # archive normally would. -+ oldlibs="$output_objdir/$libname.$libext $oldlibs" -+ build_libtool_libs=convenience -+ build_old_libs=yes -+ fi -+ -+ if test -n "$vinfo"; then -+ $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 -+ fi -+ -+ if test -n "$release"; then -+ $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 -+ fi -+ else -+ -+ # Parse the version information argument. -+ save_ifs="$IFS"; IFS=':' -+ set dummy $vinfo 0 0 0 -+ IFS="$save_ifs" -+ -+ if test -n "$8"; then -+ $echo "$modename: too many parameters to \`-version-info'" 1>&2 -+ $echo "$help" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ -+ # convert absolute version numbers to libtool ages -+ # this retains compatibility with .la files and attempts -+ # to make the code below a bit more comprehensible -+ -+ case $vinfo_number in -+ yes) -+ number_major="$2" -+ number_minor="$3" -+ number_revision="$4" -+ # -+ # There are really only two kinds -- those that -+ # use the current revision as the major version -+ # and those that subtract age and use age as -+ # a minor version. But, then there is irix -+ # which has an extra 1 added just for fun -+ # -+ case $version_type in -+ darwin|linux|osf|windows|none) -+ current=`expr $number_major + $number_minor` -+ age="$number_minor" -+ revision="$number_revision" -+ ;; -+ freebsd-aout|freebsd-elf|sunos) -+ current="$number_major" -+ revision="$number_minor" -+ age="0" -+ ;; -+ irix|nonstopux) -+ current=`expr $number_major + $number_minor - 1` -+ age="$number_minor" -+ revision="$number_minor" -+ ;; -+ esac -+ ;; -+ no) -+ current="$2" -+ revision="$3" -+ age="$4" -+ ;; -+ esac -+ -+ # Check that each of the things are valid numbers. -+ case $current in -+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; -+ *) -+ $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 -+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2 -+ exit $EXIT_FAILURE -+ ;; -+ esac -+ -+ case $revision in -+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; -+ *) -+ $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 -+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2 -+ exit $EXIT_FAILURE -+ ;; -+ esac -+ -+ case $age in -+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; -+ *) -+ $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 -+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2 -+ exit $EXIT_FAILURE -+ ;; -+ esac -+ -+ if test "$age" -gt "$current"; then -+ $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 -+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ -+ # Calculate the version variables. -+ major= -+ versuffix= -+ verstring= -+ case $version_type in -+ none) ;; -+ -+ darwin) -+ # Like Linux, but with the current version available in -+ # verstring for coding it into the library header -+ major=.`expr $current - $age` -+ versuffix="$major.$age.$revision" -+ # Darwin ld doesn't like 0 for these options... -+ minor_current=`expr $current + 1` -+ verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" -+ ;; -+ -+ freebsd-aout) -+ major=".$current" -+ versuffix=".$current.$revision"; -+ ;; -+ -+ freebsd-elf) -+ major=".$current" -+ versuffix=".$current"; -+ ;; -+ -+ irix | nonstopux) -+ major=`expr $current - $age + 1` -+ -+ case $version_type in -+ nonstopux) verstring_prefix=nonstopux ;; -+ *) verstring_prefix=sgi ;; -+ esac -+ verstring="$verstring_prefix$major.$revision" -+ -+ # Add in all the interfaces that we are compatible with. -+ loop=$revision -+ while test "$loop" -ne 0; do -+ iface=`expr $revision - $loop` -+ loop=`expr $loop - 1` -+ verstring="$verstring_prefix$major.$iface:$verstring" -+ done -+ -+ # Before this point, $major must not contain `.'. -+ major=.$major -+ versuffix="$major.$revision" -+ ;; -+ -+ linux) -+ major=.`expr $current - $age` -+ versuffix="$major.$age.$revision" -+ ;; -+ -+ osf) -+ major=.`expr $current - $age` -+ versuffix=".$current.$age.$revision" -+ verstring="$current.$age.$revision" -+ -+ # Add in all the interfaces that we are compatible with. -+ loop=$age -+ while test "$loop" -ne 0; do -+ iface=`expr $current - $loop` -+ loop=`expr $loop - 1` -+ verstring="$verstring:${iface}.0" -+ done -+ -+ # Make executables depend on our current version. -+ verstring="$verstring:${current}.0" -+ ;; -+ -+ sunos) -+ major=".$current" -+ versuffix=".$current.$revision" -+ ;; -+ -+ windows) -+ # Use '-' rather than '.', since we only want one -+ # extension on DOS 8.3 filesystems. -+ major=`expr $current - $age` -+ versuffix="-$major" -+ ;; -+ -+ *) -+ $echo "$modename: unknown library version type \`$version_type'" 1>&2 -+ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 -+ exit $EXIT_FAILURE -+ ;; -+ esac -+ -+ # Clear the version info if we defaulted, and they specified a release. -+ if test -z "$vinfo" && test -n "$release"; then -+ major= -+ case $version_type in -+ darwin) -+ # we can't check for "0.0" in archive_cmds due to quoting -+ # problems, so we reset it completely -+ verstring= -+ ;; -+ *) -+ verstring="0.0" -+ ;; -+ esac -+ if test "$need_version" = no; then -+ versuffix= -+ else -+ versuffix=".0.0" -+ fi -+ fi -+ -+ # Remove version info from name if versioning should be avoided -+ if test "$avoid_version" = yes && test "$need_version" = no; then -+ major= -+ versuffix= -+ verstring="" -+ fi -+ -+ # Check to see if the archive will have undefined symbols. -+ if test "$allow_undefined" = yes; then -+ if test "$allow_undefined_flag" = unsupported; then -+ $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 -+ build_libtool_libs=no -+ build_old_libs=yes -+ fi -+ else -+ # Don't allow undefined symbols. -+ allow_undefined_flag="$no_undefined_flag" -+ fi -+ fi -+ -+ if test "$mode" != relink; then -+ # Remove our outputs, but don't remove object files since they -+ # may have been created when compiling PIC objects. -+ removelist= -+ tempremovelist=`$echo "$output_objdir/*"` -+ for p in $tempremovelist; do -+ case $p in -+ *.$objext) -+ ;; -+ $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) -+ if test "X$precious_files_regex" != "X"; then -+ if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 -+ then -+ continue -+ fi -+ fi -+ removelist="$removelist $p" -+ ;; -+ *) ;; -+ esac -+ done -+ if test -n "$removelist"; then -+ $show "${rm}r $removelist" -+ $run ${rm}r $removelist -+ fi -+ fi -+ -+ # Now set the variables for building old libraries. -+ if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then -+ oldlibs="$oldlibs $output_objdir/$libname.$libext" -+ -+ # Transform .lo files to .o files. -+ oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` -+ fi -+ -+ # Eliminate all temporary directories. -+# for path in $notinst_path; do -+# lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` -+# deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` -+# dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` -+# done -+ -+ if test -n "$xrpath"; then -+ # If the user specified any rpath flags, then add them. -+ temp_xrpath= -+ for libdir in $xrpath; do -+ temp_xrpath="$temp_xrpath -R$libdir" -+ case "$finalize_rpath " in -+ *" $libdir "*) ;; -+ *) finalize_rpath="$finalize_rpath $libdir" ;; -+ esac -+ done -+ if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then -+ dependency_libs="$temp_xrpath $dependency_libs" -+ fi -+ fi -+ -+ # Make sure dlfiles contains only unique files that won't be dlpreopened -+ old_dlfiles="$dlfiles" -+ dlfiles= -+ for lib in $old_dlfiles; do -+ case " $dlprefiles $dlfiles " in -+ *" $lib "*) ;; -+ *) dlfiles="$dlfiles $lib" ;; -+ esac -+ done -+ -+ # Make sure dlprefiles contains only unique files -+ old_dlprefiles="$dlprefiles" -+ dlprefiles= -+ for lib in $old_dlprefiles; do -+ case "$dlprefiles " in -+ *" $lib "*) ;; -+ *) dlprefiles="$dlprefiles $lib" ;; -+ esac -+ done -+ -+ if test "$build_libtool_libs" = yes; then -+ if test -n "$rpath"; then -+ case $host in -+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) -+ # these systems don't actually have a c library (as such)! -+ ;; -+ *-*-rhapsody* | *-*-darwin1.[012]) -+ # Rhapsody C library is in the System framework -+ deplibs="$deplibs -framework System" -+ ;; -+ *-*-netbsd*) -+ # Don't link with libc until the a.out ld.so is fixed. -+ ;; -+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) -+ # Do not include libc due to us having libc/libc_r. -+ ;; -+ *-*-sco3.2v5* | *-*-sco5v6*) -+ # Causes problems with __ctype -+ ;; -+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) -+ # Compiler inserts libc in the correct place for threads to work -+ ;; -+ *) -+ # Add libc to deplibs on all other systems if necessary. -+ if test "$build_libtool_need_lc" = "yes"; then -+ deplibs="$deplibs -lc" -+ fi -+ ;; -+ esac -+ fi -+ -+ # Transform deplibs into only deplibs that can be linked in shared. -+ name_save=$name -+ libname_save=$libname -+ release_save=$release -+ versuffix_save=$versuffix -+ major_save=$major -+ # I'm not sure if I'm treating the release correctly. I think -+ # release should show up in the -l (ie -lgmp5) so we don't want to -+ # add it in twice. Is that correct? -+ release="" -+ versuffix="" -+ major="" -+ newdeplibs= -+ droppeddeps=no -+ case $deplibs_check_method in -+ pass_all) -+ # Don't check for shared/static. Everything works. -+ # This might be a little naive. We might want to check -+ # whether the library exists or not. But this is on -+ # osf3 & osf4 and I'm not really sure... Just -+ # implementing what was already the behavior. -+ newdeplibs=$deplibs -+ ;; -+ test_compile) -+ # This code stresses the "libraries are programs" paradigm to its -+ # limits. Maybe even breaks it. We compile a program, linking it -+ # against the deplibs as a proxy for the library. Then we can check -+ # whether they linked in statically or dynamically with ldd. -+ $rm conftest.c -+ cat > conftest.c </dev/null` -+ for potent_lib in $potential_libs; do -+ # Follow soft links. -+ if ls -lLd "$potent_lib" 2>/dev/null \ -+ | grep " -> " >/dev/null; then -+ continue -+ fi -+ # The statement above tries to avoid entering an -+ # endless loop below, in case of cyclic links. -+ # We might still enter an endless loop, since a link -+ # loop can be closed while we follow links, -+ # but so what? -+ potlib="$potent_lib" -+ while test -h "$potlib" 2>/dev/null; do -+ potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` -+ case $potliblink in -+ [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; -+ *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; -+ esac -+ done -+ if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ -+ | ${SED} 10q \ -+ | $EGREP "$file_magic_regex" > /dev/null; then -+ newdeplibs="$newdeplibs $a_deplib" -+ a_deplib="" -+ break 2 -+ fi -+ done -+ done -+ fi -+ if test -n "$a_deplib" ; then -+ droppeddeps=yes -+ $echo -+ $echo "*** Warning: linker path does not have real file for library $a_deplib." -+ $echo "*** I have the capability to make that library automatically link in when" -+ $echo "*** you link to this library. But I can only do this if you have a" -+ $echo "*** shared version of the library, which you do not appear to have" -+ $echo "*** because I did check the linker path looking for a file starting" -+ if test -z "$potlib" ; then -+ $echo "*** with $libname but no candidates were found. (...for file magic test)" -+ else -+ $echo "*** with $libname and none of the candidates passed a file format test" -+ $echo "*** using a file magic. Last file checked: $potlib" -+ fi -+ fi -+ else -+ # Add a -L argument. -+ newdeplibs="$newdeplibs $a_deplib" -+ fi -+ done # Gone through all deplibs. -+ ;; -+ match_pattern*) -+ set dummy $deplibs_check_method -+ match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` -+ for a_deplib in $deplibs; do -+ name=`expr $a_deplib : '-l\(.*\)'` -+ # If $name is empty we are operating on a -L argument. -+ if test -n "$name" && test "$name" != "0"; then -+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then -+ case " $predeps $postdeps " in -+ *" $a_deplib "*) -+ newdeplibs="$newdeplibs $a_deplib" -+ a_deplib="" -+ ;; -+ esac -+ fi -+ if test -n "$a_deplib" ; then -+ libname=`eval \\$echo \"$libname_spec\"` -+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do -+ potential_libs=`ls $i/$libname[.-]* 2>/dev/null` -+ for potent_lib in $potential_libs; do -+ potlib="$potent_lib" # see symlink-check above in file_magic test -+ if eval $echo \"$potent_lib\" 2>/dev/null \ -+ | ${SED} 10q \ -+ | $EGREP "$match_pattern_regex" > /dev/null; then -+ newdeplibs="$newdeplibs $a_deplib" -+ a_deplib="" -+ break 2 -+ fi -+ done -+ done -+ fi -+ if test -n "$a_deplib" ; then -+ droppeddeps=yes -+ $echo -+ $echo "*** Warning: linker path does not have real file for library $a_deplib." -+ $echo "*** I have the capability to make that library automatically link in when" -+ $echo "*** you link to this library. But I can only do this if you have a" -+ $echo "*** shared version of the library, which you do not appear to have" -+ $echo "*** because I did check the linker path looking for a file starting" -+ if test -z "$potlib" ; then -+ $echo "*** with $libname but no candidates were found. (...for regex pattern test)" -+ else -+ $echo "*** with $libname and none of the candidates passed a file format test" -+ $echo "*** using a regex pattern. Last file checked: $potlib" -+ fi -+ fi -+ else -+ # Add a -L argument. -+ newdeplibs="$newdeplibs $a_deplib" -+ fi -+ done # Gone through all deplibs. -+ ;; -+ none | unknown | *) -+ newdeplibs="" -+ tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ -+ -e 's/ -[LR][^ ]*//g'` -+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then -+ for i in $predeps $postdeps ; do -+ # can't use Xsed below, because $i might contain '/' -+ tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` -+ done -+ fi -+ if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ -+ | grep . >/dev/null; then -+ $echo -+ if test "X$deplibs_check_method" = "Xnone"; then -+ $echo "*** Warning: inter-library dependencies are not supported in this platform." -+ else -+ $echo "*** Warning: inter-library dependencies are not known to be supported." -+ fi -+ $echo "*** All declared inter-library dependencies are being dropped." -+ droppeddeps=yes -+ fi -+ ;; -+ esac -+ versuffix=$versuffix_save -+ major=$major_save -+ release=$release_save -+ libname=$libname_save -+ name=$name_save -+ -+ case $host in -+ *-*-rhapsody* | *-*-darwin1.[012]) -+ # On Rhapsody replace the C library is the System framework -+ newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` -+ ;; -+ esac -+ -+ if test "$droppeddeps" = yes; then -+ if test "$module" = yes; then -+ $echo -+ $echo "*** Warning: libtool could not satisfy all declared inter-library" -+ $echo "*** dependencies of module $libname. Therefore, libtool will create" -+ $echo "*** a static module, that should work as long as the dlopening" -+ $echo "*** application is linked with the -dlopen flag." -+ if test -z "$global_symbol_pipe"; then -+ $echo -+ $echo "*** However, this would only work if libtool was able to extract symbol" -+ $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" -+ $echo "*** not find such a program. So, this module is probably useless." -+ $echo "*** \`nm' from GNU binutils and a full rebuild may help." -+ fi -+ if test "$build_old_libs" = no; then -+ oldlibs="$output_objdir/$libname.$libext" -+ build_libtool_libs=module -+ build_old_libs=yes -+ else -+ build_libtool_libs=no -+ fi -+ else -+ $echo "*** The inter-library dependencies that have been dropped here will be" -+ $echo "*** automatically added whenever a program is linked with this library" -+ $echo "*** or is declared to -dlopen it." -+ -+ if test "$allow_undefined" = no; then -+ $echo -+ $echo "*** Since this library must not contain undefined symbols," -+ $echo "*** because either the platform does not support them or" -+ $echo "*** it was explicitly requested with -no-undefined," -+ $echo "*** libtool will only create a static version of it." -+ if test "$build_old_libs" = no; then -+ oldlibs="$output_objdir/$libname.$libext" -+ build_libtool_libs=module -+ build_old_libs=yes -+ else -+ build_libtool_libs=no -+ fi -+ fi -+ fi -+ fi -+ # Done checking deplibs! -+ deplibs=$newdeplibs -+ fi -+ -+ -+ # move library search paths that coincide with paths to not yet -+ # installed libraries to the beginning of the library search list -+ new_libs= -+ for path in $notinst_path; do -+ case " $new_libs " in -+ *" -L$path/$objdir "*) ;; -+ *) -+ case " $deplibs " in -+ *" -L$path/$objdir "*) -+ new_libs="$new_libs -L$path/$objdir" ;; -+ esac -+ ;; -+ esac -+ done -+ for deplib in $deplibs; do -+ case $deplib in -+ -L*) -+ case " $new_libs " in -+ *" $deplib "*) ;; -+ *) new_libs="$new_libs $deplib" ;; -+ esac -+ ;; -+ *) new_libs="$new_libs $deplib" ;; -+ esac -+ done -+ deplibs="$new_libs" -+ -+ -+ # All the library-specific variables (install_libdir is set above). -+ library_names= -+ old_library= -+ dlname= -+ -+ # Test again, we may have decided not to build it any more -+ if test "$build_libtool_libs" = yes; then -+ if test "$hardcode_into_libs" = yes; then -+ # Hardcode the library paths -+ hardcode_libdirs= -+ dep_rpath= -+ rpath="$finalize_rpath" -+ test "$mode" != relink && rpath="$compile_rpath$rpath" -+ for libdir in $rpath; do -+ if test -n "$hardcode_libdir_flag_spec"; then -+ if test -n "$hardcode_libdir_separator"; then -+ if test -z "$hardcode_libdirs"; then -+ hardcode_libdirs="$libdir" -+ else -+ # Just accumulate the unique libdirs. -+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in -+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) -+ ;; -+ *) -+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" -+ ;; -+ esac -+ fi -+ else -+ eval flag=\"$hardcode_libdir_flag_spec\" -+ dep_rpath="$dep_rpath $flag" -+ fi -+ elif test -n "$runpath_var"; then -+ case "$perm_rpath " in -+ *" $libdir "*) ;; -+ *) perm_rpath="$perm_rpath $libdir" ;; -+ esac -+ fi -+ done -+ # Substitute the hardcoded libdirs into the rpath. -+ if test -n "$hardcode_libdir_separator" && -+ test -n "$hardcode_libdirs"; then -+ libdir="$hardcode_libdirs" -+ if test -n "$hardcode_libdir_flag_spec_ld"; then -+ eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" -+ else -+ eval dep_rpath=\"$hardcode_libdir_flag_spec\" -+ fi -+ fi -+ if test -n "$runpath_var" && test -n "$perm_rpath"; then -+ # We should set the runpath_var. -+ rpath= -+ for dir in $perm_rpath; do -+ rpath="$rpath$dir:" -+ done -+ eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" -+ fi -+ test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" -+ fi -+ -+ shlibpath="$finalize_shlibpath" -+ test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" -+ if test -n "$shlibpath"; then -+ eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" -+ fi -+ -+ # Get the real and link names of the library. -+ eval shared_ext=\"$shrext_cmds\" -+ eval library_names=\"$library_names_spec\" -+ set dummy $library_names -+ realname="$2" -+ shift; shift -+ -+ if test -n "$soname_spec"; then -+ eval soname=\"$soname_spec\" -+ else -+ soname="$realname" -+ fi -+ if test -z "$dlname"; then -+ dlname=$soname -+ fi -+ -+ lib="$output_objdir/$realname" -+ linknames= -+ for link -+ do -+ linknames="$linknames $link" -+ done -+ -+ # Use standard objects if they are pic -+ test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` -+ -+ # Prepare the list of exported symbols -+ if test -z "$export_symbols"; then -+ if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then -+ $show "generating symbol list for \`$libname.la'" -+ export_symbols="$output_objdir/$libname.exp" -+ $run $rm $export_symbols -+ cmds=$export_symbols_cmds -+ save_ifs="$IFS"; IFS='~' -+ for cmd in $cmds; do -+ IFS="$save_ifs" -+ eval cmd=\"$cmd\" -+ if len=`expr "X$cmd" : ".*"` && -+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then -+ $show "$cmd" -+ $run eval "$cmd" || exit $? -+ skipped_export=false -+ else -+ # The command line is too long to execute in one step. -+ $show "using reloadable object file for export list..." -+ skipped_export=: -+ # Break out early, otherwise skipped_export may be -+ # set to false by a later but shorter cmd. -+ break -+ fi -+ done -+ IFS="$save_ifs" -+ if test -n "$export_symbols_regex"; then -+ $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" -+ $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' -+ $show "$mv \"${export_symbols}T\" \"$export_symbols\"" -+ $run eval '$mv "${export_symbols}T" "$export_symbols"' -+ fi -+ fi -+ fi -+ -+ if test -n "$export_symbols" && test -n "$include_expsyms"; then -+ $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' -+ fi -+ -+ tmp_deplibs= -+ for test_deplib in $deplibs; do -+ case " $convenience " in -+ *" $test_deplib "*) ;; -+ *) -+ tmp_deplibs="$tmp_deplibs $test_deplib" -+ ;; -+ esac -+ done -+ deplibs="$tmp_deplibs" -+ -+ if test -n "$convenience"; then -+ if test -n "$whole_archive_flag_spec"; then -+ save_libobjs=$libobjs -+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\" -+ else -+ gentop="$output_objdir/${outputname}x" -+ generated="$generated $gentop" -+ -+ func_extract_archives $gentop $convenience -+ libobjs="$libobjs $func_extract_archives_result" -+ fi -+ fi -+ -+ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then -+ eval flag=\"$thread_safe_flag_spec\" -+ linker_flags="$linker_flags $flag" -+ fi -+ -+ # Make a backup of the uninstalled library when relinking -+ if test "$mode" = relink; then -+ $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? -+ fi -+ -+ # Do each of the archive commands. -+ if test "$module" = yes && test -n "$module_cmds" ; then -+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then -+ eval test_cmds=\"$module_expsym_cmds\" -+ cmds=$module_expsym_cmds -+ else -+ eval test_cmds=\"$module_cmds\" -+ cmds=$module_cmds -+ fi -+ else -+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then -+ eval test_cmds=\"$archive_expsym_cmds\" -+ cmds=$archive_expsym_cmds -+ else -+ eval test_cmds=\"$archive_cmds\" -+ cmds=$archive_cmds -+ fi -+ fi -+ -+ if test "X$skipped_export" != "X:" && -+ len=`expr "X$test_cmds" : ".*" 2>/dev/null` && -+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then -+ : -+ else -+ # The command line is too long to link in one step, link piecewise. -+ $echo "creating reloadable object files..." -+ -+ # Save the value of $output and $libobjs because we want to -+ # use them later. If we have whole_archive_flag_spec, we -+ # want to use save_libobjs as it was before -+ # whole_archive_flag_spec was expanded, because we can't -+ # assume the linker understands whole_archive_flag_spec. -+ # This may have to be revisited, in case too many -+ # convenience libraries get linked in and end up exceeding -+ # the spec. -+ if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then -+ save_libobjs=$libobjs -+ fi -+ save_output=$output -+ output_la=`$echo "X$output" | $Xsed -e "$basename"` -+ -+ # Clear the reloadable object creation command queue and -+ # initialize k to one. -+ test_cmds= -+ concat_cmds= -+ objlist= -+ delfiles= -+ last_robj= -+ k=1 -+ output=$output_objdir/$output_la-${k}.$objext -+ # Loop over the list of objects to be linked. -+ for obj in $save_libobjs -+ do -+ eval test_cmds=\"$reload_cmds $objlist $last_robj\" -+ if test "X$objlist" = X || -+ { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && -+ test "$len" -le "$max_cmd_len"; }; then -+ objlist="$objlist $obj" -+ else -+ # The command $test_cmds is almost too long, add a -+ # command to the queue. -+ if test "$k" -eq 1 ; then -+ # The first file doesn't have a previous command to add. -+ eval concat_cmds=\"$reload_cmds $objlist $last_robj\" -+ else -+ # All subsequent reloadable object files will link in -+ # the last one created. -+ eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" -+ fi -+ last_robj=$output_objdir/$output_la-${k}.$objext -+ k=`expr $k + 1` -+ output=$output_objdir/$output_la-${k}.$objext -+ objlist=$obj -+ len=1 -+ fi -+ done -+ # Handle the remaining objects by creating one last -+ # reloadable object file. All subsequent reloadable object -+ # files will link in the last one created. -+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~ -+ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" -+ -+ if ${skipped_export-false}; then -+ $show "generating symbol list for \`$libname.la'" -+ export_symbols="$output_objdir/$libname.exp" -+ $run $rm $export_symbols -+ libobjs=$output -+ # Append the command to create the export file. -+ eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" -+ fi -+ -+ # Set up a command to remove the reloadable object files -+ # after they are used. -+ i=0 -+ while test "$i" -lt "$k" -+ do -+ i=`expr $i + 1` -+ delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" -+ done -+ -+ $echo "creating a temporary reloadable object file: $output" -+ -+ # Loop through the commands generated above and execute them. -+ save_ifs="$IFS"; IFS='~' -+ for cmd in $concat_cmds; do -+ IFS="$save_ifs" -+ $show "$cmd" -+ $run eval "$cmd" || exit $? -+ done -+ IFS="$save_ifs" -+ -+ libobjs=$output -+ # Restore the value of output. -+ output=$save_output -+ -+ if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then -+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\" -+ fi -+ # Expand the library linking commands again to reset the -+ # value of $libobjs for piecewise linking. -+ -+ # Do each of the archive commands. -+ if test "$module" = yes && test -n "$module_cmds" ; then -+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then -+ cmds=$module_expsym_cmds -+ else -+ cmds=$module_cmds -+ fi -+ else -+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then -+ cmds=$archive_expsym_cmds -+ else -+ cmds=$archive_cmds -+ fi -+ fi -+ -+ # Append the command to remove the reloadable object files -+ # to the just-reset $cmds. -+ eval cmds=\"\$cmds~\$rm $delfiles\" -+ fi -+ save_ifs="$IFS"; IFS='~' -+ for cmd in $cmds; do -+ IFS="$save_ifs" -+ eval cmd=\"$cmd\" -+ $show "$cmd" -+ $run eval "$cmd" || { -+ lt_exit=$? -+ -+ # Restore the uninstalled library and exit -+ if test "$mode" = relink; then -+ $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' -+ fi -+ -+ exit $lt_exit -+ } -+ done -+ IFS="$save_ifs" -+ -+ # Restore the uninstalled library and exit -+ if test "$mode" = relink; then -+ $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? -+ -+ if test -n "$convenience"; then -+ if test -z "$whole_archive_flag_spec"; then -+ $show "${rm}r $gentop" -+ $run ${rm}r "$gentop" -+ fi -+ fi -+ -+ exit $EXIT_SUCCESS -+ fi -+ -+ # Create links to the real library. -+ for linkname in $linknames; do -+ if test "$realname" != "$linkname"; then -+ $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" -+ $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? -+ fi -+ done -+ -+ # If -module or -export-dynamic was specified, set the dlname. -+ if test "$module" = yes || test "$export_dynamic" = yes; then -+ # On all known operating systems, these are identical. -+ dlname="$soname" -+ fi -+ fi -+ ;; -+ -+ obj) -+ if test -n "$deplibs"; then -+ $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 -+ fi -+ -+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then -+ $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 -+ fi -+ -+ if test -n "$rpath"; then -+ $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 -+ fi -+ -+ if test -n "$xrpath"; then -+ $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 -+ fi -+ -+ if test -n "$vinfo"; then -+ $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 -+ fi -+ -+ if test -n "$release"; then -+ $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 -+ fi -+ -+ case $output in -+ *.lo) -+ if test -n "$objs$old_deplibs"; then -+ $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ libobj="$output" -+ obj=`$echo "X$output" | $Xsed -e "$lo2o"` -+ ;; -+ *) -+ libobj= -+ obj="$output" -+ ;; -+ esac -+ -+ # Delete the old objects. -+ $run $rm $obj $libobj -+ -+ # Objects from convenience libraries. This assumes -+ # single-version convenience libraries. Whenever we create -+ # different ones for PIC/non-PIC, this we'll have to duplicate -+ # the extraction. -+ reload_conv_objs= -+ gentop= -+ # reload_cmds runs $LD directly, so let us get rid of -+ # -Wl from whole_archive_flag_spec and hope we can get by with -+ # turning comma into space.. -+ wl= -+ -+ if test -n "$convenience"; then -+ if test -n "$whole_archive_flag_spec"; then -+ eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" -+ reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` -+ else -+ gentop="$output_objdir/${obj}x" -+ generated="$generated $gentop" -+ -+ func_extract_archives $gentop $convenience -+ reload_conv_objs="$reload_objs $func_extract_archives_result" -+ fi -+ fi -+ -+ # Create the old-style object. -+ reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test -+ -+ output="$obj" -+ cmds=$reload_cmds -+ save_ifs="$IFS"; IFS='~' -+ for cmd in $cmds; do -+ IFS="$save_ifs" -+ eval cmd=\"$cmd\" -+ $show "$cmd" -+ $run eval "$cmd" || exit $? -+ done -+ IFS="$save_ifs" -+ -+ # Exit if we aren't doing a library object file. -+ if test -z "$libobj"; then -+ if test -n "$gentop"; then -+ $show "${rm}r $gentop" -+ $run ${rm}r $gentop -+ fi -+ -+ exit $EXIT_SUCCESS -+ fi -+ -+ if test "$build_libtool_libs" != yes; then -+ if test -n "$gentop"; then -+ $show "${rm}r $gentop" -+ $run ${rm}r $gentop -+ fi -+ -+ # Create an invalid libtool object if no PIC, so that we don't -+ # accidentally link it into a program. -+ # $show "echo timestamp > $libobj" -+ # $run eval "echo timestamp > $libobj" || exit $? -+ exit $EXIT_SUCCESS -+ fi -+ -+ if test -n "$pic_flag" || test "$pic_mode" != default; then -+ # Only do commands if we really have different PIC objects. -+ reload_objs="$libobjs $reload_conv_objs" -+ output="$libobj" -+ cmds=$reload_cmds -+ save_ifs="$IFS"; IFS='~' -+ for cmd in $cmds; do -+ IFS="$save_ifs" -+ eval cmd=\"$cmd\" -+ $show "$cmd" -+ $run eval "$cmd" || exit $? -+ done -+ IFS="$save_ifs" -+ fi -+ -+ if test -n "$gentop"; then -+ $show "${rm}r $gentop" -+ $run ${rm}r $gentop -+ fi -+ -+ exit $EXIT_SUCCESS -+ ;; -+ -+ prog) -+ case $host in -+ *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; -+ esac -+ if test -n "$vinfo"; then -+ $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 -+ fi -+ -+ if test -n "$release"; then -+ $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 -+ fi -+ -+ if test "$preload" = yes; then -+ if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && -+ test "$dlopen_self_static" = unknown; then -+ $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." -+ fi -+ fi -+ -+ case $host in -+ *-*-rhapsody* | *-*-darwin1.[012]) -+ # On Rhapsody replace the C library is the System framework -+ compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` -+ finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` -+ ;; -+ esac -+ -+ case $host in -+ *darwin*) -+ # Don't allow lazy linking, it breaks C++ global constructors -+ if test "$tagname" = CXX ; then -+ compile_command="$compile_command ${wl}-bind_at_load" -+ finalize_command="$finalize_command ${wl}-bind_at_load" -+ fi -+ ;; -+ esac -+ -+ -+ # move library search paths that coincide with paths to not yet -+ # installed libraries to the beginning of the library search list -+ new_libs= -+ for path in $notinst_path; do -+ case " $new_libs " in -+ *" -L$path/$objdir "*) ;; -+ *) -+ case " $compile_deplibs " in -+ *" -L$path/$objdir "*) -+ new_libs="$new_libs -L$path/$objdir" ;; -+ esac -+ ;; -+ esac -+ done -+ for deplib in $compile_deplibs; do -+ case $deplib in -+ -L*) -+ case " $new_libs " in -+ *" $deplib "*) ;; -+ *) new_libs="$new_libs $deplib" ;; -+ esac -+ ;; -+ *) new_libs="$new_libs $deplib" ;; -+ esac -+ done -+ compile_deplibs="$new_libs" -+ -+ -+ compile_command="$compile_command $compile_deplibs" -+ finalize_command="$finalize_command $finalize_deplibs" -+ -+ if test -n "$rpath$xrpath"; then -+ # If the user specified any rpath flags, then add them. -+ for libdir in $rpath $xrpath; do -+ # This is the magic to use -rpath. -+ case "$finalize_rpath " in -+ *" $libdir "*) ;; -+ *) finalize_rpath="$finalize_rpath $libdir" ;; -+ esac -+ done -+ fi -+ -+ # Now hardcode the library paths -+ rpath= -+ hardcode_libdirs= -+ for libdir in $compile_rpath $finalize_rpath; do -+ if test -n "$hardcode_libdir_flag_spec"; then -+ if test -n "$hardcode_libdir_separator"; then -+ if test -z "$hardcode_libdirs"; then -+ hardcode_libdirs="$libdir" -+ else -+ # Just accumulate the unique libdirs. -+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in -+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) -+ ;; -+ *) -+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" -+ ;; -+ esac -+ fi -+ else -+ eval flag=\"$hardcode_libdir_flag_spec\" -+ rpath="$rpath $flag" -+ fi -+ elif test -n "$runpath_var"; then -+ case "$perm_rpath " in -+ *" $libdir "*) ;; -+ *) perm_rpath="$perm_rpath $libdir" ;; -+ esac -+ fi -+ case $host in -+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) -+ testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` -+ case :$dllsearchpath: in -+ *":$libdir:"*) ;; -+ *) dllsearchpath="$dllsearchpath:$libdir";; -+ esac -+ case :$dllsearchpath: in -+ *":$testbindir:"*) ;; -+ *) dllsearchpath="$dllsearchpath:$testbindir";; -+ esac -+ ;; -+ esac -+ done -+ # Substitute the hardcoded libdirs into the rpath. -+ if test -n "$hardcode_libdir_separator" && -+ test -n "$hardcode_libdirs"; then -+ libdir="$hardcode_libdirs" -+ eval rpath=\" $hardcode_libdir_flag_spec\" -+ fi -+ compile_rpath="$rpath" -+ -+ rpath= -+ hardcode_libdirs= -+ for libdir in $finalize_rpath; do -+ if test -n "$hardcode_libdir_flag_spec"; then -+ if test -n "$hardcode_libdir_separator"; then -+ if test -z "$hardcode_libdirs"; then -+ hardcode_libdirs="$libdir" -+ else -+ # Just accumulate the unique libdirs. -+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in -+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) -+ ;; -+ *) -+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" -+ ;; -+ esac -+ fi -+ else -+ eval flag=\"$hardcode_libdir_flag_spec\" -+ rpath="$rpath $flag" -+ fi -+ elif test -n "$runpath_var"; then -+ case "$finalize_perm_rpath " in -+ *" $libdir "*) ;; -+ *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; -+ esac -+ fi -+ done -+ # Substitute the hardcoded libdirs into the rpath. -+ if test -n "$hardcode_libdir_separator" && -+ test -n "$hardcode_libdirs"; then -+ libdir="$hardcode_libdirs" -+ eval rpath=\" $hardcode_libdir_flag_spec\" -+ fi -+ finalize_rpath="$rpath" -+ -+ if test -n "$libobjs" && test "$build_old_libs" = yes; then -+ # Transform all the library objects into standard objects. -+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` -+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` -+ fi -+ -+ dlsyms= -+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then -+ if test -n "$NM" && test -n "$global_symbol_pipe"; then -+ dlsyms="${outputname}S.c" -+ else -+ $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 -+ fi -+ fi -+ -+ if test -n "$dlsyms"; then -+ case $dlsyms in -+ "") ;; -+ *.c) -+ # Discover the nlist of each of the dlfiles. -+ nlist="$output_objdir/${outputname}.nm" -+ -+ $show "$rm $nlist ${nlist}S ${nlist}T" -+ $run $rm "$nlist" "${nlist}S" "${nlist}T" -+ -+ # Parse the name list into a source file. -+ $show "creating $output_objdir/$dlsyms" -+ -+ test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ -+/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ -+/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ -+ -+#ifdef __cplusplus -+extern \"C\" { -+#endif -+ -+/* Prevent the only kind of declaration conflicts we can make. */ -+#define lt_preloaded_symbols some_other_symbol -+ -+/* External symbol declarations for the compiler. */\ -+" -+ -+ if test "$dlself" = yes; then -+ $show "generating symbol list for \`$output'" -+ -+ test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" -+ -+ # Add our own program objects to the symbol list. -+ progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` -+ for arg in $progfiles; do -+ $show "extracting global C symbols from \`$arg'" -+ $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" -+ done -+ -+ if test -n "$exclude_expsyms"; then -+ $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' -+ $run eval '$mv "$nlist"T "$nlist"' -+ fi -+ -+ if test -n "$export_symbols_regex"; then -+ $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' -+ $run eval '$mv "$nlist"T "$nlist"' -+ fi -+ -+ # Prepare the list of exported symbols -+ if test -z "$export_symbols"; then -+ export_symbols="$output_objdir/$outputname.exp" -+ $run $rm $export_symbols -+ $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' -+ case $host in -+ *cygwin* | *mingw* ) -+ $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' -+ $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' -+ ;; -+ esac -+ else -+ $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' -+ $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' -+ $run eval 'mv "$nlist"T "$nlist"' -+ case $host in -+ *cygwin* | *mingw* ) -+ $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' -+ $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' -+ ;; -+ esac -+ fi -+ fi -+ -+ for arg in $dlprefiles; do -+ $show "extracting global C symbols from \`$arg'" -+ name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` -+ $run eval '$echo ": $name " >> "$nlist"' -+ $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" -+ done -+ -+ if test -z "$run"; then -+ # Make sure we have at least an empty file. -+ test -f "$nlist" || : > "$nlist" -+ -+ if test -n "$exclude_expsyms"; then -+ $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T -+ $mv "$nlist"T "$nlist" -+ fi -+ -+ # Try sorting and uniquifying the output. -+ if grep -v "^: " < "$nlist" | -+ if sort -k 3 /dev/null 2>&1; then -+ sort -k 3 -+ else -+ sort +2 -+ fi | -+ uniq > "$nlist"S; then -+ : -+ else -+ grep -v "^: " < "$nlist" > "$nlist"S -+ fi -+ -+ if test -f "$nlist"S; then -+ eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' -+ else -+ $echo '/* NONE */' >> "$output_objdir/$dlsyms" -+ fi -+ -+ $echo >> "$output_objdir/$dlsyms" "\ -+ -+#undef lt_preloaded_symbols -+ -+#if defined (__STDC__) && __STDC__ -+# define lt_ptr void * -+#else -+# define lt_ptr char * -+# define const -+#endif -+ -+/* The mapping between symbol names and symbols. */ -+" -+ -+ case $host in -+ *cygwin* | *mingw* ) -+ $echo >> "$output_objdir/$dlsyms" "\ -+/* DATA imports from DLLs on WIN32 can't be const, because -+ runtime relocations are performed -- see ld's documentation -+ on pseudo-relocs */ -+struct { -+" -+ ;; -+ * ) -+ $echo >> "$output_objdir/$dlsyms" "\ -+const struct { -+" -+ ;; -+ esac -+ -+ -+ $echo >> "$output_objdir/$dlsyms" "\ -+ const char *name; -+ lt_ptr address; -+} -+lt_preloaded_symbols[] = -+{\ -+" -+ -+ eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" -+ -+ $echo >> "$output_objdir/$dlsyms" "\ -+ {0, (lt_ptr) 0} -+}; -+ -+/* This works around a problem in FreeBSD linker */ -+#ifdef FREEBSD_WORKAROUND -+static const void *lt_preloaded_setup() { -+ return lt_preloaded_symbols; -+} -+#endif -+ -+#ifdef __cplusplus -+} -+#endif\ -+" -+ fi -+ -+ pic_flag_for_symtable= -+ case $host in -+ # compiling the symbol table file with pic_flag works around -+ # a FreeBSD bug that causes programs to crash when -lm is -+ # linked before any other PIC object. But we must not use -+ # pic_flag when linking with -static. The problem exists in -+ # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. -+ *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) -+ case "$compile_command " in -+ *" -static "*) ;; -+ *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; -+ esac;; -+ *-*-hpux*) -+ case "$compile_command " in -+ *" -static "*) ;; -+ *) pic_flag_for_symtable=" $pic_flag";; -+ esac -+ esac -+ -+ # Now compile the dynamic symbol file. -+ $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" -+ $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? -+ -+ # Clean up the generated files. -+ $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" -+ $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" -+ -+ # Transform the symbol file into the correct name. -+ case $host in -+ *cygwin* | *mingw* ) -+ if test -f "$output_objdir/${outputname}.def" ; then -+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` -+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` -+ else -+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` -+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` -+ fi -+ ;; -+ * ) -+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` -+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` -+ ;; -+ esac -+ ;; -+ *) -+ $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 -+ exit $EXIT_FAILURE -+ ;; -+ esac -+ else -+ # We keep going just in case the user didn't refer to -+ # lt_preloaded_symbols. The linker will fail if global_symbol_pipe -+ # really was required. -+ -+ # Nullify the symbol file. -+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` -+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` -+ fi -+ -+ if test "$need_relink" = no || test "$build_libtool_libs" != yes; then -+ # Replace the output file specification. -+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP` -+ link_command="$compile_command$compile_rpath" -+ -+ # We have no uninstalled library dependencies, so finalize right now. -+ $show "$link_command" -+ $run eval "$link_command" -+ exit_status=$? -+ -+ # Delete the generated files. -+ if test -n "$dlsyms"; then -+ $show "$rm $output_objdir/${outputname}S.${objext}" -+ $run $rm "$output_objdir/${outputname}S.${objext}" -+ fi -+ -+ exit $exit_status -+ fi -+ -+ if test -n "$shlibpath_var"; then -+ # We should set the shlibpath_var -+ rpath= -+ for dir in $temp_rpath; do -+ case $dir in -+ [\\/]* | [A-Za-z]:[\\/]*) -+ # Absolute path. -+ rpath="$rpath$dir:" -+ ;; -+ *) -+ # Relative path: add a thisdir entry. -+ rpath="$rpath\$thisdir/$dir:" -+ ;; -+ esac -+ done -+ temp_rpath="$rpath" -+ fi -+ -+ if test -n "$compile_shlibpath$finalize_shlibpath"; then -+ compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" -+ fi -+ if test -n "$finalize_shlibpath"; then -+ finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" -+ fi -+ -+ compile_var= -+ finalize_var= -+ if test -n "$runpath_var"; then -+ if test -n "$perm_rpath"; then -+ # We should set the runpath_var. -+ rpath= -+ for dir in $perm_rpath; do -+ rpath="$rpath$dir:" -+ done -+ compile_var="$runpath_var=\"$rpath\$$runpath_var\" " -+ fi -+ if test -n "$finalize_perm_rpath"; then -+ # We should set the runpath_var. -+ rpath= -+ for dir in $finalize_perm_rpath; do -+ rpath="$rpath$dir:" -+ done -+ finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " -+ fi -+ fi -+ -+ if test "$no_install" = yes; then -+ # We don't need to create a wrapper script. -+ link_command="$compile_var$compile_command$compile_rpath" -+ # Replace the output file specification. -+ link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` -+ # Delete the old output file. -+ $run $rm $output -+ # Link the executable and exit -+ $show "$link_command" -+ $run eval "$link_command" || exit $? -+ exit $EXIT_SUCCESS -+ fi -+ -+ if test "$hardcode_action" = relink; then -+ # Fast installation is not supported -+ link_command="$compile_var$compile_command$compile_rpath" -+ relink_command="$finalize_var$finalize_command$finalize_rpath" -+ -+ $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 -+ $echo "$modename: \`$output' will be relinked during installation" 1>&2 -+ else -+ if test "$fast_install" != no; then -+ link_command="$finalize_var$compile_command$finalize_rpath" -+ if test "$fast_install" = yes; then -+ relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP` -+ else -+ # fast_install is set to needless -+ relink_command= -+ fi -+ else -+ link_command="$compile_var$compile_command$compile_rpath" -+ relink_command="$finalize_var$finalize_command$finalize_rpath" -+ fi -+ fi -+ -+ # Replace the output file specification. -+ link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` -+ -+ # Delete the old output files. -+ $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname -+ -+ $show "$link_command" -+ $run eval "$link_command" || exit $? -+ -+ # Now create the wrapper script. -+ $show "creating $output" -+ -+ # Quote the relink command for shipping. -+ if test -n "$relink_command"; then -+ # Preserve any variables that may affect compiler behavior -+ for var in $variables_saved_for_relink; do -+ if eval test -z \"\${$var+set}\"; then -+ relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" -+ elif eval var_value=\$$var; test -z "$var_value"; then -+ relink_command="$var=; export $var; $relink_command" -+ else -+ var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` -+ relink_command="$var=\"$var_value\"; export $var; $relink_command" -+ fi -+ done -+ relink_command="(cd `pwd`; $relink_command)" -+ relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` -+ fi -+ -+ # Quote $echo for shipping. -+ if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then -+ case $progpath in -+ [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; -+ *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; -+ esac -+ qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` -+ else -+ qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` -+ fi -+ -+ # Only actually do things if our run command is non-null. -+ if test -z "$run"; then -+ # win32 will think the script is a binary if it has -+ # a .exe suffix, so we strip it off here. -+ case $output in -+ *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; -+ esac -+ # test for cygwin because mv fails w/o .exe extensions -+ case $host in -+ *cygwin*) -+ exeext=.exe -+ outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; -+ *) exeext= ;; -+ esac -+ case $host in -+ *cygwin* | *mingw* ) -+ output_name=`basename $output` -+ output_path=`dirname $output` -+ cwrappersource="$output_path/$objdir/lt-$output_name.c" -+ cwrapper="$output_path/$output_name.exe" -+ $rm $cwrappersource $cwrapper -+ trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 -+ -+ cat > $cwrappersource <> $cwrappersource<<"EOF" -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#if defined(PATH_MAX) -+# define LT_PATHMAX PATH_MAX -+#elif defined(MAXPATHLEN) -+# define LT_PATHMAX MAXPATHLEN -+#else -+# define LT_PATHMAX 1024 -+#endif -+ -+#ifndef DIR_SEPARATOR -+# define DIR_SEPARATOR '/' -+# define PATH_SEPARATOR ':' -+#endif -+ -+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ -+ defined (__OS2__) -+# define HAVE_DOS_BASED_FILE_SYSTEM -+# ifndef DIR_SEPARATOR_2 -+# define DIR_SEPARATOR_2 '\\' -+# endif -+# ifndef PATH_SEPARATOR_2 -+# define PATH_SEPARATOR_2 ';' -+# endif -+#endif -+ -+#ifndef DIR_SEPARATOR_2 -+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -+#else /* DIR_SEPARATOR_2 */ -+# define IS_DIR_SEPARATOR(ch) \ -+ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -+#endif /* DIR_SEPARATOR_2 */ -+ -+#ifndef PATH_SEPARATOR_2 -+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -+#else /* PATH_SEPARATOR_2 */ -+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -+#endif /* PATH_SEPARATOR_2 */ -+ -+#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -+#define XFREE(stale) do { \ -+ if (stale) { free ((void *) stale); stale = 0; } \ -+} while (0) -+ -+/* -DDEBUG is fairly common in CFLAGS. */ -+#undef DEBUG -+#if defined DEBUGWRAPPER -+# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) -+#else -+# define DEBUG(format, ...) -+#endif -+ -+const char *program_name = NULL; -+ -+void * xmalloc (size_t num); -+char * xstrdup (const char *string); -+const char * base_name (const char *name); -+char * find_executable(const char *wrapper); -+int check_executable(const char *path); -+char * strendzap(char *str, const char *pat); -+void lt_fatal (const char *message, ...); -+ -+int -+main (int argc, char *argv[]) -+{ -+ char **newargz; -+ int i; -+ -+ program_name = (char *) xstrdup (base_name (argv[0])); -+ DEBUG("(main) argv[0] : %s\n",argv[0]); -+ DEBUG("(main) program_name : %s\n",program_name); -+ newargz = XMALLOC(char *, argc+2); -+EOF -+ -+ cat >> $cwrappersource <> $cwrappersource <<"EOF" -+ newargz[1] = find_executable(argv[0]); -+ if (newargz[1] == NULL) -+ lt_fatal("Couldn't find %s", argv[0]); -+ DEBUG("(main) found exe at : %s\n",newargz[1]); -+ /* we know the script has the same name, without the .exe */ -+ /* so make sure newargz[1] doesn't end in .exe */ -+ strendzap(newargz[1],".exe"); -+ for (i = 1; i < argc; i++) -+ newargz[i+1] = xstrdup(argv[i]); -+ newargz[argc+1] = NULL; -+ -+ for (i=0; i> $cwrappersource <> $cwrappersource <> $cwrappersource <<"EOF" -+ return 127; -+} -+ -+void * -+xmalloc (size_t num) -+{ -+ void * p = (void *) malloc (num); -+ if (!p) -+ lt_fatal ("Memory exhausted"); -+ -+ return p; -+} -+ -+char * -+xstrdup (const char *string) -+{ -+ return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL -+; -+} -+ -+const char * -+base_name (const char *name) -+{ -+ const char *base; -+ -+#if defined (HAVE_DOS_BASED_FILE_SYSTEM) -+ /* Skip over the disk name in MSDOS pathnames. */ -+ if (isalpha ((unsigned char)name[0]) && name[1] == ':') -+ name += 2; -+#endif -+ -+ for (base = name; *name; name++) -+ if (IS_DIR_SEPARATOR (*name)) -+ base = name + 1; -+ return base; -+} -+ -+int -+check_executable(const char * path) -+{ -+ struct stat st; -+ -+ DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); -+ if ((!path) || (!*path)) -+ return 0; -+ -+ if ((stat (path, &st) >= 0) && -+ ( -+ /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ -+#if defined (S_IXOTH) -+ ((st.st_mode & S_IXOTH) == S_IXOTH) || -+#endif -+#if defined (S_IXGRP) -+ ((st.st_mode & S_IXGRP) == S_IXGRP) || -+#endif -+ ((st.st_mode & S_IXUSR) == S_IXUSR)) -+ ) -+ return 1; -+ else -+ return 0; -+} -+ -+/* Searches for the full path of the wrapper. Returns -+ newly allocated full path name if found, NULL otherwise */ -+char * -+find_executable (const char* wrapper) -+{ -+ int has_slash = 0; -+ const char* p; -+ const char* p_next; -+ /* static buffer for getcwd */ -+ char tmp[LT_PATHMAX + 1]; -+ int tmp_len; -+ char* concat_name; -+ -+ DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); -+ -+ if ((wrapper == NULL) || (*wrapper == '\0')) -+ return NULL; -+ -+ /* Absolute path? */ -+#if defined (HAVE_DOS_BASED_FILE_SYSTEM) -+ if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') -+ { -+ concat_name = xstrdup (wrapper); -+ if (check_executable(concat_name)) -+ return concat_name; -+ XFREE(concat_name); -+ } -+ else -+ { -+#endif -+ if (IS_DIR_SEPARATOR (wrapper[0])) -+ { -+ concat_name = xstrdup (wrapper); -+ if (check_executable(concat_name)) -+ return concat_name; -+ XFREE(concat_name); -+ } -+#if defined (HAVE_DOS_BASED_FILE_SYSTEM) -+ } -+#endif -+ -+ for (p = wrapper; *p; p++) -+ if (*p == '/') -+ { -+ has_slash = 1; -+ break; -+ } -+ if (!has_slash) -+ { -+ /* no slashes; search PATH */ -+ const char* path = getenv ("PATH"); -+ if (path != NULL) -+ { -+ for (p = path; *p; p = p_next) -+ { -+ const char* q; -+ size_t p_len; -+ for (q = p; *q; q++) -+ if (IS_PATH_SEPARATOR(*q)) -+ break; -+ p_len = q - p; -+ p_next = (*q == '\0' ? q : q + 1); -+ if (p_len == 0) -+ { -+ /* empty path: current directory */ -+ if (getcwd (tmp, LT_PATHMAX) == NULL) -+ lt_fatal ("getcwd failed"); -+ tmp_len = strlen(tmp); -+ concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); -+ memcpy (concat_name, tmp, tmp_len); -+ concat_name[tmp_len] = '/'; -+ strcpy (concat_name + tmp_len + 1, wrapper); -+ } -+ else -+ { -+ concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); -+ memcpy (concat_name, p, p_len); -+ concat_name[p_len] = '/'; -+ strcpy (concat_name + p_len + 1, wrapper); -+ } -+ if (check_executable(concat_name)) -+ return concat_name; -+ XFREE(concat_name); -+ } -+ } -+ /* not found in PATH; assume curdir */ -+ } -+ /* Relative path | not found in path: prepend cwd */ -+ if (getcwd (tmp, LT_PATHMAX) == NULL) -+ lt_fatal ("getcwd failed"); -+ tmp_len = strlen(tmp); -+ concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); -+ memcpy (concat_name, tmp, tmp_len); -+ concat_name[tmp_len] = '/'; -+ strcpy (concat_name + tmp_len + 1, wrapper); -+ -+ if (check_executable(concat_name)) -+ return concat_name; -+ XFREE(concat_name); -+ return NULL; -+} -+ -+char * -+strendzap(char *str, const char *pat) -+{ -+ size_t len, patlen; -+ -+ assert(str != NULL); -+ assert(pat != NULL); -+ -+ len = strlen(str); -+ patlen = strlen(pat); -+ -+ if (patlen <= len) -+ { -+ str += len - patlen; -+ if (strcmp(str, pat) == 0) -+ *str = '\0'; -+ } -+ return str; -+} -+ -+static void -+lt_error_core (int exit_status, const char * mode, -+ const char * message, va_list ap) -+{ -+ fprintf (stderr, "%s: %s: ", program_name, mode); -+ vfprintf (stderr, message, ap); -+ fprintf (stderr, ".\n"); -+ -+ if (exit_status >= 0) -+ exit (exit_status); -+} -+ -+void -+lt_fatal (const char *message, ...) -+{ -+ va_list ap; -+ va_start (ap, message); -+ lt_error_core (EXIT_FAILURE, "FATAL", message, ap); -+ va_end (ap); -+} -+EOF -+ # we should really use a build-platform specific compiler -+ # here, but OTOH, the wrappers (shell script and this C one) -+ # are only useful if you want to execute the "real" binary. -+ # Since the "real" binary is built for $host, then this -+ # wrapper might as well be built for $host, too. -+ $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource -+ ;; -+ esac -+ $rm $output -+ trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 -+ -+ $echo > $output "\ -+#! $SHELL -+ -+# $output - temporary wrapper script for $objdir/$outputname -+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP -+# -+# The $output program cannot be directly executed until all the libtool -+# libraries that it depends on are installed. -+# -+# This wrapper script should never be moved out of the build directory. -+# If it is, it will not operate correctly. -+ -+# Sed substitution that helps us do robust quoting. It backslashifies -+# metacharacters that are still active within double-quoted strings. -+Xsed='${SED} -e 1s/^X//' -+sed_quote_subst='$sed_quote_subst' -+ -+# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). -+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then -+ emulate sh -+ NULLCMD=: -+ # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which -+ # is contrary to our usage. Disable this feature. -+ alias -g '\${1+\"\$@\"}'='\"\$@\"' -+ setopt NO_GLOB_SUBST -+else -+ case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac -+fi -+ -+# 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 -+ -+relink_command=\"$relink_command\" -+ -+# This environment variable determines our operation mode. -+if test \"\$libtool_install_magic\" = \"$magic\"; then -+ # install mode needs the following variable: -+ notinst_deplibs='$notinst_deplibs' -+else -+ # When we are sourced in execute mode, \$file and \$echo are already set. -+ if test \"\$libtool_execute_magic\" != \"$magic\"; then -+ echo=\"$qecho\" -+ file=\"\$0\" -+ # Make sure echo works. -+ if test \"X\$1\" = X--no-reexec; then -+ # Discard the --no-reexec flag, and continue. -+ shift -+ elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then -+ # Yippee, \$echo works! -+ : -+ else -+ # Restart under the correct shell, and then maybe \$echo will work. -+ exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} -+ fi -+ fi\ -+" -+ $echo >> $output "\ -+ -+ # Find the directory that this script lives in. -+ thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` -+ test \"x\$thisdir\" = \"x\$file\" && thisdir=. -+ -+ # Follow symbolic links until we get to the real thisdir. -+ file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` -+ while test -n \"\$file\"; do -+ destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` -+ -+ # If there was a directory component, then change thisdir. -+ if test \"x\$destdir\" != \"x\$file\"; then -+ case \"\$destdir\" in -+ [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; -+ *) thisdir=\"\$thisdir/\$destdir\" ;; -+ esac -+ fi -+ -+ file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` -+ file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` -+ done -+ -+ # Try to get the absolute directory name. -+ absdir=\`cd \"\$thisdir\" && pwd\` -+ test -n \"\$absdir\" && thisdir=\"\$absdir\" -+" -+ -+ if test "$fast_install" = yes; then -+ $echo >> $output "\ -+ program=lt-'$outputname'$exeext -+ progdir=\"\$thisdir/$objdir\" -+ -+ if test ! -f \"\$progdir/\$program\" || \\ -+ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ -+ test \"X\$file\" != \"X\$progdir/\$program\"; }; then -+ -+ file=\"\$\$-\$program\" -+ -+ if test ! -d \"\$progdir\"; then -+ $mkdir \"\$progdir\" -+ else -+ $rm \"\$progdir/\$file\" -+ fi" -+ -+ $echo >> $output "\ -+ -+ # relink executable if necessary -+ if test -n \"\$relink_command\"; then -+ if relink_command_output=\`eval \$relink_command 2>&1\`; then : -+ else -+ $echo \"\$relink_command_output\" >&2 -+ $rm \"\$progdir/\$file\" -+ exit $EXIT_FAILURE -+ fi -+ fi -+ -+ $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || -+ { $rm \"\$progdir/\$program\"; -+ $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } -+ $rm \"\$progdir/\$file\" -+ fi" -+ else -+ $echo >> $output "\ -+ program='$outputname' -+ progdir=\"\$thisdir/$objdir\" -+" -+ fi -+ -+ $echo >> $output "\ -+ -+ if test -f \"\$progdir/\$program\"; then" -+ -+ # Export our shlibpath_var if we have one. -+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then -+ $echo >> $output "\ -+ # Add our own library path to $shlibpath_var -+ $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" -+ -+ # Some systems cannot cope with colon-terminated $shlibpath_var -+ # The second colon is a workaround for a bug in BeOS R4 sed -+ $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` -+ -+ export $shlibpath_var -+" -+ fi -+ -+ # fixup the dll searchpath if we need to. -+ if test -n "$dllsearchpath"; then -+ $echo >> $output "\ -+ # Add the dll search path components to the executable PATH -+ PATH=$dllsearchpath:\$PATH -+" -+ fi -+ -+ $echo >> $output "\ -+ if test \"\$libtool_execute_magic\" != \"$magic\"; then -+ # Run the actual program with our arguments. -+" -+ case $host in -+ # Backslashes separate directories on plain windows -+ *-*-mingw | *-*-os2*) -+ $echo >> $output "\ -+ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} -+" -+ ;; -+ -+ *) -+ $echo >> $output "\ -+ exec \"\$progdir/\$program\" \${1+\"\$@\"} -+" -+ ;; -+ esac -+ $echo >> $output "\ -+ \$echo \"\$0: cannot exec \$program \$*\" -+ exit $EXIT_FAILURE -+ fi -+ else -+ # The program doesn't exist. -+ \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 -+ \$echo \"This script is just a wrapper for \$program.\" 1>&2 -+ $echo \"See the $PACKAGE documentation for more information.\" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+fi\ -+" -+ chmod +x $output -+ fi -+ exit $EXIT_SUCCESS -+ ;; -+ esac -+ -+ # See if we need to build an old-fashioned archive. -+ for oldlib in $oldlibs; do -+ -+ if test "$build_libtool_libs" = convenience; then -+ oldobjs="$libobjs_save" -+ addlibs="$convenience" -+ build_libtool_libs=no -+ else -+ if test "$build_libtool_libs" = module; then -+ oldobjs="$libobjs_save" -+ build_libtool_libs=no -+ else -+ oldobjs="$old_deplibs $non_pic_objects" -+ fi -+ addlibs="$old_convenience" -+ fi -+ -+ if test -n "$addlibs"; then -+ gentop="$output_objdir/${outputname}x" -+ generated="$generated $gentop" -+ -+ func_extract_archives $gentop $addlibs -+ oldobjs="$oldobjs $func_extract_archives_result" -+ fi -+ -+ # Do each command in the archive commands. -+ if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then -+ cmds=$old_archive_from_new_cmds -+ else -+ # POSIX demands no paths to be encoded in archives. We have -+ # to avoid creating archives with duplicate basenames if we -+ # might have to extract them afterwards, e.g., when creating a -+ # static archive out of a convenience library, or when linking -+ # the entirety of a libtool archive into another (currently -+ # not supported by libtool). -+ if (for obj in $oldobjs -+ do -+ $echo "X$obj" | $Xsed -e 's%^.*/%%' -+ done | sort | sort -uc >/dev/null 2>&1); then -+ : -+ else -+ $echo "copying selected object files to avoid basename conflicts..." -+ -+ if test -z "$gentop"; then -+ gentop="$output_objdir/${outputname}x" -+ generated="$generated $gentop" -+ -+ $show "${rm}r $gentop" -+ $run ${rm}r "$gentop" -+ $show "$mkdir $gentop" -+ $run $mkdir "$gentop" -+ exit_status=$? -+ if test "$exit_status" -ne 0 && test ! -d "$gentop"; then -+ exit $exit_status -+ fi -+ fi -+ -+ save_oldobjs=$oldobjs -+ oldobjs= -+ counter=1 -+ for obj in $save_oldobjs -+ do -+ objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` -+ case " $oldobjs " in -+ " ") oldobjs=$obj ;; -+ *[\ /]"$objbase "*) -+ while :; do -+ # Make sure we don't pick an alternate name that also -+ # overlaps. -+ newobj=lt$counter-$objbase -+ counter=`expr $counter + 1` -+ case " $oldobjs " in -+ *[\ /]"$newobj "*) ;; -+ *) if test ! -f "$gentop/$newobj"; then break; fi ;; -+ esac -+ done -+ $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" -+ $run ln "$obj" "$gentop/$newobj" || -+ $run cp "$obj" "$gentop/$newobj" -+ oldobjs="$oldobjs $gentop/$newobj" -+ ;; -+ *) oldobjs="$oldobjs $obj" ;; -+ esac -+ done -+ fi -+ -+ eval cmds=\"$old_archive_cmds\" -+ -+ if len=`expr "X$cmds" : ".*"` && -+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then -+ cmds=$old_archive_cmds -+ else -+ # the command line is too long to link in one step, link in parts -+ $echo "using piecewise archive linking..." -+ save_RANLIB=$RANLIB -+ RANLIB=: -+ objlist= -+ concat_cmds= -+ save_oldobjs=$oldobjs -+ -+ # Is there a better way of finding the last object in the list? -+ for obj in $save_oldobjs -+ do -+ last_oldobj=$obj -+ done -+ for obj in $save_oldobjs -+ do -+ oldobjs="$objlist $obj" -+ objlist="$objlist $obj" -+ eval test_cmds=\"$old_archive_cmds\" -+ if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && -+ test "$len" -le "$max_cmd_len"; then -+ : -+ else -+ # the above command should be used before it gets too long -+ oldobjs=$objlist -+ if test "$obj" = "$last_oldobj" ; then -+ RANLIB=$save_RANLIB -+ fi -+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~ -+ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" -+ objlist= -+ fi -+ done -+ RANLIB=$save_RANLIB -+ oldobjs=$objlist -+ if test "X$oldobjs" = "X" ; then -+ eval cmds=\"\$concat_cmds\" -+ else -+ eval cmds=\"\$concat_cmds~\$old_archive_cmds\" -+ fi -+ fi -+ fi -+ save_ifs="$IFS"; IFS='~' -+ for cmd in $cmds; do -+ eval cmd=\"$cmd\" -+ IFS="$save_ifs" -+ $show "$cmd" -+ $run eval "$cmd" || exit $? -+ done -+ IFS="$save_ifs" -+ done -+ -+ if test -n "$generated"; then -+ $show "${rm}r$generated" -+ $run ${rm}r$generated -+ fi -+ -+ # Now create the libtool archive. -+ case $output in -+ *.la) -+ old_library= -+ test "$build_old_libs" = yes && old_library="$libname.$libext" -+ $show "creating $output" -+ -+ # Preserve any variables that may affect compiler behavior -+ for var in $variables_saved_for_relink; do -+ if eval test -z \"\${$var+set}\"; then -+ relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" -+ elif eval var_value=\$$var; test -z "$var_value"; then -+ relink_command="$var=; export $var; $relink_command" -+ else -+ var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` -+ relink_command="$var=\"$var_value\"; export $var; $relink_command" -+ fi -+ done -+ # Quote the link command for shipping. -+ relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" -+ relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` -+ if test "$hardcode_automatic" = yes ; then -+ relink_command= -+ fi -+ -+ -+ # Only create the output if not a dry run. -+ if test -z "$run"; then -+ for installed in no yes; do -+ if test "$installed" = yes; then -+ if test -z "$install_libdir"; then -+ break -+ fi -+ output="$output_objdir/$outputname"i -+ # Replace all uninstalled libtool libraries with the installed ones -+ newdependency_libs= -+ for deplib in $dependency_libs; do -+ case $deplib in -+ *.la) -+ name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` -+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` -+ if test -z "$libdir"; then -+ $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ newdependency_libs="$newdependency_libs $libdir/$name" -+ ;; -+ *) newdependency_libs="$newdependency_libs $deplib" ;; -+ esac -+ done -+ dependency_libs="$newdependency_libs" -+ newdlfiles= -+ for lib in $dlfiles; do -+ name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` -+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` -+ if test -z "$libdir"; then -+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ newdlfiles="$newdlfiles $libdir/$name" -+ done -+ dlfiles="$newdlfiles" -+ newdlprefiles= -+ for lib in $dlprefiles; do -+ name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` -+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` -+ if test -z "$libdir"; then -+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ newdlprefiles="$newdlprefiles $libdir/$name" -+ done -+ dlprefiles="$newdlprefiles" -+ else -+ newdlfiles= -+ for lib in $dlfiles; do -+ case $lib in -+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; -+ *) abs=`pwd`"/$lib" ;; -+ esac -+ newdlfiles="$newdlfiles $abs" -+ done -+ dlfiles="$newdlfiles" -+ newdlprefiles= -+ for lib in $dlprefiles; do -+ case $lib in -+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; -+ *) abs=`pwd`"/$lib" ;; -+ esac -+ newdlprefiles="$newdlprefiles $abs" -+ done -+ dlprefiles="$newdlprefiles" -+ fi -+ $rm $output -+ # place dlname in correct position for cygwin -+ tdlname=$dlname -+ case $host,$output,$installed,$module,$dlname in -+ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; -+ esac -+ $echo > $output "\ -+# $outputname - a libtool library file -+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP -+# -+# Please DO NOT delete this file! -+# It is necessary for linking the library. -+ -+# The name that we can dlopen(3). -+dlname='$tdlname' -+ -+# Names of this library. -+library_names='$library_names' -+ -+# The name of the static archive. -+old_library='$old_library' -+ -+# Libraries that this one depends upon. -+dependency_libs='$dependency_libs' -+ -+# Version information for $libname. -+current=$current -+age=$age -+revision=$revision -+ -+# Is this an already installed library? -+installed=$installed -+ -+# Should we warn about portability when linking against -modules? -+shouldnotlink=$module -+ -+# Files to dlopen/dlpreopen -+dlopen='$dlfiles' -+dlpreopen='$dlprefiles' -+ -+# Directory that this library needs to be installed in: -+libdir='$install_libdir'" -+ if test "$installed" = no && test "$need_relink" = yes; then -+ $echo >> $output "\ -+relink_command=\"$relink_command\"" -+ fi -+ done -+ fi -+ -+ # Do a symbolic link so that the libtool archive can be found in -+ # LD_LIBRARY_PATH before the program is installed. -+ $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" -+ $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? -+ ;; -+ esac -+ exit $EXIT_SUCCESS -+ ;; -+ -+ # libtool install mode -+ install) -+ modename="$modename: install" -+ -+ # There may be an optional sh(1) argument at the beginning of -+ # install_prog (especially on Windows NT). -+ if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || -+ # Allow the use of GNU shtool's install command. -+ $echo "X$nonopt" | grep shtool > /dev/null; then -+ # Aesthetically quote it. -+ arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` -+ case $arg in -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -+ arg="\"$arg\"" -+ ;; -+ esac -+ install_prog="$arg " -+ arg="$1" -+ shift -+ else -+ install_prog= -+ arg=$nonopt -+ fi -+ -+ # The real first argument should be the name of the installation program. -+ # Aesthetically quote it. -+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` -+ case $arg in -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -+ arg="\"$arg\"" -+ ;; -+ esac -+ install_prog="$install_prog$arg" -+ -+ # We need to accept at least all the BSD install flags. -+ dest= -+ files= -+ opts= -+ prev= -+ install_type= -+ isdir=no -+ stripme= -+ for arg -+ do -+ if test -n "$dest"; then -+ files="$files $dest" -+ dest=$arg -+ continue -+ fi -+ -+ case $arg in -+ -d) isdir=yes ;; -+ -f) -+ case " $install_prog " in -+ *[\\\ /]cp\ *) ;; -+ *) prev=$arg ;; -+ esac -+ ;; -+ -g | -m | -o) prev=$arg ;; -+ -s) -+ stripme=" -s" -+ continue -+ ;; -+ -*) -+ ;; -+ *) -+ # If the previous option needed an argument, then skip it. -+ if test -n "$prev"; then -+ prev= -+ else -+ dest=$arg -+ continue -+ fi -+ ;; -+ esac -+ -+ # Aesthetically quote the argument. -+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` -+ case $arg in -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -+ arg="\"$arg\"" -+ ;; -+ esac -+ install_prog="$install_prog $arg" -+ done -+ -+ if test -z "$install_prog"; then -+ $echo "$modename: you must specify an install program" 1>&2 -+ $echo "$help" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ -+ if test -n "$prev"; then -+ $echo "$modename: the \`$prev' option requires an argument" 1>&2 -+ $echo "$help" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ -+ if test -z "$files"; then -+ if test -z "$dest"; then -+ $echo "$modename: no file or destination specified" 1>&2 -+ else -+ $echo "$modename: you must specify a destination" 1>&2 -+ fi -+ $echo "$help" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ -+ # Strip any trailing slash from the destination. -+ dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` -+ -+ # Check to see that the destination is a directory. -+ test -d "$dest" && isdir=yes -+ if test "$isdir" = yes; then -+ destdir="$dest" -+ destname= -+ else -+ destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` -+ test "X$destdir" = "X$dest" && destdir=. -+ destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` -+ -+ # Not a directory, so check to see that there is only one file specified. -+ set dummy $files -+ if test "$#" -gt 2; then -+ $echo "$modename: \`$dest' is not a directory" 1>&2 -+ $echo "$help" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ fi -+ case $destdir in -+ [\\/]* | [A-Za-z]:[\\/]*) ;; -+ *) -+ for file in $files; do -+ case $file in -+ *.lo) ;; -+ *) -+ $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 -+ $echo "$help" 1>&2 -+ exit $EXIT_FAILURE -+ ;; -+ esac -+ done -+ ;; -+ esac -+ -+ # This variable tells wrapper scripts just to set variables rather -+ # than running their programs. -+ libtool_install_magic="$magic" -+ -+ staticlibs= -+ future_libdirs= -+ current_libdirs= -+ for file in $files; do -+ -+ # Do each installation. -+ case $file in -+ *.$libext) -+ # Do the static libraries later. -+ staticlibs="$staticlibs $file" -+ ;; -+ -+ *.la) -+ # Check to see that this really is a libtool archive. -+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : -+ else -+ $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 -+ $echo "$help" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ -+ library_names= -+ old_library= -+ relink_command= -+ # If there is no directory component, then add one. -+ case $file in -+ */* | *\\*) . $file ;; -+ *) . ./$file ;; -+ esac -+ -+ # Add the libdir to current_libdirs if it is the destination. -+ if test "X$destdir" = "X$libdir"; then -+ case "$current_libdirs " in -+ *" $libdir "*) ;; -+ *) current_libdirs="$current_libdirs $libdir" ;; -+ esac -+ else -+ # Note the libdir as a future libdir. -+ case "$future_libdirs " in -+ *" $libdir "*) ;; -+ *) future_libdirs="$future_libdirs $libdir" ;; -+ esac -+ fi -+ -+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ -+ test "X$dir" = "X$file/" && dir= -+ dir="$dir$objdir" -+ -+ if test -n "$relink_command"; then -+ # Determine the prefix the user has applied to our future dir. -+ inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` -+ -+ # Don't allow the user to place us outside of our expected -+ # location b/c this prevents finding dependent libraries that -+ # are installed to the same prefix. -+ # At present, this check doesn't affect windows .dll's that -+ # are installed into $libdir/../bin (currently, that works fine) -+ # but it's something to keep an eye on. -+ if test "$inst_prefix_dir" = "$destdir"; then -+ $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ -+ if test -n "$inst_prefix_dir"; then -+ # Stick the inst_prefix_dir data into the link command. -+ relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP` -+ else -+ relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP` -+ fi -+ -+ $echo "$modename: warning: relinking \`$file'" 1>&2 -+ $show "$relink_command" -+ if $run eval "$relink_command"; then : -+ else -+ $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ fi -+ -+ # See the names of the shared library. -+ set dummy $library_names -+ if test -n "$2"; then -+ realname="$2" -+ shift -+ shift -+ -+ srcname="$realname" -+ test -n "$relink_command" && srcname="$realname"T -+ -+ # Install the shared library and build the symlinks. -+ $show "$install_prog $dir/$srcname $destdir/$realname" -+ $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? -+ if test -n "$stripme" && test -n "$striplib"; then -+ $show "$striplib $destdir/$realname" -+ $run eval "$striplib $destdir/$realname" || exit $? -+ fi -+ -+ if test "$#" -gt 0; then -+ # Delete the old symlinks, and create new ones. -+ # Try `ln -sf' first, because the `ln' binary might depend on -+ # the symlink we replace! Solaris /bin/ln does not understand -f, -+ # so we also need to try rm && ln -s. -+ for linkname -+ do -+ if test "$linkname" != "$realname"; then -+ $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" -+ $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" -+ fi -+ done -+ fi -+ -+ # Do each command in the postinstall commands. -+ lib="$destdir/$realname" -+ cmds=$postinstall_cmds -+ save_ifs="$IFS"; IFS='~' -+ for cmd in $cmds; do -+ IFS="$save_ifs" -+ eval cmd=\"$cmd\" -+ $show "$cmd" -+ $run eval "$cmd" || { -+ lt_exit=$? -+ -+ # Restore the uninstalled library and exit -+ if test "$mode" = relink; then -+ $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' -+ fi -+ -+ exit $lt_exit -+ } -+ done -+ IFS="$save_ifs" -+ fi -+ -+ # Install the pseudo-library for information purposes. -+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` -+ instname="$dir/$name"i -+ $show "$install_prog $instname $destdir/$name" -+ $run eval "$install_prog $instname $destdir/$name" || exit $? -+ -+ # Maybe install the static library, too. -+ test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" -+ ;; -+ -+ *.lo) -+ # Install (i.e. copy) a libtool object. -+ -+ # Figure out destination file name, if it wasn't already specified. -+ if test -n "$destname"; then -+ destfile="$destdir/$destname" -+ else -+ destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` -+ destfile="$destdir/$destfile" -+ fi -+ -+ # Deduce the name of the destination old-style object file. -+ case $destfile in -+ *.lo) -+ staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` -+ ;; -+ *.$objext) -+ staticdest="$destfile" -+ destfile= -+ ;; -+ *) -+ $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 -+ $echo "$help" 1>&2 -+ exit $EXIT_FAILURE -+ ;; -+ esac -+ -+ # Install the libtool object if requested. -+ if test -n "$destfile"; then -+ $show "$install_prog $file $destfile" -+ $run eval "$install_prog $file $destfile" || exit $? -+ fi -+ -+ # Install the old object if enabled. -+ if test "$build_old_libs" = yes; then -+ # Deduce the name of the old-style object file. -+ staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` -+ -+ $show "$install_prog $staticobj $staticdest" -+ $run eval "$install_prog \$staticobj \$staticdest" || exit $? -+ fi -+ exit $EXIT_SUCCESS -+ ;; -+ -+ *) -+ # Figure out destination file name, if it wasn't already specified. -+ if test -n "$destname"; then -+ destfile="$destdir/$destname" -+ else -+ destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` -+ destfile="$destdir/$destfile" -+ fi -+ -+ # If the file is missing, and there is a .exe on the end, strip it -+ # because it is most likely a libtool script we actually want to -+ # install -+ stripped_ext="" -+ case $file in -+ *.exe) -+ if test ! -f "$file"; then -+ file=`$echo $file|${SED} 's,.exe$,,'` -+ stripped_ext=".exe" -+ fi -+ ;; -+ esac -+ -+ # Do a test to see if this is really a libtool program. -+ case $host in -+ *cygwin*|*mingw*) -+ wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` -+ ;; -+ *) -+ wrapper=$file -+ ;; -+ esac -+ if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then -+ notinst_deplibs= -+ relink_command= -+ -+ # Note that it is not necessary on cygwin/mingw to append a dot to -+ # foo even if both foo and FILE.exe exist: automatic-append-.exe -+ # behavior happens only for exec(3), not for open(2)! Also, sourcing -+ # `FILE.' does not work on cygwin managed mounts. -+ # -+ # If there is no directory component, then add one. -+ case $wrapper in -+ */* | *\\*) . ${wrapper} ;; -+ *) . ./${wrapper} ;; -+ esac -+ -+ # Check the variables that should have been set. -+ if test -z "$notinst_deplibs"; then -+ $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ -+ finalize=yes -+ for lib in $notinst_deplibs; do -+ # Check to see that each library is installed. -+ libdir= -+ if test -f "$lib"; then -+ # If there is no directory component, then add one. -+ case $lib in -+ */* | *\\*) . $lib ;; -+ *) . ./$lib ;; -+ esac -+ fi -+ libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test -+ if test -n "$libdir" && test ! -f "$libfile"; then -+ $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 -+ finalize=no -+ fi -+ done -+ -+ relink_command= -+ # Note that it is not necessary on cygwin/mingw to append a dot to -+ # foo even if both foo and FILE.exe exist: automatic-append-.exe -+ # behavior happens only for exec(3), not for open(2)! Also, sourcing -+ # `FILE.' does not work on cygwin managed mounts. -+ # -+ # If there is no directory component, then add one. -+ case $wrapper in -+ */* | *\\*) . ${wrapper} ;; -+ *) . ./${wrapper} ;; -+ esac -+ -+ outputname= -+ if test "$fast_install" = no && test -n "$relink_command"; then -+ if test "$finalize" = yes && test -z "$run"; then -+ tmpdir=`func_mktempdir` -+ file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` -+ outputname="$tmpdir/$file" -+ # Replace the output file specification. -+ relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP` -+ -+ $show "$relink_command" -+ if $run eval "$relink_command"; then : -+ else -+ $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 -+ ${rm}r "$tmpdir" -+ continue -+ fi -+ file="$outputname" -+ else -+ $echo "$modename: warning: cannot relink \`$file'" 1>&2 -+ fi -+ else -+ # Install the binary that we compiled earlier. -+ file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` -+ fi -+ fi -+ -+ # remove .exe since cygwin /usr/bin/install will append another -+ # one anyway -+ case $install_prog,$host in -+ */usr/bin/install*,*cygwin*) -+ case $file:$destfile in -+ *.exe:*.exe) -+ # this is ok -+ ;; -+ *.exe:*) -+ destfile=$destfile.exe -+ ;; -+ *:*.exe) -+ destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` -+ ;; -+ esac -+ ;; -+ esac -+ $show "$install_prog$stripme $file $destfile" -+ $run eval "$install_prog\$stripme \$file \$destfile" || exit $? -+ test -n "$outputname" && ${rm}r "$tmpdir" -+ ;; -+ esac -+ done -+ -+ for file in $staticlibs; do -+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` -+ -+ # Set up the ranlib parameters. -+ oldlib="$destdir/$name" -+ -+ $show "$install_prog $file $oldlib" -+ $run eval "$install_prog \$file \$oldlib" || exit $? -+ -+ if test -n "$stripme" && test -n "$old_striplib"; then -+ $show "$old_striplib $oldlib" -+ $run eval "$old_striplib $oldlib" || exit $? -+ fi -+ -+ # Do each command in the postinstall commands. -+ cmds=$old_postinstall_cmds -+ save_ifs="$IFS"; IFS='~' -+ for cmd in $cmds; do -+ IFS="$save_ifs" -+ eval cmd=\"$cmd\" -+ $show "$cmd" -+ $run eval "$cmd" || exit $? -+ done -+ IFS="$save_ifs" -+ done -+ -+ if test -n "$future_libdirs"; then -+ $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 -+ fi -+ -+ if test -n "$current_libdirs"; then -+ # Maybe just do a dry run. -+ test -n "$run" && current_libdirs=" -n$current_libdirs" -+ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' -+ else -+ exit $EXIT_SUCCESS -+ fi -+ ;; -+ -+ # libtool finish mode -+ finish) -+ modename="$modename: finish" -+ libdirs="$nonopt" -+ admincmds= -+ -+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then -+ for dir -+ do -+ libdirs="$libdirs $dir" -+ done -+ -+ for libdir in $libdirs; do -+ if test -n "$finish_cmds"; then -+ # Do each command in the finish commands. -+ cmds=$finish_cmds -+ save_ifs="$IFS"; IFS='~' -+ for cmd in $cmds; do -+ IFS="$save_ifs" -+ eval cmd=\"$cmd\" -+ $show "$cmd" -+ $run eval "$cmd" || admincmds="$admincmds -+ $cmd" -+ done -+ IFS="$save_ifs" -+ fi -+ if test -n "$finish_eval"; then -+ # Do the single finish_eval. -+ eval cmds=\"$finish_eval\" -+ $run eval "$cmds" || admincmds="$admincmds -+ $cmds" -+ fi -+ done -+ fi -+ -+ # Exit here if they wanted silent mode. -+ test "$show" = : && exit $EXIT_SUCCESS -+ -+ $echo "X----------------------------------------------------------------------" | $Xsed -+ $echo "Libraries have been installed in:" -+ for libdir in $libdirs; do -+ $echo " $libdir" -+ done -+ $echo -+ $echo "If you ever happen to want to link against installed libraries" -+ $echo "in a given directory, LIBDIR, you must either use libtool, and" -+ $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" -+ $echo "flag during linking and do at least one of the following:" -+ if test -n "$shlibpath_var"; then -+ $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" -+ $echo " during execution" -+ fi -+ if test -n "$runpath_var"; then -+ $echo " - add LIBDIR to the \`$runpath_var' environment variable" -+ $echo " during linking" -+ fi -+ if test -n "$hardcode_libdir_flag_spec"; then -+ libdir=LIBDIR -+ eval flag=\"$hardcode_libdir_flag_spec\" -+ -+ $echo " - use the \`$flag' linker flag" -+ fi -+ if test -n "$admincmds"; then -+ $echo " - have your system administrator run these commands:$admincmds" -+ fi -+ if test -f /etc/ld.so.conf; then -+ $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" -+ fi -+ $echo -+ $echo "See any operating system documentation about shared libraries for" -+ $echo "more information, such as the ld(1) and ld.so(8) manual pages." -+ $echo "X----------------------------------------------------------------------" | $Xsed -+ exit $EXIT_SUCCESS -+ ;; -+ -+ # libtool execute mode -+ execute) -+ modename="$modename: execute" -+ -+ # The first argument is the command name. -+ cmd="$nonopt" -+ if test -z "$cmd"; then -+ $echo "$modename: you must specify a COMMAND" 1>&2 -+ $echo "$help" -+ exit $EXIT_FAILURE -+ fi -+ -+ # Handle -dlopen flags immediately. -+ for file in $execute_dlfiles; do -+ if test ! -f "$file"; then -+ $echo "$modename: \`$file' is not a file" 1>&2 -+ $echo "$help" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ -+ dir= -+ case $file in -+ *.la) -+ # Check to see that this really is a libtool archive. -+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : -+ else -+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 -+ $echo "$help" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ -+ # Read the libtool library. -+ dlname= -+ library_names= -+ -+ # If there is no directory component, then add one. -+ case $file in -+ */* | *\\*) . $file ;; -+ *) . ./$file ;; -+ esac -+ -+ # Skip this library if it cannot be dlopened. -+ if test -z "$dlname"; then -+ # Warn if it was a shared library. -+ test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" -+ continue -+ fi -+ -+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` -+ test "X$dir" = "X$file" && dir=. -+ -+ if test -f "$dir/$objdir/$dlname"; then -+ dir="$dir/$objdir" -+ else -+ $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ ;; -+ -+ *.lo) -+ # Just add the directory containing the .lo file. -+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` -+ test "X$dir" = "X$file" && dir=. -+ ;; -+ -+ *) -+ $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 -+ continue -+ ;; -+ esac -+ -+ # Get the absolute pathname. -+ absdir=`cd "$dir" && pwd` -+ test -n "$absdir" && dir="$absdir" -+ -+ # Now add the directory to shlibpath_var. -+ if eval "test -z \"\$$shlibpath_var\""; then -+ eval "$shlibpath_var=\"\$dir\"" -+ else -+ eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" -+ fi -+ done -+ -+ # This variable tells wrapper scripts just to set shlibpath_var -+ # rather than running their programs. -+ libtool_execute_magic="$magic" -+ -+ # Check if any of the arguments is a wrapper script. -+ args= -+ for file -+ do -+ case $file in -+ -*) ;; -+ *) -+ # Do a test to see if this is really a libtool program. -+ if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then -+ # If there is no directory component, then add one. -+ case $file in -+ */* | *\\*) . $file ;; -+ *) . ./$file ;; -+ esac -+ -+ # Transform arg to wrapped name. -+ file="$progdir/$program" -+ fi -+ ;; -+ esac -+ # Quote arguments (to preserve shell metacharacters). -+ file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` -+ args="$args \"$file\"" -+ done -+ -+ if test -z "$run"; then -+ if test -n "$shlibpath_var"; then -+ # Export the shlibpath_var. -+ eval "export $shlibpath_var" -+ fi -+ -+ # Restore saved environment variables -+ for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES -+ do -+ eval "if test \"\${save_$lt_var+set}\" = set; then -+ $lt_var=\$save_$lt_var; export $lt_var -+ else -+ $lt_unset $lt_var -+ fi" -+ done -+ -+ -+ # Now prepare to actually exec the command. -+ exec_cmd="\$cmd$args" -+ else -+ # Display what would be done. -+ if test -n "$shlibpath_var"; then -+ eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" -+ $echo "export $shlibpath_var" -+ fi -+ $echo "$cmd$args" -+ exit $EXIT_SUCCESS -+ fi -+ ;; -+ -+ # libtool clean and uninstall mode -+ clean | uninstall) -+ modename="$modename: $mode" -+ rm="$nonopt" -+ files= -+ rmforce= -+ exit_status=0 -+ -+ # This variable tells wrapper scripts just to set variables rather -+ # than running their programs. -+ libtool_install_magic="$magic" -+ -+ for arg -+ do -+ case $arg in -+ -f) rm="$rm $arg"; rmforce=yes ;; -+ -*) rm="$rm $arg" ;; -+ *) files="$files $arg" ;; -+ esac -+ done -+ -+ if test -z "$rm"; then -+ $echo "$modename: you must specify an RM program" 1>&2 -+ $echo "$help" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ -+ rmdirs= -+ -+ origobjdir="$objdir" -+ for file in $files; do -+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` -+ if test "X$dir" = "X$file"; then -+ dir=. -+ objdir="$origobjdir" -+ else -+ objdir="$dir/$origobjdir" -+ fi -+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` -+ test "$mode" = uninstall && objdir="$dir" -+ -+ # Remember objdir for removal later, being careful to avoid duplicates -+ if test "$mode" = clean; then -+ case " $rmdirs " in -+ *" $objdir "*) ;; -+ *) rmdirs="$rmdirs $objdir" ;; -+ esac -+ fi -+ -+ # Don't error if the file doesn't exist and rm -f was used. -+ if (test -L "$file") >/dev/null 2>&1 \ -+ || (test -h "$file") >/dev/null 2>&1 \ -+ || test -f "$file"; then -+ : -+ elif test -d "$file"; then -+ exit_status=1 -+ continue -+ elif test "$rmforce" = yes; then -+ continue -+ fi -+ -+ rmfiles="$file" -+ -+ case $name in -+ *.la) -+ # Possibly a libtool archive, so verify it. -+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then -+ . $dir/$name -+ -+ # Delete the libtool libraries and symlinks. -+ for n in $library_names; do -+ rmfiles="$rmfiles $objdir/$n" -+ done -+ test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" -+ -+ case "$mode" in -+ clean) -+ case " $library_names " in -+ # " " in the beginning catches empty $dlname -+ *" $dlname "*) ;; -+ *) rmfiles="$rmfiles $objdir/$dlname" ;; -+ esac -+ test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" -+ ;; -+ uninstall) -+ if test -n "$library_names"; then -+ # Do each command in the postuninstall commands. -+ cmds=$postuninstall_cmds -+ save_ifs="$IFS"; IFS='~' -+ for cmd in $cmds; do -+ IFS="$save_ifs" -+ eval cmd=\"$cmd\" -+ $show "$cmd" -+ $run eval "$cmd" -+ if test "$?" -ne 0 && test "$rmforce" != yes; then -+ exit_status=1 -+ fi -+ done -+ IFS="$save_ifs" -+ fi -+ -+ if test -n "$old_library"; then -+ # Do each command in the old_postuninstall commands. -+ cmds=$old_postuninstall_cmds -+ save_ifs="$IFS"; IFS='~' -+ for cmd in $cmds; do -+ IFS="$save_ifs" -+ eval cmd=\"$cmd\" -+ $show "$cmd" -+ $run eval "$cmd" -+ if test "$?" -ne 0 && test "$rmforce" != yes; then -+ exit_status=1 -+ fi -+ done -+ IFS="$save_ifs" -+ fi -+ # FIXME: should reinstall the best remaining shared library. -+ ;; -+ esac -+ fi -+ ;; -+ -+ *.lo) -+ # Possibly a libtool object, so verify it. -+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then -+ -+ # Read the .lo file -+ . $dir/$name -+ -+ # Add PIC object to the list of files to remove. -+ if test -n "$pic_object" \ -+ && test "$pic_object" != none; then -+ rmfiles="$rmfiles $dir/$pic_object" -+ fi -+ -+ # Add non-PIC object to the list of files to remove. -+ if test -n "$non_pic_object" \ -+ && test "$non_pic_object" != none; then -+ rmfiles="$rmfiles $dir/$non_pic_object" -+ fi -+ fi -+ ;; -+ -+ *) -+ if test "$mode" = clean ; then -+ noexename=$name -+ case $file in -+ *.exe) -+ file=`$echo $file|${SED} 's,.exe$,,'` -+ noexename=`$echo $name|${SED} 's,.exe$,,'` -+ # $file with .exe has already been added to rmfiles, -+ # add $file without .exe -+ rmfiles="$rmfiles $file" -+ ;; -+ esac -+ # Do a test to see if this is a libtool program. -+ if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then -+ relink_command= -+ . $dir/$noexename -+ -+ # note $name still contains .exe if it was in $file originally -+ # as does the version of $file that was added into $rmfiles -+ rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" -+ if test "$fast_install" = yes && test -n "$relink_command"; then -+ rmfiles="$rmfiles $objdir/lt-$name" -+ fi -+ if test "X$noexename" != "X$name" ; then -+ rmfiles="$rmfiles $objdir/lt-${noexename}.c" -+ fi -+ fi -+ fi -+ ;; -+ esac -+ $show "$rm $rmfiles" -+ $run $rm $rmfiles || exit_status=1 -+ done -+ objdir="$origobjdir" -+ -+ # Try to remove the ${objdir}s in the directories where we deleted files -+ for dir in $rmdirs; do -+ if test -d "$dir"; then -+ $show "rmdir $dir" -+ $run rmdir $dir >/dev/null 2>&1 -+ fi -+ done -+ -+ exit $exit_status -+ ;; -+ -+ "") -+ $echo "$modename: you must specify a MODE" 1>&2 -+ $echo "$generic_help" 1>&2 -+ exit $EXIT_FAILURE -+ ;; -+ esac -+ -+ if test -z "$exec_cmd"; then -+ $echo "$modename: invalid operation mode \`$mode'" 1>&2 -+ $echo "$generic_help" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+fi # test -z "$show_help" -+ -+if test -n "$exec_cmd"; then -+ eval exec $exec_cmd -+ exit $EXIT_FAILURE -+fi -+ -+# We need to display help for each of the modes. -+case $mode in -+"") $echo \ -+"Usage: $modename [OPTION]... [MODE-ARG]... -+ -+Provide generalized library-building support services. -+ -+ --config show all configuration variables -+ --debug enable verbose shell tracing -+-n, --dry-run display commands without modifying any files -+ --features display basic configuration information and exit -+ --finish same as \`--mode=finish' -+ --help display this help message and exit -+ --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] -+ --quiet same as \`--silent' -+ --silent don't print informational messages -+ --tag=TAG use configuration variables from tag TAG -+ --version print version information -+ -+MODE must be one of the following: -+ -+ clean remove files from the build directory -+ compile compile a source file into a libtool object -+ execute automatically set library path, then run a program -+ finish complete the installation of libtool libraries -+ install install libraries or executables -+ link create a library or an executable -+ uninstall remove libraries from an installed directory -+ -+MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for -+a more detailed description of MODE. -+ -+Report bugs to ." -+ exit $EXIT_SUCCESS -+ ;; -+ -+clean) -+ $echo \ -+"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... -+ -+Remove files from the build directory. -+ -+RM is the name of the program to use to delete files associated with each FILE -+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -+to RM. -+ -+If FILE is a libtool library, object or program, all the files associated -+with it are deleted. Otherwise, only FILE itself is deleted using RM." -+ ;; -+ -+compile) -+ $echo \ -+"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE -+ -+Compile a source file into a libtool library object. -+ -+This mode accepts the following additional options: -+ -+ -o OUTPUT-FILE set the output file name to OUTPUT-FILE -+ -prefer-pic try to building PIC objects only -+ -prefer-non-pic try to building non-PIC objects only -+ -static always build a \`.o' file suitable for static linking -+ -+COMPILE-COMMAND is a command to be used in creating a \`standard' object file -+from the given SOURCEFILE. -+ -+The output file name is determined by removing the directory component from -+SOURCEFILE, then substituting the C source code suffix \`.c' with the -+library object suffix, \`.lo'." -+ ;; -+ -+execute) -+ $echo \ -+"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... -+ -+Automatically set library path, then run a program. -+ -+This mode accepts the following additional options: -+ -+ -dlopen FILE add the directory containing FILE to the library path -+ -+This mode sets the library path environment variable according to \`-dlopen' -+flags. -+ -+If any of the ARGS are libtool executable wrappers, then they are translated -+into their corresponding uninstalled binary, and any of their required library -+directories are added to the library path. -+ -+Then, COMMAND is executed, with ARGS as arguments." -+ ;; -+ -+finish) -+ $echo \ -+"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... -+ -+Complete the installation of libtool libraries. -+ -+Each LIBDIR is a directory that contains libtool libraries. -+ -+The commands that this mode executes may require superuser privileges. Use -+the \`--dry-run' option if you just want to see what would be executed." -+ ;; -+ -+install) -+ $echo \ -+"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... -+ -+Install executables or libraries. -+ -+INSTALL-COMMAND is the installation command. The first component should be -+either the \`install' or \`cp' program. -+ -+The rest of the components are interpreted as arguments to that command (only -+BSD-compatible install options are recognized)." -+ ;; -+ -+link) -+ $echo \ -+"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... -+ -+Link object files or libraries together to form another library, or to -+create an executable program. -+ -+LINK-COMMAND is a command using the C compiler that you would use to create -+a program from several object files. -+ -+The following components of LINK-COMMAND are treated specially: -+ -+ -all-static do not do any dynamic linking at all -+ -avoid-version do not add a version suffix if possible -+ -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -+ -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -+ -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -+ -export-symbols SYMFILE -+ try to export only the symbols listed in SYMFILE -+ -export-symbols-regex REGEX -+ try to export only the symbols matching REGEX -+ -LLIBDIR search LIBDIR for required installed libraries -+ -lNAME OUTPUT-FILE requires the installed library libNAME -+ -module build a library that can dlopened -+ -no-fast-install disable the fast-install mode -+ -no-install link a not-installable executable -+ -no-undefined declare that a library does not refer to external symbols -+ -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -+ -objectlist FILE Use a list of object files found in FILE to specify objects -+ -precious-files-regex REGEX -+ don't remove output files matching REGEX -+ -release RELEASE specify package release information -+ -rpath LIBDIR the created library will eventually be installed in LIBDIR -+ -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -+ -static do not do any dynamic linking of uninstalled libtool libraries -+ -static-libtool-libs -+ do not do any dynamic linking of libtool libraries -+ -version-info CURRENT[:REVISION[:AGE]] -+ specify library version info [each variable defaults to 0] -+ -+All other options (arguments beginning with \`-') are ignored. -+ -+Every other argument is treated as a filename. Files ending in \`.la' are -+treated as uninstalled libtool libraries, other files are standard or library -+object files. -+ -+If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -+only library objects (\`.lo' files) may be specified, and \`-rpath' is -+required, except when creating a convenience library. -+ -+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -+using \`ar' and \`ranlib', or on Windows using \`lib'. -+ -+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file -+is created, otherwise an executable program is created." -+ ;; -+ -+uninstall) -+ $echo \ -+"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... -+ -+Remove libraries from an installation directory. -+ -+RM is the name of the program to use to delete files associated with each FILE -+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -+to RM. -+ -+If FILE is a libtool library, all the files associated with it are deleted. -+Otherwise, only FILE itself is deleted using RM." -+ ;; -+ -+*) -+ $echo "$modename: invalid operation mode \`$mode'" 1>&2 -+ $echo "$help" 1>&2 -+ exit $EXIT_FAILURE -+ ;; -+esac -+ -+$echo -+$echo "Try \`$modename --help' for more information about other modes." -+ -+exit $? -+ -+# The TAGs below are defined such that we never get into a situation -+# in which we disable both kinds of libraries. Given conflicting -+# choices, we go for a static library, that is the most portable, -+# since we can't tell whether shared libraries were disabled because -+# the user asked for that or because the platform doesn't support -+# them. This is particularly important on AIX, because we don't -+# support having both static and shared libraries enabled at the same -+# time on that platform, so we default to a shared-only configuration. -+# If a disable-shared tag is given, we'll fallback to a static-only -+# configuration. But we'll never go from static-only to shared-only. -+ -+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared -+disable_libs=shared -+# ### END LIBTOOL TAG CONFIG: disable-shared -+ -+# ### BEGIN LIBTOOL TAG CONFIG: disable-static -+disable_libs=static -+# ### END LIBTOOL TAG CONFIG: disable-static -+ -+# Local Variables: -+# mode:shell-script -+# sh-indentation:2 -+# End: -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/Makefile.am open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/Makefile.am ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/Makefile.am 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/Makefile.am 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,25 @@ -+SUBDIRS= src -+ -+EXTRA_DIST = build_date -+ -+build_date: -+ echo 'char *build_date ="'`date`'";' > build_date.c -+ echo 'char *build_date; '> build_date.h -+ -+manprefix = /usr/share -+mandir = ${manprefix}/man -+logdir = /etc/logrotate.d -+ -+install-am: all-am -+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install-man install-log install-brcm -+ -+install-man: -+ cat docs/iscsiuio.8 | GZIP=$(GZIP_ENV) gzip -c > iscsiuio.8.gz -+ $(INSTALL_PROGRAM) iscsiuio.8.gz $(mandir)/man8 -+ -+install-log: -+ $(INSTALL_PROGRAM) iscsiuiolog $(logdir) -+ -+install-brcm: -+ -rm -f $(sbindir)/brcm_iscsiuio -+ -ln -s $(sbindir)/iscsiuio $(sbindir)/brcm_iscsiuio -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/Makefile.in open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/Makefile.in ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/Makefile.in 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/Makefile.in 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,629 @@ -+# Makefile.in generated by automake 1.9.6 from Makefile.am. -+# @configure_input@ -+ -+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -+# 2003, 2004, 2005 Free Software Foundation, Inc. -+# This Makefile.in 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. -+ -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -+# PARTICULAR PURPOSE. -+ -+@SET_MAKE@ -+srcdir = @srcdir@ -+top_srcdir = @top_srcdir@ -+VPATH = @srcdir@ -+pkgdatadir = $(datadir)/@PACKAGE@ -+pkglibdir = $(libdir)/@PACKAGE@ -+pkgincludedir = $(includedir)/@PACKAGE@ -+top_builddir = . -+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -+INSTALL = @INSTALL@ -+install_sh_DATA = $(install_sh) -c -m 644 -+install_sh_PROGRAM = $(install_sh) -c -+install_sh_SCRIPT = $(install_sh) -c -+INSTALL_HEADER = $(INSTALL_DATA) -+transform = $(program_transform_name) -+NORMAL_INSTALL = : -+PRE_INSTALL = : -+POST_INSTALL = : -+NORMAL_UNINSTALL = : -+PRE_UNINSTALL = : -+POST_UNINSTALL = : -+build_triplet = @build@ -+host_triplet = @host@ -+DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ -+ $(srcdir)/Makefile.in $(srcdir)/config.h.in \ -+ $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \ -+ TODO compile config.guess config.sub depcomp install-sh \ -+ ltmain.sh missing -+subdir = . -+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -+am__aclocal_m4_deps = $(top_srcdir)/configure.ac -+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ -+ $(ACLOCAL_M4) -+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ -+ configure.lineno configure.status.lineno -+mkinstalldirs = $(install_sh) -d -+CONFIG_HEADER = config.h -+CONFIG_CLEAN_FILES = -+SOURCES = -+DIST_SOURCES = -+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ -+ html-recursive info-recursive install-data-recursive \ -+ install-exec-recursive install-info-recursive \ -+ install-recursive installcheck-recursive installdirs-recursive \ -+ pdf-recursive ps-recursive uninstall-info-recursive \ -+ uninstall-recursive -+ETAGS = etags -+CTAGS = ctags -+DIST_SUBDIRS = $(SUBDIRS) -+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -+distdir = $(PACKAGE)-$(VERSION) -+top_distdir = $(distdir) -+am__remove_distdir = \ -+ { test ! -d $(distdir) \ -+ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ -+ && rm -fr $(distdir); }; } -+DIST_ARCHIVES = $(distdir).tar.gz -+GZIP_ENV = --best -+distuninstallcheck_listfiles = find . -type f -print -+distcleancheck_listfiles = find . -type f -print -+ACLOCAL = @ACLOCAL@ -+AMDEP_FALSE = @AMDEP_FALSE@ -+AMDEP_TRUE = @AMDEP_TRUE@ -+AMTAR = @AMTAR@ -+AR = @AR@ -+AUTOCONF = @AUTOCONF@ -+AUTOHEADER = @AUTOHEADER@ -+AUTOMAKE = @AUTOMAKE@ -+AWK = @AWK@ -+BASH = @BASH@ -+CC = @CC@ -+CCDEPMODE = @CCDEPMODE@ -+CFLAGS = @CFLAGS@ -+CPP = @CPP@ -+CPPFLAGS = @CPPFLAGS@ -+CXX = @CXX@ -+CXXCPP = @CXXCPP@ -+CXXDEPMODE = @CXXDEPMODE@ -+CXXFLAGS = @CXXFLAGS@ -+CYGPATH_W = @CYGPATH_W@ -+DEBUG_FALSE = @DEBUG_FALSE@ -+DEBUG_TRUE = @DEBUG_TRUE@ -+DEFS = @DEFS@ -+DEPDIR = @DEPDIR@ -+ECHO = @ECHO@ -+ECHO_C = @ECHO_C@ -+ECHO_N = @ECHO_N@ -+ECHO_T = @ECHO_T@ -+EGREP = @EGREP@ -+ENDIAN = @ENDIAN@ -+EXEEXT = @EXEEXT@ -+F77 = @F77@ -+FFLAGS = @FFLAGS@ -+INSTALL_DATA = @INSTALL_DATA@ -+INSTALL_PROGRAM = @INSTALL_PROGRAM@ -+INSTALL_SCRIPT = @INSTALL_SCRIPT@ -+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -+LDFLAGS = @LDFLAGS@ -+LIBOBJS = @LIBOBJS@ -+LIBS = @LIBS@ -+LIBTOOL = @LIBTOOL@ -+LN_S = @LN_S@ -+LTLIBOBJS = @LTLIBOBJS@ -+MAKEINFO = @MAKEINFO@ -+OBJEXT = @OBJEXT@ -+PACKAGE = @PACKAGE@ -+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -+PACKAGE_NAME = @PACKAGE_NAME@ -+PACKAGE_STRING = @PACKAGE_STRING@ -+PACKAGE_TARNAME = @PACKAGE_TARNAME@ -+PACKAGE_VERSION = @PACKAGE_VERSION@ -+PATH_SEPARATOR = @PATH_SEPARATOR@ -+RANLIB = @RANLIB@ -+SED = @SED@ -+SET_MAKE = @SET_MAKE@ -+SHELL = @SHELL@ -+STRIP = @STRIP@ -+VERSION = @VERSION@ -+ac_ct_AR = @ac_ct_AR@ -+ac_ct_CC = @ac_ct_CC@ -+ac_ct_CXX = @ac_ct_CXX@ -+ac_ct_F77 = @ac_ct_F77@ -+ac_ct_RANLIB = @ac_ct_RANLIB@ -+ac_ct_STRIP = @ac_ct_STRIP@ -+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ -+am__include = @am__include@ -+am__leading_dot = @am__leading_dot@ -+am__quote = @am__quote@ -+am__tar = @am__tar@ -+am__untar = @am__untar@ -+bindir = @bindir@ -+build = @build@ -+build_alias = @build_alias@ -+build_cpu = @build_cpu@ -+build_os = @build_os@ -+build_vendor = @build_vendor@ -+datadir = @datadir@ -+exec_prefix = @exec_prefix@ -+host = @host@ -+host_alias = @host_alias@ -+host_cpu = @host_cpu@ -+host_os = @host_os@ -+host_vendor = @host_vendor@ -+includedir = @includedir@ -+infodir = @infodir@ -+install_sh = @install_sh@ -+libdir = @libdir@ -+libexecdir = @libexecdir@ -+localstatedir = @localstatedir@ -+mandir = ${manprefix}/man -+mkdir_p = @mkdir_p@ -+oldincludedir = @oldincludedir@ -+prefix = @prefix@ -+program_transform_name = @program_transform_name@ -+sbindir = @sbindir@ -+sharedstatedir = @sharedstatedir@ -+sysconfdir = @sysconfdir@ -+target_alias = @target_alias@ -+SUBDIRS = src -+EXTRA_DIST = build_date -+manprefix = /usr/share -+logdir = /etc/logrotate.d -+all: config.h -+ $(MAKE) $(AM_MAKEFLAGS) all-recursive -+ -+.SUFFIXES: -+am--refresh: -+ @: -+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) -+ @for dep in $?; do \ -+ case '$(am__configure_deps)' in \ -+ *$$dep*) \ -+ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ -+ cd $(srcdir) && $(AUTOMAKE) --gnu \ -+ && exit 0; \ -+ exit 1;; \ -+ esac; \ -+ done; \ -+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ -+ cd $(top_srcdir) && \ -+ $(AUTOMAKE) --gnu Makefile -+.PRECIOUS: Makefile -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ @case '$?' in \ -+ *config.status*) \ -+ echo ' $(SHELL) ./config.status'; \ -+ $(SHELL) ./config.status;; \ -+ *) \ -+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ -+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ -+ esac; -+ -+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) -+ $(SHELL) ./config.status --recheck -+ -+$(top_srcdir)/configure: $(am__configure_deps) -+ cd $(srcdir) && $(AUTOCONF) -+$(ACLOCAL_M4): $(am__aclocal_m4_deps) -+ cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -+ -+config.h: stamp-h1 -+ @if test ! -f $@; then \ -+ rm -f stamp-h1; \ -+ $(MAKE) stamp-h1; \ -+ else :; fi -+ -+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status -+ @rm -f stamp-h1 -+ cd $(top_builddir) && $(SHELL) ./config.status config.h -+$(srcdir)/config.h.in: $(am__configure_deps) -+ cd $(top_srcdir) && $(AUTOHEADER) -+ rm -f stamp-h1 -+ touch $@ -+ -+distclean-hdr: -+ -rm -f config.h stamp-h1 -+ -+mostlyclean-libtool: -+ -rm -f *.lo -+ -+clean-libtool: -+ -rm -rf .libs _libs -+ -+distclean-libtool: -+ -rm -f libtool -+uninstall-info-am: -+ -+# This directory's subdirectories are mostly independent; you can cd -+# into them and run `make' without going through this Makefile. -+# To change the values of `make' variables: instead of editing Makefiles, -+# (1) if the variable is set in `config.status', edit `config.status' -+# (which will cause the Makefiles to be regenerated when you run `make'); -+# (2) otherwise, pass the desired values on the `make' command line. -+$(RECURSIVE_TARGETS): -+ @failcom='exit 1'; \ -+ for f in x $$MAKEFLAGS; do \ -+ case $$f in \ -+ *=* | --[!k]*);; \ -+ *k*) failcom='fail=yes';; \ -+ esac; \ -+ done; \ -+ dot_seen=no; \ -+ target=`echo $@ | sed s/-recursive//`; \ -+ list='$(SUBDIRS)'; for subdir in $$list; do \ -+ echo "Making $$target in $$subdir"; \ -+ if test "$$subdir" = "."; then \ -+ dot_seen=yes; \ -+ local_target="$$target-am"; \ -+ else \ -+ local_target="$$target"; \ -+ fi; \ -+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ -+ || eval $$failcom; \ -+ done; \ -+ if test "$$dot_seen" = "no"; then \ -+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ -+ fi; test -z "$$fail" -+ -+mostlyclean-recursive clean-recursive distclean-recursive \ -+maintainer-clean-recursive: -+ @failcom='exit 1'; \ -+ for f in x $$MAKEFLAGS; do \ -+ case $$f in \ -+ *=* | --[!k]*);; \ -+ *k*) failcom='fail=yes';; \ -+ esac; \ -+ done; \ -+ dot_seen=no; \ -+ case "$@" in \ -+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ -+ *) list='$(SUBDIRS)' ;; \ -+ esac; \ -+ rev=''; for subdir in $$list; do \ -+ if test "$$subdir" = "."; then :; else \ -+ rev="$$subdir $$rev"; \ -+ fi; \ -+ done; \ -+ rev="$$rev ."; \ -+ target=`echo $@ | sed s/-recursive//`; \ -+ for subdir in $$rev; do \ -+ echo "Making $$target in $$subdir"; \ -+ if test "$$subdir" = "."; then \ -+ local_target="$$target-am"; \ -+ else \ -+ local_target="$$target"; \ -+ fi; \ -+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ -+ || eval $$failcom; \ -+ done && test -z "$$fail" -+tags-recursive: -+ list='$(SUBDIRS)'; for subdir in $$list; do \ -+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ -+ done -+ctags-recursive: -+ list='$(SUBDIRS)'; for subdir in $$list; do \ -+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ -+ done -+ -+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) ' { files[$$0] = 1; } \ -+ END { for (i in files) print i; }'`; \ -+ mkid -fID $$unique -+tags: TAGS -+ -+TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ here=`pwd`; \ -+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ -+ include_option=--etags-include; \ -+ empty_fix=.; \ -+ else \ -+ include_option=--include; \ -+ empty_fix=; \ -+ fi; \ -+ list='$(SUBDIRS)'; for subdir in $$list; do \ -+ if test "$$subdir" = .; then :; else \ -+ test ! -f $$subdir/TAGS || \ -+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ -+ fi; \ -+ done; \ -+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) ' { files[$$0] = 1; } \ -+ END { for (i in files) print i; }'`; \ -+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ -+ test -n "$$unique" || unique=$$empty_fix; \ -+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ -+ $$tags $$unique; \ -+ fi -+ctags: CTAGS -+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ here=`pwd`; \ -+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) ' { files[$$0] = 1; } \ -+ END { for (i in files) print i; }'`; \ -+ test -z "$(CTAGS_ARGS)$$tags$$unique" \ -+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ -+ $$tags $$unique -+ -+GTAGS: -+ here=`$(am__cd) $(top_builddir) && pwd` \ -+ && cd $(top_srcdir) \ -+ && gtags -i $(GTAGS_ARGS) $$here -+ -+distclean-tags: -+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -+ -+distdir: $(DISTFILES) -+ $(am__remove_distdir) -+ mkdir $(distdir) -+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ -+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ -+ list='$(DISTFILES)'; for file in $$list; do \ -+ case $$file in \ -+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ -+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ -+ esac; \ -+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ -+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ -+ dir="/$$dir"; \ -+ $(mkdir_p) "$(distdir)$$dir"; \ -+ else \ -+ dir=''; \ -+ fi; \ -+ if test -d $$d/$$file; then \ -+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ -+ fi; \ -+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ -+ else \ -+ test -f $(distdir)/$$file \ -+ || cp -p $$d/$$file $(distdir)/$$file \ -+ || exit 1; \ -+ fi; \ -+ done -+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ -+ if test "$$subdir" = .; then :; else \ -+ test -d "$(distdir)/$$subdir" \ -+ || $(mkdir_p) "$(distdir)/$$subdir" \ -+ || exit 1; \ -+ distdir=`$(am__cd) $(distdir) && pwd`; \ -+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ -+ (cd $$subdir && \ -+ $(MAKE) $(AM_MAKEFLAGS) \ -+ top_distdir="$$top_distdir" \ -+ distdir="$$distdir/$$subdir" \ -+ distdir) \ -+ || exit 1; \ -+ fi; \ -+ done -+ -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ -+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ -+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ -+ ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \ -+ || chmod -R a+r $(distdir) -+dist-gzip: distdir -+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz -+ $(am__remove_distdir) -+ -+dist-bzip2: distdir -+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 -+ $(am__remove_distdir) -+ -+dist-tarZ: distdir -+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z -+ $(am__remove_distdir) -+ -+dist-shar: distdir -+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz -+ $(am__remove_distdir) -+ -+dist-zip: distdir -+ -rm -f $(distdir).zip -+ zip -rq $(distdir).zip $(distdir) -+ $(am__remove_distdir) -+ -+dist dist-all: distdir -+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz -+ $(am__remove_distdir) -+ -+# This target untars the dist file and tries a VPATH configuration. Then -+# it guarantees that the distribution is self-contained by making another -+# tarfile. -+distcheck: dist -+ case '$(DIST_ARCHIVES)' in \ -+ *.tar.gz*) \ -+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ -+ *.tar.bz2*) \ -+ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ -+ *.tar.Z*) \ -+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ -+ *.shar.gz*) \ -+ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ -+ *.zip*) \ -+ unzip $(distdir).zip ;;\ -+ esac -+ chmod -R a-w $(distdir); chmod a+w $(distdir) -+ mkdir $(distdir)/_build -+ mkdir $(distdir)/_inst -+ chmod a-w $(distdir) -+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ -+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ -+ && cd $(distdir)/_build \ -+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ -+ $(DISTCHECK_CONFIGURE_FLAGS) \ -+ && $(MAKE) $(AM_MAKEFLAGS) \ -+ && $(MAKE) $(AM_MAKEFLAGS) dvi \ -+ && $(MAKE) $(AM_MAKEFLAGS) check \ -+ && $(MAKE) $(AM_MAKEFLAGS) install \ -+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ -+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ -+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ -+ distuninstallcheck \ -+ && chmod -R a-w "$$dc_install_base" \ -+ && ({ \ -+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ -+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ -+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ -+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ -+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ -+ } || { rm -rf "$$dc_destdir"; exit 1; }) \ -+ && rm -rf "$$dc_destdir" \ -+ && $(MAKE) $(AM_MAKEFLAGS) dist \ -+ && rm -rf $(DIST_ARCHIVES) \ -+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck -+ $(am__remove_distdir) -+ @(echo "$(distdir) archives ready for distribution: "; \ -+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ -+ sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}' -+distuninstallcheck: -+ @cd $(distuninstallcheck_dir) \ -+ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ -+ || { echo "ERROR: files left after uninstall:" ; \ -+ if test -n "$(DESTDIR)"; then \ -+ echo " (check DESTDIR support)"; \ -+ fi ; \ -+ $(distuninstallcheck_listfiles) ; \ -+ exit 1; } >&2 -+distcleancheck: distclean -+ @if test '$(srcdir)' = . ; then \ -+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ -+ exit 1 ; \ -+ fi -+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ -+ || { echo "ERROR: files left in build directory after distclean:" ; \ -+ $(distcleancheck_listfiles) ; \ -+ exit 1; } >&2 -+check-am: all-am -+check: check-recursive -+all-am: Makefile config.h -+installdirs: installdirs-recursive -+installdirs-am: -+install: install-recursive -+install-exec: install-exec-recursive -+install-data: install-data-recursive -+uninstall: uninstall-recursive -+ -+installcheck: installcheck-recursive -+install-strip: -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ `test -z '$(STRIP)' || \ -+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -+mostlyclean-generic: -+ -+clean-generic: -+ -+distclean-generic: -+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -+ -+maintainer-clean-generic: -+ @echo "This command is intended for maintainers to use" -+ @echo "it deletes files that may require special tools to rebuild." -+clean: clean-recursive -+ -+clean-am: clean-generic clean-libtool mostlyclean-am -+ -+distclean: distclean-recursive -+ -rm -f $(am__CONFIG_DISTCLEAN_FILES) -+ -rm -f Makefile -+distclean-am: clean-am distclean-generic distclean-hdr \ -+ distclean-libtool distclean-tags -+ -+dvi: dvi-recursive -+ -+dvi-am: -+ -+html: html-recursive -+ -+info: info-recursive -+ -+info-am: -+ -+install-data-am: -+ -+install-exec-am: -+ -+install-info: install-info-recursive -+ -+installcheck-am: -+ -+maintainer-clean: maintainer-clean-recursive -+ -rm -f $(am__CONFIG_DISTCLEAN_FILES) -+ -rm -rf $(top_srcdir)/autom4te.cache -+ -rm -f Makefile -+maintainer-clean-am: distclean-am maintainer-clean-generic -+ -+mostlyclean: mostlyclean-recursive -+ -+mostlyclean-am: mostlyclean-generic mostlyclean-libtool -+ -+pdf: pdf-recursive -+ -+pdf-am: -+ -+ps: ps-recursive -+ -+ps-am: -+ -+uninstall-am: uninstall-info-am -+ -+uninstall-info: uninstall-info-recursive -+ -+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \ -+ check-am clean clean-generic clean-libtool clean-recursive \ -+ ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ -+ dist-shar dist-tarZ dist-zip distcheck distclean \ -+ distclean-generic distclean-hdr distclean-libtool \ -+ distclean-recursive distclean-tags distcleancheck distdir \ -+ distuninstallcheck dvi dvi-am html html-am info info-am \ -+ install install-am install-data install-data-am install-exec \ -+ install-exec-am install-info install-info-am install-man \ -+ install-strip installcheck installcheck-am installdirs \ -+ installdirs-am maintainer-clean maintainer-clean-generic \ -+ maintainer-clean-recursive mostlyclean mostlyclean-generic \ -+ mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \ -+ tags tags-recursive uninstall uninstall-am uninstall-info-am -+ -+ -+build_date: -+ echo 'char *build_date ="'`date`'";' > build_date.c -+ echo 'char *build_date; '> build_date.h -+ -+install-am: all-am -+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install-man install-log install-brcm -+ -+install-man: -+ cat docs/iscsiuio.8 | GZIP=$(GZIP_ENV) gzip -c > iscsiuio.8.gz -+ $(INSTALL_PROGRAM) iscsiuio.8.gz $(mandir)/man8 -+ -+install-log: -+ $(INSTALL_PROGRAM) iscsiuiolog $(logdir) -+ -+install-brcm: -+ -rm -f $(sbindir)/brcm_iscsiuio -+ -ln -s $(sbindir)/iscsiuio $(sbindir)/brcm_iscsiuio -+# Tell versions [3.59,3.63) of GNU make to not export all variables. -+# Otherwise a system limit (for SysV at least) may be exceeded. -+.NOEXPORT: -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/missing open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/missing ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/missing 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/missing 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,367 @@ -+#! /bin/sh -+# Common stub for a few missing GNU programs while installing. -+ -+scriptversion=2006-05-10.23 -+ -+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006 -+# Free Software Foundation, Inc. -+# Originally by Fran,cois Pinard , 1996. -+ -+# This program 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, or (at your option) -+# any later version. -+ -+# This program 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 this program; if not, write to the Free Software -+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA -+# 02110-1301, USA. -+ -+# As a special exception to the GNU General Public License, if you -+# distribute this file as part of a program that contains a -+# configuration script generated by Autoconf, you may include it under -+# the same distribution terms that you use for the rest of that program. -+ -+if test $# -eq 0; then -+ echo 1>&2 "Try \`$0 --help' for more information" -+ exit 1 -+fi -+ -+run=: -+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' -+sed_minuso='s/.* -o \([^ ]*\).*/\1/p' -+ -+# In the cases where this matters, `missing' is being run in the -+# srcdir already. -+if test -f configure.ac; then -+ configure_ac=configure.ac -+else -+ configure_ac=configure.in -+fi -+ -+msg="missing on your system" -+ -+case $1 in -+--run) -+ # Try to run requested program, and just exit if it succeeds. -+ run= -+ shift -+ "$@" && exit 0 -+ # Exit code 63 means version mismatch. This often happens -+ # when the user try to use an ancient version of a tool on -+ # a file that requires a minimum version. In this case we -+ # we should proceed has if the program had been absent, or -+ # if --run hadn't been passed. -+ if test $? = 63; then -+ run=: -+ msg="probably too old" -+ fi -+ ;; -+ -+ -h|--h|--he|--hel|--help) -+ echo "\ -+$0 [OPTION]... PROGRAM [ARGUMENT]... -+ -+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -+error status if there is no known handling for PROGRAM. -+ -+Options: -+ -h, --help display this help and exit -+ -v, --version output version information and exit -+ --run try to run the given command, and emulate it if it fails -+ -+Supported PROGRAM values: -+ aclocal touch file \`aclocal.m4' -+ autoconf touch file \`configure' -+ autoheader touch file \`config.h.in' -+ autom4te touch the output file, or create a stub one -+ automake touch all \`Makefile.in' files -+ bison create \`y.tab.[ch]', if possible, from existing .[ch] -+ flex create \`lex.yy.c', if possible, from existing .c -+ help2man touch the output file -+ lex create \`lex.yy.c', if possible, from existing .c -+ makeinfo touch the output file -+ tar try tar, gnutar, gtar, then tar without non-portable flags -+ yacc create \`y.tab.[ch]', if possible, from existing .[ch] -+ -+Send bug reports to ." -+ exit $? -+ ;; -+ -+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version) -+ echo "missing $scriptversion (GNU Automake)" -+ exit $? -+ ;; -+ -+ -*) -+ echo 1>&2 "$0: Unknown \`$1' option" -+ echo 1>&2 "Try \`$0 --help' for more information" -+ exit 1 -+ ;; -+ -+esac -+ -+# Now exit if we have it, but it failed. Also exit now if we -+# don't have it and --version was passed (most likely to detect -+# the program). -+case $1 in -+ lex|yacc) -+ # Not GNU programs, they don't have --version. -+ ;; -+ -+ tar) -+ if test -n "$run"; then -+ echo 1>&2 "ERROR: \`tar' requires --run" -+ exit 1 -+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then -+ exit 1 -+ fi -+ ;; -+ -+ *) -+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then -+ # We have it, but it failed. -+ exit 1 -+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then -+ # Could not run --version or --help. This is probably someone -+ # running `$TOOL --version' or `$TOOL --help' to check whether -+ # $TOOL exists and not knowing $TOOL uses missing. -+ exit 1 -+ fi -+ ;; -+esac -+ -+# If it does not exist, or fails to run (possibly an outdated version), -+# try to emulate it. -+case $1 in -+ aclocal*) -+ echo 1>&2 "\ -+WARNING: \`$1' is $msg. You should only need it if -+ you modified \`acinclude.m4' or \`${configure_ac}'. You might want -+ to install the \`Automake' and \`Perl' packages. Grab them from -+ any GNU archive site." -+ touch aclocal.m4 -+ ;; -+ -+ autoconf) -+ echo 1>&2 "\ -+WARNING: \`$1' is $msg. You should only need it if -+ you modified \`${configure_ac}'. You might want to install the -+ \`Autoconf' and \`GNU m4' packages. Grab them from any GNU -+ archive site." -+ touch configure -+ ;; -+ -+ autoheader) -+ echo 1>&2 "\ -+WARNING: \`$1' is $msg. You should only need it if -+ you modified \`acconfig.h' or \`${configure_ac}'. You might want -+ to install the \`Autoconf' and \`GNU m4' packages. Grab them -+ from any GNU archive site." -+ files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` -+ test -z "$files" && files="config.h" -+ touch_files= -+ for f in $files; do -+ case $f in -+ *:*) touch_files="$touch_files "`echo "$f" | -+ sed -e 's/^[^:]*://' -e 's/:.*//'`;; -+ *) touch_files="$touch_files $f.in";; -+ esac -+ done -+ touch $touch_files -+ ;; -+ -+ automake*) -+ echo 1>&2 "\ -+WARNING: \`$1' is $msg. You should only need it if -+ you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. -+ You might want to install the \`Automake' and \`Perl' packages. -+ Grab them from any GNU archive site." -+ find . -type f -name Makefile.am -print | -+ sed 's/\.am$/.in/' | -+ while read f; do touch "$f"; done -+ ;; -+ -+ autom4te) -+ echo 1>&2 "\ -+WARNING: \`$1' is needed, but is $msg. -+ You might have modified some files without having the -+ proper tools for further handling them. -+ You can get \`$1' as part of \`Autoconf' from any GNU -+ archive site." -+ -+ file=`echo "$*" | sed -n "$sed_output"` -+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` -+ if test -f "$file"; then -+ touch $file -+ else -+ test -z "$file" || exec >$file -+ echo "#! /bin/sh" -+ echo "# Created by GNU Automake missing as a replacement of" -+ echo "# $ $@" -+ echo "exit 0" -+ chmod +x $file -+ exit 1 -+ fi -+ ;; -+ -+ bison|yacc) -+ echo 1>&2 "\ -+WARNING: \`$1' $msg. You should only need it if -+ you modified a \`.y' file. You may need the \`Bison' package -+ in order for those modifications to take effect. You can get -+ \`Bison' from any GNU archive site." -+ rm -f y.tab.c y.tab.h -+ if test $# -ne 1; then -+ eval LASTARG="\${$#}" -+ case $LASTARG in -+ *.y) -+ SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` -+ if test -f "$SRCFILE"; then -+ cp "$SRCFILE" y.tab.c -+ fi -+ SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` -+ if test -f "$SRCFILE"; then -+ cp "$SRCFILE" y.tab.h -+ fi -+ ;; -+ esac -+ fi -+ if test ! -f y.tab.h; then -+ echo >y.tab.h -+ fi -+ if test ! -f y.tab.c; then -+ echo 'main() { return 0; }' >y.tab.c -+ fi -+ ;; -+ -+ lex|flex) -+ echo 1>&2 "\ -+WARNING: \`$1' is $msg. You should only need it if -+ you modified a \`.l' file. You may need the \`Flex' package -+ in order for those modifications to take effect. You can get -+ \`Flex' from any GNU archive site." -+ rm -f lex.yy.c -+ if test $# -ne 1; then -+ eval LASTARG="\${$#}" -+ case $LASTARG in -+ *.l) -+ SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` -+ if test -f "$SRCFILE"; then -+ cp "$SRCFILE" lex.yy.c -+ fi -+ ;; -+ esac -+ fi -+ if test ! -f lex.yy.c; then -+ echo 'main() { return 0; }' >lex.yy.c -+ fi -+ ;; -+ -+ help2man) -+ echo 1>&2 "\ -+WARNING: \`$1' is $msg. You should only need it if -+ you modified a dependency of a manual page. You may need the -+ \`Help2man' package in order for those modifications to take -+ effect. You can get \`Help2man' from any GNU archive site." -+ -+ file=`echo "$*" | sed -n "$sed_output"` -+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` -+ if test -f "$file"; then -+ touch $file -+ else -+ test -z "$file" || exec >$file -+ echo ".ab help2man is required to generate this page" -+ exit 1 -+ fi -+ ;; -+ -+ makeinfo) -+ echo 1>&2 "\ -+WARNING: \`$1' is $msg. You should only need it if -+ you modified a \`.texi' or \`.texinfo' file, or any other file -+ indirectly affecting the aspect of the manual. The spurious -+ call might also be the consequence of using a buggy \`make' (AIX, -+ DU, IRIX). You might want to install the \`Texinfo' package or -+ the \`GNU make' package. Grab either from any GNU archive site." -+ # The file to touch is that specified with -o ... -+ file=`echo "$*" | sed -n "$sed_output"` -+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` -+ if test -z "$file"; then -+ # ... or it is the one specified with @setfilename ... -+ infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` -+ file=`sed -n ' -+ /^@setfilename/{ -+ s/.* \([^ ]*\) *$/\1/ -+ p -+ q -+ }' $infile` -+ # ... or it is derived from the source name (dir/f.texi becomes f.info) -+ test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info -+ fi -+ # If the file does not exist, the user really needs makeinfo; -+ # let's fail without touching anything. -+ test -f $file || exit 1 -+ touch $file -+ ;; -+ -+ tar) -+ shift -+ -+ # We have already tried tar in the generic part. -+ # Look for gnutar/gtar before invocation to avoid ugly error -+ # messages. -+ if (gnutar --version > /dev/null 2>&1); then -+ gnutar "$@" && exit 0 -+ fi -+ if (gtar --version > /dev/null 2>&1); then -+ gtar "$@" && exit 0 -+ fi -+ firstarg="$1" -+ if shift; then -+ case $firstarg in -+ *o*) -+ firstarg=`echo "$firstarg" | sed s/o//` -+ tar "$firstarg" "$@" && exit 0 -+ ;; -+ esac -+ case $firstarg in -+ *h*) -+ firstarg=`echo "$firstarg" | sed s/h//` -+ tar "$firstarg" "$@" && exit 0 -+ ;; -+ esac -+ fi -+ -+ echo 1>&2 "\ -+WARNING: I can't seem to be able to run \`tar' with the given arguments. -+ You may want to install GNU tar or Free paxutils, or check the -+ command line arguments." -+ exit 1 -+ ;; -+ -+ *) -+ echo 1>&2 "\ -+WARNING: \`$1' is needed, and is $msg. -+ You might have modified some files without having the -+ proper tools for further handling them. Check the \`README' file, -+ it often tells you about the needed prerequisites for installing -+ this package. You may also peek at any GNU archive site, in case -+ some other package would contain this missing \`$1' program." -+ exit 1 -+ ;; -+esac -+ -+exit 0 -+ -+# Local variables: -+# eval: (add-hook 'write-file-hooks 'time-stamp) -+# time-stamp-start: "scriptversion=" -+# time-stamp-format: "%:y-%02m-%02d.%02H" -+# time-stamp-end: "$" -+# End: -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/README open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/README ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/README 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/README 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,219 @@ -+Broadcom iSCSI Userspace Tools -+Version 0.7.0.12 -+Aug 04, 2011 -+------------------------------------------------------ -+ -+This tools is to be used in conjunction with the Broadcom NetXtreme II Linux -+driver (Kernel module name: 'bnx2' and 'bnx2x'), Broadcom CNIC driver, -+and the Broadcom iSCSI driver (Kernel module name: 'bnx2i'). -+This user space driver is used in conjunction with the following -+Broadcom Network Controllers: -+ bnx2: BCM5708, BCM5709 devices -+ bnx2x: BCM57710, BCM57711, BCM57711E, BCM57712, BCM57712E, -+ BCM57800, BCM57810, BCM57840 devices -+ -+This utility will provide the ARP and DHCP functionality for the iSCSI offload. -+The communication to the driver is done via Userspace I/O (Kernel module name -+'uio'). -+ -+There is one component to this application: -+ -+1. 'iscsiuio' - This is the daemon which aids in creating iSCSI offloaded -+ connections. -+ -+Dependencies: -+======================================= -+ -+Linux Kernel Dependencies: -+1. Broadcom CNIC driver (cnic) -+1. Broadcom iSCSI offload driver (bnx2i) -+2. Userspace I/O driver (uio) -+ -+Directory Structure of this Package: -+======================================= -+ -+ -+ | -+ +-doc (documentation directory: man pages) -+ | -+ +-src -+ | -+ +- uip - the uIP stack -+ | -+ +- unix - iscsiuio source -+ -+ -+ -+Compiling / Installing -+======================================= -+ -+1. Please untar the tarball. -+2. Run the configure script. This will create the Makefiles and proper -+ header files needed for the build. -+3. Run 'make'. This will create the binary, 'iscsiuio' -+4. Run 'make install' to place the binaries in their installed location. -+ (The default location is '/sbin') -+ -+iscsid IFACE Configuration File: -+======================================= -+The network interface configuration files are driven by the iscsid iface -+files. The configuration data is parsed by iscsid and passed to the uIP -+stack when the connection is established. -+ -+One can use the following iscsiadm commands to create/set the configuration -+using the iface files: -+ -+1. Create the iface file: -+ -+ iscsiadm -m iface -I --op=new -+ -+2. Discover the targets associated with the new iface -+ -+ iscsiadm -m discovery -t st -p -I -+ -+3. Update the iface file: -+ -+ To use a static IPv4 address: -+ iscsiadm -m iface -I --op=update --name=iface.ipaddress --value= -+ -+ To use a DHCP address: -+ iscsiadm -m iface -I --op=update --name=iface.ipaddress --value=0.0.0.0 -+ -+ The following values are required. -+ -+ To specify the bnx2i as the transport: -+ iscsiadm -m iface -I --op=update --name=iface.transport_name --value=bnx2i -+ -+ To specify the network interface to offload with: -+ -+ a. Specify the physical network interface name -+ iscsiadm -m iface -I --op=update --name=iface.net_ifacename --value= -+ -+ b. Specify the iSCSI MAC address of the iSCSI HBA -+ iscsiadm -m iface -I --op=update --name=iface.hwaddress --value= -+ -+4. Now all the settings should be set so that one could connect to their -+ desired iSCSI target. -+ -+ iscsiadm -m node -p -T -I --login -+ -+bnx2 Limitations: -+======================================= -+* RX iSCSI ring: -+ * default ring size is 3 entries -+ * default buffer size is 0x400 bytes -+* TX iSCSI ring: -+ * default ring size of 1 entry -+ * default buffer size is 0x400 bytes -+ -+bnx2x Limitations: -+======================================= -+* RX iSCSI ring: -+ * default ring size is 15 entries -+ * default buffer size is 0x400 bytes -+* TX iSCSI ring: -+ * default ring size of 1 entry -+ * default buffer size is 0x400 bytes -+ -+Other Limiations: -+ -+Any packets larger then the buffer size will not be sent/received by the -+hardware and will be dropped. -+ -+IPv6 support: -+ -+IPv6 NDP (neighbor discovery protocol), DHCPv6 and Static IPv6 are now -+supported. The IPv6 address used for the connection will be matched against -+the DHCPv6/static IPv6 address, the RA (router advertise) address, and the -+assigned link local address. -+ -+VLAN support: -+ -+VLAN support is only supported when using static IP addresses. -+Also, currently only 1 VLAN is supported per physical network interface. -+Either non-VLAN offloaded traffic is allowed or VLAN offloaded traffic -+is allowed. The current implementation does not support both at the -+same time. -+ -+Currently there is no explicit VLAN attributes in the iface file. -+To configure the VLAN offload, the iface.hwaddress attribute or -+physical net_ifacename (without the VLAN identifier) must be used -+to specify the HBA device. For the proper CNIC routing, the -+corresponding L2 interface which has the associated VLAN interface must -+be on the same subnet. -+ -+The following attributes need to be filled when offloading via the -+VLAN interface: -+ -+ iface.iscsi_ifacename = -+ iface.hwaddress = XX:XX:XX:XX:XX:XX -+ iface.ipaddress = XX.XX.XX.XX -+ iface.transport_name = bnx2i -+ -+Setting IP address: -+ -+On RHEL5.4, RHEL5.5, RHEL5.6, RHEL6.0, SLES11SP1 distributions, -+discovery login is done over the Linux TCP/IP stack and L2 network -+interface. The ethx interface corresponding to the HBA must -+therefore be in the same IP subnet in order to reach the iSCSI -+target during discovery. However, the HBA's IP address should not -+be the same as the L2 ethx's IP address. -+ -+Starting with RHEL6.1 and all other newer distributions, discovery -+using SendTargets is done over the HBA interface, so there is no -+need for the HBA and L2 network to be on the same subnet. However, -+if VLAN is used on the HBA, they still have to be on the same subnet -+as described above. -+ -+ -+Setting Netmask and Gateway addresses: -+ -+With the current limitations of the iface file, there are no entries -+to allow the user to enter neither a netmask or gateway IP address. -+ -+The only way to explicitly configure these options is to use DHCP -+addressing. Then the netmask/gateway are set on the DHCP server. -+These settings are then sent to uIP via the DHCPOFFERs. -+ -+If the netmask is not defined then the netmask are automatically -+generated depending on the destination IP address. -+ -+Debugging: -+======================================= -+ -+The iscsiuio daemon will output messages to the log file, -+'/var/log/iscsiuio.log'. These messages can be used to help debug any issues. -+ -+A sample banner message: -+ -+INFO [Mon Jun 20 11:23:14 2011]Started iSCSI uio stack: Ver 0.7.0.6 -+INFO [Mon Jun 20 11:23:14 2011]Build date: Mon Jun 20 11:22:05 PDT 2011 -+INFO [Mon Jun 20 11:23:14 2011]Debug mode enabled -+ -+When debugging issues like the iscsid, the iscsiuio daemon can be run -+in the foreground and the maximum debugging level should be used. -+ -+To place the daemon in foreground mode please pass the parameter '-f' -+To run the daemon in debug mode please pass the parameter '-d ' -+ -+where the following debug levels are defined: -+ -+DEBUG 4 - Print all messages -+INFO 3 - Print messages needed to follow the uIP code (default) -+WARN 2 - Print warning messages -+ERROR 1 - Only print critical errors -+ -+Note: The messages to the log file are not flushed unless debugging is enabled. -+ -+Note: If the daemon iscsiuio is running, one will not be able to -+ trample over the exisiting binary. One might see the following message: -+ -+ 'cannot create regular file `/sbin/iscsiuio': Text file busy' -+ -+ The solve this, please stop the iscsid service and then install. -+ -+Warning: If full debug is enabled, this may quickly fill the partition -+containing the iscsiuio logs. This is because full debugging will log -+packet activity which on a busy network will quickly fill the logs. -+ -+Note: If the bnx2i and cnic drivers are unloaed, Then uIP will also need to be restarted so that it can determine the drvier version. -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/RELEASE.TXT open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/RELEASE.TXT ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/RELEASE.TXT 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/RELEASE.TXT 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,1429 @@ -+ Release Notes -+ Broadcom uIP Linux Driver -+ Version 0.7.0.12 -+ 08/04/2011 -+ -+ Broadcom Corporation -+ 5300 California Avenue, -+ Irvine, CA 92617 -+ -+ Copyright (c) 2004 - 2011 Broadcom Corporation -+ All rights reserved -+ -+ -+uIP v0.7.0.12 (Aug 04, 2011) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Cont00050634 - brcm_iscsiuio Tainted: running IoZone, -+ Iometer and receiving a UDP flood on 3260 -+ Cause: Upon iscsiuio termination, because of the UDP flood, -+ the nic thread will be busy servicing those UDP packets -+ while the signal handling thread will free up all nic -+ resources. The two threads were not in sync. -+ Change: Added a nic_remove_all routine to destroy all nic threads -+ before the nic resources get freed. -+ -+ Enhancements -+ ------------ -+ 1. Change: Fixed all warnings as reported by RHELS' Coverity testing. -+ -+ -+uIP v0.7.0.11 (Aug 02, 2011) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Erroneous VLAN tag was being passed by iscsid for connect -+ request -+ Cause: The iscsid's iface_rec_t ipc message does not contain this -+ vlan field. This field was added in uIP for future vlan -+ support. Since the buffer allocated to receive such message -+ in uIP didn't get initialized, therefore, garbled up VLAN -+ tag was getting used. -+ Change: Added the initialization of this buffer. -+ -+ -+uIP v0.7.0.10 (Jul 26, 2011) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Can't offload when switching from Static to DHCP then back to -+ Static IPv4 when connecting through a VLAN interface -+ Cause: The VLAN processing code did not reinstall the IP address -+ from the default nic_iface to the associated VLAN nic_iface. -+ This was only done on the very first time when the VLAN -+ interface was created and not on subsequent instances. -+ Change: Added code to mirror the default nic_iface IP/netmask/ip_config -+ on the VLAN nic_iface on every new connection request. -+ -+ -+uIP v0.7.0.9 (Jul 19, 2011) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Can't offload to 57810 NPAR NIC -+ Cause: The MF/VF variant of the PCI IDs were not supported previously -+ Change: Added support for the MF/VF variants for 57800/57810/57840 -+ -+ -+uIP v0.7.0.8 (Jun 30, 2011) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Cont00056522 - Unable to connect to iSCSI target using -+ netxtreme2 package 7.0.9 -+ Cause: The iSCSI L2 ring's CID has changed from 17 to 49 -+ Change: The code now gets L2 iSCSI ring CID from the l2_buf directly. -+ This will work with any version of the cnic driver because -+ the location is a zero before this change. -+ -+ -+uIP v0.7.0.7 (Jun 23, 2011) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Cont00056460 - iSCSI Offload boot RHEL5u5 x64 dropped tagged -+ packets with iSCSI Offload Boot with untagged -+ Cause: The ICMP echo replies to the target was corrupted in both -+ 1g and 10g mode -+ Change: The code will now handle both VLAN stripped and no VLAN stripped -+ incoming packets correctly. Also modified the transmit routine -+ to strip out any inline VLAN tag before setting up the hw to -+ insert VLAN tag. -+ -+ -+uIP v0.7.0.6 (Jun 21, 2011) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Cont00056231 - DHCPv4 not working with iSCSI HBA w/ -+ linux-nx2 v7.0.7 -+ Cause: The 10g L2 FW HSI has been modified for PCIe performance -+ enhancement in the 7.0.7 package (FW 1.70.20) which uIP -+ has not adapted to. -+ Change: The eth_rx_cqe size has been increased from 32B to 64B. -+ -+ Enhancements -+ ------------ -+ 1. Change: The utility name has changed from brcm_iscsiuio to iscsiuio -+ as preparation for upstream submission. -+ 2. Change: Updated README -+ -+ -+uIP v0.7.0.5 (Jun 02, 2011) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Cont00055915 - iSCSI does not connect on 57800 in 4-port mode -+ Cause: The 4-port mode was not being determined correctly -+ Change: Fixed the PORT4MODE register offset and the QZONE_ID macros -+ -+ -+uIP v0.7.0.4 (May 24, 2011) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Cont00055832 - linux iscsiboot can not login to target using -+ offload path (57800) -+ Cause: The device ID comparison routine did not take care of the case -+ when one device ID is bitwise superset of another. -+ Change: Fixed the device ID comparison routine. -+ -+ -+uIP v0.7.0.3 (May. 19, 2011) -+======================================================= -+ Enhancements -+ ------------ -+ 1. Change: Updated all fixes to match the released uIP 0.6.4.17 -+ -+ 2. Change: Modified source and Copyright info as preparation for upstream -+ submission -+ -+ -+uIP v0.7.0.2 (May. 03, 2011) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Cont00048972 - brcm-iscsi.log has no max size and would grow -+ to consume all free space on hard disk -+ Cause: There was no mechanism to rotate the log -+ Change: Added logrotate entry and SIGUSR1 signal handling for log rotate -+ action -+ -+ 2. Problem: Cont00054996 - Multi-session, multi-protocol mtu stress -+ does not recover all sessions -+ Cause: A segfault was observed during the load/unload module. The -+ problem was caused by an illegal dereference of a pointer -+ when IPv6 couldn't find the longest match address from -+ the ARP (Neighbor) table. -+ Change: Fixed the dereferencing error -+ -+ 3. Problem: Cont00054900 - Linux uIP - Please add ability to connect -+ to routed target with static iface IPv6 -+ Cause: Static IPv6 never runs the IPv6 NDP router sol/adv engine. -+ Change: IPv6 NDP router sol/adv has now been added to static IPv6 -+ operation. -+ -+ 4. Problem: Cont00054996 - Multi-session, multi-protocol mtu stress -+ does not recover all sessions -+ Cause: Segfaults were observed caused by the accessing of the IPv6 -+ NDP structure while the nic is undergoing a reset either -+ due to a DHCPv4 request from iscsid or the handling of -+ if_down due to the NL handler from CNIC. -+ Change: The fix involves the following: -+ - Fixed the handling of staggered IPv4/v6 DHCP/static requests -+ - Fixed memory leak due to reallocation of IPv4 and IPv6 -+ DHCP structs -+ - Fixed the pthread join stuck problem in the handling -+ of the if_down NL message -+ -+ 5. Problem: Cont00054810 - Linux NMI - bnx2x_init_hw_common:PXP2 CFG -+ failed running iSCSI MTU stress test -+ Cause: This only happens in DHCPv4 mode. The problem was caused -+ by contention between the elongated window of performing -+ DHCP in the enable_nic thread while receiving the asynchronous -+ if_down NL message (from the MTU change event) from the -+ CNIC NL thread. The problem occurs when the enable_nic -+ thread tries to call bnx2x_open while the other thread -+ calls the bnx2x_close routine. -+ Change: Fixed mutex lock bugs for the enable_nic thread. Also -+ extended the nic_disable timeout to 10s to compensate for -+ the DHCP operation. -+ -+ 6. Problem: Cont00054818 - RH6.0 - Unable to logout of iSCSI session -+ after running PQA baseline scripts -+ Cause: This was caused by the call to cancel the enable_nic -+ thread when disabling the nic but failed to unlock the -+ nic mutex that the enable_nic thread held. -+ Change: Wake up the enable_nic thread and wait for it to complete -+ instead of canceling it in the nic_disable path. -+ -+ 7. Problem: Cont00054725 - Previous static HBA IP will be used after -+ a new static HBA IP has been created -+ Cause: There was an assumption in the code where if the same -+ nic_iface structure was found based on the nic/vlan pair, -+ the specified IP address would not be used. Instead, it -+ will continue to use the previous defined IP address. -+ Change: The previous IP address will now be compared against the -+ the specified IP address before finishing the parce -+ iface request from iscsid. If different, the current -+ nic will be disabled and then re-enabled with the newly -+ specified IP address. -+ -+ 8. Problem: Cont00054571 - Unable to connect to routed ipv6 target -+ with RA address and iface DHCPv6 -+ Cause: The default router address was not being employed for -+ the IPv6 neighbor negotiation. Additionally, the return -+ address of our neighbor advertisement was incorrect as -+ it should use the best matched src address instead. -+ Change: Fixed both the IPv6 neighbor solicitation and advertisement -+ transmission and handling. -+ -+ 9. Problem: Cont00054510 - fails to login to 32 session with blanket -+ login IPv6 -+ Cause: A bug was introduced in uIP 0.6.4.6 where the NIC_RUNNING -+ flag might not be set when entering the main loop under -+ certain situations depending on the nic bring up. -+ Change: A new NIC_STARTED_RUNNING flag is now defined to fix CQ53511. -+ -+ 10. Problem: Cont00053807 - RA and link local are unable to connect if DHCPv6 -+ fails -+ Cause: The host link local address was not being searched as one of -+ the host address to be replied to CNIC for the connect request. -+ Change: The path reply now includes the search of host link local -+ address as well. -+ -+ 11. Problem: Cont00054236 - iSCSI service must be restarted before an IPv6 -+ connection can be made to the Equalogic target -+ Cause: The problem was intermittent as it depends on which IPv6 address -+ the target was redirecting to. Since uIP was only extracting -+ the target's IPv6 address + MAC from the target's neighbor -+ advertisement packet itself and not from the ICMPv6 option, so -+ the wrong or no MAC address will get send down to CNIC for the -+ connection establishment; hence the no connect. -+ Change: Added the updating of the neighbor discovery table to also use -+ the Target IPv6 address + MAC specified in the incoming neighbor -+ advertisement's ICMPv6 option field. -+ -+ 12. Problem: Cont00053255 - bnx2x panic dump logging into multiple -+ discovered IPv6 nodes (Equalogic IPv6 target) -+ Cause: The bnx2x panic was fixed in the 10g fw 6.4.29. -+ A IPv6 connectivity issue was then found and led to different -+ kernel/uIP crashes. This was caused by the same IPv6 -+ connectivity problem mentioned above. -+ Change: Same as above -+ -+ 13. Problem: Cont00053728 - Sessions never recover after doing initiator-side -+ cable pull test with IPv6 traffic against Equalogic targets -+ Cause: It was discovered that the Equalogic would send out periodic -+ neighbor solicitation to maintain the connection to the -+ initiator. Since uIP was responding with the assigned IPv6 -+ link local address in the neighbor advertisement -+ unconditionally, the target was observed to stop transmitting on -+ the connection specified. -+ Change: The neighbor advertisement generated will now use the dst IPv6 -+ address from the input neighbor solicitation packet instead of -+ the assigned IPv6 link local address for both the packet and the -+ ICMPv6 source IPv6 address. -+ -+ 14. Problem: Compile error under 32-bit OS -+ Cause: A bug was introduced in the previous release 0.6.4.6 which -+ caused a compilation error in 32-bit OS (64-bit compiles -+ fine) -+ Change: Fixed the bug -+ -+ 15. Problem: Cont00053807 - RA and Link local are unable to connect if dhcpv6 -+ fails -+ Cause: There was a bug in the nl reply where the RA address will never -+ be sent back to CNIC for the connection request -+ Change: The best matched address to the dst will now be sent back to -+ CNIC in the path rsp. -+ -+ Enhancements -+ ------------ -+ 1. Change: Updated README to remove the 57713/E references -+ -+ 2. Change: Allow the ICMP option field in the IPv6 Neighbor Advertisement -+ response to be included without discrimination. This fixes -+ an issue connecting against the EQL via RA for DHCPv6. -+ -+ 3. Change: Updated README for the IPv6 operation, VLAN, and discovery. -+ -+ -+uIP v0.7.0.1 (Mar. 29, 2011) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Cont00053511 - bnx2x panic dump during ifup/down stress with -+ iSCSI traffic -+ Cause: The panic dump was resolved by the driver's rq dbell size fix. -+ After that, uIP crashed due to the asynchronous if_down event -+ that took the chip resources away while the nic thread is still -+ continuing to try to send DHCP request. -+ Change: Added synchronization between the two threads so proper clean up -+ of the threads can occur. -+ -+ Enhancements -+ ------------ -+ 1. Change: Added support for E3 (57800, 57810, and 57840) -+ -+ -+uIP v0.6.4.5 (Mar. 23, 2011) -+======================================================= -+ Enhancements -+ ------------ -+ 1. Change: Optimized the double VLAN fix of CQ53870 to match -+ what will be submitted for RHELS5.7 and RHELS6.1 inbox -+ -+ -+uIP v0.6.4.4 (Mar. 17, 2011) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Cont00053870 - Unable to login to iSCSI target via offload -+ through a Nexus 5020 switch with DCBx enabled -+ Cause: Double VLAN tagging was observed due to DCBx enabled. -+ The chip actually adds a VLAN tag if the txbd does not have -+ VLAN tag enabled under the DCBx environment for PRI setting. -+ Since uIP does not make use of hw assisted VLAN tagging, -+ 2 VLAN tag was observed in the data stream. -+ Change: Enabled hw assisted VLAN tagging in uIP for both 1g and 10g. -+ -+ 2. Problem: Cont00053792 - maxconnections intermittently fail and -+ recover using iface DHCPv4 -+ Cause: The DHCPv4 engine erroneously keeps on requesting for a -+ new lease which tremendously hamper normal path_req -+ operation. The problem is that the lease time parameter -+ has overflowed when converted to ticks count. -+ Change: Expanded the lease timer ticks count parameter from 16 to -+ 32 bits. -+ -+ 3. Problem: Cont00053807 - RA and link local are unable to connect if -+ DHCPv6 fails -+ Cause: The DHCPv6 engine does not have the failover to use RA -+ mechanism -+ Change: Expanded to use best match address instead regardless of -+ DHCPv6 success or not, or using static v6. -+ -+ Enhancements -+ ------------ -+ 1. Change: Cont00051823 - Added man page for brcm_iscsiuio -+ -+ -+uIP v0.6.4.3 (Mar. 15, 2011) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Cont00053719 - intermittent logging into targets that -+ are not in the same subnet as defined in the iface -+ Cause: The default route was used erroneously due to a miscompare -+ Change: Fixed this comparison so if the requested dst is not in -+ in the same subnet, uIP would not even ARP out. -+ -+ 2. Problem: Cont00053580 - Unable to do iSCSI boot into Linux OS using -+ 57710 adapters -+ Cause: The E1 iro USTORM_RX_PROD_OFFSET doesn't match the t6.4 fw -+ Change: This is now fixed -+ -+ -+uIP v0.6.4.2 (Feb. 24, 2011) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Cont00050343 - HBA does not follow RFC2131 spec for IPv4 -+ DHCP lease expiration -+ Cause: The dhcp engine did not have this feature implemented -+ Change: Added lease time tracking and renewal -+ -+ 2. Problem: Cont00050801 - Unable to connect to target after switching -+ between DHCPv4 to static v4 -+ Cause: The configuration flags got corrupted when switching between -+ dhcp and static or vice versa. -+ Change: Fixed the flag handling. Also needed to zero out the static -+ ip address in the host memory when switching to dhcp. -+ Otherwise, the static ip address will get used mistakenly. -+ -+ Enhancements -+ ------------ -+ 1. Change: Cont00051936 - Added IPv6 NDP and DHCPv6 support. -+ -+ -+uIP v0.6.4.1 (Jan. 27, 2011) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Cont00049766 - segfault seen while stopping iscsi service -+ Cause: The logger output routine was accessing the log resource -+ while another thread calls fini_logger to free the same -+ resources -+ Change: Added pthread mutex lock to the logger routine to exclude -+ the initializer, user, and finisher -+ -+ Enhancements -+ ------------ -+ 1. Change: Added new t6.4 HSI and 57713 support. -+ -+ -+uIP v0.6.2.13 (Jan. 04, 2011) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Cont00049665 - iscsiboot:linux failed to boot into iscsi -+ boot image in offload path after 5 iterations -+ Cause: The hw consumer index for the uIP ring got out of sync -+ with the producer index. This has led to the xmit mutex -+ lock be held forever so subsequent ARP requests will not -+ get transmitted to the wire -+ Change: Added this out of sync detection and rescue the xmit mutex -+ lock -+ -+uIP v0.6.2.12 (Dec. 21, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Cont00051820 - Session fails to reconnect after gateway -+ fallback -+ Cause: Under the HSRP test scenario, it was found that an ARP -+ request from the SUT is required in order for the HSRP -+ router to begin sending packets downstream to the SUT. -+ The default ARP age was originally set to 20 minutes -+ before a new ARP request will get sent, -+ Change: Changed the ARP age default to Linux default at 5 minutes -+ -+uIP v0.6.2.11 (Dec. 17, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: For IPv4, the gateway route was not being utilized -+ when the subnet mask given or calculated does not -+ match. This resulted in many unwanted connection -+ attempts. -+ Cause: A bug was found in the default gateway calculation -+ logic which prevented the gateway address from being -+ used. -+ Change: Fixed the default gateway logic -+ -+ 2. Problem: For IPv6, there are scenarios where it won't connect -+ Cause: The IPv6 subnet mask as extracted from the CIDR -+ format might contain garbage data. This garbage data -+ was then used as part of the subnet mask which would -+ prevent the correct address mask. -+ Change: Fixed the subnet mask -+ -+uIP v0.6.2.10 (Dec. 15, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: IPv6 does not connect for non-CIDR iface.ipaddress -+ specification -+ Cause: A bug where all ones was used as the IPv6 netmask -+ instead of all zeroes. This prevented all IPv6 -+ path requests from being honored -+ Change: Fixed the subnet mask used -+ -+uIP v0.6.2.9 (Dec. 14, 2010) -+======================================================= -+ Enhancements -+ ------------ -+ 1. Change: Added IP address CIDR notation support for the -+ iface.ipaddress field in the iface file. -+ This will allow subnet mask to be defined and used. -+ -+uIP v0.6.2.8 (Dec. 9, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: ipv6 + ifup/down fails to reconnect -+ -+ Cause: There were 2 problems found: -+ - the xmit_mutex lock was being held indefinitely -+ - the nl_process_if_down flag for 10g doorbell ringing -+ did not get reinitialized -+ -+ Change: Fixed the xmit_mutex deadlock via trylock -+ Added nl_process_if_down initialization in the IF_DOWN -+ process -+ -+ 2. Problem: Added fix for the NPAR disabled for 57712 -+ -+ Cause: The mac address was not handled correctly -+ -+ Change: Fixed the mac address handling. Also requires corresponding -+ kernel component for the complete fix -+ -+uIP v0.6.2.7 (Dec. 7, 2010) -+======================================================= -+ Enhancements -+ ------------ -+ 1. Change: Use the gateway address from the DHCP server the -+ destination IP address is not in the current subnet. -+ -+uIP v0.6.2.6 (Nov. 16, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Warning message seen in the kernel logs, -+ "uio uio2: uevent: unsupported action string" -+ -+ Cause: The improper string was echo'ed into the UIO trigger -+ field. With an improper string, this message would -+ appear in the kernel logs. -+ -+ Change: uIP will now write the string "online" to the UIO -+ trigger field. This is the string expected by the -+ Linux kernel base driver. -+ -+ 2. Problem: uIP would segfault during a heavily login/logout -+ iSCSI subsystem reset senario -+ -+ Cause: A double free occurred in the logging portion of the -+ uIP code, but this was root cause to a double free when -+ manipulating the NetLink buffers. -+ -+ Change: Properly look at the return code from the routine which -+ will read NetLink messages. Also only free buffers -+ if they are allocated. -+ -+ Enhancements -+ ------------ -+ 1. Change: Add ability to print kernel version and machine -+ architecture to further help debug problems. -+ -+ 2. Change: Apply the netmask from DHCP if provided. -+ -+uIP v0.6.2.5 (Nov. 10, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: iscsid would try to conenct with unintended iSCSI -+ targets -+ -+ Cause: uIP would blindly return the iSCSI target MAC address -+ regardless if the iSCSI target is reachable via the -+ given port. -+ -+ Change: uIP will try to filter the requests coming from CNIC -+ by automatically generating a network mask based off -+ the configured IP addressed. Then this netmask is -+ masked with the destination IP address. If there is -+ a match, then the path_req is allowed through. -+ -+ 2. Problem: Problems reconnecting back to the target when running -+ MTU stress tests. -+ -+ Cause: cnic/bnx2i and uIP could possibly get out of sync when -+ an if_down message is sent. -+ -+ Change: uIP will now immediately react to the if_down message, -+ and flush all the path req's and then to process to -+ if_close. -+ -+ Enhancements -+ ------------ -+ 1. Change: Fix compile warnings for src/unix/nic_nl.c, -+ and src/unix/main.c -+ -+uIP v0.6.2.4 (Nov. 4, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: iSCSI HBA: brcm_iscsiuio segfault during ifdown -+ with many active sessions -+ -+ Cause: uIP will segfault when traversing the error path when -+ an iSCSI connection is starting but the sysfs entries -+ have not been created yet. -+ -+ Change: Use the errno value rather then the one from the file -+ descriptor because the file descriptor will be NULL and -+ the NULL dereference will cause a segfault. -+ -+ Enhancements -+ ------------ -+ 1. Change: Added initial changes for iSCSI multi-function support for -+ 10G NIC's. -+ 2. Change: Add more detailed messages for error pathes in nic_utils -+ -+uIP v0.6.2.3 (October 28, 2010) -+======================================================= -+ Enhancements -+ ------------ -+ 1. Change: Add support for bnx2x-1.62.x drivers -+ -+uIP v0.6.2.2 (October 18, 2010) -+======================================================= -+ Enhancements -+ ------------ -+ 1. Change: Only allow iSCSI connections with known bnx2x HSI's. -+ -+uIP v0.6.2.1 (October 7, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: After multiple MTU changes, the ethtool IOCTL used to -+ determine the bnx2x driver version fails and eventually -+ iSCSI connections would not reconnect. -+ -+ Cause: The socket file descriptor used during the ethtool IOCTL -+ call was never closed and leaked. -+ -+ Change: On the error path when calling the ethtool IOCTL, the -+ file descriptor is now properly closed. -+ -+uIP v0.5.39 (September 15, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Could not offload IPv4 VLAN connection when the target tries -+ to ARP the iSCSI initiator -+ -+ Cause: In the ARP reply, the ether field was incorrect. -+ -+ Change: Properly set the ether field to 802.1Q type (0x8100) -+ -+uIP v0.5.38 (September 14, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: uIP would cause a panic dump when the NIC was going down -+ -+ Cause: uIP and CNIC where not synchonized on NIC state -+ -+ Change: Check if the RX BD's which are zero'ed by CNIC when the -+ NIC is going down. If the BD addresses are zero, then -+ uIP will drop the TX packets. -+ -+uIP v0.5.37 (August 21, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: uIP would segfault on ifup/ifdown stress test when using -+ DHCP to determine local IP address. -+ -+ Cause: The uIP would use a NULL buffer during data transmission. -+ -+ Change: Drop packets when there are no buffer avaliable. -+ -+uIP v0.5.36 (August 21, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: iSCSI boot would not completely login after the pivot -+ root operation. -+ -+ Cause: The uIP would not properly start the NIC interface. -+ -+ Change: uIP should only check the NIC state to determine whether -+ to start the NIC thread or not. -+ -+ 2. Problem: uIP would segfault during if'up if'down testing. -+ -+ Cause: The uIP would improperly start 2 NIC threads for the -+ same NIC interface. -+ -+ Change: uIP should properly lock the NIC list when disabling/removing -+ the NIC threads. -+ -+ -+uIP v0.5.35 (August 20, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Sessions would hang with ethtool self-test -+ -+ Cause: The uIP would hang because the socket layer was stuck -+ because there is much contention for that socket. This -+ would hang the CNIC thread. -+ -+ Change: Remove any IOCTL calls in uIP which may colide with -+ the ethtool self test. The driver version is only -+ capture during uIP initialization. -+ -+ 2. Problem: There were session recovery issue when using DHCP -+ if up/down tests. -+ -+ Cause: The uIP would hang because the DHCP requests would -+ timeout if the network interface is downed which would -+ hang all the other uIP threads. -+ -+ Change: Ensure that the DHCP state machine had exit points -+ if the network interface was down'ed. -+ -+ -+uIP v0.5.34 (August 18, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Sessions would not recover with ethtool self-test -+ -+ Cause: The uIP would hang because either the NetLink buffer is -+ full or that any socket operations used to manipulate -+ multicast addresses would block. -+ -+ Change: Ensure that the socket used for multicast addressing is -+ set to nonblocking. Drain the NetLink buffer without -+ using the eventing, but with a more aggressive poll routine. -+ -+ 2. Problem: Sessions would not recover with L2 driver load/unload on -+ RHEL 6.0 SS9 -+ -+ Cause: The uIP would close the NIC thread too early and would -+ deadlock on cloing the NIC thread. -+ -+ Change: Ensure that the NIC thread is canceled/closed only in one -+ location, in the NIC remove routine. -+ -+ -+uIP v0.5.33 (August 17, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Error message seen from the uIP stack for valid packets. -+ -+ Cause: The uIP was incorrectly marking logging messages for valid -+ packets as errors because it didn't know how to parase them. -+ -+ Change: Changed the following from error to debug message -+ ipv6: invalid version -+ ipv4: invalid version or header length. -+ icmpv6: unknown ICMP message. -+ ip: neither tcp nor icmp -+ Changed the following from error to warn message -+ udp: bad checksum -+ tcp: bad checksum -+ tcp: got reset, aborting connection. -+ -+ 2. Problem: After multiple iterations the loading and unloading of -+ the Broadcom Linux drivers with active connections -+ would not cause the sessions to recover on RHEL 6.0 -+ snapshot 9. -+ -+ Cause: There was a deadlock in the nic mutex -+ -+ Change: Lock ordering for the nic mutex and nic list mutex must -+ be inforced. -+ -+ 3. Problem: After multiple iterations of running the ethtool selftest -+ the Broadcom Linux drivers with active connections -+ would not cause the sessions to recover on RHEL 5.5. -+ -+ Cause: The Netlink buffer between uIP and CNIC would get full. -+ -+ Change: Poll more regularly for packets in the Netlink buffer -+ from 4 times a second to 100 times a 1 second. -+ Drain packets during the PATH_REQ packet pull. -+ -+ -+uIP v0.5.32 (August 14, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Error message 'nic eth0: Didn't find type 0xaa bb' seen. -+ -+ Cause: Valid non-DIX Ethernet packets as being passed to the -+ uIP. uIP will drop these packets but should be logged -+ correctly. -+ -+ Change: These packets are valid, and should only be logged for -+ debugging purposes. -+ -+ 2. Problem: Error message 'Dropped previous transmitted packet' seen. -+ -+ Cause: The TX ring is full, and here uIP is trying to transmit a -+ packet which will be dropped. This is a valid state but -+ the log message is marked incorrectly -+ -+ Change: These messages are not warnings and should be logging when -+ debugging is enabled. -+ -+ 3. Problem: Error message: "iscsi_ipc eth0 Transport name is not -+ equal expected: got: bnx2i" seen. -+ -+ Cause: The iface_rec structure is different between iscsid version. -+ For RHEL 5.5, iscsid is versioned 871, for RHEL 6.0 is -+ versioned 872. -+ -+ Change: Allow uIP to compile against a different version of iscsid. -+ -+ -+uIP v0.5.31 (August 12, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Softlock would occur showing that the NetLink table -+ lock was taken but never released. -+ -+ Cause: NetLink socket buffer would fill with constant PATH_REQ -+ messages preventing PATH_REQ response from libiscsi -+ -+ Change: Now uIP will drain the NetLink buffer while looking for -+ a response. -+ -+ Enhancements -+ ------------ -+ 1. Change: Add documentation for VLAN configuration and restrictions. -+ -+ -+uIP v0.5.30 (August 6, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: iscsid thread will stall if closing the uio files nodes -+ is stuck -+ -+ Cause: uIP would indefinitely block waiting for the mutex shared -+ by the close routine. -+ -+ Change: Now uIP will try and poll a bit for the mutex. If it can't -+ get this mutex in the iscsid thread then an error is return -+ rather then hold the thread. -+ -+ 2. Problem: IPv6 Unicast Neighbor Adveriserments would have the -+ ICMPv6 option header specifying a MAC. -+ -+ Cause: uIP should use the source IPv6 address to detmine whether -+ to strip the option header or not and not the target address -+ in the ICMPv6 field. -+ -+ Change: The uIP stack return a unicast IPv6 Neighbor Advertisement -+ without the ICMPv6 option as a response to unicast -+ IPv6 Neighbor Solicitations. -+ -+ 3. Problem: There would be TCP SYN packets with improper MAC address. -+ -+ Cause: A zero'ed MAC address was not passed to CNIC to indicate an -+ error or if the IP address didn't resolve. -+ -+ Change: The uIP stack will now return a zero'ed MAC address if it -+ can't find any entries. -+ -+ -+uIP v0.5.29 (August 6, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: "uip udp: no matching connection found: lport: 35072" -+ seen numerous times in the brcm_iscsiuio log file -+ -+ Cause: This message was incorrectly marked as an error -+ -+ Change: These messages are valid log entries especially if the -+ packet was a broadcast UDP packet not destined for the SUT -+ I will change the code to mark these logs entries as debug. -+ -+ -+uIP v0.5.28 (August 5, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Can't login into a redirected Equilogic Target -+ -+ Cause: The Equilogic Target uses a unicast IPv6 Neighbor -+ Solicitation to test if the host is up. The uIP stack -+ would return a Neighbor Advertisement with an unneeded -+ ICMPv6 option. -+ -+ Change: Only have the uIP stack return a unicast IPv6 Neighbor -+ Advertisement without the ICMPv6 option. -+ -+ 2. Problem: With older bnx2/bnx2x/cnic/bnx2i driver combinations -+ uIP would segfault when these drivers were unloaded. -+ -+ Cause: When the older drivers were removed, the underlying uio -+ instance was removed causing uIP to have a stale file handle. -+ When uIP finally closes using this stale file handle, either -+ uIP would segfault, or there would be an error in the -+ uio_release() path. -+ -+ Change: Only have the uIP close if the UIO file node exists. -+ -+ -+uIP v0.5.27 (July 31, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: iSCSI HBA: Unable to use DHCP address for iSCSI interface -+ if a connection was previously made with a static address -+ on bnx2 devices. -+ -+ Cause: Because the device is closed and reopen'ed the TX consumer -+ indexes were not persisted -+ -+ Change: Only discard the TX consumer indexes only when the devices -+ will be discarded or closed -+ -+ Enhancements -+ ------------ -+ 1. Change: Change CNIC references to bnx2 in the bnx2 user space -+ driver. -+ -+ -+uIP v0.5.26 (July 30, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: iSCSI HBA: Unable to use DHCP address for iSCSI interface -+ if a connection was previously made with a static address on -+ bnx2x devices. -+ -+ Cause: Because the device is closed and reopen'ed the TX consumer -+ indexes were not persisted -+ -+ Change: Only discard the TX consumer indexes only when the devices -+ will be discarded -+ -+ 2. Problem: IPv6 using VLAN's didn't login -+ -+ Cause: The uIP code used to determine if the packet was an IPv6 -+ or not was not working. This VLAN packets for IPv6 were -+ being mis-interpreted. -+ -+ Change: Make the function is_ipv6() VLAN aware -+ -+ 3. Problem: Persistant targets was not loggin in during boot -+ -+ Cause: If udev was slow and the /dev/uio* were creatly slowly -+ uIP would fail. -+ -+ Change: Poll uIP waiting for /dev/uio* file nodes. -+ -+uIP v0.5.25 (July 27, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: When using IPv4 DHCP, there are no initial DHCP Discover -+ packets were not seen on the wire. -+ -+ Cause: Packets generated from the app handler from the uIP stack -+ were not placed on the wire. -+ -+ Change: Packets originating from the uIP stack are now always placed -+ on the wire. -+ -+uIP v0.5.24 (July 25, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: One would see invalid packet packets flow through the -+ uIP stack, where the logs would indicate there is a packet -+ with an invalid length -+ -+ Cause: The BD and CQE consumer indexes were not properly incremented -+ and masked. -+ -+ Change: The BD index is now properly masked. The CQE index is not -+ incremented using the CQE index rather the mistaken BD index. -+ -+ Impact: 10G only -+ -+ 2. Problem: uIP would segfault during the booting of the machine. -+ -+ Cause: uIP was using a NULL data pointer because there was an -+ incorrect packet passed to the stack. -+ -+ Change: Only allow uIP to process data if the packet exists. -+ -+ 3. Problem: uIP would stop processing packets -+ -+ Cause: The uIP code would not properly drain the CQE ring causing -+ it to eventually be full -+ -+ Change: Consume all the CQE elements even if they are ethernet types -+ or not. -+ -+ Impact: 10G only -+ -+ 4. Problem: uIP would stop after if/down of the network interface. -+ -+ Cause: uIP was not kick starting the NIC loop thread properly. -+ -+ Change: Ensure that the NIC loop thread is started by when iscsid -+ request that the interface start the offload. Mark the NIC -+ only if the thread is truly canceled. -+ -+ -+uIP v0.5.23 (July 20, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Segfault during brcm_iscsiuio initialization -+ -+ Cause: uIP was using a NULL data pointer, because a different -+ thread re-initialized the uIP stack -+ -+ Change: Properly synchronize the initialization of the stack -+ -+ 2. Problem: Deadlock during the printing of heavy debug messages -+ -+ Cause: The variable macro structures would point to invalid -+ data -+ -+ Change: With each invocation of va_copy() a corresponding -+ invocation of va_end() in the same function for the proper -+ cleanup -+ -+ 3. Problem: uIP would hang when the interface could go up/down -+ -+ Cause: uIP would get out of sync with the state of the network -+ interface -+ -+ Change: Instead of detriving state from the UIO file nodes, uIP -+ will take direction from iscsid on when interfaces will be -+ started. -+ -+uIP v0.5.22 (July 15, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Unable to reconnect via iSCSI offload after -+ ifup/ifdown -+ -+ Cause: uIP was stuck on the thread when closing the NIC main -+ loop -+ -+ Change: Properly synchronize the NetLink CNIC and uevent threads -+ -+ 2. Problem: uIP would crash during boot up. -+ -+ Cause: uIP would overwrite a memory location which was already -+ freed during nic_remove(). -+ -+ Change: Since the NIC is freed there is no need to write to -+ update the NIC flags -+ -+ Enhancements -+ ------------ -+ -+ 1. Change: Added IPv6 Link Local support -+ -+ -+uIP v0.5.21 (July 5, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Unable to connect via iSCSI offload after -+ changing L2 address -+ -+ Cause: uIP didn't notice the network inferface going down -+ -+ Change: Allow uIP to persist the stack's IP address after -+ a reset -+ -+ 2. Problem: Unable to connect via IPv4 and IPv6 concurrently -+ -+ Cause: uIP didn't notice the network inferface going down -+ -+ Change: Allow uIP to persist the stack's IP address after -+ a reset and properly bring up the interface -+ -+ 3. Problem: Unable to connect via VLAN -+ -+ Cause: IP address was no persisted after a device reset -+ -+ Change: When CNIC requests a path request, uIP will use the -+ VLAN passed by the CNIC. -+ -+ -+uIP v0.5.20 (June 24, 2010) -+ -+ -+uIP v0.5.20 (June 24, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Certain IPv6 addresses are not repsonded to by -+ the target. -+ -+ Cause: The MAC was generated from the target's IPv6 -+ address not the deterived multicast IPv6 address. -+ -+ Change: The destination MAC address should be deterived -+ from the packet's destination IPv6 address and -+ not the target. -+ -+ 2. Problem: brcm_iscsiuio would segfault when L2 interface is -+ bought up and down after being logged into -+ -+ Cause: The NIC thread was not stopped properly -+ -+ Change: When the UIO device is remove and when the -+ cooresponding NIC tracked by brcm_iscsiuio, the -+ daemon would properly wait for the NIC thread to -+ stop. -+ -+ -+uIP v0.5.19 (June 22, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Can't login after boot -+ -+ Cause: If NIC interfaces are brough up and down quickly -+ uIP wait on an invalid NIC thread -+ -+ Change: Only wait for the NIC thread if the NIC thread -+ exists. -+ -+uIP v0.5.18 (June 21, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Does not compile on SLES 11 SP1 -+ -+ Cause: Automake cached files were included as part of the -+ uIP-0.5.17 package -+ -+ Change: Remove automake cached files, and allow these files -+ to be generated each time the source is compiled -+ -+ 2. Problem: Does not always receive multicast packets -+ -+ Cause: Multicast bit was not set in SORT USER 2 register -+ -+ Change: brcm_iscsiuio will now set the SORT USER 2 registers -+ with both the broadcast and multicast bits. -+ -+ 3. Problem: Existing iSCSI connections do not reconnect after -+ operations which require equivalent driver -+ load/unload operations -+ -+ Cause: Multiple path requests would trample NIC configurations -+ -+ Change: Allow only one path request at a time -+ -+uIP v0.5.17 (June 16, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: IPv6 neighbor solicitations from brcm_iscsiuio could -+ not be responded to -+ -+ Cause: The IPv6 neighbor solicitation packet had an invalid -+ multicast MAC address -+ -+ Change: Properly set the MAC address multicast bit and OR -+ with the IPv6 destination address -+ -+ 2. Problem: NIC state was not properly synchronized and noticed -+ by Shyam Iyer -+ -+ Change: Properly lock the NIC device when changing state -+ -+ Enhancements -+ ------------ -+ -+ 1. Change: Listen for iscsid before daemonizing to close a timing -+ gap which might allow iscsid to start before uIP is -+ completely initialized. -+ -+uIP v0.5.16 (June 2, 2010) -+======================================================= -+ -+ Enhancements -+ ------------ -+ -+ 1. Change: Formally add IPv6 support. Only a static IPv6 address -+ is supported. -+ -+uIP v0.5.15 (May 20, 2010) -+======================================================= -+ -+ Fixes -+ ----- -+ 1. Problem: brcm_iscsiuio would echo packets off the wire -+ -+ Cause: Stale packets from the uIP stack could potentially -+ make it onto the wire causing a network flood -+ -+ Change: Only place on the wire packets uIP intended to place -+ on the wire. Drop all other packets. -+ -+uIP v0.5.14 (May 18, 2010) -+======================================================= -+ -+ Fixes -+ ----- -+ 1. Problem: brcm_iscsiuio would crash when offloading using a -+ bnx2x device /dev/mem could not be -+ opened, (ie. SE Linux enabled) -+ -+ Cause: /dev/mem could not be opened, (ie. SE Linux enabled) -+ and then the NIC would be improperly initialized. -+ -+ Change: If /dev/mem is not able to be opened, then the device -+ is closed -+ -+ 2. Problem: brcm_iscsiuio would crash when brcm_iscsiuio is -+ being shutdown -+ -+ Cause: The NIC mutex was deferenced imporperly when the NIC -+ is being closed -+ -+ Change: Take the NIC mutex lock only when the NIC is closed. -+ -+uIP v0.5.13 (May 16, 2010) -+======================================================= -+ -+ Fixes -+ ----- -+ 1. Problem: brcm_iscsiuio would crash with heavy traffic directed -+ at the iSCSI traffic -+ -+ Cause: Packets which are sized between 1006-1024 bytes would -+ crash brcm_iscsiuio because brcm_iscsiuio is not sized -+ to handle such large packets -+ -+ Change: Drop large packets, properly hold the NIC mutex lock -+ for the duration when NIC fields are being used. -+ -+ -+uIP v0.5.12 (May 13, 2010) -+======================================================= -+ -+ Fixes -+ ----- -+ 1. Problem: brcm_iscsiuio could crash on when L2 interface is -+ ifdown'ed -+ -+ Cause: The local NIC pointer was not initialized properly -+ in the routine parse_iface() -+ -+ Change: Properly initialize the NIC pointer -+ -+ 2. Problem: Documentation referred to older admin_client which -+ doesn't exist any more because brcm_iscsiuio uses -+ the iscsid iface file -+ -+ Change: Remove the stale references -+ -+ -+uIP v0.5.11 (May 11, 2010) -+======================================================= -+ -+ Fixes -+ ----- -+ 1. Problem: brcm_iscsiuio could crash on invalid packet sizes -+ -+ Cause: The hardware BD could be a large value because of a -+ hardware error -+ -+ Change: Limit the size of the packet dumped to the MTU size -+ -+ Enhancements -+ ------------ -+ -+ 1. Change: During the running of the configure script now -+ the script will check for ar and ranlib binaries -+ -+ -+uIP v0.5.10 (May 03, 2010) -+======================================================= -+ -+ Fixes -+ ----- -+ 1. Problem: BCM57712 not recognized -+ -+ Cause: The PCI ID's in the bnx2x file were missing. -+ -+ Change: Added proper BCM57712, BCM57712E, BCM57713, BCM57713E -+ PCI ID's -+ -+ 2. Problem: (CQ 47481) brcm_iscsiuio not installed in correct location -+ -+ Cause: Default install path for autoconf is /usr/local -+ -+ Change: Change the default prefix to '/' so the brcm_iscsiuio -+ binary is installed to /sbin/ -+ -+ Enhancements -+ ------------ -+ -+ 1. Change: Remove dependency on Yacc and Lex -+ -+ -+uIP v0.5.9 (April 28, 2010) -+======================================================= -+ -+ Fixes -+ ----- -+ 1. Problem: bnx2x T6.0 driver would not login -+ -+ Cause: The bnx2x code was not using the T6.0 HSI offsets -+ -+ Change: Determine to bnx2x driver version eariler to properly use the -+ T4.8 or T6.0 HSI -+ -+ Enhancements -+ ------------ -+ -+ 1. Change: Collapse all the various locks to use the NIC lock to shrink -+ memory footprint -+ -+ 2. Change: Consolidate upper layer checksumming code -+ -+ -+uIP v0.5.5 (March 02, 2010) -+======================================================= -+ -+ Enhancements -+ ------------ -+ -+ 1. Change: Add support for T6.0 bnx2x HSI and 57712. -+ -+ 2. Change: Initial support for IPv6 -+ -+uIP v0.5.8 (April 22, 2010) -+======================================================= -+ -+ Enhancements -+ ------------ -+ -+ 1. Change: Add support for T6.0 bnx2x HSI and 57712. -+ -+ 2. Change: Initial support for IPv6 -+ -+uIP v0.5.7 (March 17, 2010) -+======================================================= -+ -+ Enhancements -+ ------------ -+ -+ 1. Change: Add to documentation on discovering on a particular -+ iface before logging in -+ -+uIP v0.5.6 (Mar 05, 2009) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: bnx2x panic dump would be seen when sending -+ traffic to uIP -+ -+ Cause: The TX producer index was not properly -+ incrementing when the wrapping occured -+ -+ Change: Do not skip the last TX producer index like the -+ TX BD's -+ -+ Impact: None. -+ -+uIP v0.5.5 (March 02, 2010) -+======================================================= -+ Initial release -+ -+ Enhancements -+ ------------ -+ -+ 1. Change: Add to documentation on debugging/logging for uIP -+ -+ -+uIP v0.5.4 (Feb 22, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Compile error where 'ETHERTYPE_VLAN' define -+ is missing -+ -+ Cause: Certain distributions do not define 'ETHERTYPE_VLAN' -+ in the header file "net/ethernet.h". -+ -+ Change: Added proper defines for ETHERTYPE_VLAN when necessary -+ -+ Impact: None. -+ -+ -+uIP v0.5.3 (Feb 18, 2010) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Using VLAN's on offloaded iSCSI connections -+ -+ Cause: (CQ45983) VLAN tags were not being properly inserted -+ when sending the ARP request packets -+ -+ Change: Added VLAN tags when sending ARP request packets -+ -+ Impact: None. -+ -+ -+uIP v0.5.2 (Dec 10, 2009) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: Switching between 10G and 1G iSCSI offloaded -+ devices caused login connectivity problems -+ -+ Cause: The NIC devices within uIP were not cleanup -+ properly. -+ -+ Change: The NIC structure is not re-initialized and the -+ NIC thread is destroyed when the host network -+ interface is brought down. -+ -+ Impact: None. -+ -+ -+uIP v0.5.1 (Dec 9, 2009) -+======================================================= -+ Fixes -+ ----- -+ 1. Problem: 10G devices behind PCI bridges would not collect -+ -+ Cause: PCI bus:slot.func string was parsed incorrectly -+ because the bridge string was used -+ -+ Change: Parse the proper PCI bus:slot.func string. -+ -+ Impact: None. -+ -+ -+uIP v0.5.0b (Nov 24, 2009) -+======================================================= -+ Initial release -+ -+ Enhancements -+ ------------ -+ -+ 1. Change: Add Broadcom 10G iSCSI offload support -+ -+ Impact: Linux -+ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/brcm-iscsi/brcm_iscsi.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/brcm-iscsi/brcm_iscsi.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/brcm-iscsi/brcm_iscsi.c 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/brcm-iscsi/brcm_iscsi.c 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,88 @@ -+/* -+ * Copyright (c) 2009-2011, Broadcom Corporation -+ * -+ * Written by: Benjamin Li -+ * Based on code example from Adam Dunkels -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ */ -+/** -+ * \addtogroup brcm-iscsi -+ * @{ -+ */ -+ -+/** -+ * \file -+ * An example of how to write uIP applications -+ * with protosockets -+ * \author -+ * Benjamin Li -+ */ -+ -+/* -+ * This is a short example of how to write uIP applications using -+ * protosockets. -+ */ -+ -+/* -+ * We define the application state (struct hello_world_state) in the -+ * hello-world.h file, so we need to include it here. We also include -+ * uip.h (since this cannot be included in hello-world.h) and -+ * , since we use the memcpy() function in the code. -+ */ -+#include "brcm_iscsi.h" -+#include "uip.h" -+#include -+#include -+ -+#include "uip_arp.h" -+ -+/*---------------------------------------------------------------------------*/ -+/* -+ * The initialization function. We must explicitly call this function -+ * from the system initialization code, some time after uip_init() is -+ * called. -+ */ -+void brcm_iscsi_init(void) -+{ -+} -+ -+/*---------------------------------------------------------------------------*/ -+/* -+ * In hello-world.h we have defined the UIP_APPCALL macro to -+ * hello_world_appcall so that this funcion is uIP's application -+ * function. This function is called whenever an uIP event occurs -+ * (e.g. when a new connection is established, new data arrives, sent -+ * data is acknowledged, data needs to be retransmitted, etc.). -+ */ -+void brcm_iscsi_appcall(struct uip_stack *ustack) -+{ -+} -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/brcm-iscsi/brcm_iscsi.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/brcm-iscsi/brcm_iscsi.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/brcm-iscsi/brcm_iscsi.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/brcm-iscsi/brcm_iscsi.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,90 @@ -+/* -+ * Copyright (c) 2009-2011, Broadcom Corporation -+ * -+ * Written by: Benjamin Li -+ * Based on code example from Adam Dunkels -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ */ -+/** -+ * \addtogroup apps -+ * @{ -+ */ -+ -+/** -+ * \defgroup helloworld Hello, world -+ * @{ -+ * -+ * A small example showing how to write applications with -+ * \ref psock "protosockets". -+ */ -+ -+/** -+ * \file -+ * Header file for an example of how to write uIP applications -+ * with protosockets. -+ * \author -+ * Benjamin Li -+ */ -+ -+#ifndef __BRCM_ISCSI_H__ -+#define __BRCM_ISCSI_H__ -+ -+/* Since this file will be included by uip.h, we cannot include uip.h -+ here. But we might need to include uipopt.h if we need the u8_t and -+ u16_t datatypes. */ -+#include "uipopt.h" -+#include "uip.h" -+#include "psock.h" -+ -+/* Next, we define the uip_tcp_appstate_t datatype. This is the state -+ of our application, and the memory required for this state is -+ allocated together with each TCP connection. One application state -+ for each TCP connection. */ -+typedef struct hello_world_state { -+ struct psock p; -+ u8_t inputbuffer[32]; -+ u8_t name[40]; -+ -+ struct uip_udp_conn *conn; -+} uip_tcp_appstate_t; -+ -+/* Finally we define the application function to be called by uIP. */ -+void brcm_iscsi_appcall(struct uip_stack *ustack); -+#ifndef UIP_APPCALL -+#define UIP_APPCALL brcm_iscsi_appcall -+#endif /* UIP_APPCALL */ -+ -+void brcm_iscsi_init(void); -+ -+#endif /* __BRCM_ISCSI_H__ */ -+/** @} */ -+/** @} */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/brcm-iscsi/Makefile.am open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/brcm-iscsi/Makefile.am ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/brcm-iscsi/Makefile.am 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/brcm-iscsi/Makefile.am 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,12 @@ -+INCLUDES = -I${top_srcdir}/src/unix \ -+ -I${top_srcdir}/src/uip \ -+ -I${top_srcdir}/src/apps/dhcpc \ -+ -I${top_srcdir}/src/apps/brcm-iscsi \ -+ -I${top_srcdir}/include -+ -+noinst_LIBRARIES = lib_apps_brcm_iscsi.a -+ -+lib_apps_brcm_iscsi_a_SOURCES = brcm_iscsi.c -+ -+lib_apps_brcm_iscsi_a_CFLAGS = $(AM_CFLAGS) \ -+ -DBYTE_ORDER=@ENDIAN@ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/brcm-iscsi/Makefile.brcm-iscsi open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/brcm-iscsi/Makefile.brcm-iscsi ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/brcm-iscsi/Makefile.brcm-iscsi 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/brcm-iscsi/Makefile.brcm-iscsi 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1 @@ -+APP_SOURCES += brcm-iscsi.c -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/brcm-iscsi/Makefile.in open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/brcm-iscsi/Makefile.in ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/brcm-iscsi/Makefile.in 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/brcm-iscsi/Makefile.in 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,445 @@ -+# Makefile.in generated by automake 1.9.6 from Makefile.am. -+# @configure_input@ -+ -+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -+# 2003, 2004, 2005 Free Software Foundation, Inc. -+# This Makefile.in 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. -+ -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -+# PARTICULAR PURPOSE. -+ -+@SET_MAKE@ -+ -+srcdir = @srcdir@ -+top_srcdir = @top_srcdir@ -+VPATH = @srcdir@ -+pkgdatadir = $(datadir)/@PACKAGE@ -+pkglibdir = $(libdir)/@PACKAGE@ -+pkgincludedir = $(includedir)/@PACKAGE@ -+top_builddir = ../../.. -+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -+INSTALL = @INSTALL@ -+install_sh_DATA = $(install_sh) -c -m 644 -+install_sh_PROGRAM = $(install_sh) -c -+install_sh_SCRIPT = $(install_sh) -c -+INSTALL_HEADER = $(INSTALL_DATA) -+transform = $(program_transform_name) -+NORMAL_INSTALL = : -+PRE_INSTALL = : -+POST_INSTALL = : -+NORMAL_UNINSTALL = : -+PRE_UNINSTALL = : -+POST_UNINSTALL = : -+build_triplet = @build@ -+host_triplet = @host@ -+subdir = src/apps/brcm-iscsi -+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -+am__aclocal_m4_deps = $(top_srcdir)/configure.ac -+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ -+ $(ACLOCAL_M4) -+mkinstalldirs = $(install_sh) -d -+CONFIG_HEADER = $(top_builddir)/config.h -+CONFIG_CLEAN_FILES = -+LIBRARIES = $(noinst_LIBRARIES) -+ARFLAGS = cru -+lib_apps_brcm_iscsi_a_AR = $(AR) $(ARFLAGS) -+lib_apps_brcm_iscsi_a_LIBADD = -+am_lib_apps_brcm_iscsi_a_OBJECTS = \ -+ lib_apps_brcm_iscsi_a-brcm_iscsi.$(OBJEXT) -+lib_apps_brcm_iscsi_a_OBJECTS = $(am_lib_apps_brcm_iscsi_a_OBJECTS) -+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -+depcomp = $(SHELL) $(top_srcdir)/depcomp -+am__depfiles_maybe = depfiles -+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ -+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ -+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ -+ $(AM_CFLAGS) $(CFLAGS) -+CCLD = $(CC) -+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ -+ $(AM_LDFLAGS) $(LDFLAGS) -o $@ -+SOURCES = $(lib_apps_brcm_iscsi_a_SOURCES) -+DIST_SOURCES = $(lib_apps_brcm_iscsi_a_SOURCES) -+ETAGS = etags -+CTAGS = ctags -+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -+ACLOCAL = @ACLOCAL@ -+AMDEP_FALSE = @AMDEP_FALSE@ -+AMDEP_TRUE = @AMDEP_TRUE@ -+AMTAR = @AMTAR@ -+AR = @AR@ -+AUTOCONF = @AUTOCONF@ -+AUTOHEADER = @AUTOHEADER@ -+AUTOMAKE = @AUTOMAKE@ -+AWK = @AWK@ -+BASH = @BASH@ -+CC = @CC@ -+CCDEPMODE = @CCDEPMODE@ -+CFLAGS = @CFLAGS@ -+CPP = @CPP@ -+CPPFLAGS = @CPPFLAGS@ -+CXX = @CXX@ -+CXXCPP = @CXXCPP@ -+CXXDEPMODE = @CXXDEPMODE@ -+CXXFLAGS = @CXXFLAGS@ -+CYGPATH_W = @CYGPATH_W@ -+DEBUG_FALSE = @DEBUG_FALSE@ -+DEBUG_TRUE = @DEBUG_TRUE@ -+DEFS = @DEFS@ -+DEPDIR = @DEPDIR@ -+ECHO = @ECHO@ -+ECHO_C = @ECHO_C@ -+ECHO_N = @ECHO_N@ -+ECHO_T = @ECHO_T@ -+EGREP = @EGREP@ -+ENDIAN = @ENDIAN@ -+EXEEXT = @EXEEXT@ -+F77 = @F77@ -+FFLAGS = @FFLAGS@ -+INSTALL_DATA = @INSTALL_DATA@ -+INSTALL_PROGRAM = @INSTALL_PROGRAM@ -+INSTALL_SCRIPT = @INSTALL_SCRIPT@ -+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -+LDFLAGS = @LDFLAGS@ -+LIBOBJS = @LIBOBJS@ -+LIBS = @LIBS@ -+LIBTOOL = @LIBTOOL@ -+LN_S = @LN_S@ -+LTLIBOBJS = @LTLIBOBJS@ -+MAKEINFO = @MAKEINFO@ -+OBJEXT = @OBJEXT@ -+PACKAGE = @PACKAGE@ -+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -+PACKAGE_NAME = @PACKAGE_NAME@ -+PACKAGE_STRING = @PACKAGE_STRING@ -+PACKAGE_TARNAME = @PACKAGE_TARNAME@ -+PACKAGE_VERSION = @PACKAGE_VERSION@ -+PATH_SEPARATOR = @PATH_SEPARATOR@ -+RANLIB = @RANLIB@ -+SED = @SED@ -+SET_MAKE = @SET_MAKE@ -+SHELL = @SHELL@ -+STRIP = @STRIP@ -+VERSION = @VERSION@ -+ac_ct_AR = @ac_ct_AR@ -+ac_ct_CC = @ac_ct_CC@ -+ac_ct_CXX = @ac_ct_CXX@ -+ac_ct_F77 = @ac_ct_F77@ -+ac_ct_RANLIB = @ac_ct_RANLIB@ -+ac_ct_STRIP = @ac_ct_STRIP@ -+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ -+am__include = @am__include@ -+am__leading_dot = @am__leading_dot@ -+am__quote = @am__quote@ -+am__tar = @am__tar@ -+am__untar = @am__untar@ -+bindir = @bindir@ -+build = @build@ -+build_alias = @build_alias@ -+build_cpu = @build_cpu@ -+build_os = @build_os@ -+build_vendor = @build_vendor@ -+datadir = @datadir@ -+exec_prefix = @exec_prefix@ -+host = @host@ -+host_alias = @host_alias@ -+host_cpu = @host_cpu@ -+host_os = @host_os@ -+host_vendor = @host_vendor@ -+includedir = @includedir@ -+infodir = @infodir@ -+install_sh = @install_sh@ -+libdir = @libdir@ -+libexecdir = @libexecdir@ -+localstatedir = @localstatedir@ -+mandir = @mandir@ -+mkdir_p = @mkdir_p@ -+oldincludedir = @oldincludedir@ -+prefix = @prefix@ -+program_transform_name = @program_transform_name@ -+sbindir = @sbindir@ -+sharedstatedir = @sharedstatedir@ -+sysconfdir = @sysconfdir@ -+target_alias = @target_alias@ -+INCLUDES = -I${top_srcdir}/src/unix \ -+ -I${top_srcdir}/src/uip \ -+ -I${top_srcdir}/src/apps/dhcpc \ -+ -I${top_srcdir}/src/apps/brcm-iscsi \ -+ -I${top_srcdir}/include -+ -+noinst_LIBRARIES = lib_apps_brcm_iscsi.a -+lib_apps_brcm_iscsi_a_SOURCES = brcm_iscsi.c -+lib_apps_brcm_iscsi_a_CFLAGS = $(AM_CFLAGS) \ -+ -DBYTE_ORDER=@ENDIAN@ -+ -+all: all-am -+ -+.SUFFIXES: -+.SUFFIXES: .c .lo .o .obj -+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) -+ @for dep in $?; do \ -+ case '$(am__configure_deps)' in \ -+ *$$dep*) \ -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ -+ && exit 0; \ -+ exit 1;; \ -+ esac; \ -+ done; \ -+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/apps/brcm-iscsi/Makefile'; \ -+ cd $(top_srcdir) && \ -+ $(AUTOMAKE) --gnu src/apps/brcm-iscsi/Makefile -+.PRECIOUS: Makefile -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ @case '$?' in \ -+ *config.status*) \ -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ -+ *) \ -+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ -+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ -+ esac; -+ -+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+ -+$(top_srcdir)/configure: $(am__configure_deps) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+$(ACLOCAL_M4): $(am__aclocal_m4_deps) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+ -+clean-noinstLIBRARIES: -+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -+lib_apps_brcm_iscsi.a: $(lib_apps_brcm_iscsi_a_OBJECTS) $(lib_apps_brcm_iscsi_a_DEPENDENCIES) -+ -rm -f lib_apps_brcm_iscsi.a -+ $(lib_apps_brcm_iscsi_a_AR) lib_apps_brcm_iscsi.a $(lib_apps_brcm_iscsi_a_OBJECTS) $(lib_apps_brcm_iscsi_a_LIBADD) -+ $(RANLIB) lib_apps_brcm_iscsi.a -+ -+mostlyclean-compile: -+ -rm -f *.$(OBJEXT) -+ -+distclean-compile: -+ -rm -f *.tab.c -+ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_apps_brcm_iscsi_a-brcm_iscsi.Po@am__quote@ -+ -+.c.o: -+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(COMPILE) -c $< -+ -+.c.obj: -+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` -+ -+.c.lo: -+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< -+ -+lib_apps_brcm_iscsi_a-brcm_iscsi.o: brcm_iscsi.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_apps_brcm_iscsi_a_CFLAGS) $(CFLAGS) -MT lib_apps_brcm_iscsi_a-brcm_iscsi.o -MD -MP -MF "$(DEPDIR)/lib_apps_brcm_iscsi_a-brcm_iscsi.Tpo" -c -o lib_apps_brcm_iscsi_a-brcm_iscsi.o `test -f 'brcm_iscsi.c' || echo '$(srcdir)/'`brcm_iscsi.c; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib_apps_brcm_iscsi_a-brcm_iscsi.Tpo" "$(DEPDIR)/lib_apps_brcm_iscsi_a-brcm_iscsi.Po"; else rm -f "$(DEPDIR)/lib_apps_brcm_iscsi_a-brcm_iscsi.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='brcm_iscsi.c' object='lib_apps_brcm_iscsi_a-brcm_iscsi.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_apps_brcm_iscsi_a_CFLAGS) $(CFLAGS) -c -o lib_apps_brcm_iscsi_a-brcm_iscsi.o `test -f 'brcm_iscsi.c' || echo '$(srcdir)/'`brcm_iscsi.c -+ -+lib_apps_brcm_iscsi_a-brcm_iscsi.obj: brcm_iscsi.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_apps_brcm_iscsi_a_CFLAGS) $(CFLAGS) -MT lib_apps_brcm_iscsi_a-brcm_iscsi.obj -MD -MP -MF "$(DEPDIR)/lib_apps_brcm_iscsi_a-brcm_iscsi.Tpo" -c -o lib_apps_brcm_iscsi_a-brcm_iscsi.obj `if test -f 'brcm_iscsi.c'; then $(CYGPATH_W) 'brcm_iscsi.c'; else $(CYGPATH_W) '$(srcdir)/brcm_iscsi.c'; fi`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib_apps_brcm_iscsi_a-brcm_iscsi.Tpo" "$(DEPDIR)/lib_apps_brcm_iscsi_a-brcm_iscsi.Po"; else rm -f "$(DEPDIR)/lib_apps_brcm_iscsi_a-brcm_iscsi.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='brcm_iscsi.c' object='lib_apps_brcm_iscsi_a-brcm_iscsi.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_apps_brcm_iscsi_a_CFLAGS) $(CFLAGS) -c -o lib_apps_brcm_iscsi_a-brcm_iscsi.obj `if test -f 'brcm_iscsi.c'; then $(CYGPATH_W) 'brcm_iscsi.c'; else $(CYGPATH_W) '$(srcdir)/brcm_iscsi.c'; fi` -+ -+mostlyclean-libtool: -+ -rm -f *.lo -+ -+clean-libtool: -+ -rm -rf .libs _libs -+ -+distclean-libtool: -+ -rm -f libtool -+uninstall-info-am: -+ -+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) ' { files[$$0] = 1; } \ -+ END { for (i in files) print i; }'`; \ -+ mkid -fID $$unique -+tags: TAGS -+ -+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ here=`pwd`; \ -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) ' { files[$$0] = 1; } \ -+ END { for (i in files) print i; }'`; \ -+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ -+ test -n "$$unique" || unique=$$empty_fix; \ -+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ -+ $$tags $$unique; \ -+ fi -+ctags: CTAGS -+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ here=`pwd`; \ -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) ' { files[$$0] = 1; } \ -+ END { for (i in files) print i; }'`; \ -+ test -z "$(CTAGS_ARGS)$$tags$$unique" \ -+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ -+ $$tags $$unique -+ -+GTAGS: -+ here=`$(am__cd) $(top_builddir) && pwd` \ -+ && cd $(top_srcdir) \ -+ && gtags -i $(GTAGS_ARGS) $$here -+ -+distclean-tags: -+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -+ -+distdir: $(DISTFILES) -+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ -+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ -+ list='$(DISTFILES)'; for file in $$list; do \ -+ case $$file in \ -+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ -+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ -+ esac; \ -+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ -+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ -+ dir="/$$dir"; \ -+ $(mkdir_p) "$(distdir)$$dir"; \ -+ else \ -+ dir=''; \ -+ fi; \ -+ if test -d $$d/$$file; then \ -+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ -+ fi; \ -+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ -+ else \ -+ test -f $(distdir)/$$file \ -+ || cp -p $$d/$$file $(distdir)/$$file \ -+ || exit 1; \ -+ fi; \ -+ done -+check-am: all-am -+check: check-am -+all-am: Makefile $(LIBRARIES) -+installdirs: -+install: install-am -+install-exec: install-exec-am -+install-data: install-data-am -+uninstall: uninstall-am -+ -+install-am: all-am -+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -+ -+installcheck: installcheck-am -+install-strip: -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ `test -z '$(STRIP)' || \ -+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -+mostlyclean-generic: -+ -+clean-generic: -+ -+distclean-generic: -+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -+ -+maintainer-clean-generic: -+ @echo "This command is intended for maintainers to use" -+ @echo "it deletes files that may require special tools to rebuild." -+clean: clean-am -+ -+clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ -+ mostlyclean-am -+ -+distclean: distclean-am -+ -rm -rf ./$(DEPDIR) -+ -rm -f Makefile -+distclean-am: clean-am distclean-compile distclean-generic \ -+ distclean-libtool distclean-tags -+ -+dvi: dvi-am -+ -+dvi-am: -+ -+html: html-am -+ -+info: info-am -+ -+info-am: -+ -+install-data-am: -+ -+install-exec-am: -+ -+install-info: install-info-am -+ -+install-man: -+ -+installcheck-am: -+ -+maintainer-clean: maintainer-clean-am -+ -rm -rf ./$(DEPDIR) -+ -rm -f Makefile -+maintainer-clean-am: distclean-am maintainer-clean-generic -+ -+mostlyclean: mostlyclean-am -+ -+mostlyclean-am: mostlyclean-compile mostlyclean-generic \ -+ mostlyclean-libtool -+ -+pdf: pdf-am -+ -+pdf-am: -+ -+ps: ps-am -+ -+ps-am: -+ -+uninstall-am: uninstall-info-am -+ -+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ -+ clean-libtool clean-noinstLIBRARIES ctags distclean \ -+ distclean-compile distclean-generic distclean-libtool \ -+ distclean-tags distdir dvi dvi-am html html-am info info-am \ -+ install install-am install-data install-data-am install-exec \ -+ install-exec-am install-info install-info-am install-man \ -+ install-strip installcheck installcheck-am installdirs \ -+ maintainer-clean maintainer-clean-generic mostlyclean \ -+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ -+ pdf pdf-am ps ps-am tags uninstall uninstall-am \ -+ uninstall-info-am -+ -+# Tell versions [3.59,3.63) of GNU make to not export all variables. -+# Otherwise a system limit (for SysV at least) may be exceeded. -+.NOEXPORT: -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/dhcpc/dhcpc.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/dhcpc/dhcpc.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/dhcpc/dhcpc.c 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/dhcpc/dhcpc.c 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,423 @@ -+/* -+ * Copyright (c) 2005, Swedish Institute of Computer Science -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. Neither the name of the Institute nor the names of its contributors -+ * may be used to endorse or promote products derived from this software -+ * without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE -+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ * This file is part of the uIP TCP/IP stack -+ * -+ * @(#)$Id: dhcpc.c,v 1.2 2006/06/11 21:46:37 adam Exp $ -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "uip.h" -+#include "dhcpc.h" -+#include "timer.h" -+#include "pt.h" -+ -+#include "debug.h" -+#include "logger.h" -+#include "nic.h" -+#include "nic_utils.h" -+ -+struct __attribute__ ((__packed__)) dhcp_msg { -+ u8_t op, htype, hlen, hops; -+ u8_t xid[4]; -+ u16_t secs, flags; -+ u8_t ciaddr[4]; -+ u8_t yiaddr[4]; -+ u8_t siaddr[4]; -+ u8_t giaddr[4]; -+ u8_t chaddr[16]; -+#ifndef UIP_CONF_DHCP_LIGHT -+ u8_t sname[64]; -+ u8_t file[128]; -+#endif -+ u8_t options[312]; -+}; -+ -+#define BOOTP_BROADCAST 0x8000 -+ -+#define DHCP_REQUEST 1 -+#define DHCP_REPLY 2 -+#define DHCP_HTYPE_ETHERNET 1 -+#define DHCP_HLEN_ETHERNET 6 -+#define DHCP_MSG_LEN 236 -+ -+#define DHCPC_SERVER_PORT 67 -+#define DHCPC_CLIENT_PORT 68 -+ -+#define DHCPDISCOVER 1 -+#define DHCPOFFER 2 -+#define DHCPREQUEST 3 -+#define DHCPDECLINE 4 -+#define DHCPACK 5 -+#define DHCPNAK 6 -+#define DHCPRELEASE 7 -+ -+#define DHCP_OPTION_SUBNET_MASK 1 -+#define DHCP_OPTION_ROUTER 3 -+#define DHCP_OPTION_DNS_SERVER 6 -+#define DHCP_OPTION_REQ_IPADDR 50 -+#define DHCP_OPTION_LEASE_TIME 51 -+#define DHCP_OPTION_MSG_TYPE 53 -+#define DHCP_OPTION_SERVER_ID 54 -+#define DHCP_OPTION_REQ_LIST 55 -+#define DHCP_OPTION_END 255 -+ -+static u8_t xid[4] = { 0xad, 0xde, 0x12, 0x23 }; -+static const u8_t magic_cookie[4] = { 99, 130, 83, 99 }; -+ -+struct dhcpc_options dhcpc_opt = { -+ .enable_random_xid = 1, -+}; -+ -+/*---------------------------------------------------------------------------*/ -+static u8_t *add_msg_type(u8_t * optptr, u8_t type) -+{ -+ *optptr++ = DHCP_OPTION_MSG_TYPE; -+ *optptr++ = 1; -+ *optptr++ = type; -+ return optptr; -+} -+ -+/*---------------------------------------------------------------------------*/ -+static u8_t *add_server_id(struct dhcpc_state *s, u8_t * optptr) -+{ -+ *optptr++ = DHCP_OPTION_SERVER_ID; -+ *optptr++ = 4; -+ memcpy(optptr, s->serverid, 4); -+ return optptr + 4; -+} -+ -+/*---------------------------------------------------------------------------*/ -+static u8_t *add_req_ipaddr(struct dhcpc_state *s, u8_t * optptr) -+{ -+ *optptr++ = DHCP_OPTION_REQ_IPADDR; -+ *optptr++ = 4; -+ memcpy(optptr, s->ipaddr, 4); -+ return optptr + 4; -+} -+ -+/*---------------------------------------------------------------------------*/ -+static u8_t *add_req_options(u8_t * optptr) -+{ -+ *optptr++ = DHCP_OPTION_REQ_LIST; -+ *optptr++ = 3; -+ *optptr++ = DHCP_OPTION_SUBNET_MASK; -+ *optptr++ = DHCP_OPTION_ROUTER; -+ *optptr++ = DHCP_OPTION_DNS_SERVER; -+ return optptr; -+} -+ -+/*---------------------------------------------------------------------------*/ -+static u8_t *add_end(u8_t * optptr) -+{ -+ *optptr++ = DHCP_OPTION_END; -+ return optptr; -+} -+ -+/*---------------------------------------------------------------------------*/ -+static void create_msg(struct dhcpc_state *s, struct dhcp_msg *m) -+{ -+ m->op = DHCP_REQUEST; -+ m->htype = DHCP_HTYPE_ETHERNET; -+ m->hlen = s->mac_len; -+ m->hops = 0; -+ memcpy(m->xid, xid, sizeof(m->xid)); -+ m->secs = 0; -+ m->flags = const_htons(BOOTP_BROADCAST); /* Broadcast bit. */ -+ /* uip_ipaddr_copy(m->ciaddr, uip_hostaddr); */ -+ memcpy(m->ciaddr, s->ustack->hostaddr, sizeof(m->ciaddr)); -+ memset(m->yiaddr, 0, sizeof(m->yiaddr)); -+ memset(m->siaddr, 0, sizeof(m->siaddr)); -+ memset(m->giaddr, 0, sizeof(m->giaddr)); -+ memcpy(m->chaddr, s->mac_addr, s->mac_len); -+ memset(&m->chaddr[s->mac_len], 0, sizeof(m->chaddr) - s->mac_len); -+#ifndef UIP_CONF_DHCP_LIGHT -+ memset(m->sname, 0, sizeof(m->sname)); -+ memset(m->file, 0, sizeof(m->file)); -+#endif -+ -+ memcpy(m->options, magic_cookie, sizeof(magic_cookie)); -+} -+ -+/*---------------------------------------------------------------------------*/ -+static void send_discover(struct dhcpc_state *s) -+{ -+ u8_t *end; -+ struct dhcp_msg *m = (struct dhcp_msg *)s->ustack->uip_appdata; -+ -+ create_msg(s, m); -+ -+ end = add_msg_type(&m->options[4], DHCPDISCOVER); -+ end = add_req_options(end); -+ end = add_end(end); -+ -+ uip_appsend(s->ustack, s->ustack->uip_appdata, -+ end - (u8_t *) s->ustack->uip_appdata); -+} -+ -+/*---------------------------------------------------------------------------*/ -+static void send_request(struct dhcpc_state *s) -+{ -+ u8_t *end; -+ struct dhcp_msg *m = (struct dhcp_msg *)s->ustack->uip_appdata; -+ -+ create_msg(s, m); -+ -+ end = add_msg_type(&m->options[4], DHCPREQUEST); -+ end = add_server_id(s, end); -+ end = add_req_ipaddr(s, end); -+ end = add_end(end); -+ -+ uip_appsend(s->ustack, s->ustack->uip_appdata, -+ end - (u8_t *) s->ustack->uip_appdata); -+} -+ -+/*---------------------------------------------------------------------------*/ -+static u8_t parse_options(struct dhcpc_state *s, u8_t * optptr, int len) -+{ -+ u8_t *end = optptr + len; -+ u8_t type = 0; -+ -+ while (optptr < end) { -+ switch (*optptr) { -+ case DHCP_OPTION_SUBNET_MASK: -+ memcpy(s->netmask, optptr + 2, 4); -+ break; -+ case DHCP_OPTION_ROUTER: -+ memcpy(s->default_router, optptr + 2, 4); -+ break; -+ case DHCP_OPTION_DNS_SERVER: -+ memcpy(s->dnsaddr, optptr + 2, 4); -+ break; -+ case DHCP_OPTION_MSG_TYPE: -+ type = *(optptr + 2); -+ break; -+ case DHCP_OPTION_SERVER_ID: -+ memcpy(s->serverid, optptr + 2, 4); -+ break; -+ case DHCP_OPTION_LEASE_TIME: -+ memcpy(s->lease_time, optptr + 2, 4); -+ break; -+ case DHCP_OPTION_END: -+ return type; -+ } -+ -+ optptr += optptr[1] + 2; -+ } -+ return type; -+} -+ -+/*---------------------------------------------------------------------------*/ -+static u8_t parse_msg(struct dhcpc_state *s) -+{ -+ struct dhcp_msg *m = (struct dhcp_msg *)s->ustack->uip_appdata; -+ -+ if (m->op == DHCP_REPLY && -+ memcmp(m->xid, xid, sizeof(xid)) == 0 && -+ memcmp(m->chaddr, s->mac_addr, s->mac_len) == 0) { -+ memcpy(s->ipaddr, m->yiaddr, 4); -+ return parse_options(s, &m->options[4], uip_datalen(s->ustack)); -+ } -+ return 0; -+} -+ -+/*---------------------------------------------------------------------------*/ -+static PT_THREAD(handle_dhcp(struct uip_stack *ustack)) -+{ -+ struct dhcpc_state *s; -+ s = ustack->dhcpc; -+ -+ if (s == NULL) { -+ LOG_WARN("Could not find dhcpc state"); -+ return PT_ENDED; -+ } -+ -+ PT_BEGIN(&s->pt); -+ -+ /* try_again: */ -+ s->state = STATE_SENDING; -+ s->ticks = CLOCK_SECOND; -+ -+ do { -+ send_discover(s); -+ timer_set(&s->timer, s->ticks); -+ PT_WAIT_UNTIL(&s->pt, uip_newdata(s->ustack) -+ || timer_expired(&s->timer)); -+ -+ if (uip_newdata(s->ustack) && parse_msg(s) == DHCPOFFER) { -+ s->state = STATE_OFFER_RECEIVED; -+ break; -+ } -+ -+ if (s->ticks < CLOCK_SECOND * 60) { -+ s->ticks += CLOCK_SECOND; -+ } else { -+ PT_RESTART(&s->pt); -+ } -+ } while (s->state != STATE_OFFER_RECEIVED); -+ -+ s->ticks = CLOCK_SECOND; -+ -+ do { -+ send_request(s); -+ timer_set(&s->timer, s->ticks); -+ s->ustack->uip_flags &= ~UIP_NEWDATA; -+ PT_WAIT_UNTIL(&s->pt, uip_newdata(s->ustack) -+ || timer_expired(&s->timer)); -+ -+ if (uip_newdata(s->ustack) && parse_msg(s) == DHCPACK) { -+ s->state = STATE_CONFIG_RECEIVED; -+ break; -+ } -+ -+ if (s->ticks <= CLOCK_SECOND * 10) { -+ s->ticks += CLOCK_SECOND; -+ } else { -+ PT_RESTART(&s->pt); -+ } -+ } while (s->state != STATE_CONFIG_RECEIVED); -+ -+ LOG_INFO("Got IP address %d.%d.%d.%d", -+ uip_ipaddr1(s->ipaddr), uip_ipaddr2(s->ipaddr), -+ uip_ipaddr3(s->ipaddr), uip_ipaddr4(s->ipaddr)); -+ LOG_INFO("Got netmask %d.%d.%d.%d", -+ uip_ipaddr1(s->netmask), uip_ipaddr2(s->netmask), -+ uip_ipaddr3(s->netmask), uip_ipaddr4(s->netmask)); -+ LOG_INFO("Got DNS server %d.%d.%d.%d", -+ uip_ipaddr1(s->dnsaddr), uip_ipaddr2(s->dnsaddr), -+ uip_ipaddr3(s->dnsaddr), uip_ipaddr4(s->dnsaddr)); -+ LOG_INFO("Got default router %d.%d.%d.%d", -+ uip_ipaddr1(s->default_router), uip_ipaddr2(s->default_router), -+ uip_ipaddr3(s->default_router), -+ uip_ipaddr4(s->default_router)); -+ s->lease_time_nl32 = -+ ntohs(s->lease_time[0]) * 65536ul + ntohs(s->lease_time[1]); -+ LOG_INFO("Lease expires in %ld seconds", s->lease_time_nl32); -+ -+ s->last_update = time(NULL); -+ -+ set_uip_stack(s->ustack, -+ (uip_ip4addr_t *) s->ipaddr, -+ (uip_ip4addr_t *) s->netmask, -+ (uip_ip4addr_t *) s->default_router, -+ (uint8_t *) s->mac_addr); -+ -+ /* Put the stack thread back into a long sleep */ -+ s->nic->state |= NIC_LONG_SLEEP; -+ -+ /* timer_stop(&s.timer); */ -+ -+ /* Handle DHCP lease expiration */ -+ s->ticks = CLOCK_SECOND * s->lease_time_nl32; -+ timer_set(&s->timer, s->ticks); -+ PT_WAIT_UNTIL(&s->pt, timer_expired(&s->timer)); -+ LOG_INFO("Lease expired, re-acquire IP address"); -+ s->nic->state &= ~NIC_LONG_SLEEP; -+ PT_RESTART(&s->pt); -+ -+ /* -+ * PT_END restarts the thread so we do this instead. Eventually we -+ * should reacquire expired leases here. -+ */ -+ -+ while (1) { -+ PT_YIELD(&s->pt); -+ } -+ -+ PT_END(&(s->pt)); -+} -+ -+/*---------------------------------------------------------------------------*/ -+int dhcpc_init(nic_t * nic, struct uip_stack *ustack, -+ const void *mac_addr, int mac_len) -+{ -+ uip_ip4addr_t addr; -+ struct dhcpc_state *s = ustack->dhcpc; -+ -+ if (s) { -+ LOG_DEBUG("DHCP: DHCP context already allocated"); -+ return -EALREADY; -+ } -+ s = malloc(sizeof(*s)); -+ if (s == NULL) { -+ LOG_ERR("Couldn't allocate size for dhcpc info"); -+ return -ENOMEM; -+ } -+ -+ memset(s, 0, sizeof(*s)); -+ s->nic = nic; -+ s->ustack = ustack; -+ s->mac_addr = mac_addr; -+ s->mac_len = mac_len; -+ s->state = STATE_INITIAL; -+ -+ /* Initialize XID to randomly */ -+ if (dhcpc_opt.enable_random_xid == 1) { -+ u32_t gen_xid; -+ gen_xid = random(); -+ memcpy(xid, &gen_xid, sizeof(gen_xid)); -+ } -+ uip_ipaddr(addr, 255, 255, 255, 255); -+ s->conn = uip_udp_new(ustack, &addr, const_htons(DHCPC_SERVER_PORT)); -+ if (s->conn != NULL) { -+ uip_udp_bind(s->conn, const_htons(DHCPC_CLIENT_PORT)); -+ } -+ -+ ustack->dhcpc = s; -+ -+ /* Let the RX poll value take over */ -+ nic->state &= ~NIC_LONG_SLEEP; -+ -+ PT_INIT(&s->pt); -+ -+ return 0; -+} -+ -+/*---------------------------------------------------------------------------*/ -+void dhcpc_appcall(struct uip_stack *ustack) -+{ -+ handle_dhcp(ustack); -+} -+ -+/*---------------------------------------------------------------------------*/ -+void dhcpc_request(struct uip_stack *ustack) -+{ -+ struct dhcpc_state *s = ustack->dhcpc; -+ -+ if (s != NULL && s->state == STATE_INITIAL) { -+ handle_dhcp(ustack); -+ } -+} -+ -+/*---------------------------------------------------------------------------*/ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/dhcpc/dhcpc.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/dhcpc/dhcpc.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/dhcpc/dhcpc.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/dhcpc/dhcpc.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,88 @@ -+/* -+ * Copyright (c) 2005, Swedish Institute of Computer Science -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. Neither the name of the Institute nor the names of its contributors -+ * may be used to endorse or promote products derived from this software -+ * without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE -+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ * This file is part of the uIP TCP/IP stack -+ * -+ * @(#)$Id: dhcpc.h,v 1.3 2006/06/11 21:46:37 adam Exp $ -+ */ -+#ifndef __DHCPC_H__ -+#define __DHCPC_H__ -+ -+#include -+ -+#include "nic.h" -+#include "timer.h" -+#include "pt.h" -+#include "uip.h" -+ -+#define STATE_INITIAL 0 -+#define STATE_SENDING 1 -+#define STATE_OFFER_RECEIVED 2 -+#define STATE_CONFIG_RECEIVED 3 -+ -+struct dhcpc_state { -+ struct pt pt; -+ -+ nic_t *nic; -+ struct uip_stack *ustack; -+ char state; -+ struct uip_udp_conn *conn; -+ struct timer timer; -+ u32_t ticks; -+ const void *mac_addr; -+ int mac_len; -+ -+ u8_t serverid[4]; -+ -+ u16_t lease_time[2]; -+ u32_t lease_time_nl32; -+ u16_t ipaddr[2]; -+ u16_t netmask[2]; -+ u16_t dnsaddr[2]; -+ u16_t default_router[2]; -+ -+ time_t last_update; -+}; -+ -+struct dhcpc_options { -+ u8_t enable_random_xid; -+ u8_t xid[4]; -+}; -+ -+int dhcpc_init(nic_t * nic, struct uip_stack *ustack, -+ const void *mac_addr, int mac_len); -+void dhcpc_request(struct uip_stack *ustack); -+ -+void dhcpc_appcall(struct uip_stack *ustack); -+ -+void dhcpc_configured(const struct dhcpc_state *s); -+ -+typedef struct dhcpc_state uip_udp_appstate_t; -+#define UIP_UDP_APPCALL dhcpc_appcall -+ -+#endif /* __DHCPC_H__ */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/dhcpc/dhcpv6.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/dhcpc/dhcpv6.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/dhcpc/dhcpv6.c 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/dhcpc/dhcpv6.c 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,515 @@ -+/* -+ * Copyright (c) 2011, Broadcom Corporation -+ * -+ * Written by: Eddie Wai -+ * Based on code from Kevin Tran's iSCSI boot code -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * dhcpv6.c - DHCPv6 engine -+ * -+ */ -+#include -+#include -+ -+#include "ipv6.h" -+#include "ipv6_pkt.h" -+#include "dhcpv6.h" -+#include "logger.h" -+ -+/* Local function prototypes */ -+STATIC int dhcpv6_send_solicit_packet(pDHCPV6_CONTEXT dhcpv6_context); -+STATIC int dhcpv6_send_request_packet(pDHCPV6_CONTEXT dhcpv6_context); -+STATIC u16_t dhcpv6_init_packet(pDHCPV6_CONTEXT dhcpv6_context, u8_t type); -+STATIC void dhcpv6_init_dhcpv6_server_addr(pIPV6_ADDR addr); -+//STATIC int dhcpv6_wait_for_dhcp_done(pPACKET_IPV6 pkt,int timeout); -+STATIC void dhcpv6_handle_advertise(pDHCPV6_CONTEXT dhcpv6_context, -+ u16_t dhcpv6_len); -+STATIC void dhcpv6_handle_reply(pDHCPV6_CONTEXT dhcpv6_context, -+ u16_t dhcpv6_len); -+STATIC int dhcpv6_process_opt_ia_na(pDHCPV6_CONTEXT dhcpv6_context, -+ pDHCPV6_OPT_HDR opt_hdr); -+STATIC void dhcpv6_process_opt_dns_servers(pDHCPV6_CONTEXT dhcpv6_context, -+ pDHCPV6_OPT_HDR opt_hdr); -+STATIC void dhcpv6_parse_vendor_option(pDHCPV6_CONTEXT dhcpv6_context, -+ u8_t * option, int len); -+ -+void dhcpv6_init(pDHCPV6_CONTEXT dhcpv6_context) -+{ -+ dhcpv6_context->seconds = 0; -+ dhcpv6_context->our_mac_addr = -+ ipv6_get_link_addr(dhcpv6_context->ipv6_context); -+ -+ /* Use the last four bytes of MAC address as base of the transaction -+ ID */ -+ dhcpv6_context->dhcpv6_transaction_id = -+ *((u32_t *) & dhcpv6_context->our_mac_addr->addr[2]) & 0xffffffL; -+ -+ dhcpv6_context->dhcpv6_done = FALSE; -+ strcpy(dhcpv6_context->dhcp_vendor_id, "BRCM ISAN"); -+} -+ -+int dhcpv6_do_discovery(pDHCPV6_CONTEXT dhcpv6_context) -+{ -+ int retc = ISCSI_FAILURE; -+ -+ dhcpv6_context->eth = -+ (pETH_HDR) dhcpv6_context->ipv6_context->ustack->data_link_layer; -+ dhcpv6_context->ipv6 = -+ (pIPV6_HDR) dhcpv6_context->ipv6_context->ustack->network_layer; -+ dhcpv6_context->udp = -+ (pUDP_HDR) ((u8_t *) dhcpv6_context->ipv6 + sizeof(IPV6_HDR)); -+ LOG_INFO("dhcpv6: ipv6c=%p, ustack=%p eth=%p ipv6=%p udp=%p", -+ dhcpv6_context->ipv6_context, -+ dhcpv6_context->ipv6_context->ustack, dhcpv6_context->eth, -+ dhcpv6_context->ipv6, dhcpv6_context->udp); -+ -+ /* Send out DHCPv6 Solicit packet. */ -+ dhcpv6_send_solicit_packet(dhcpv6_context); -+ -+ return retc; -+} -+ -+STATIC int dhcpv6_send_solicit_packet(pDHCPV6_CONTEXT dhcpv6_context) -+{ -+ u16_t packet_len; -+ -+ LOG_DEBUG("DHCPV6: Send solicit"); -+ packet_len = dhcpv6_init_packet(dhcpv6_context, DHCPV6_SOLICIT); -+ dhcpv6_context->dhcpv6_state = DHCPV6_STATE_SOLICIT_SENT; -+ ipv6_send_udp_packet(dhcpv6_context->ipv6_context, packet_len); -+ -+ return 0; -+} -+ -+STATIC int dhcpv6_send_request_packet(pDHCPV6_CONTEXT dhcpv6_context) -+{ -+ u16_t packet_len; -+ -+ LOG_DEBUG("DHCPV6: Send request"); -+ packet_len = dhcpv6_init_packet(dhcpv6_context, DHCPV6_REQUEST); -+ -+ dhcpv6_context->dhcpv6_state = DHCPV6_STATE_REQ_SENT; -+ ipv6_send_udp_packet(dhcpv6_context->ipv6_context, packet_len); -+ -+ return 0; -+} -+ -+STATIC u16_t dhcpv6_init_packet(pDHCPV6_CONTEXT dhcpv6_context, u8_t type) -+{ -+ u16_t pkt_len; -+ UDP_HDR *udp = dhcpv6_context->udp; -+ pDHCPV6_HDR dhcpv6; -+ pDHCPV6_OPTION opt; -+ u16_t len; -+ -+ /* Initialize dest IP with well-known DHCP server address */ -+ dhcpv6_init_dhcpv6_server_addr(&dhcpv6_context->ipv6->ipv6_dst); -+ /* Initialize dest MAC based on MC dest IP */ -+ ipv6_mc_init_dest_mac(dhcpv6_context->eth, dhcpv6_context->ipv6); -+ -+ /* Initialize UDP header */ -+ udp->src_port = HOST_TO_NET16(DHCPV6_CLIENT_PORT); -+ udp->dest_port = HOST_TO_NET16(DHCPV6_SERVER_PORT); -+ -+ /* -+ * DHCPv6 section has the following format per RFC 3315 -+ * -+ * 0 1 2 3 -+ * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 -+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -+ * | msg-type | transaction-id | -+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -+ * | | -+ * . options . -+ * . (variable) . -+ * | | -+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -+ */ -+ dhcpv6 = (pDHCPV6_HDR) ((u8_t *) udp + sizeof(UDP_HDR)); -+ -+ if (dhcpv6->dhcpv6_type != type) { -+ dhcpv6_context->dhcpv6_transaction_id++; -+ } -+ -+ dhcpv6->dhcpv6_trans_id = dhcpv6_context->dhcpv6_transaction_id; -+ dhcpv6->dhcpv6_type = type; -+ -+ /* Keep track of length of all DHCP options. */ -+ pkt_len = sizeof(DHCPV6_HDR); -+ -+ if (dhcpv6->dhcpv6_type == DHCPV6_REQUEST) { -+ /* We will send back whatever DHCPv6 sent us */ -+ return ((u8_t *) udp - (u8_t *) dhcpv6_context->eth + -+ NET_TO_HOST16(udp->length)); -+ } -+ -+ opt = (pDHCPV6_OPTION) ((u8_t *) dhcpv6 + sizeof(DHCPV6_HDR)); -+ /* Add client ID option */ -+ opt->hdr.type = HOST_TO_NET16(DHCPV6_OPT_CLIENTID); -+ opt->hdr.length = HOST_TO_NET16(sizeof(DHCPV6_OPT_CLIENT_ID)); -+ opt->type.client_id.duid_type = -+ HOST_TO_NET16(DHCPV6_DUID_TYPE_LINK_LAYER); -+ opt->type.client_id.hw_type = HOST_TO_NET16(DHCPV6_HW_TYPE_ETHERNET); -+ memcpy((char __FAR__ *)&opt->type.client_id.link_layer_addr, -+ (char __FAR__ *)dhcpv6_context->our_mac_addr, sizeof(MAC_ADDR)); -+ pkt_len += sizeof(DHCPV6_OPT_CLIENT_ID) + sizeof(DHCPV6_OPT_HDR); -+ opt = (pDHCPV6_OPTION) ((u8_t *) opt + sizeof(DHCPV6_OPT_CLIENT_ID) + -+ sizeof(DHCPV6_OPT_HDR)); -+ -+ /* Add Vendor Class option if it's configured */ -+ if ((len = strlen(dhcpv6_context->dhcp_vendor_id)) > 0) { -+ opt->hdr.type = HOST_TO_NET16(DHCPV6_OPT_VENDOR_CLASS); -+ opt->hdr.length = HOST_TO_NET16(sizeof(DHCPV6_VENDOR_CLASS) + -+ len - 1); -+ opt->type.vendor_class.enterprise_number = -+ HOST_TO_NET32(IANA_ENTERPRISE_NUM_BROADCOM); -+ opt->type.vendor_class.vendor_class_length = HOST_TO_NET16(len); -+ memcpy((char __FAR__ *)&opt->type.vendor_class. -+ vendor_class_data[0], -+ (char __FAR__ *)dhcpv6_context->dhcp_vendor_id, len); -+ pkt_len += -+ sizeof(DHCPV6_VENDOR_CLASS) - 1 + len + -+ sizeof(DHCPV6_OPT_HDR); -+ opt = -+ (pDHCPV6_OPTION) ((u8_t *) opt + -+ sizeof(DHCPV6_VENDOR_CLASS) - 1 + len + -+ sizeof(DHCPV6_OPT_HDR)); -+ } -+ -+ /* Add IA_NA option */ -+ opt->hdr.type = HOST_TO_NET16(DHCPV6_OPT_IA_NA); -+ opt->hdr.length = HOST_TO_NET16(sizeof(DHCPV6_OPT_ID_ASSOC_NA)); -+ opt->type.ida_na.iaid = -+ htonl(*((u32_t *) & dhcpv6_context->our_mac_addr->addr[2])); -+ opt->type.ida_na.t1 = 0; -+ opt->type.ida_na.t2 = 0; -+ pkt_len += sizeof(DHCPV6_OPT_ID_ASSOC_NA) + sizeof(DHCPV6_OPT_HDR); -+ opt = (pDHCPV6_OPTION) ((u8_t *) opt + sizeof(DHCPV6_OPT_ID_ASSOC_NA) + -+ sizeof(DHCPV6_OPT_HDR)); -+ /* Add Elapsed Time option */ -+ opt->hdr.type = HOST_TO_NET16(DHCPV6_OPT_ELAPSED_TIME); -+ opt->hdr.length = HOST_TO_NET16(sizeof(DHCPV6_OPT_ELAPSE_TIME)); -+ opt->type.elapsed_time.time = HOST_TO_NET16(dhcpv6_context->seconds); -+ pkt_len += sizeof(DHCPV6_OPT_ELAPSE_TIME) + sizeof(DHCPV6_OPT_HDR); -+ -+ /* Add Option Request List */ -+ opt = (pDHCPV6_OPTION) ((u8_t *) opt + sizeof(DHCPV6_OPT_ELAPSE_TIME) + -+ sizeof(DHCPV6_OPT_HDR)); -+ opt->hdr.type = HOST_TO_NET16(DHCPV6_OPT_ORO); -+ opt->hdr.length = HOST_TO_NET16(3 * sizeof(DHCPV6_OPT_REQUEST_LIST)); -+ opt->type.list.request_code[0] = HOST_TO_NET16(DHCPV6_OPT_VENDOR_CLASS); -+ opt->type.list.request_code[1] = HOST_TO_NET16(DHCPV6_OPT_VENDOR_OPTS); -+ opt->type.list.request_code[2] = HOST_TO_NET16(DHCPV6_OPT_DNS_SERVERS); -+ pkt_len += 3 * sizeof(DHCPV6_OPT_REQUEST_LIST) + sizeof(DHCPV6_OPT_HDR); -+ -+ udp->length = HOST_TO_NET16(sizeof(UDP_HDR) + pkt_len); -+ -+ pkt_len += -+ ((u8_t *) udp - (u8_t *) dhcpv6_context->eth) + sizeof(UDP_HDR); -+ -+ return pkt_len; -+} -+ -+STATIC void dhcpv6_init_dhcpv6_server_addr(pIPV6_ADDR addr) -+{ -+ /* Well-known DHCPv6 server address is ff02::1:2 */ -+ memset((char __FAR__ *)addr, 0, sizeof(IPV6_ADDR)); -+ addr->addr8[0] = 0xff; -+ addr->addr8[1] = 0x02; -+ addr->addr8[13] = 0x01; -+ addr->addr8[15] = 0x02; -+} -+ -+void ipv6_udp_handle_dhcp(pDHCPV6_CONTEXT dhcpv6_context) -+{ -+ pDHCPV6_HDR dhcpv6; -+ u16_t dhcpv6_len; -+ -+ if (dhcpv6_context->dhcpv6_done == TRUE) -+ return; -+ -+ dhcpv6 = (pDHCPV6_HDR) ((u8_t *) dhcpv6_context->udp + sizeof(UDP_HDR)); -+ -+ if (dhcpv6->dhcpv6_trans_id != dhcpv6_context->dhcpv6_transaction_id) -+ return; -+ -+ dhcpv6_len = -+ NET_TO_HOST16(dhcpv6_context->udp->length) - sizeof(UDP_HDR); -+ -+ switch (dhcpv6->dhcpv6_type) { -+ case DHCPV6_ADVERTISE: -+ dhcpv6_handle_advertise(dhcpv6_context, dhcpv6_len); -+ break; -+ -+ case DHCPV6_REPLY: -+ dhcpv6_handle_reply(dhcpv6_context, dhcpv6_len); -+ break; -+ -+ default: -+ break; -+ } -+} -+ -+STATIC void dhcpv6_handle_advertise(pDHCPV6_CONTEXT dhcpv6_context, -+ u16_t dhcpv6_len) -+{ -+ pDHCPV6_HDR dhcpv6 = -+ (pDHCPV6_HDR) ((u8_t *) dhcpv6_context->udp + sizeof(UDP_HDR)); -+ pDHCPV6_OPT_HDR opt; -+ u16_t type; -+ int i; -+ int opt_len; -+ u8_t *vendor_id = NULL; -+ u16_t vendor_id_len = 0; -+ u8_t *vendor_opt_data = NULL; -+ int vendor_opt_len = 0; -+ int addr_cnt = 0; -+ -+ /* We only handle DHCPv6 advertise if we recently sent DHCPv6 solicit */ -+ if (dhcpv6_context->dhcpv6_state != DHCPV6_STATE_SOLICIT_SENT) -+ return; -+ -+ LOG_DEBUG("DHCPV6: handle advertise"); -+ dhcpv6_context->dhcpv6_state = DHCPV6_STATE_ADV_RCVD; -+ -+ i = 0; -+ while (i < (dhcpv6_len - sizeof(DHCPV6_HDR))) { -+ opt = -+ (pDHCPV6_OPT_HDR) ((u8_t *) dhcpv6 + sizeof(DHCPV6_HDR) + -+ i); -+ opt_len = NET_TO_HOST16(opt->length); -+ -+ type = NET_TO_HOST16(opt->type); -+ -+ /* We only care about some of the options */ -+ switch (type) { -+ case DHCPV6_OPT_IA_NA: -+ if (dhcpv6_context-> -+ dhcpv6_task & DHCPV6_TASK_GET_IP_ADDRESS) { -+ addr_cnt += -+ dhcpv6_process_opt_ia_na(dhcpv6_context, -+ opt); -+ } -+ break; -+ -+ case DHCPV6_OPT_VENDOR_CLASS: -+ vendor_id_len = -+ NET_TO_HOST16(((pDHCPV6_OPTION) opt)->type. -+ vendor_class.vendor_class_length); -+ vendor_id = -+ &((pDHCPV6_OPTION) opt)->type.vendor_class. -+ vendor_class_data[0]; -+ break; -+ -+ case DHCPV6_OPT_VENDOR_OPTS: -+ vendor_opt_len = opt_len - 4; -+ vendor_opt_data = -+ &((pDHCPV6_OPTION) opt)->type.vendor_opts. -+ vendor_opt_data[0]; -+ break; -+ -+ case DHCPV6_OPT_DNS_SERVERS: -+ if (dhcpv6_context-> -+ dhcpv6_task & DHCPV6_TASK_GET_OTHER_PARAMS) -+ dhcpv6_process_opt_dns_servers(dhcpv6_context, -+ opt); -+ break; -+ -+ default: -+ break; -+ } -+ -+ i += NET_TO_HOST16(opt->length) + sizeof(DHCPV6_OPT_HDR); -+ } -+ -+ if (dhcpv6_context->dhcpv6_task & DHCPV6_TASK_GET_OTHER_PARAMS) { -+ if ((vendor_id_len > 0) && -+ (strncmp((char __FAR__ *)vendor_id, -+ (char __FAR__ *)dhcpv6_context->dhcp_vendor_id, -+ vendor_id_len) == 0)) { -+ dhcpv6_parse_vendor_option(dhcpv6_context, -+ vendor_opt_data, -+ vendor_opt_len); -+ dhcpv6_context->dhcpv6_done = TRUE; -+ } -+ } -+ -+ if (dhcpv6_context->dhcpv6_task & DHCPV6_TASK_GET_IP_ADDRESS) { -+ if (addr_cnt > 0) { -+ /* -+ * If we need to acquire IP address from the server, -+ * we need to send Request to server to confirm. -+ */ -+ dhcpv6_send_request_packet(dhcpv6_context); -+ dhcpv6_context->dhcpv6_done = TRUE; -+ } -+ } -+ -+ if (dhcpv6_context->dhcpv6_done) { -+ /* Keep track of IPv6 address of DHCHv6 server */ -+ memcpy((char __FAR__ *)&dhcpv6_context->dhcp_server, -+ (char __FAR__ *)&dhcpv6_context->ipv6->ipv6_src, -+ sizeof(IPV6_ADDR)); -+ } -+} -+ -+STATIC int dhcpv6_process_opt_ia_na(pDHCPV6_CONTEXT dhcpv6_context, -+ pDHCPV6_OPT_HDR opt_hdr) -+{ -+ int i; -+ int opt_len; -+ pDHCPV6_OPTION opt; -+ int len; -+ int addr_cnt; -+ opt_len = -+ NET_TO_HOST16(opt_hdr->length) - sizeof(DHCPV6_OPT_ID_ASSOC_NA); -+ -+ i = 0; -+ addr_cnt = 0; -+ while (i < opt_len) { -+ opt = -+ (pDHCPV6_OPTION) ((u8_t *) opt_hdr + -+ sizeof(DHCPV6_OPT_HDR) + -+ sizeof(DHCPV6_OPT_ID_ASSOC_NA) + i); -+ -+ len = NET_TO_HOST16(opt->hdr.length); -+ switch (NET_TO_HOST16(opt->hdr.type)) { -+ case DHCPV6_OPT_IAADDR: -+ if (len > -+ (sizeof(DHCPV6_OPT_HDR) + -+ sizeof(DHCPV6_OPT_IAA_ADDR))) { -+ pDHCPV6_OPTION in_opt; -+ -+ in_opt = -+ (pDHCPV6_OPTION) ((u8_t *) opt + -+ sizeof(DHCPV6_OPT_HDR) + -+ sizeof -+ (DHCPV6_OPT_IAA_ADDR)); -+ if (in_opt->hdr.type == -+ HOST_TO_NET16(DHCPV6_OPT_STATUS_CODE)) { -+ /* This entry has error! */ -+ if (in_opt->type.sts.status != 0) -+ break; -+ } -+ } -+ LOG_INFO("DHCPv6: Got IP Addr"); -+ /* Status is OK, let's add this addr to our address -+ list */ -+ ipv6_add_prefix_entry(dhcpv6_context->ipv6_context, -+ &opt->type.iaa_addr.addr, 64); -+ -+ /* Add multicast address for this address */ -+ ipv6_add_solit_node_address(dhcpv6_context-> -+ ipv6_context, -+ &opt->type.iaa_addr.addr); -+ addr_cnt++; -+ break; -+ -+ default: -+ break; -+ } -+ -+ i += len + sizeof(DHCPV6_OPT_HDR); -+ } -+ -+ return addr_cnt; -+} -+ -+STATIC void dhcpv6_process_opt_dns_servers(pDHCPV6_CONTEXT dhcpv6_context, -+ pDHCPV6_OPT_HDR opt_hdr) -+{ -+ int opt_len; -+ -+ opt_len = NET_TO_HOST16(opt_hdr->length); -+ -+ if (opt_len >= sizeof(IPV6_ADDR)) { -+ memcpy((char __FAR__ *)&dhcpv6_context->primary_dns_server, -+ (char __FAR__ *)&((pDHCPV6_OPTION) opt_hdr)->type.dns. -+ primary_addr, sizeof(IPV6_ADDR)); -+ } -+ -+ if (opt_len >= 2 * sizeof(IPV6_ADDR)) { -+ memcpy((char __FAR__ *)&dhcpv6_context->secondary_dns_server, -+ (char __FAR__ *)&((pDHCPV6_OPTION) opt_hdr)->type.dns. -+ secondary_addr, sizeof(IPV6_ADDR)); -+ } -+} -+ -+STATIC void dhcpv6_handle_reply(pDHCPV6_CONTEXT dhcpv6_context, -+ u16_t dhcpv6_len) -+{ -+ if (dhcpv6_context->dhcpv6_state != DHCPV6_STATE_REQ_SENT) -+ return; -+ -+ dhcpv6_context->dhcpv6_done = TRUE; -+} -+ -+STATIC void dhcpv6_parse_vendor_option(pDHCPV6_CONTEXT dhcpv6_context, -+ u8_t * option, int len) -+{ -+ pDHCPV6_OPTION opt; -+ u16_t type; -+ int opt_len; -+ int data_len; -+ int i; -+ u8_t *data; -+ -+ for (i = 0; i < len; i += opt_len + sizeof(DHCPV6_OPT_HDR)) { -+ opt = (pDHCPV6_OPTION) ((u8_t *) option + i); -+ type = HOST_TO_NET16(opt->hdr.type); -+ opt_len = HOST_TO_NET16(opt->hdr.length); -+ data = &opt->type.data[0]; -+ data_len = strlen((char *)data); -+ -+ switch (type) { -+ case 201: -+ /* iSCSI target 1 */ -+// iscsiAddiScsiTargetInfo(data,0); -+ break; -+ -+ case 202: -+ /* iSCSI target 2 */ -+// iscsiAddiScsiTargetInfo(data,1); -+ break; -+ -+ case 203: -+ if (data_len > ISCSI_MAX_ISCSI_NAME_LENGTH) -+ data_len = ISCSI_MAX_ISCSI_NAME_LENGTH; -+ data[data_len] = '\0'; -+ strcpy(dhcpv6_context->initiatorName, (char *)data); -+// itolowerstr(dhcpv6_context->initiatorName); -+ break; -+ -+ default: -+ break; -+ } -+ } -+} -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/dhcpc/dhcpv6.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/dhcpc/dhcpv6.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/dhcpc/dhcpv6.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/dhcpc/dhcpv6.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,263 @@ -+/* -+ * Copyright (c) 2011, Broadcom Corporation -+ * -+ * Written by: Eddie Wai -+ * Based on code from Kevin Tran's iSCSI boot code -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * dhcpv6.h - DHCPv6 engine header -+ * -+ */ -+#ifndef __IDHCPV6_H__ -+#define __IDHCPV6_H__ -+ -+#include "ipv6_ndpc.h" -+#include "ipv6.h" -+ -+#ifdef PACK_DATA_STRUCTURE -+#pragma pack(push,1) -+#endif -+ -+#define ISCSI_MAX_ISCSI_NAME_LENGTH 128 -+/* DHCPv6 Message types. */ -+#define DHCPV6_SOLICIT 1 -+#define DHCPV6_ADVERTISE 2 -+#define DHCPV6_REQUEST 3 -+#define DHCPV6_CONFIRM 4 -+#define DHCPV6_RENEW 5 -+#define DHCPV6_REBIND 6 -+#define DHCPV6_REPLY 7 -+#define DHCPV6_RELEASE 8 -+#define DHCPV6_DECLINE 9 -+#define DHCPV6_RECONFIGURE 10 -+#define DHCPV6_INFO_REQUEST 11 -+#define DHCPV6_RELAY_FORW 12 -+#define DHCPV6_RELAY_REPL 13 -+ -+/* Option codes. */ -+#define DHCPV6_OPT_CLIENTID 1 /* Client ID option - built by stack */ -+#define DHCPV6_OPT_SERVERID 2 /* Server ID option - built by stack */ -+#define DHCPV6_OPT_IA_NA 3 /* IA_NA option - built by user */ -+#define DHCPV6_OPT_IA_TA 4 /* IA_TA option - not supported */ -+#define DHCPV6_OPT_IAADDR 5 /* IA_ADDR option - built by user */ -+#define DHCPV6_OPT_ORO 6 /* Option Request Option - built by -+ stack */ -+#define DHCPV6_OPT_PREFERENCE 7 /* Preference option - built by server -+ */ -+#define DHCPV6_OPT_ELAPSED_TIME 8 /* Elapsed Time option - built by stack -+ */ -+#define DHCPV6_OPT_RELAY_MSG 9 /* Relay Message option - not supported -+ */ -+#define DHCPV6_OPT_AUTH 11 /* Authentication option - built by -+ stack */ -+#define DHCPV6_OPT_UNICAST 12 /* Server Unicast option - built by -+ server */ -+#define DHCPV6_OPT_STATUS_CODE 13 /* Status Code option - built by stack -+ */ -+#define DHCPV6_OPT_RAPID_COMMIT 14 /* Rapid Commit option - built by user -+ */ -+#define DHCPV6_OPT_USER_CLASS 15 /* User Class option - built by user */ -+#define DHCPV6_OPT_VENDOR_CLASS 16 /* Vendor Class option - built by user -+ */ -+#define DHCPV6_OPT_VENDOR_OPTS 17 /* Vendor-Specific Information option - -+ build by user */ -+#define DHCPV6_OPT_INTERFACE_ID 18 /* Interface ID option - not supported -+ */ -+#define DHCPV6_OPT_RECONF_MSG 19 /* Reconfigure Message option - built -+ by server */ -+#define DHCPV6_OPT_RECONF_ACCEPT 20 /* Reconfigure Accept option - built by -+ user */ -+#define DHCPV6_OPT_SIP_SERVER_D 21 /* NOT SUPPORTED - included for -+ completeness only */ -+#define DHCPV6_OPT_SIP_SERVER_A 22 /* NOT SUPPORTED - included for -+ completeness only */ -+#define DHCPV6_OPT_DNS_SERVERS 23 /* DNS Recursive Name Server option - -+ built by server */ -+#define DHCPV6_OPT_DOMAIN_LIST 24 /* Domain Search List option - not -+ supported */ -+#define DHCPV6_MAX_OPT_CODES 25 /* This will be the count + 1 since -+ the parsing array starts -+ at [1] instead of [0] */ -+ -+/* Authentication protocol types. */ -+#define DHCPV6_DELAYED_AUTH_PROT 2 /* Delayed Authentication protocol. */ -+#define DHCPV6_RECON_KEY_AUTH_PROT 3 /* Reconfigure Key Authentication -+ protocol. */ -+ -+typedef struct DHCPV6_CONTEXT { -+#define DHCP_VENDOR_ID_LEN 128 -+ char dhcp_vendor_id[DHCP_VENDOR_ID_LEN]; -+ MAC_ADDRESS *our_mac_addr; -+ u32_t dhcpv6_transaction_id; -+ u16_t seconds; -+ int timeout; -+ int dhcpv6_done; -+ -+#define DHCPV6_STATE_UNKNOWN 0 -+#define DHCPV6_STATE_SOLICIT_SENT 1 -+#define DHCPV6_STATE_ADV_RCVD 2 -+#define DHCPV6_STATE_REQ_SENT 3 -+#define DHCPV6_STATE_CONFIRM_SENT 4 -+ int dhcpv6_state; -+ u16_t dhcpv6_task; -+ pIPV6_CONTEXT ipv6_context; -+ pETH_HDR eth; -+ pIPV6_HDR ipv6; -+ pUDP_HDR udp; -+ -+ char initiatorName[ISCSI_MAX_ISCSI_NAME_LENGTH]; -+ IPV6_ADDR dhcp_server; -+ IPV6_ADDR primary_dns_server; -+ IPV6_ADDR secondary_dns_server; -+ -+} DHCPV6_CONTEXT, *pDHCPV6_CONTEXT; -+ -+typedef union DHCPV6_HDR { -+ struct { -+ u32_t type:8; -+ u32_t trans_id:24; -+ } field; -+ -+ u32_t type_transaction; -+} DHCPV6_HDR, *pDHCPV6_HDR; -+ -+#define dhcpv6_type field.type -+#define dhcpv6_trans_id field.trans_id -+ -+typedef struct DHCPV6_OPT_HDR { -+ u16_t type; -+ u16_t length; -+} DHCPV6_OPT_HDR, *pDHCPV6_OPT_HDR; -+ -+typedef struct DHCPV6_OPT_CLIENT_ID { -+ u16_t duid_type; -+#define DHCPV6_DUID_TYPE_LINK_LAYER_AND_TIME 1 -+#define DHCPV6_DUID_TYPE_VENDOR_BASED 2 -+#define DHCPV6_DUID_TYPE_LINK_LAYER 3 -+ u16_t hw_type; -+#define DHCPV6_HW_TYPE_ETHERNET 1 -+// u32_t time; -+ MAC_ADDR link_layer_addr; -+} DHCPV6_OPT_CLIENT_ID, *pDHCPV6_OPT_CLIENT_ID; -+ -+typedef struct DHCPV6_OPT_ID_ASSOC_NA { -+ u32_t iaid; -+#define DHCPV6_OPT_IA_NA_IAID 0x306373L -+ u32_t t1; -+ u32_t t2; -+} DHCPV6_OPT_ID_ASSOC_NA, *pDHCPV6_OPT_ID_ASSOC_NA; -+ -+typedef struct DHCPV6_OPT_ELAPSE_TIME { -+ u16_t time; -+} DHCPV6_OPT_ELAPSE_TIME, *pDHCPV6_OPT_ELAPSE_TIME; -+ -+typedef struct DHCPV6_OPT_IAA_ADDR { -+ IPV6_ADDR addr; -+ u32_t preferred_lifetime; -+ u32_t valid_lifetime; -+} DHCPV6_OPT_IAA_ADDR, *pDHCPV6_OPT_IAA_ADDR; -+ -+typedef struct DHCPV6_OPT_STATUS { -+ u16_t status; -+} DHCPV6_OPT_STATUS, *pDHCPV6_OPT_STATUS; -+ -+typedef struct DHCPV6_OPT_REQUEST_LIST { -+ u16_t request_code[1]; -+} DHCPV6_OPT_REQUEST_LIST, *pDHCPV6_OPT_REQUEST_LIST; -+ -+typedef struct DHCPV6_OPT_DNS { -+ IPV6_ADDR primary_addr; -+ IPV6_ADDR secondary_addr; -+} DHCPV6_OPT_DNS, *pDHCPV6_OPT_DNS; -+ -+typedef struct DHCPV6_VENDOR_CLASS { -+ u32_t enterprise_number; -+ u16_t vendor_class_length; -+ u8_t vendor_class_data[1]; -+} DHCPV6_VENDOR_CLASS, *pDHCPV6_VENDOR_CLASS; -+ -+typedef struct DHCPV6_VENDOR_OPTS { -+ u32_t enterprise_number; -+ u8_t vendor_opt_data[1]; -+} DHCPV6_VENDOR_OPTS, *pDHCPV6_VENDOR_OPTS; -+ -+typedef struct DHCPV6_OPTION { -+ DHCPV6_OPT_HDR hdr; -+ union { -+ DHCPV6_VENDOR_OPTS vendor_opts; -+ DHCPV6_VENDOR_CLASS vendor_class; -+ DHCPV6_OPT_CLIENT_ID client_id; -+ DHCPV6_OPT_ID_ASSOC_NA ida_na; -+ DHCPV6_OPT_ELAPSE_TIME elapsed_time; -+ DHCPV6_OPT_IAA_ADDR iaa_addr; -+ DHCPV6_OPT_STATUS sts; -+ DHCPV6_OPT_REQUEST_LIST list; -+ DHCPV6_OPT_DNS dns; -+ u8_t data[1]; -+ } type; -+ -+} DHCPV6_OPTION, *pDHCPV6_OPTION; -+ -+#ifdef PACK_DATA_STRUCTURE -+#pragma pack(pop) -+#endif -+ -+#define DHCPV6_NUM_OF_RETRY 4 -+ -+#define DHCPV6_ACK_TIMEOUT 2 -+ -+#define IANA_ENTERPRISE_NUM_BROADCOM 0x113d -+ -+/* Broadcom Extended DHCP options used in iSCSI boot */ -+#define DHCPV6_TAG_FIRST_ISCSI_TARGET_NAME 201 -+#define DHCPV6_TAG_SECOND_ISCSI_TARGET_NAME 202 -+#define DHCPV6_TAG_ISCSI_INITIATOR_NAME 203 -+ -+#define MAX_DHCP_RX_OFFERS 4 -+#define MAX_DHCP_OPTION43_LENGTH 1024 -+ -+#define DHCPV6_TASK_GET_IP_ADDRESS 0x1 -+#define DHCPV6_TASK_GET_OTHER_PARAMS 0x2 -+ -+enum { -+ ISCSI_FAILURE, -+ ISCSI_USER_ABORT, -+ ISCSI_SUCCESS -+}; -+ -+//const int dhcpv6_retry_timeout[DHCPV6_NUM_OF_RETRY] = {1,2,4,8}; -+ -+/* Function prototypes */ -+int dhcpv6_do_discovery(pDHCPV6_CONTEXT dhcpv6_context); -+void ipv6_udp_handle_dhcp(pDHCPV6_CONTEXT dhcpv6_context); -+void dhcpv6_init(pDHCPV6_CONTEXT dhcpv6_context); -+ -+#endif /* __IDHCPV6_H__ */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/dhcpc/Makefile.am open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/dhcpc/Makefile.am ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/dhcpc/Makefile.am 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/dhcpc/Makefile.am 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,14 @@ -+INCLUDES = -I${top_srcdir}/src/unix \ -+ -I${top_srcdir}/src/uip \ -+ -I${top_srcdir}/src/apps/dhcpc \ -+ -I${top_srcdir}/src/apps/brcm-iscsi \ -+ -I${top_srcdir}/include -+ -+noinst_LIBRARIES = lib_apps_dhcpc.a -+ -+lib_apps_dhcpc_a_SOURCES = dhcpc.c dhcpv6.c -+ -+lib_apps_dhcpc_a_CFLAGS = $(AM_CFLAGS) \ -+ -DBYTE_ORDER=@ENDIAN@ -+ -+ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/dhcpc/Makefile.dhcpc open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/dhcpc/Makefile.dhcpc ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/dhcpc/Makefile.dhcpc 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/dhcpc/Makefile.dhcpc 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1 @@ -+APP_SOURCES += dhcpc.c timer.c -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/dhcpc/Makefile.in open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/dhcpc/Makefile.in ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/dhcpc/Makefile.in 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/dhcpc/Makefile.in 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,460 @@ -+# Makefile.in generated by automake 1.9.6 from Makefile.am. -+# @configure_input@ -+ -+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -+# 2003, 2004, 2005 Free Software Foundation, Inc. -+# This Makefile.in 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. -+ -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -+# PARTICULAR PURPOSE. -+ -+@SET_MAKE@ -+ -+srcdir = @srcdir@ -+top_srcdir = @top_srcdir@ -+VPATH = @srcdir@ -+pkgdatadir = $(datadir)/@PACKAGE@ -+pkglibdir = $(libdir)/@PACKAGE@ -+pkgincludedir = $(includedir)/@PACKAGE@ -+top_builddir = ../../.. -+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -+INSTALL = @INSTALL@ -+install_sh_DATA = $(install_sh) -c -m 644 -+install_sh_PROGRAM = $(install_sh) -c -+install_sh_SCRIPT = $(install_sh) -c -+INSTALL_HEADER = $(INSTALL_DATA) -+transform = $(program_transform_name) -+NORMAL_INSTALL = : -+PRE_INSTALL = : -+POST_INSTALL = : -+NORMAL_UNINSTALL = : -+PRE_UNINSTALL = : -+POST_UNINSTALL = : -+build_triplet = @build@ -+host_triplet = @host@ -+subdir = src/apps/dhcpc -+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -+am__aclocal_m4_deps = $(top_srcdir)/configure.ac -+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ -+ $(ACLOCAL_M4) -+mkinstalldirs = $(install_sh) -d -+CONFIG_HEADER = $(top_builddir)/config.h -+CONFIG_CLEAN_FILES = -+LIBRARIES = $(noinst_LIBRARIES) -+ARFLAGS = cru -+lib_apps_dhcpc_a_AR = $(AR) $(ARFLAGS) -+lib_apps_dhcpc_a_LIBADD = -+am_lib_apps_dhcpc_a_OBJECTS = lib_apps_dhcpc_a-dhcpc.$(OBJEXT) \ -+ lib_apps_dhcpc_a-dhcpv6.$(OBJEXT) -+lib_apps_dhcpc_a_OBJECTS = $(am_lib_apps_dhcpc_a_OBJECTS) -+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -+depcomp = $(SHELL) $(top_srcdir)/depcomp -+am__depfiles_maybe = depfiles -+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ -+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ -+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ -+ $(AM_CFLAGS) $(CFLAGS) -+CCLD = $(CC) -+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ -+ $(AM_LDFLAGS) $(LDFLAGS) -o $@ -+SOURCES = $(lib_apps_dhcpc_a_SOURCES) -+DIST_SOURCES = $(lib_apps_dhcpc_a_SOURCES) -+ETAGS = etags -+CTAGS = ctags -+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -+ACLOCAL = @ACLOCAL@ -+AMDEP_FALSE = @AMDEP_FALSE@ -+AMDEP_TRUE = @AMDEP_TRUE@ -+AMTAR = @AMTAR@ -+AR = @AR@ -+AUTOCONF = @AUTOCONF@ -+AUTOHEADER = @AUTOHEADER@ -+AUTOMAKE = @AUTOMAKE@ -+AWK = @AWK@ -+BASH = @BASH@ -+CC = @CC@ -+CCDEPMODE = @CCDEPMODE@ -+CFLAGS = @CFLAGS@ -+CPP = @CPP@ -+CPPFLAGS = @CPPFLAGS@ -+CXX = @CXX@ -+CXXCPP = @CXXCPP@ -+CXXDEPMODE = @CXXDEPMODE@ -+CXXFLAGS = @CXXFLAGS@ -+CYGPATH_W = @CYGPATH_W@ -+DEBUG_FALSE = @DEBUG_FALSE@ -+DEBUG_TRUE = @DEBUG_TRUE@ -+DEFS = @DEFS@ -+DEPDIR = @DEPDIR@ -+ECHO = @ECHO@ -+ECHO_C = @ECHO_C@ -+ECHO_N = @ECHO_N@ -+ECHO_T = @ECHO_T@ -+EGREP = @EGREP@ -+ENDIAN = @ENDIAN@ -+EXEEXT = @EXEEXT@ -+F77 = @F77@ -+FFLAGS = @FFLAGS@ -+INSTALL_DATA = @INSTALL_DATA@ -+INSTALL_PROGRAM = @INSTALL_PROGRAM@ -+INSTALL_SCRIPT = @INSTALL_SCRIPT@ -+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -+LDFLAGS = @LDFLAGS@ -+LIBOBJS = @LIBOBJS@ -+LIBS = @LIBS@ -+LIBTOOL = @LIBTOOL@ -+LN_S = @LN_S@ -+LTLIBOBJS = @LTLIBOBJS@ -+MAKEINFO = @MAKEINFO@ -+OBJEXT = @OBJEXT@ -+PACKAGE = @PACKAGE@ -+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -+PACKAGE_NAME = @PACKAGE_NAME@ -+PACKAGE_STRING = @PACKAGE_STRING@ -+PACKAGE_TARNAME = @PACKAGE_TARNAME@ -+PACKAGE_VERSION = @PACKAGE_VERSION@ -+PATH_SEPARATOR = @PATH_SEPARATOR@ -+RANLIB = @RANLIB@ -+SED = @SED@ -+SET_MAKE = @SET_MAKE@ -+SHELL = @SHELL@ -+STRIP = @STRIP@ -+VERSION = @VERSION@ -+ac_ct_AR = @ac_ct_AR@ -+ac_ct_CC = @ac_ct_CC@ -+ac_ct_CXX = @ac_ct_CXX@ -+ac_ct_F77 = @ac_ct_F77@ -+ac_ct_RANLIB = @ac_ct_RANLIB@ -+ac_ct_STRIP = @ac_ct_STRIP@ -+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ -+am__include = @am__include@ -+am__leading_dot = @am__leading_dot@ -+am__quote = @am__quote@ -+am__tar = @am__tar@ -+am__untar = @am__untar@ -+bindir = @bindir@ -+build = @build@ -+build_alias = @build_alias@ -+build_cpu = @build_cpu@ -+build_os = @build_os@ -+build_vendor = @build_vendor@ -+datadir = @datadir@ -+exec_prefix = @exec_prefix@ -+host = @host@ -+host_alias = @host_alias@ -+host_cpu = @host_cpu@ -+host_os = @host_os@ -+host_vendor = @host_vendor@ -+includedir = @includedir@ -+infodir = @infodir@ -+install_sh = @install_sh@ -+libdir = @libdir@ -+libexecdir = @libexecdir@ -+localstatedir = @localstatedir@ -+mandir = @mandir@ -+mkdir_p = @mkdir_p@ -+oldincludedir = @oldincludedir@ -+prefix = @prefix@ -+program_transform_name = @program_transform_name@ -+sbindir = @sbindir@ -+sharedstatedir = @sharedstatedir@ -+sysconfdir = @sysconfdir@ -+target_alias = @target_alias@ -+INCLUDES = -I${top_srcdir}/src/unix \ -+ -I${top_srcdir}/src/uip \ -+ -I${top_srcdir}/src/apps/dhcpc \ -+ -I${top_srcdir}/src/apps/brcm-iscsi \ -+ -I${top_srcdir}/include -+ -+noinst_LIBRARIES = lib_apps_dhcpc.a -+lib_apps_dhcpc_a_SOURCES = dhcpc.c dhcpv6.c -+lib_apps_dhcpc_a_CFLAGS = $(AM_CFLAGS) \ -+ -DBYTE_ORDER=@ENDIAN@ -+ -+all: all-am -+ -+.SUFFIXES: -+.SUFFIXES: .c .lo .o .obj -+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) -+ @for dep in $?; do \ -+ case '$(am__configure_deps)' in \ -+ *$$dep*) \ -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ -+ && exit 0; \ -+ exit 1;; \ -+ esac; \ -+ done; \ -+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/apps/dhcpc/Makefile'; \ -+ cd $(top_srcdir) && \ -+ $(AUTOMAKE) --gnu src/apps/dhcpc/Makefile -+.PRECIOUS: Makefile -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ @case '$?' in \ -+ *config.status*) \ -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ -+ *) \ -+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ -+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ -+ esac; -+ -+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+ -+$(top_srcdir)/configure: $(am__configure_deps) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+$(ACLOCAL_M4): $(am__aclocal_m4_deps) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+ -+clean-noinstLIBRARIES: -+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -+lib_apps_dhcpc.a: $(lib_apps_dhcpc_a_OBJECTS) $(lib_apps_dhcpc_a_DEPENDENCIES) -+ -rm -f lib_apps_dhcpc.a -+ $(lib_apps_dhcpc_a_AR) lib_apps_dhcpc.a $(lib_apps_dhcpc_a_OBJECTS) $(lib_apps_dhcpc_a_LIBADD) -+ $(RANLIB) lib_apps_dhcpc.a -+ -+mostlyclean-compile: -+ -rm -f *.$(OBJEXT) -+ -+distclean-compile: -+ -rm -f *.tab.c -+ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_apps_dhcpc_a-dhcpc.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_apps_dhcpc_a-dhcpv6.Po@am__quote@ -+ -+.c.o: -+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(COMPILE) -c $< -+ -+.c.obj: -+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` -+ -+.c.lo: -+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< -+ -+lib_apps_dhcpc_a-dhcpc.o: dhcpc.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_apps_dhcpc_a_CFLAGS) $(CFLAGS) -MT lib_apps_dhcpc_a-dhcpc.o -MD -MP -MF "$(DEPDIR)/lib_apps_dhcpc_a-dhcpc.Tpo" -c -o lib_apps_dhcpc_a-dhcpc.o `test -f 'dhcpc.c' || echo '$(srcdir)/'`dhcpc.c; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib_apps_dhcpc_a-dhcpc.Tpo" "$(DEPDIR)/lib_apps_dhcpc_a-dhcpc.Po"; else rm -f "$(DEPDIR)/lib_apps_dhcpc_a-dhcpc.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dhcpc.c' object='lib_apps_dhcpc_a-dhcpc.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_apps_dhcpc_a_CFLAGS) $(CFLAGS) -c -o lib_apps_dhcpc_a-dhcpc.o `test -f 'dhcpc.c' || echo '$(srcdir)/'`dhcpc.c -+ -+lib_apps_dhcpc_a-dhcpc.obj: dhcpc.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_apps_dhcpc_a_CFLAGS) $(CFLAGS) -MT lib_apps_dhcpc_a-dhcpc.obj -MD -MP -MF "$(DEPDIR)/lib_apps_dhcpc_a-dhcpc.Tpo" -c -o lib_apps_dhcpc_a-dhcpc.obj `if test -f 'dhcpc.c'; then $(CYGPATH_W) 'dhcpc.c'; else $(CYGPATH_W) '$(srcdir)/dhcpc.c'; fi`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib_apps_dhcpc_a-dhcpc.Tpo" "$(DEPDIR)/lib_apps_dhcpc_a-dhcpc.Po"; else rm -f "$(DEPDIR)/lib_apps_dhcpc_a-dhcpc.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dhcpc.c' object='lib_apps_dhcpc_a-dhcpc.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_apps_dhcpc_a_CFLAGS) $(CFLAGS) -c -o lib_apps_dhcpc_a-dhcpc.obj `if test -f 'dhcpc.c'; then $(CYGPATH_W) 'dhcpc.c'; else $(CYGPATH_W) '$(srcdir)/dhcpc.c'; fi` -+ -+lib_apps_dhcpc_a-dhcpv6.o: dhcpv6.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_apps_dhcpc_a_CFLAGS) $(CFLAGS) -MT lib_apps_dhcpc_a-dhcpv6.o -MD -MP -MF "$(DEPDIR)/lib_apps_dhcpc_a-dhcpv6.Tpo" -c -o lib_apps_dhcpc_a-dhcpv6.o `test -f 'dhcpv6.c' || echo '$(srcdir)/'`dhcpv6.c; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib_apps_dhcpc_a-dhcpv6.Tpo" "$(DEPDIR)/lib_apps_dhcpc_a-dhcpv6.Po"; else rm -f "$(DEPDIR)/lib_apps_dhcpc_a-dhcpv6.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dhcpv6.c' object='lib_apps_dhcpc_a-dhcpv6.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_apps_dhcpc_a_CFLAGS) $(CFLAGS) -c -o lib_apps_dhcpc_a-dhcpv6.o `test -f 'dhcpv6.c' || echo '$(srcdir)/'`dhcpv6.c -+ -+lib_apps_dhcpc_a-dhcpv6.obj: dhcpv6.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_apps_dhcpc_a_CFLAGS) $(CFLAGS) -MT lib_apps_dhcpc_a-dhcpv6.obj -MD -MP -MF "$(DEPDIR)/lib_apps_dhcpc_a-dhcpv6.Tpo" -c -o lib_apps_dhcpc_a-dhcpv6.obj `if test -f 'dhcpv6.c'; then $(CYGPATH_W) 'dhcpv6.c'; else $(CYGPATH_W) '$(srcdir)/dhcpv6.c'; fi`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib_apps_dhcpc_a-dhcpv6.Tpo" "$(DEPDIR)/lib_apps_dhcpc_a-dhcpv6.Po"; else rm -f "$(DEPDIR)/lib_apps_dhcpc_a-dhcpv6.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='dhcpv6.c' object='lib_apps_dhcpc_a-dhcpv6.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_apps_dhcpc_a_CFLAGS) $(CFLAGS) -c -o lib_apps_dhcpc_a-dhcpv6.obj `if test -f 'dhcpv6.c'; then $(CYGPATH_W) 'dhcpv6.c'; else $(CYGPATH_W) '$(srcdir)/dhcpv6.c'; fi` -+ -+mostlyclean-libtool: -+ -rm -f *.lo -+ -+clean-libtool: -+ -rm -rf .libs _libs -+ -+distclean-libtool: -+ -rm -f libtool -+uninstall-info-am: -+ -+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) ' { files[$$0] = 1; } \ -+ END { for (i in files) print i; }'`; \ -+ mkid -fID $$unique -+tags: TAGS -+ -+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ here=`pwd`; \ -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) ' { files[$$0] = 1; } \ -+ END { for (i in files) print i; }'`; \ -+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ -+ test -n "$$unique" || unique=$$empty_fix; \ -+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ -+ $$tags $$unique; \ -+ fi -+ctags: CTAGS -+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ here=`pwd`; \ -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) ' { files[$$0] = 1; } \ -+ END { for (i in files) print i; }'`; \ -+ test -z "$(CTAGS_ARGS)$$tags$$unique" \ -+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ -+ $$tags $$unique -+ -+GTAGS: -+ here=`$(am__cd) $(top_builddir) && pwd` \ -+ && cd $(top_srcdir) \ -+ && gtags -i $(GTAGS_ARGS) $$here -+ -+distclean-tags: -+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -+ -+distdir: $(DISTFILES) -+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ -+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ -+ list='$(DISTFILES)'; for file in $$list; do \ -+ case $$file in \ -+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ -+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ -+ esac; \ -+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ -+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ -+ dir="/$$dir"; \ -+ $(mkdir_p) "$(distdir)$$dir"; \ -+ else \ -+ dir=''; \ -+ fi; \ -+ if test -d $$d/$$file; then \ -+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ -+ fi; \ -+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ -+ else \ -+ test -f $(distdir)/$$file \ -+ || cp -p $$d/$$file $(distdir)/$$file \ -+ || exit 1; \ -+ fi; \ -+ done -+check-am: all-am -+check: check-am -+all-am: Makefile $(LIBRARIES) -+installdirs: -+install: install-am -+install-exec: install-exec-am -+install-data: install-data-am -+uninstall: uninstall-am -+ -+install-am: all-am -+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -+ -+installcheck: installcheck-am -+install-strip: -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ `test -z '$(STRIP)' || \ -+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -+mostlyclean-generic: -+ -+clean-generic: -+ -+distclean-generic: -+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -+ -+maintainer-clean-generic: -+ @echo "This command is intended for maintainers to use" -+ @echo "it deletes files that may require special tools to rebuild." -+clean: clean-am -+ -+clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ -+ mostlyclean-am -+ -+distclean: distclean-am -+ -rm -rf ./$(DEPDIR) -+ -rm -f Makefile -+distclean-am: clean-am distclean-compile distclean-generic \ -+ distclean-libtool distclean-tags -+ -+dvi: dvi-am -+ -+dvi-am: -+ -+html: html-am -+ -+info: info-am -+ -+info-am: -+ -+install-data-am: -+ -+install-exec-am: -+ -+install-info: install-info-am -+ -+install-man: -+ -+installcheck-am: -+ -+maintainer-clean: maintainer-clean-am -+ -rm -rf ./$(DEPDIR) -+ -rm -f Makefile -+maintainer-clean-am: distclean-am maintainer-clean-generic -+ -+mostlyclean: mostlyclean-am -+ -+mostlyclean-am: mostlyclean-compile mostlyclean-generic \ -+ mostlyclean-libtool -+ -+pdf: pdf-am -+ -+pdf-am: -+ -+ps: ps-am -+ -+ps-am: -+ -+uninstall-am: uninstall-info-am -+ -+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ -+ clean-libtool clean-noinstLIBRARIES ctags distclean \ -+ distclean-compile distclean-generic distclean-libtool \ -+ distclean-tags distdir dvi dvi-am html html-am info info-am \ -+ install install-am install-data install-data-am install-exec \ -+ install-exec-am install-info install-info-am install-man \ -+ install-strip installcheck installcheck-am installdirs \ -+ maintainer-clean maintainer-clean-generic mostlyclean \ -+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ -+ pdf pdf-am ps ps-am tags uninstall uninstall-am \ -+ uninstall-info-am -+ -+# Tell versions [3.59,3.63) of GNU make to not export all variables. -+# Otherwise a system limit (for SysV at least) may be exceeded. -+.NOEXPORT: -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/Makefile.am open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/Makefile.am ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/Makefile.am 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/Makefile.am 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1 @@ -+SUBDIRS = dhcpc brcm-iscsi -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/Makefile.in open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/Makefile.in ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/Makefile.in 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/Makefile.in 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,471 @@ -+# Makefile.in generated by automake 1.9.6 from Makefile.am. -+# @configure_input@ -+ -+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -+# 2003, 2004, 2005 Free Software Foundation, Inc. -+# This Makefile.in 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. -+ -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -+# PARTICULAR PURPOSE. -+ -+@SET_MAKE@ -+srcdir = @srcdir@ -+top_srcdir = @top_srcdir@ -+VPATH = @srcdir@ -+pkgdatadir = $(datadir)/@PACKAGE@ -+pkglibdir = $(libdir)/@PACKAGE@ -+pkgincludedir = $(includedir)/@PACKAGE@ -+top_builddir = ../.. -+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -+INSTALL = @INSTALL@ -+install_sh_DATA = $(install_sh) -c -m 644 -+install_sh_PROGRAM = $(install_sh) -c -+install_sh_SCRIPT = $(install_sh) -c -+INSTALL_HEADER = $(INSTALL_DATA) -+transform = $(program_transform_name) -+NORMAL_INSTALL = : -+PRE_INSTALL = : -+POST_INSTALL = : -+NORMAL_UNINSTALL = : -+PRE_UNINSTALL = : -+POST_UNINSTALL = : -+build_triplet = @build@ -+host_triplet = @host@ -+subdir = src/apps -+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -+am__aclocal_m4_deps = $(top_srcdir)/configure.ac -+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ -+ $(ACLOCAL_M4) -+mkinstalldirs = $(install_sh) -d -+CONFIG_HEADER = $(top_builddir)/config.h -+CONFIG_CLEAN_FILES = -+SOURCES = -+DIST_SOURCES = -+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ -+ html-recursive info-recursive install-data-recursive \ -+ install-exec-recursive install-info-recursive \ -+ install-recursive installcheck-recursive installdirs-recursive \ -+ pdf-recursive ps-recursive uninstall-info-recursive \ -+ uninstall-recursive -+ETAGS = etags -+CTAGS = ctags -+DIST_SUBDIRS = $(SUBDIRS) -+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -+ACLOCAL = @ACLOCAL@ -+AMDEP_FALSE = @AMDEP_FALSE@ -+AMDEP_TRUE = @AMDEP_TRUE@ -+AMTAR = @AMTAR@ -+AR = @AR@ -+AUTOCONF = @AUTOCONF@ -+AUTOHEADER = @AUTOHEADER@ -+AUTOMAKE = @AUTOMAKE@ -+AWK = @AWK@ -+BASH = @BASH@ -+CC = @CC@ -+CCDEPMODE = @CCDEPMODE@ -+CFLAGS = @CFLAGS@ -+CPP = @CPP@ -+CPPFLAGS = @CPPFLAGS@ -+CXX = @CXX@ -+CXXCPP = @CXXCPP@ -+CXXDEPMODE = @CXXDEPMODE@ -+CXXFLAGS = @CXXFLAGS@ -+CYGPATH_W = @CYGPATH_W@ -+DEBUG_FALSE = @DEBUG_FALSE@ -+DEBUG_TRUE = @DEBUG_TRUE@ -+DEFS = @DEFS@ -+DEPDIR = @DEPDIR@ -+ECHO = @ECHO@ -+ECHO_C = @ECHO_C@ -+ECHO_N = @ECHO_N@ -+ECHO_T = @ECHO_T@ -+EGREP = @EGREP@ -+ENDIAN = @ENDIAN@ -+EXEEXT = @EXEEXT@ -+F77 = @F77@ -+FFLAGS = @FFLAGS@ -+INSTALL_DATA = @INSTALL_DATA@ -+INSTALL_PROGRAM = @INSTALL_PROGRAM@ -+INSTALL_SCRIPT = @INSTALL_SCRIPT@ -+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -+LDFLAGS = @LDFLAGS@ -+LIBOBJS = @LIBOBJS@ -+LIBS = @LIBS@ -+LIBTOOL = @LIBTOOL@ -+LN_S = @LN_S@ -+LTLIBOBJS = @LTLIBOBJS@ -+MAKEINFO = @MAKEINFO@ -+OBJEXT = @OBJEXT@ -+PACKAGE = @PACKAGE@ -+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -+PACKAGE_NAME = @PACKAGE_NAME@ -+PACKAGE_STRING = @PACKAGE_STRING@ -+PACKAGE_TARNAME = @PACKAGE_TARNAME@ -+PACKAGE_VERSION = @PACKAGE_VERSION@ -+PATH_SEPARATOR = @PATH_SEPARATOR@ -+RANLIB = @RANLIB@ -+SED = @SED@ -+SET_MAKE = @SET_MAKE@ -+SHELL = @SHELL@ -+STRIP = @STRIP@ -+VERSION = @VERSION@ -+ac_ct_AR = @ac_ct_AR@ -+ac_ct_CC = @ac_ct_CC@ -+ac_ct_CXX = @ac_ct_CXX@ -+ac_ct_F77 = @ac_ct_F77@ -+ac_ct_RANLIB = @ac_ct_RANLIB@ -+ac_ct_STRIP = @ac_ct_STRIP@ -+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ -+am__include = @am__include@ -+am__leading_dot = @am__leading_dot@ -+am__quote = @am__quote@ -+am__tar = @am__tar@ -+am__untar = @am__untar@ -+bindir = @bindir@ -+build = @build@ -+build_alias = @build_alias@ -+build_cpu = @build_cpu@ -+build_os = @build_os@ -+build_vendor = @build_vendor@ -+datadir = @datadir@ -+exec_prefix = @exec_prefix@ -+host = @host@ -+host_alias = @host_alias@ -+host_cpu = @host_cpu@ -+host_os = @host_os@ -+host_vendor = @host_vendor@ -+includedir = @includedir@ -+infodir = @infodir@ -+install_sh = @install_sh@ -+libdir = @libdir@ -+libexecdir = @libexecdir@ -+localstatedir = @localstatedir@ -+mandir = @mandir@ -+mkdir_p = @mkdir_p@ -+oldincludedir = @oldincludedir@ -+prefix = @prefix@ -+program_transform_name = @program_transform_name@ -+sbindir = @sbindir@ -+sharedstatedir = @sharedstatedir@ -+sysconfdir = @sysconfdir@ -+target_alias = @target_alias@ -+SUBDIRS = dhcpc brcm-iscsi -+all: all-recursive -+ -+.SUFFIXES: -+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) -+ @for dep in $?; do \ -+ case '$(am__configure_deps)' in \ -+ *$$dep*) \ -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ -+ && exit 0; \ -+ exit 1;; \ -+ esac; \ -+ done; \ -+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/apps/Makefile'; \ -+ cd $(top_srcdir) && \ -+ $(AUTOMAKE) --gnu src/apps/Makefile -+.PRECIOUS: Makefile -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ @case '$?' in \ -+ *config.status*) \ -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ -+ *) \ -+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ -+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ -+ esac; -+ -+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+ -+$(top_srcdir)/configure: $(am__configure_deps) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+$(ACLOCAL_M4): $(am__aclocal_m4_deps) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+ -+mostlyclean-libtool: -+ -rm -f *.lo -+ -+clean-libtool: -+ -rm -rf .libs _libs -+ -+distclean-libtool: -+ -rm -f libtool -+uninstall-info-am: -+ -+# This directory's subdirectories are mostly independent; you can cd -+# into them and run `make' without going through this Makefile. -+# To change the values of `make' variables: instead of editing Makefiles, -+# (1) if the variable is set in `config.status', edit `config.status' -+# (which will cause the Makefiles to be regenerated when you run `make'); -+# (2) otherwise, pass the desired values on the `make' command line. -+$(RECURSIVE_TARGETS): -+ @failcom='exit 1'; \ -+ for f in x $$MAKEFLAGS; do \ -+ case $$f in \ -+ *=* | --[!k]*);; \ -+ *k*) failcom='fail=yes';; \ -+ esac; \ -+ done; \ -+ dot_seen=no; \ -+ target=`echo $@ | sed s/-recursive//`; \ -+ list='$(SUBDIRS)'; for subdir in $$list; do \ -+ echo "Making $$target in $$subdir"; \ -+ if test "$$subdir" = "."; then \ -+ dot_seen=yes; \ -+ local_target="$$target-am"; \ -+ else \ -+ local_target="$$target"; \ -+ fi; \ -+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ -+ || eval $$failcom; \ -+ done; \ -+ if test "$$dot_seen" = "no"; then \ -+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ -+ fi; test -z "$$fail" -+ -+mostlyclean-recursive clean-recursive distclean-recursive \ -+maintainer-clean-recursive: -+ @failcom='exit 1'; \ -+ for f in x $$MAKEFLAGS; do \ -+ case $$f in \ -+ *=* | --[!k]*);; \ -+ *k*) failcom='fail=yes';; \ -+ esac; \ -+ done; \ -+ dot_seen=no; \ -+ case "$@" in \ -+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ -+ *) list='$(SUBDIRS)' ;; \ -+ esac; \ -+ rev=''; for subdir in $$list; do \ -+ if test "$$subdir" = "."; then :; else \ -+ rev="$$subdir $$rev"; \ -+ fi; \ -+ done; \ -+ rev="$$rev ."; \ -+ target=`echo $@ | sed s/-recursive//`; \ -+ for subdir in $$rev; do \ -+ echo "Making $$target in $$subdir"; \ -+ if test "$$subdir" = "."; then \ -+ local_target="$$target-am"; \ -+ else \ -+ local_target="$$target"; \ -+ fi; \ -+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ -+ || eval $$failcom; \ -+ done && test -z "$$fail" -+tags-recursive: -+ list='$(SUBDIRS)'; for subdir in $$list; do \ -+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ -+ done -+ctags-recursive: -+ list='$(SUBDIRS)'; for subdir in $$list; do \ -+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ -+ done -+ -+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) ' { files[$$0] = 1; } \ -+ END { for (i in files) print i; }'`; \ -+ mkid -fID $$unique -+tags: TAGS -+ -+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ here=`pwd`; \ -+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ -+ include_option=--etags-include; \ -+ empty_fix=.; \ -+ else \ -+ include_option=--include; \ -+ empty_fix=; \ -+ fi; \ -+ list='$(SUBDIRS)'; for subdir in $$list; do \ -+ if test "$$subdir" = .; then :; else \ -+ test ! -f $$subdir/TAGS || \ -+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ -+ fi; \ -+ done; \ -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) ' { files[$$0] = 1; } \ -+ END { for (i in files) print i; }'`; \ -+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ -+ test -n "$$unique" || unique=$$empty_fix; \ -+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ -+ $$tags $$unique; \ -+ fi -+ctags: CTAGS -+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ here=`pwd`; \ -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) ' { files[$$0] = 1; } \ -+ END { for (i in files) print i; }'`; \ -+ test -z "$(CTAGS_ARGS)$$tags$$unique" \ -+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ -+ $$tags $$unique -+ -+GTAGS: -+ here=`$(am__cd) $(top_builddir) && pwd` \ -+ && cd $(top_srcdir) \ -+ && gtags -i $(GTAGS_ARGS) $$here -+ -+distclean-tags: -+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -+ -+distdir: $(DISTFILES) -+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ -+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ -+ list='$(DISTFILES)'; for file in $$list; do \ -+ case $$file in \ -+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ -+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ -+ esac; \ -+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ -+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ -+ dir="/$$dir"; \ -+ $(mkdir_p) "$(distdir)$$dir"; \ -+ else \ -+ dir=''; \ -+ fi; \ -+ if test -d $$d/$$file; then \ -+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ -+ fi; \ -+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ -+ else \ -+ test -f $(distdir)/$$file \ -+ || cp -p $$d/$$file $(distdir)/$$file \ -+ || exit 1; \ -+ fi; \ -+ done -+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ -+ if test "$$subdir" = .; then :; else \ -+ test -d "$(distdir)/$$subdir" \ -+ || $(mkdir_p) "$(distdir)/$$subdir" \ -+ || exit 1; \ -+ distdir=`$(am__cd) $(distdir) && pwd`; \ -+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ -+ (cd $$subdir && \ -+ $(MAKE) $(AM_MAKEFLAGS) \ -+ top_distdir="$$top_distdir" \ -+ distdir="$$distdir/$$subdir" \ -+ distdir) \ -+ || exit 1; \ -+ fi; \ -+ done -+check-am: all-am -+check: check-recursive -+all-am: Makefile -+installdirs: installdirs-recursive -+installdirs-am: -+install: install-recursive -+install-exec: install-exec-recursive -+install-data: install-data-recursive -+uninstall: uninstall-recursive -+ -+install-am: all-am -+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -+ -+installcheck: installcheck-recursive -+install-strip: -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ `test -z '$(STRIP)' || \ -+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -+mostlyclean-generic: -+ -+clean-generic: -+ -+distclean-generic: -+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -+ -+maintainer-clean-generic: -+ @echo "This command is intended for maintainers to use" -+ @echo "it deletes files that may require special tools to rebuild." -+clean: clean-recursive -+ -+clean-am: clean-generic clean-libtool mostlyclean-am -+ -+distclean: distclean-recursive -+ -rm -f Makefile -+distclean-am: clean-am distclean-generic distclean-libtool \ -+ distclean-tags -+ -+dvi: dvi-recursive -+ -+dvi-am: -+ -+html: html-recursive -+ -+info: info-recursive -+ -+info-am: -+ -+install-data-am: -+ -+install-exec-am: -+ -+install-info: install-info-recursive -+ -+install-man: -+ -+installcheck-am: -+ -+maintainer-clean: maintainer-clean-recursive -+ -rm -f Makefile -+maintainer-clean-am: distclean-am maintainer-clean-generic -+ -+mostlyclean: mostlyclean-recursive -+ -+mostlyclean-am: mostlyclean-generic mostlyclean-libtool -+ -+pdf: pdf-recursive -+ -+pdf-am: -+ -+ps: ps-recursive -+ -+ps-am: -+ -+uninstall-am: uninstall-info-am -+ -+uninstall-info: uninstall-info-recursive -+ -+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ -+ clean clean-generic clean-libtool clean-recursive ctags \ -+ ctags-recursive distclean distclean-generic distclean-libtool \ -+ distclean-recursive distclean-tags distdir dvi dvi-am html \ -+ html-am info info-am install install-am install-data \ -+ install-data-am install-exec install-exec-am install-info \ -+ install-info-am install-man install-strip installcheck \ -+ installcheck-am installdirs installdirs-am maintainer-clean \ -+ maintainer-clean-generic maintainer-clean-recursive \ -+ mostlyclean mostlyclean-generic mostlyclean-libtool \ -+ mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ -+ uninstall uninstall-am uninstall-info-am -+ -+# Tell versions [3.59,3.63) of GNU make to not export all variables. -+# Otherwise a system limit (for SysV at least) may be exceeded. -+.NOEXPORT: -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/README open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/README ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/apps/README 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/apps/README 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,2 @@ -+This directory contains a few example applications. They are not all -+heavily tested, however. -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/Makefile.am open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/Makefile.am ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/Makefile.am 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/Makefile.am 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1 @@ -+SUBDIRS = apps uip unix -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/Makefile.in open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/Makefile.in ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/Makefile.in 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/Makefile.in 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,471 @@ -+# Makefile.in generated by automake 1.9.6 from Makefile.am. -+# @configure_input@ -+ -+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -+# 2003, 2004, 2005 Free Software Foundation, Inc. -+# This Makefile.in 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. -+ -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -+# PARTICULAR PURPOSE. -+ -+@SET_MAKE@ -+srcdir = @srcdir@ -+top_srcdir = @top_srcdir@ -+VPATH = @srcdir@ -+pkgdatadir = $(datadir)/@PACKAGE@ -+pkglibdir = $(libdir)/@PACKAGE@ -+pkgincludedir = $(includedir)/@PACKAGE@ -+top_builddir = .. -+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -+INSTALL = @INSTALL@ -+install_sh_DATA = $(install_sh) -c -m 644 -+install_sh_PROGRAM = $(install_sh) -c -+install_sh_SCRIPT = $(install_sh) -c -+INSTALL_HEADER = $(INSTALL_DATA) -+transform = $(program_transform_name) -+NORMAL_INSTALL = : -+PRE_INSTALL = : -+POST_INSTALL = : -+NORMAL_UNINSTALL = : -+PRE_UNINSTALL = : -+POST_UNINSTALL = : -+build_triplet = @build@ -+host_triplet = @host@ -+subdir = src -+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -+am__aclocal_m4_deps = $(top_srcdir)/configure.ac -+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ -+ $(ACLOCAL_M4) -+mkinstalldirs = $(install_sh) -d -+CONFIG_HEADER = $(top_builddir)/config.h -+CONFIG_CLEAN_FILES = -+SOURCES = -+DIST_SOURCES = -+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ -+ html-recursive info-recursive install-data-recursive \ -+ install-exec-recursive install-info-recursive \ -+ install-recursive installcheck-recursive installdirs-recursive \ -+ pdf-recursive ps-recursive uninstall-info-recursive \ -+ uninstall-recursive -+ETAGS = etags -+CTAGS = ctags -+DIST_SUBDIRS = $(SUBDIRS) -+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -+ACLOCAL = @ACLOCAL@ -+AMDEP_FALSE = @AMDEP_FALSE@ -+AMDEP_TRUE = @AMDEP_TRUE@ -+AMTAR = @AMTAR@ -+AR = @AR@ -+AUTOCONF = @AUTOCONF@ -+AUTOHEADER = @AUTOHEADER@ -+AUTOMAKE = @AUTOMAKE@ -+AWK = @AWK@ -+BASH = @BASH@ -+CC = @CC@ -+CCDEPMODE = @CCDEPMODE@ -+CFLAGS = @CFLAGS@ -+CPP = @CPP@ -+CPPFLAGS = @CPPFLAGS@ -+CXX = @CXX@ -+CXXCPP = @CXXCPP@ -+CXXDEPMODE = @CXXDEPMODE@ -+CXXFLAGS = @CXXFLAGS@ -+CYGPATH_W = @CYGPATH_W@ -+DEBUG_FALSE = @DEBUG_FALSE@ -+DEBUG_TRUE = @DEBUG_TRUE@ -+DEFS = @DEFS@ -+DEPDIR = @DEPDIR@ -+ECHO = @ECHO@ -+ECHO_C = @ECHO_C@ -+ECHO_N = @ECHO_N@ -+ECHO_T = @ECHO_T@ -+EGREP = @EGREP@ -+ENDIAN = @ENDIAN@ -+EXEEXT = @EXEEXT@ -+F77 = @F77@ -+FFLAGS = @FFLAGS@ -+INSTALL_DATA = @INSTALL_DATA@ -+INSTALL_PROGRAM = @INSTALL_PROGRAM@ -+INSTALL_SCRIPT = @INSTALL_SCRIPT@ -+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -+LDFLAGS = @LDFLAGS@ -+LIBOBJS = @LIBOBJS@ -+LIBS = @LIBS@ -+LIBTOOL = @LIBTOOL@ -+LN_S = @LN_S@ -+LTLIBOBJS = @LTLIBOBJS@ -+MAKEINFO = @MAKEINFO@ -+OBJEXT = @OBJEXT@ -+PACKAGE = @PACKAGE@ -+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -+PACKAGE_NAME = @PACKAGE_NAME@ -+PACKAGE_STRING = @PACKAGE_STRING@ -+PACKAGE_TARNAME = @PACKAGE_TARNAME@ -+PACKAGE_VERSION = @PACKAGE_VERSION@ -+PATH_SEPARATOR = @PATH_SEPARATOR@ -+RANLIB = @RANLIB@ -+SED = @SED@ -+SET_MAKE = @SET_MAKE@ -+SHELL = @SHELL@ -+STRIP = @STRIP@ -+VERSION = @VERSION@ -+ac_ct_AR = @ac_ct_AR@ -+ac_ct_CC = @ac_ct_CC@ -+ac_ct_CXX = @ac_ct_CXX@ -+ac_ct_F77 = @ac_ct_F77@ -+ac_ct_RANLIB = @ac_ct_RANLIB@ -+ac_ct_STRIP = @ac_ct_STRIP@ -+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ -+am__include = @am__include@ -+am__leading_dot = @am__leading_dot@ -+am__quote = @am__quote@ -+am__tar = @am__tar@ -+am__untar = @am__untar@ -+bindir = @bindir@ -+build = @build@ -+build_alias = @build_alias@ -+build_cpu = @build_cpu@ -+build_os = @build_os@ -+build_vendor = @build_vendor@ -+datadir = @datadir@ -+exec_prefix = @exec_prefix@ -+host = @host@ -+host_alias = @host_alias@ -+host_cpu = @host_cpu@ -+host_os = @host_os@ -+host_vendor = @host_vendor@ -+includedir = @includedir@ -+infodir = @infodir@ -+install_sh = @install_sh@ -+libdir = @libdir@ -+libexecdir = @libexecdir@ -+localstatedir = @localstatedir@ -+mandir = @mandir@ -+mkdir_p = @mkdir_p@ -+oldincludedir = @oldincludedir@ -+prefix = @prefix@ -+program_transform_name = @program_transform_name@ -+sbindir = @sbindir@ -+sharedstatedir = @sharedstatedir@ -+sysconfdir = @sysconfdir@ -+target_alias = @target_alias@ -+SUBDIRS = apps uip unix -+all: all-recursive -+ -+.SUFFIXES: -+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) -+ @for dep in $?; do \ -+ case '$(am__configure_deps)' in \ -+ *$$dep*) \ -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ -+ && exit 0; \ -+ exit 1;; \ -+ esac; \ -+ done; \ -+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ -+ cd $(top_srcdir) && \ -+ $(AUTOMAKE) --gnu src/Makefile -+.PRECIOUS: Makefile -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ @case '$?' in \ -+ *config.status*) \ -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ -+ *) \ -+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ -+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ -+ esac; -+ -+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+ -+$(top_srcdir)/configure: $(am__configure_deps) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+$(ACLOCAL_M4): $(am__aclocal_m4_deps) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+ -+mostlyclean-libtool: -+ -rm -f *.lo -+ -+clean-libtool: -+ -rm -rf .libs _libs -+ -+distclean-libtool: -+ -rm -f libtool -+uninstall-info-am: -+ -+# This directory's subdirectories are mostly independent; you can cd -+# into them and run `make' without going through this Makefile. -+# To change the values of `make' variables: instead of editing Makefiles, -+# (1) if the variable is set in `config.status', edit `config.status' -+# (which will cause the Makefiles to be regenerated when you run `make'); -+# (2) otherwise, pass the desired values on the `make' command line. -+$(RECURSIVE_TARGETS): -+ @failcom='exit 1'; \ -+ for f in x $$MAKEFLAGS; do \ -+ case $$f in \ -+ *=* | --[!k]*);; \ -+ *k*) failcom='fail=yes';; \ -+ esac; \ -+ done; \ -+ dot_seen=no; \ -+ target=`echo $@ | sed s/-recursive//`; \ -+ list='$(SUBDIRS)'; for subdir in $$list; do \ -+ echo "Making $$target in $$subdir"; \ -+ if test "$$subdir" = "."; then \ -+ dot_seen=yes; \ -+ local_target="$$target-am"; \ -+ else \ -+ local_target="$$target"; \ -+ fi; \ -+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ -+ || eval $$failcom; \ -+ done; \ -+ if test "$$dot_seen" = "no"; then \ -+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ -+ fi; test -z "$$fail" -+ -+mostlyclean-recursive clean-recursive distclean-recursive \ -+maintainer-clean-recursive: -+ @failcom='exit 1'; \ -+ for f in x $$MAKEFLAGS; do \ -+ case $$f in \ -+ *=* | --[!k]*);; \ -+ *k*) failcom='fail=yes';; \ -+ esac; \ -+ done; \ -+ dot_seen=no; \ -+ case "$@" in \ -+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ -+ *) list='$(SUBDIRS)' ;; \ -+ esac; \ -+ rev=''; for subdir in $$list; do \ -+ if test "$$subdir" = "."; then :; else \ -+ rev="$$subdir $$rev"; \ -+ fi; \ -+ done; \ -+ rev="$$rev ."; \ -+ target=`echo $@ | sed s/-recursive//`; \ -+ for subdir in $$rev; do \ -+ echo "Making $$target in $$subdir"; \ -+ if test "$$subdir" = "."; then \ -+ local_target="$$target-am"; \ -+ else \ -+ local_target="$$target"; \ -+ fi; \ -+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ -+ || eval $$failcom; \ -+ done && test -z "$$fail" -+tags-recursive: -+ list='$(SUBDIRS)'; for subdir in $$list; do \ -+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ -+ done -+ctags-recursive: -+ list='$(SUBDIRS)'; for subdir in $$list; do \ -+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ -+ done -+ -+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) ' { files[$$0] = 1; } \ -+ END { for (i in files) print i; }'`; \ -+ mkid -fID $$unique -+tags: TAGS -+ -+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ here=`pwd`; \ -+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ -+ include_option=--etags-include; \ -+ empty_fix=.; \ -+ else \ -+ include_option=--include; \ -+ empty_fix=; \ -+ fi; \ -+ list='$(SUBDIRS)'; for subdir in $$list; do \ -+ if test "$$subdir" = .; then :; else \ -+ test ! -f $$subdir/TAGS || \ -+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ -+ fi; \ -+ done; \ -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) ' { files[$$0] = 1; } \ -+ END { for (i in files) print i; }'`; \ -+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ -+ test -n "$$unique" || unique=$$empty_fix; \ -+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ -+ $$tags $$unique; \ -+ fi -+ctags: CTAGS -+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ here=`pwd`; \ -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) ' { files[$$0] = 1; } \ -+ END { for (i in files) print i; }'`; \ -+ test -z "$(CTAGS_ARGS)$$tags$$unique" \ -+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ -+ $$tags $$unique -+ -+GTAGS: -+ here=`$(am__cd) $(top_builddir) && pwd` \ -+ && cd $(top_srcdir) \ -+ && gtags -i $(GTAGS_ARGS) $$here -+ -+distclean-tags: -+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -+ -+distdir: $(DISTFILES) -+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ -+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ -+ list='$(DISTFILES)'; for file in $$list; do \ -+ case $$file in \ -+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ -+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ -+ esac; \ -+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ -+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ -+ dir="/$$dir"; \ -+ $(mkdir_p) "$(distdir)$$dir"; \ -+ else \ -+ dir=''; \ -+ fi; \ -+ if test -d $$d/$$file; then \ -+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ -+ fi; \ -+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ -+ else \ -+ test -f $(distdir)/$$file \ -+ || cp -p $$d/$$file $(distdir)/$$file \ -+ || exit 1; \ -+ fi; \ -+ done -+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ -+ if test "$$subdir" = .; then :; else \ -+ test -d "$(distdir)/$$subdir" \ -+ || $(mkdir_p) "$(distdir)/$$subdir" \ -+ || exit 1; \ -+ distdir=`$(am__cd) $(distdir) && pwd`; \ -+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ -+ (cd $$subdir && \ -+ $(MAKE) $(AM_MAKEFLAGS) \ -+ top_distdir="$$top_distdir" \ -+ distdir="$$distdir/$$subdir" \ -+ distdir) \ -+ || exit 1; \ -+ fi; \ -+ done -+check-am: all-am -+check: check-recursive -+all-am: Makefile -+installdirs: installdirs-recursive -+installdirs-am: -+install: install-recursive -+install-exec: install-exec-recursive -+install-data: install-data-recursive -+uninstall: uninstall-recursive -+ -+install-am: all-am -+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -+ -+installcheck: installcheck-recursive -+install-strip: -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ `test -z '$(STRIP)' || \ -+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -+mostlyclean-generic: -+ -+clean-generic: -+ -+distclean-generic: -+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -+ -+maintainer-clean-generic: -+ @echo "This command is intended for maintainers to use" -+ @echo "it deletes files that may require special tools to rebuild." -+clean: clean-recursive -+ -+clean-am: clean-generic clean-libtool mostlyclean-am -+ -+distclean: distclean-recursive -+ -rm -f Makefile -+distclean-am: clean-am distclean-generic distclean-libtool \ -+ distclean-tags -+ -+dvi: dvi-recursive -+ -+dvi-am: -+ -+html: html-recursive -+ -+info: info-recursive -+ -+info-am: -+ -+install-data-am: -+ -+install-exec-am: -+ -+install-info: install-info-recursive -+ -+install-man: -+ -+installcheck-am: -+ -+maintainer-clean: maintainer-clean-recursive -+ -rm -f Makefile -+maintainer-clean-am: distclean-am maintainer-clean-generic -+ -+mostlyclean: mostlyclean-recursive -+ -+mostlyclean-am: mostlyclean-generic mostlyclean-libtool -+ -+pdf: pdf-recursive -+ -+pdf-am: -+ -+ps: ps-recursive -+ -+ps-am: -+ -+uninstall-am: uninstall-info-am -+ -+uninstall-info: uninstall-info-recursive -+ -+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ -+ clean clean-generic clean-libtool clean-recursive ctags \ -+ ctags-recursive distclean distclean-generic distclean-libtool \ -+ distclean-recursive distclean-tags distdir dvi dvi-am html \ -+ html-am info info-am install install-am install-data \ -+ install-data-am install-exec install-exec-am install-info \ -+ install-info-am install-man install-strip installcheck \ -+ installcheck-am installdirs installdirs-am maintainer-clean \ -+ maintainer-clean-generic maintainer-clean-recursive \ -+ mostlyclean mostlyclean-generic mostlyclean-libtool \ -+ mostlyclean-recursive pdf pdf-am ps ps-am tags tags-recursive \ -+ uninstall uninstall-am uninstall-info-am -+ -+# Tell versions [3.59,3.63) of GNU make to not export all variables. -+# Otherwise a system limit (for SysV at least) may be exceeded. -+.NOEXPORT: -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/README open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/README ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/README 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/README 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,13 @@ -+uIP is a very small implementation of the TCP/IP stack that is written -+by Adam Dunkels . More information can be obtained -+at the uIP homepage at http://www.sics.se/~adam/uip/. -+ -+This is version $Name: uip-1-0 $. -+ -+The directory structure look as follows: -+ -+apps/ - Example applications -+doc/ - Documentation -+lib/ - Library code used by some applications -+uip/ - uIP TCP/IP stack code -+unix/ - uIP as a user space process under FreeBSD or Linux -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/clock.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/clock.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/clock.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/clock.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,88 @@ -+/** -+ * \defgroup clock Clock interface -+ * -+ * The clock interface is the interface between the \ref timer "timer library" -+ * and the platform specific clock functionality. The clock -+ * interface must be implemented for each platform that uses the \ref -+ * timer "timer library". -+ * -+ * The clock interface does only one this: it measures time. The clock -+ * interface provides a macro, CLOCK_SECOND, which corresponds to one -+ * second of system time. -+ * -+ * \sa \ref timer "Timer library" -+ * -+ * @{ -+ */ -+ -+/* -+ * Copyright (c) 2004, Swedish Institute of Computer Science. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. Neither the name of the Institute nor the names of its contributors -+ * may be used to endorse or promote products derived from this software -+ * without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE -+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ * This file is part of the uIP TCP/IP stack -+ * -+ * Author: Adam Dunkels -+ * -+ * $Id: clock.h,v 1.3 2006/06/11 21:46:39 adam Exp $ -+ */ -+#ifndef __CLOCK_H__ -+#define __CLOCK_H__ -+ -+#include "clock-arch.h" -+ -+/** -+ * Initialize the clock library. -+ * -+ * This function initializes the clock library and should be called -+ * from the main() function of the system. -+ * -+ */ -+void clock_init(void); -+ -+/** -+ * Get the current clock time. -+ * -+ * This function returns the current system clock time. -+ * -+ * \return The current clock time, measured in system ticks. -+ */ -+clock_time_t clock_time(void); -+ -+/** -+ * A second, measured in system clock time. -+ * -+ * \hideinitializer -+ */ -+#ifdef CLOCK_CONF_SECOND -+#define CLOCK_SECOND CLOCK_CONF_SECOND -+#else -+#define CLOCK_SECOND (clock_time_t)32 -+#endif -+ -+#endif /* __CLOCK_H__ */ -+ -+/** @} */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/debug.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/debug.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/debug.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/debug.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,9 @@ -+#ifndef __DEBUG_H__ -+#define __DEBUG_H__ -+ -+#ifdef DEBUG -+#define UIP_DEBUG(args...) fprintf(stdout, args); fflush(stdout) -+#else -+#endif -+ -+#endif -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/icmpv6.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/icmpv6.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/icmpv6.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/icmpv6.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,312 @@ -+/* -+ * Copyright (c) 2011, Broadcom Corporation -+ * -+ * Written by: Eddie Wai (eddie.wai@broadcom.com) -+ * Based on Kevin Tran's iSCSI boot code -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * icmpv6.h - This file contains macro definitions pertaining to ICMPv6 -+ * -+ * RFC 2463 : ICMPv6 Specification -+ * RFC 2461 : Neighbor Discovery for IPv6 -+ * -+ */ -+#ifndef __ICMPV6_H__ -+#define __ICMPV6_H__ -+ -+#define __FAR__ -+ -+#ifdef PACK_DATA_STRUCTURE -+#pragma pack(push,1) -+#endif -+ -+/* Base ICMP Header sizes */ -+#define IPV6_RTR_SOL_HDR_SIZE 8 -+#define IPV6_RTR_ADV_HDR_SIZE 16 -+#define IPV6_NEIGH_SOL_HDR_SIZE 24 -+#define IPV6_NEIGH_ADV_HDR_SIZE 24 -+#define IPV6_LINK_LAYER_OPT_SIZE 2 -+#define IPV6_LINK_LAYER_OPT_LENGTH 8 -+#define IPV6_MTU_OPT_SIZE 8 -+#define IPV6_PREFIX_OPT_SIZE 32 -+#define IPV6_ECHO_REQUEST_HDR_SIZE 8 -+#define IPV6_ECHO_REPLY_HDR_SIZE 8 -+#define IPV6_REDIRECT_SIZE 40 -+#define IPV6_DHAAD_REQ_HDR_SIZE 8 -+#define IPV6_DHAAD_REPLY_HDR_SIZE 8 -+#define IPV6_PRFXSOL_HDR_SIZE 8 -+#define IPV6_PRFXADV_HDR_SIZE 8 -+#define IPV6_RTR_ADV_INT_OPT_SIZE 8 -+ -+/* ICMP Message Types */ -+/* Error messages are always less than 128 */ -+#define ICMPV6_DST_UNREACH 1 /* Destination Unreachable */ -+#define ICMPV6_PACKET_TOO_BIG 2 /* Packet Too Big */ -+#define ICMPV6_TIME_EXCEEDED 3 /* Time Exceeded */ -+#define ICMPV6_PARAM_PROB 4 /* Parameter Problem */ -+ -+#define ICMPV6_RTR_SOL 133 /* Router Solicitation */ -+#define ICMPV6_RTR_ADV 134 /* Router Advertisement */ -+#define ICMPV6_NEIGH_SOL 135 /* Neighbor Solicitation */ -+#define ICMPV6_NEIGH_ADV 136 /* Neighbor Advertisement */ -+#define ICMPV6_REDIRECT 137 /* Redirect */ -+#define ICMPV6_ECHO_REQUEST 128 /* Echo Request */ -+#define ICMPV6_ECHO_REPLY 129 /* Echo Reply */ -+#define ICMPV6_WRUREQUEST 139 /* Who Are You Request */ -+#define ICMPV6_WRUREPLY 140 /* Who Are You Reply */ -+#define ICMPV6_ROUTER_RENUMBERING 138 /* Router Renumbering */ -+#define ICMPV6_HA_ADDR_DISC_REQ 144 /* Dynamic Home Agent Address -+ Discovery Request */ -+#define ICMPV6_HA_ADDR_DISC_REPLY 145 /* Dynamic Home Agent Address -+ Discovery Reply */ -+#define ICMPV6_MP_SOLICIT 146 /* Mobile Prefix Solicitation */ -+#define ICMPV6_MP_ADV 147 /* Mobile Prefix Reply */ -+ -+/* Destination Unreachable Codes */ -+#define ICMPV6_DST_UNREACH_NOROUTE 0 -+#define ICMPV6_DST_UNREACH_ADMIN 1 -+#define ICMPV6_DST_UNREACH_ADDRESS 3 -+#define ICMPV6_DST_UNREACH_PORT 4 -+ -+/* Time Exceeded Codes */ -+#define ICMPV6_TIME_EXCD_HPLMT 0 /* Hop Limit exceeded in transit */ -+#define ICMPV6_TIME_EXCD_REASM 1 /* Fragment reassembly time exceeded */ -+ -+/* Parameter Problem Codes */ -+#define ICMPV6_PARM_PROB_HEADER 0 -+#define ICMPV6_PARM_PROB_NEXT_HDR 1 -+#define ICMPV6_PARM_PROB_OPTION 2 -+ -+/* ICMP Option Types */ -+#define IPV6_ICMP_OPTION_SRC_ADDR 1 /* Source Link-Layer Address */ -+#define IPV6_ICMP_OPTION_TAR_ADDR 2 /* Target Link-Layer Address */ -+#define IPV6_ICMP_OPTION_PREFIX 3 /* Prefix */ -+#define IPV6_ICMP_OPTION_RED_HDR 4 /* Redirect Header */ -+#define IPV6_ICMP_OPTION_MTU 5 /* Link MTU */ -+#define IPV6_ICMP_OPTION_RTR_ADV_INT 7 /* Rtr Advertisement Interval */ -+ -+/* ICMP Offsets */ -+#define IPV6_ICMP_TYPE_OFFSET 0 -+#define IPV6_ICMP_CODE_OFFSET 1 -+#define IPV6_ICMP_CKSUM_OFFSET 2 -+#define IPV6_ICMP_RESERVED_OFFSET 4 -+#define IPV6_ICMP_DATA_OFFSET 8 -+ -+/* ICMP Router Solicitation Offsets */ -+#define IPV6_ICMP_RTR_SOL_RES_OFFSET 4 -+#define IPV6_ICMP_RTR_SOL_OPTIONS_OFFSET 8 -+ -+/* ICMP Router Advertisement Offsets */ -+#define IPV6_ICMP_RTR_ADV_CURHOPLMT_OFFSET 4 -+#define IPV6_ICMP_RTR_ADV_MGDANDCFG_BIT_OFFSET 5 -+#define IPV6_ICMP_RTR_ADV_RTR_LIFETIME_OFFSET 6 -+#define IPV6_ICMP_RTR_ADV_RCHBL_TIME_OFFSET 8 -+#define IPV6_ICMP_RTR_ADV_RTRNS_TMR_OFFSET 12 -+#define IPV6_ICMP_RTR_ADV_OPTIONS_OFFSET 16 -+ -+/* ICMP Neighbor Solicitation Offsets */ -+#define IPV6_ICMP_NEIGH_SOL_RES_OFFSET 4 -+#define IPV6_ICMP_NEIGH_SOL_TRGT_ADDRS_OFFSET 8 -+#define IPV6_ICMP_NEIGH_SOL_OPTIONS_OFFSET 24 -+ -+/* ICMP Neighbor Advertisement Offsets */ -+#define IPV6_ICMP_NEIGH_ADV_FLAG_OFFSET 4 -+#define IPV6_ICMP_NEIGH_ADV_TRGT_ADDRS_OFFSET 8 -+#define IPV6_ICMP_NEIGH_ADV_OPTIONS_OFFSET 24 -+ -+/* ICMP Redirect Offsets */ -+#define IPV6_ICMP_REDIRECT_TRGT_ADDRS_OFFSET 8 -+#define IPV6_ICMP_REDIRECT_DEST_ADDRS_OFFSET 24 -+#define IPV6_ICMP_REDIRECT_OPTIONS_OFFSET 40 -+ -+/* ICMP Option Offsets */ -+#define IPV6_ICMP_OPTION_TYPE_OFFSET 0 -+#define IPV6_ICMP_OPTION_LENGTH_OFFSET 1 -+ -+/* ICMP Link-Layer Address Option Offsets */ -+#define IPV6_ICMP_LL_OPTION_ADDRESS_OFFSET 2 -+ -+/* ICMP Prefix Option Offsets */ -+#define IPV6_ICMP_PREFIX_PRE_LENGTH_OFFSET 2 -+#define IPV6_ICMP_PREFIX_FLAG_OFFSET 3 -+#define IPV6_ICMP_PREFIX_VALID_LIFETIME_OFFSET 4 -+#define IPV6_ICMP_PREFIX_PREF_LIFETIME_OFFSET 8 -+#define IPV6_ICMP_PREFIX_RES2_OFFSET 12 -+#define IPV6_ICMP_PREFIX_PREFIX_OFFSET 16 -+ -+/* ICMP Redirected Header Option Offsets */ -+#define IPV6_ICMP_RED_OPTION_TYPE_OFFSET 0 -+#define IPV6_ICMP_RED_OPTION_LEN_OFFSET 1 -+#define IPV6_ICMP_RED_OPTION_RES1_OFFSET 2 -+#define IPV6_ICMP_RED_OPTION_RES2_OFFSET 4 -+#define IPV6_ICMP_RED_OPTION_DATA_OFFSET 8 -+ -+/* ICMP MTU Option Offsets */ -+#define IPV6_ICMP_MTU_RESERVED_OFFSET 2 -+#define IPV6_ICMP_MTU_OFFSET 4 -+ -+/* ICMP Echo Request Offsets */ -+#define IPV6_ICMP_ECHO_ID 4 -+#define IPV6_ICMP_ECHO_SEQ 6 -+#define IPV6_ICMP_ECHO_DATA 8 -+ -+/* ICMP Destination Unreachable Offsets */ -+#define IPV6_DST_UNREACH_UNUSED 4 -+#define IPV6_DST_UNREACH_DATA 8 -+ -+/* ICMP Parameter Problem Offsets */ -+#define IPV6_PARAM_PROB_PTR 4 -+#define IPV6_PARAM_PROT_DATA 8 -+ -+/* ICMP Time Exceeded Offsets */ -+#define IPV6_TIME_EXCEEDED_DATA 8 -+ -+/* ICMP Packet Too Big Offsets */ -+#define IPV6_PKT_TOO_BIG_MTU 4 -+#define IPV6_PKT_TOO_BIG_DATA 8 -+ -+/* Home Agent Address Discovery Request Header Offsets */ -+#define ICMPV6_HA_ADDR_DISC_REQ_ID_OFFSET 4 -+#define ICMPV6_HA_ADDR_DISC_REQ_RSVD_OFFSET 6 -+ -+/* Home Agent Address Discovery Reply Header Offsets */ -+#define ICMPV6_HA_ADDR_DISC_REPLY_ID_OFFSET 4 -+#define ICMPV6_HA_ADDR_DISC_REPLY_RSVD_OFFSET 6 -+#define ICMPV6_HA_ADDR_DISC_REPLY_HA_ADDR_OFFSET 8 -+ -+/* Mobile Prefix Solicitation Header Offsets */ -+#define ICMPV6_MP_SOLICIT_ID_OFFSET 4 -+#define ICMPV6_MP_SOLICIT_RSVD_OFFSET 6 -+ -+/* Mobile Prefix Advertisement Header Offsets */ -+#define ICMPV6_MP_ADV_ID_OFFSET 4 -+#define ICMPV6_MP_ADV_MGDANDCFG_BIT_OFFSET 6 -+#define ICMPV6_MP_ADV_OPT_OFFSET 8 -+ -+/* Advertisement Interval Option Header Offsets */ -+#define ICMPV6_ADV_INT_TYPE_OFFSET 0 -+#define ICMPV6_ADV_INT_LEN_OFFSET 1 -+#define ICMPV6_ADV_INT_RSVD_OFFSET 2 -+#define ICMPV6_ADV_INT_ADV_INT_OFFSET 4 -+ -+#define ICMPV6_HEADER_LEN 4 -+ -+#define IPV6_PREFIX_FLAG_ONLINK 0x80 -+#define IPV6_PREFIX_FLAG_AUTO 0x40 -+#define IPV6_PREFIX_FLAG_ROUTER 0x20 -+ -+#define IPV6_NA_FLAG_ROUTER 0x80 -+#define IPV6_NA_FLAG_SOLICITED 0x40 -+#define IPV6_NA_FLAG_OVERRIDE 0x20 -+ -+/* Router Advertisement Flags */ -+#define IPV6_RA_MANAGED_FLAG 0x80 -+#define IPV6_RA_CONFIG_FLAG 0x40 -+ -+/* Mobile Prefix Advertisement Flags */ -+#define IPV6_PA_MANAGED_FLAG 0x80 -+#define IPV6_PA_CONFIG_FLAG 0x40 -+ -+/* Validation Values */ -+#define ICMPV6_VALID_HOP_LIMIT 255 /* Valid Hop Limit */ -+#define ICMPV6_VALID_CODE 0 /* Valid Code */ -+#define ICMPV6_RTRSOL_MIN_LENGTH 8 /* Minimum valid length for -+ Router Solicitation */ -+#define ICMPV6_RTRADV_MIN_LENGTH 16 /* Minimum valid length for -+ Router Advertisement */ -+#define ICMPV6_NEIGHSOL_MIN_LENGTH 24 /* Minimum valid length for -+ Neighbor Solicitation */ -+#define ICMPV6_NEIGHADV_MIN_LENGTH 24 /* Minimum valid length for -+ Neighbor Advertisement */ -+#define ICMPV6_REDIRECT_MIN_LENGTH 40 /* Minimum valid length for -+ Neighbor Advertisement */ -+ -+/* ICMPV6 Header */ -+typedef struct ICMPV6_HDR { -+ u8_t icmpv6_type; /* type field */ -+ u8_t icmpv6_code; /* code field */ -+ u16_t icmpv6_cksum; /* checksum field */ -+ union { -+ u32_t icmpv6_un_data32[1]; /* type-specific field */ -+ u16_t icmpv6_un_data16[2]; /* type-specific field */ -+ u8_t icmpv6_un_data8[4]; /* type-specific field */ -+ } data; -+} ICMPV6_HDR, __FAR__ * pICMPV6_HDR; -+ -+#define icmpv6_data data.icmpv6_un_data32[0] -+ -+typedef struct ICMPV6_OPT_HDR { -+ u8_t type; -+ u8_t len; -+} ICMPV6_OPT_HDR, __FAR__ * pICMPV6_OPT_HDR; -+ -+typedef struct ICMPV6_OPT_LINK_ADDR { -+ ICMPV6_OPT_HDR hdr; -+ u8_t link_addr[6]; -+} ICMPV6_OPT_LINK_ADDR, *pICMPV6_OPT_LINK_ADDR; -+ -+typedef struct ICMPV6_OPT_PREFIX { -+ ICMPV6_OPT_HDR hdr; -+ u8_t prefix_len; -+ u8_t flags; -+#define ICMPV6_OPT_PREFIX_FLAG_ON_LINK (1 << 7) -+#define ICMPV6_OPT_PREFIX_FLAG_BIT_A (1 << 6) -+ u32_t valid_lifetime; -+ u32_t preferred_lifetime; -+ u32_t reserved; -+ IPV6_ADDR prefix; -+} ICMPV6_OPT_PREFIX, __FAR__ * pICMPV6_OPT_PREFIX; -+ -+/* Neighbor Solicitation */ -+typedef struct ICMPV6_ND_SOLICIT { -+ ICMPV6_HDR nd_ns_hdr; -+ //struct id_struct nd_ns_target; /*target address */ -+} ICMPV6_ND_SOLICIT, *pICMPV6_ND_SOLICIT; -+ -+/* Router Advertisement */ -+typedef struct ICMPV6_ROUTER_ADVERT { -+ ICMPV6_HDR header; -+ u32_t reachable_time; -+ u32_t retransmit_timer; -+} ICMPV6_ROUTER_ADVERT, __FAR__ * pICMPV6_ROUTER_ADVERT; -+ -+#define nd_ra_type header.icmpv6_type -+#define nd_ra_code header.icmpv6_code -+#define nd_ra_cksum header.icmpv6_cksum -+#define nd_ra_curhoplimit header.data.icmpv6_un_data8[0] -+#define nd_ra_flags_reserved header.data.icmpv6_un_data8[1] -+#define nd_ra_router_lifetime header.data.icmpv6_un_data16[1] -+ -+#ifdef PACK_DATA_STRUCTURE -+#pragma pack(pop) -+#endif -+ -+#endif /* __ICMPV6_H__ */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/ipv6.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/ipv6.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/ipv6.c 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/ipv6.c 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,1269 @@ -+/* -+ * Copyright (c) 2011, Broadcom Corporation -+ * -+ * Written by: Eddie Wai (eddie.wai@broadcom.com) -+ * Based on Kevin Tran's iSCSI boot code -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * ipv6.c - This file contains simplifed IPv6 processing code. -+ * -+ */ -+#include -+#include -+#include "logger.h" -+#include "uip.h" -+#include "ipv6.h" -+#include "ipv6_pkt.h" -+#include "icmpv6.h" -+#include "uipopt.h" -+#include "dhcpv6.h" -+ -+inline int best_match_bufcmp(u8_t * a, u8_t * b, int len) -+{ -+ int i; -+ -+ for (i = 0; i < len; i++) { -+ if (a[i] != b[i]) -+ break; -+ } -+ return i; -+} -+ -+/* Local function prototypes */ -+STATIC int ipv6_is_it_our_address(pIPV6_CONTEXT ipv6_context, -+ IPV6_ADDR __FAR__ * ipv6_addr); -+STATIC void ipv6_insert_protocol_chksum(pIPV6_HDR ipv6); -+STATIC void ipv6_update_arp_table(pIPV6_CONTEXT ipv6_context, -+ IPV6_ADDR __FAR__ * ip_addr, -+ MAC_ADDR __FAR__ * mac_addr); -+STATIC void ipv6_icmp_init_link_option(pIPV6_CONTEXT ipv6_context, -+ pICMPV6_OPT_LINK_ADDR link_opt, -+ u8_t type); -+STATIC void ipv6_icmp_rx(pIPV6_CONTEXT ipv6_context); -+STATIC void ipv6_icmp_handle_nd_adv(pIPV6_CONTEXT ipv6_context); -+STATIC void ipv6_icmp_handle_nd_sol(pIPV6_CONTEXT ipv6_context); -+STATIC void ipv6_icmp_handle_echo_request(pIPV6_CONTEXT ipv6_context); -+STATIC void ipv6_icmp_handle_router_adv(pIPV6_CONTEXT ipv6_context); -+STATIC void ipv6_icmp_process_prefix(pIPV6_CONTEXT ipv6_context, -+ pICMPV6_OPT_PREFIX icmp_prefix); -+STATIC void ipv6_udp_rx(pIPV6_CONTEXT ipv6_context); -+ -+int iscsiL2Send(pIPV6_CONTEXT ipv6_context, int pkt_len) -+{ -+ LOG_DEBUG("IPV6: iscsiL2Send"); -+ uip_send(ipv6_context->ustack, -+ (void *)ipv6_context->ustack->data_link_layer, pkt_len); -+ -+ return pkt_len; -+} -+ -+int iscsiL2AddMcAddr(pIPV6_CONTEXT ipv6_context, MAC_ADDR * new_mc_addr) -+{ -+ int i; -+ MAC_ADDR *mc_addr; -+ const MAC_ADDR all_zeroes_mc = { 0, 0, 0, 0, 0, 0 }; -+ -+ mc_addr = ipv6_context->mc_addr; -+ for (i = 0; i < MAX_MCADDR_TABLE; i++, mc_addr++) -+ if (!memcmp((char __FAR__ *)mc_addr, -+ (char __FAR__ *)new_mc_addr, sizeof(MAC_ADDR))) -+ return TRUE; /* Already in the mc table */ -+ -+ mc_addr = ipv6_context->mc_addr; -+ for (i = 0; i < MAX_MCADDR_TABLE; i++, mc_addr++) -+ if (!memcmp((char __FAR__ *)mc_addr, -+ (char __FAR__ *)&all_zeroes_mc, sizeof(MAC_ADDR))) { -+ memcpy((char __FAR__ *)mc_addr, -+ (char __FAR__ *)new_mc_addr, sizeof(MAC_ADDR)); -+ LOG_DEBUG("IPV6: mc_addr added %x:%x:%x:%x:%x:%x", -+ *(u8_t *) new_mc_addr, -+ *((u8_t *) new_mc_addr + 1), -+ *((u8_t *) new_mc_addr + 2), -+ *((u8_t *) new_mc_addr + 3), -+ *((u8_t *) new_mc_addr + 4), -+ *((u8_t *) new_mc_addr + 5)); -+ return TRUE; -+ } -+ return FALSE; -+} -+ -+int iscsiL2IsOurMcAddr(pIPV6_CONTEXT ipv6_context, pMAC_ADDRESS dest_mac) -+{ -+ int i; -+ MAC_ADDR *mc_addr; -+ -+ mc_addr = ipv6_context->mc_addr; -+ for (i = 0; i < MAX_MCADDR_TABLE; i++, mc_addr++) -+ if (!memcmp((char __FAR__ *)mc_addr, -+ (char __FAR__ *)dest_mac->addr, sizeof(MAC_ADDR))) -+ return TRUE; -+ return FALSE; -+} -+ -+void ipv6_init(struct ndpc_state *ndp, int cfg) -+{ -+ int i; -+ pIPV6_CONTEXT ipv6_context = (pIPV6_CONTEXT) ndp->ipv6_context; -+ u8_t *mac_addr = (u8_t *) ndp->mac_addr; -+ pIPV6_ARP_ENTRY ipv6_arp_table; -+ pIPV6_PREFIX_ENTRY ipv6_prefix_table; -+ MAC_ADDR mc_addr; -+ -+ if (ipv6_context == NULL) { -+ LOG_ERR("IPV6: INIT ipv6_context is NULL"); -+ return; -+ } -+ -+ memset((char __FAR__ *)ipv6_context, 0, sizeof(IPV6_CONTEXT)); -+ -+ /* Associate the nic_iface's ustack to this ipv6_context */ -+ ipv6_context->ustack = ndp->ustack; -+ -+ ipv6_arp_table = &ipv6_context->ipv6_arp_table[0]; -+ ipv6_prefix_table = &ipv6_context->ipv6_prefix_table[0]; -+ -+ memset((char __FAR__ *)ipv6_arp_table, 0, sizeof(ipv6_arp_table)); -+ memset((char __FAR__ *)ipv6_prefix_table, 0, sizeof(ipv6_prefix_table)); -+ memcpy((char __FAR__ *)&ipv6_context->mac_addr, -+ (char __FAR__ *)mac_addr, sizeof(MAC_ADDR)); -+ /* -+ * Per RFC 2373. -+ * There are two types of local-use unicast addresses defined. These -+ * are Link-Local and Site-Local. The Link-Local is for use on a single -+ * link and the Site-Local is for use in a single site. Link-Local -+ * addresses have the following format: -+ * -+ * | 10 | -+ * | bits | 54 bits | 64 bits | -+ * +----------+-------------------------+----------------------------+ -+ * |1111111010| 0 | interface ID | -+ * +----------+-------------------------+----------------------------+ -+ */ -+ ipv6_context->link_local_addr.addr8[0] = 0xfe; -+ ipv6_context->link_local_addr.addr8[1] = 0x80; -+ /* Bit 1 is 1 to indicate universal scope. */ -+ ipv6_context->link_local_addr.addr8[8] = mac_addr[0] | 0x2; -+ ipv6_context->link_local_addr.addr8[9] = mac_addr[1]; -+ ipv6_context->link_local_addr.addr8[10] = mac_addr[2]; -+ ipv6_context->link_local_addr.addr8[11] = 0xff; -+ ipv6_context->link_local_addr.addr8[12] = 0xfe; -+ ipv6_context->link_local_addr.addr8[13] = mac_addr[3]; -+ ipv6_context->link_local_addr.addr8[14] = mac_addr[4]; -+ ipv6_context->link_local_addr.addr8[15] = mac_addr[5]; -+ -+ ipv6_context->link_local_multi.addr8[0] = 0xff; -+ ipv6_context->link_local_multi.addr8[1] = 0x02; -+ ipv6_context->link_local_multi.addr8[11] = 0x01; -+ ipv6_context->link_local_multi.addr8[12] = 0xff; -+ ipv6_context->link_local_multi.addr8[13] |= -+ ipv6_context->link_local_addr.addr8[13]; -+ ipv6_context->link_local_multi.addr16[7] = -+ ipv6_context->link_local_addr.addr16[7]; -+ -+ /* Default Prefix length is 64 */ -+ /* Add Link local address to the head of the ipv6 address -+ list */ -+ ipv6_add_prefix_entry(ipv6_context, -+ &ipv6_context->link_local_addr, 64); -+ -+ /* -+ * Convert Multicast IP address to Multicast MAC adress per -+ * RFC 2464: Transmission of IPv6 Packets over Ethernet Networks -+ * -+ * An IPv6 packet with a multicast destination address DST, consisting -+ * of the sixteen octets DST[1] through DST[16], is transmitted to the -+ * Ethernet multicast address whose first two octets are the value 3333 -+ * hexadecimal and whose last four octets are the last four octets of -+ * DST. -+ * -+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -+ * |0 0 1 1 0 0 1 1|0 0 1 1 0 0 1 1| -+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -+ * | DST[13] | DST[14] | -+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -+ * | DST[15] | DST[16] | -+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -+ * -+ * IPv6 requires the following Multicast IP addresses setup per node. -+ */ -+ for (i = 0; i < 3; i++) { -+ mc_addr[0] = 0x33; -+ mc_addr[1] = 0x33; -+ mc_addr[2] = 0x0; -+ mc_addr[3] = 0x0; -+ mc_addr[4] = 0x0; -+ -+ switch (i) { -+ case 0: -+ /* All Nodes Multicast IPv6 address : ff02::1 */ -+ mc_addr[5] = 0x1; -+ break; -+ -+ case 1: -+ /* All Host Multicast IPv6 address : ff02::3 */ -+ mc_addr[5] = 0x3; -+ break; -+ -+ case 2: -+ /* Solicited Node Multicast Address: ff02::01:ffxx:yyzz -+ */ -+ mc_addr[2] = 0xff; -+ mc_addr[3] = mac_addr[3]; -+ mc_addr[4] = mac_addr[4]; -+ mc_addr[5] = mac_addr[5]; -+ break; -+ -+ default: -+ break; -+ } -+ iscsiL2AddMcAddr(ipv6_context, &mc_addr); -+ } -+ -+ /* Default HOP number */ -+ ipv6_context->hop_limit = IPV6_HOP_LIMIT; -+} -+ -+int ipv6_add_prefix_entry(pIPV6_CONTEXT ipv6_context, -+ IPV6_ADDR * ipv6_addr, u8_t prefix_len) -+{ -+ int i; -+ pIPV6_PREFIX_ENTRY prefix_entry; -+ pIPV6_PREFIX_ENTRY ipv6_prefix_table = ipv6_context->ipv6_prefix_table; -+ -+ /* Check if there is an valid entry already. */ -+ for (i = 0; i < IPV6_NUM_OF_ADDRESS_ENTRY; i++) { -+ prefix_entry = &ipv6_prefix_table[i]; -+ -+ if (prefix_entry->prefix_len != 0) { -+ if (memcmp((char __FAR__ *)&prefix_entry->address, -+ (char __FAR__ *)ipv6_addr, -+ sizeof(IPV6_ADDR)) == 0) { -+ /* We already initialize on this interface. -+ There is nothing to do */ -+ return 0; -+ } -+ } -+ } -+ -+ /* Find an unused entry */ -+ for (i = 0; i < IPV6_NUM_OF_ADDRESS_ENTRY; i++) { -+ prefix_entry = &ipv6_prefix_table[i]; -+ -+ if (prefix_entry->prefix_len == 0) { -+ break; -+ } -+ } -+ -+ if (prefix_entry->prefix_len != 0) -+ return -1; -+ -+ prefix_entry->prefix_len = prefix_len / 8; -+ -+ memcpy((char __FAR__ *)&prefix_entry->address, -+ (char __FAR__ *)ipv6_addr, sizeof(IPV6_ADDR)); -+ -+ -+ LOG_DEBUG("IPV6: add prefix ip addr " -+ "%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x " -+ "%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x", -+ prefix_entry->address.addr8[0], prefix_entry->address.addr8[1], -+ prefix_entry->address.addr8[2], prefix_entry->address.addr8[3], -+ prefix_entry->address.addr8[4], prefix_entry->address.addr8[5], -+ prefix_entry->address.addr8[6], prefix_entry->address.addr8[7], -+ prefix_entry->address.addr8[8], prefix_entry->address.addr8[9], -+ prefix_entry->address.addr8[10], prefix_entry->address.addr8[11], -+ prefix_entry->address.addr8[12], prefix_entry->address.addr8[13], -+ prefix_entry->address.addr8[14], prefix_entry->address.addr8[15]); -+ -+ /* Put it on the list on head of the list. */ -+ if (ipv6_context->addr_list != NULL) { -+ prefix_entry->next = ipv6_context->addr_list; -+ } else { -+ prefix_entry->next = NULL; -+ } -+ -+ ipv6_context->addr_list = prefix_entry; -+ -+ return 0; -+} -+ -+void ipv6_rx_packet(pIPV6_CONTEXT ipv6_context, u16_t len) -+{ -+ pIPV6_HDR ipv6; -+ u16_t protocol; -+ -+ if (!ipv6_context->ustack) { -+ LOG_WARN("ipv6 rx pkt ipv6_context=%p ustack=%p", ipv6_context, -+ ipv6_context->ustack); -+ return; -+ } -+ ipv6 = (pIPV6_HDR) ipv6_context->ustack->network_layer; -+ /* Make sure it's an IPv6 packet */ -+ if ((ipv6->ipv6_version_fc & 0xf0) != IPV6_VERSION) { -+ /* It's not an IPv6 packet. Drop it. */ -+ LOG_WARN("IPv6 version 0x%x not IPv6", ipv6->ipv6_version_fc); -+ return; -+ } -+ protocol = ipv6_process_rx(ipv6); -+ -+ switch (protocol) { -+ case IPPROTO_ICMPV6: -+ ipv6_icmp_rx(ipv6_context); -+ break; -+ -+ case IPPROTO_UDP: -+ /* Indicate to UDP processing code */ -+ ipv6_udp_rx(ipv6_context); -+ break; -+ -+ default: -+ break; -+ } -+} -+ -+void ipv6_mc_init_dest_mac(pETH_HDR eth, pIPV6_HDR ipv6) -+{ -+ int i; -+ /* -+ * Initialize address mapping of IPV6 Multicast to multicast MAC -+ * address per RFC 2464. -+ * -+ * An IPv6 packet with a multicast destination address DST, consisting -+ * of the sixteen octets DST[1] through DST[16], is transmitted to the -+ * Ethernet multicast address whose first two octets are the value 3333 -+ * hexadecimal and whose last four octets are the last four octets of -+ * DST. -+ * -+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -+ * |0 0 1 1 0 0 1 1|0 0 1 1 0 0 1 1| -+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -+ * | DST[13] | DST[14] | -+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -+ * | DST[15] | DST[16] | -+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -+ */ -+ eth->dest_mac[0] = 0x33; -+ eth->dest_mac[1] = 0x33; -+ for (i = 0; i < 4; i++) -+ eth->dest_mac[2 + i] = ipv6->ipv6_dst.addr8[12 + i]; -+} -+ -+int ipv6_autoconfig(pIPV6_CONTEXT ipv6_context) -+{ -+ return ipv6_discover_address(ipv6_context); -+} -+ -+int ipv6_discover_address(pIPV6_CONTEXT ipv6_context) -+{ -+ pETH_HDR eth = (pETH_HDR) ipv6_context->ustack->data_link_layer; -+ pIPV6_HDR ipv6 = (pIPV6_HDR) ipv6_context->ustack->network_layer; -+ pICMPV6_HDR icmp = (pICMPV6_HDR) ((u8_t *) ipv6 + sizeof(IPV6_HDR)); -+ int rc = 0; -+ -+ /* Retrieve tx buffer */ -+ if (eth == NULL || ipv6 == NULL) { -+ return -EAGAIN; -+ } -+ -+ /* Setup IPv6 All Routers Multicast address : ff02::2 */ -+ memset((char __FAR__ *)&ipv6->ipv6_dst, 0, sizeof(IPV6_ADDR)); -+ ipv6->ipv6_dst.addr8[0] = 0xff; -+ ipv6->ipv6_dst.addr8[1] = 0x02; -+ ipv6->ipv6_dst.addr8[15] = 0x02; -+ ipv6->ipv6_hop_limit = 255; -+ -+ /* Initialize MAC header based on destination MAC address */ -+ ipv6_mc_init_dest_mac(eth, ipv6); -+ ipv6->ipv6_nxt_hdr = IPPROTO_ICMPV6; -+ -+ icmp->icmpv6_type = ICMPV6_RTR_SOL; -+ icmp->icmpv6_code = 0; -+ icmp->icmpv6_data = 0; -+ icmp->icmpv6_cksum = 0; -+ ipv6_icmp_init_link_option(ipv6_context, -+ (pICMPV6_OPT_LINK_ADDR) ((u8_t *) icmp + -+ sizeof(ICMPV6_HDR)), -+ IPV6_ICMP_OPTION_SRC_ADDR); -+ ipv6->ipv6_plen = -+ HOST_TO_NET16((sizeof(ICMPV6_HDR) + sizeof(ICMPV6_OPT_LINK_ADDR))); -+ memcpy((char __FAR__ *)&ipv6->ipv6_src, -+ (char __FAR__ *)&ipv6_context->link_local_addr, -+ sizeof(IPV6_ADDR)); -+ -+ icmp->icmpv6_cksum = 0; -+ LOG_DEBUG("IPV6: Send rtr sol"); -+ ipv6_send(ipv6_context, (u8_t *) icmp - (u8_t *) eth + -+ sizeof(ICMPV6_HDR) + sizeof(ICMPV6_OPT_LINK_ADDR)); -+ return rc; -+} -+ -+u16_t ipv6_process_rx(pIPV6_HDR ipv6) -+{ -+ return ipv6->ipv6_nxt_hdr; -+} -+ -+int ipv6_send(pIPV6_CONTEXT ipv6_context, u16_t packet_len) -+{ -+ pETH_HDR eth = (pETH_HDR) ipv6_context->ustack->data_link_layer; -+ pIPV6_HDR ipv6 = (pIPV6_HDR) ipv6_context->ustack->network_layer; -+ -+ ipv6_setup_hdrs(ipv6_context, eth, ipv6, packet_len); -+ -+ return iscsiL2Send(ipv6_context, packet_len); -+} -+ -+void ipv6_send_udp_packet(pIPV6_CONTEXT ipv6_context, u16_t packet_len) -+{ -+ pETH_HDR eth = (pETH_HDR) ipv6_context->ustack->data_link_layer; -+ pIPV6_HDR ipv6 = (pIPV6_HDR) ipv6_context->ustack->network_layer; -+ pUDP_HDR udp = (pUDP_HDR) ((u8_t *) ipv6 + sizeof(IPV6_HDR)); -+ -+ ipv6->ipv6_nxt_hdr = IPPROTO_UDP; -+ ipv6->ipv6_plen = -+ HOST_TO_NET16(packet_len - ((u8_t *) udp - (u8_t *) eth)); -+ -+ udp->chksum = 0; -+ -+ /* -+ * We only use UDP packet for DHCPv6. The source address is always -+ * link-local address. -+ */ -+ ipv6->ipv6_src.addr[0] = 0; -+ -+ /* Hop limit is always 1 for DHCPv6 packet. */ -+ ipv6->ipv6_hop_limit = 1; -+ -+ ipv6_send(ipv6_context, packet_len); -+} -+ -+void ipv6_setup_hdrs(pIPV6_CONTEXT ipv6_context, pETH_HDR eth, pIPV6_HDR ipv6, -+ u16_t packet_len) -+{ -+ pIPV6_ADDR our_address; -+ -+ /* VLAN will be taken cared of in the nic layer */ -+ eth->len_type = HOST_TO_NET16(LAYER2_TYPE_IPV6); -+ memcpy((char __FAR__ *)ð->src_mac, -+ (char __FAR__ *)&ipv6_context->mac_addr, sizeof(MAC_ADDR)); -+ -+ /* Put the traffic class into the packet. */ -+ memset(&ipv6->ipv6_version_fc, 0, sizeof(u32_t)); -+ ipv6->ipv6_version_fc = IPV6_VERSION; -+ if (ipv6->ipv6_hop_limit == 0) -+ ipv6->ipv6_hop_limit = ipv6_context->hop_limit; -+ -+ if (ipv6->ipv6_src.addr[0] == 0) { -+ /* Need to initialize source IP address. */ -+ if ((our_address = ipv6_our_address(ipv6_context)) != NULL) { -+ /* Assume that caller has filled in the destination -+ IP address */ -+ memcpy((char __FAR__ *)&ipv6->ipv6_src, -+ (char __FAR__ *)our_address, sizeof(IPV6_ADDR)); -+ } -+ } -+ -+ ipv6_insert_protocol_chksum(ipv6); -+} -+ -+STATIC void ipv6_insert_protocol_chksum(pIPV6_HDR ipv6) -+{ -+ u32_t sum; -+ u16_t *ptr; -+ u16_t *protocol_data_ptr; -+ int i; -+ u16_t protocol_data_len; -+ u16_t checksum; -+ -+ /* -+ * This routine assumes that there is no extension header. This driver -+ * doesn't user extension header to keep driver small and simple. -+ * -+ * Pseudo check consists of the following: -+ * SRC IP, DST IP, Protocol Data Length, and Next Header. -+ */ -+ sum = 0; -+ ptr = (u16_t *) & ipv6->ipv6_src; -+ -+ for (i = 0; i < sizeof(IPV6_ADDR); i++) { -+ sum += HOST_TO_NET16(*ptr); -+ ptr++; -+ } -+ -+ /* Keep track where the layer header is */ -+ protocol_data_ptr = ptr; -+ -+ protocol_data_len = HOST_TO_NET16(ipv6->ipv6_plen); -+ sum += protocol_data_len; -+ sum += ipv6->ipv6_nxt_hdr; -+ /* Sum now contains sum of IPv6 pseudo header. Let's add the data -+ streams. */ -+ if (protocol_data_len & 1) { -+ /* Length of data is odd */ -+ *((u8_t *) ptr + protocol_data_len) = 0; -+ protocol_data_len++; -+ } -+ -+ for (i = 0; i < protocol_data_len / 2; i++) { -+ sum += HOST_TO_NET16(*ptr); -+ ptr++; -+ } -+ -+ sum = (sum >> 16) + (sum & 0xffff); -+ sum += (sum >> 16); -+ sum &= 0xffff; -+ checksum = (u16_t) (~sum); -+ checksum = HOST_TO_NET16(checksum); -+ -+ switch (ipv6->ipv6_nxt_hdr) { -+ case IPPROTO_ICMPV6: -+ /* Insert correct ICMPv6 checksum */ -+ ((pICMPV6_HDR) (protocol_data_ptr))->icmpv6_cksum = checksum; -+ break; -+ case IPPROTO_UDP: -+ /* Insert correct UDP checksum */ -+ ((pUDP_HDR) protocol_data_ptr)->chksum = checksum; -+ break; -+ default: -+ break; -+ } -+} -+ -+int ipv6_is_it_our_link_local_address(pIPV6_CONTEXT ipv6_context, -+ IPV6_ADDR __FAR__ * ipv6_addr) -+{ -+ u8_t *test_adddr = (u8_t *) ipv6_addr->addr8; -+ u8_t test_remainder; -+ -+ if (test_adddr[0] != ipv6_context->link_local_addr.addr8[0]) -+ return FALSE; -+ -+ test_remainder = (test_adddr[1] & 0xC0) >> 6; -+ if (test_remainder != 2) -+ return FALSE; -+ -+ return TRUE; -+} -+ -+STATIC int ipv6_is_it_our_address(pIPV6_CONTEXT ipv6_context, -+ IPV6_ADDR __FAR__ * ipv6_addr) -+{ -+ pIPV6_PREFIX_ENTRY ipv6_prefix; -+ -+ for (ipv6_prefix = ipv6_context->addr_list; ipv6_prefix != NULL; -+ ipv6_prefix = ipv6_prefix->next) { -+ if (IPV6_ARE_ADDR_EQUAL(&ipv6_prefix->address, ipv6_addr)) -+ return TRUE; -+ } -+ -+ return FALSE; -+} -+ -+pIPV6_ADDR ipv6_our_address(pIPV6_CONTEXT ipv6_context) -+{ -+ return &ipv6_context->link_local_addr; -+} -+ -+int ipv6_ip_in_arp_table(pIPV6_CONTEXT ipv6_context, pIPV6_ADDR ipv6_addr, -+ MAC_ADDR * mac_addr) -+{ -+ pIPV6_ARP_ENTRY arp_entry; -+ int i; -+ -+ for (i = 0; i < UIP_ARPTAB_SIZE; i++) { -+ arp_entry = &ipv6_context->ipv6_arp_table[i]; -+ -+ if (IPV6_ARE_ADDR_EQUAL(&arp_entry->ip_addr, ipv6_addr)) { -+ memcpy((char *)mac_addr, &arp_entry->mac_addr, -+ sizeof(MAC_ADDR)); -+ return 1; -+ } -+ } -+ return 0; -+} -+ -+pIPV6_ADDR ipv6_find_longest_match(pIPV6_CONTEXT ipv6_context, -+ pIPV6_ADDR ip_addr) -+{ -+ pIPV6_PREFIX_ENTRY ipv6_prefix; -+ pIPV6_PREFIX_ENTRY best_match = NULL; -+ int longest_len = -1; -+ int len; -+ -+ for (ipv6_prefix = ipv6_context->addr_list; ipv6_prefix != NULL; -+ ipv6_prefix = ipv6_prefix->next) { -+ if (!IPV6_IS_ADDR_LINKLOCAL(&ipv6_prefix->address)) { -+ len = best_match_bufcmp((u8_t *) & ipv6_prefix->address, -+ (u8_t *) ip_addr, -+ sizeof(IPV6_ADDR)); -+ if (len > longest_len) { -+ best_match = ipv6_prefix; -+ longest_len = len; -+ } -+ } -+ } -+ -+ if (best_match) -+ return &best_match->address; -+ -+ return NULL; -+} -+ -+void ipv6_arp_out(pIPV6_CONTEXT ipv6_context, int *uip_len) -+{ -+ /* Empty routine */ -+} -+ -+ -+STATIC void ipv6_update_arp_table(pIPV6_CONTEXT ipv6_context, -+ IPV6_ADDR __FAR__ * ip_addr, -+ MAC_ADDR __FAR__ * mac_addr) -+{ -+ pIPV6_ARP_ENTRY arp_entry; -+ int i; -+ pIPV6_ARP_ENTRY ipv6_arp_table = ipv6_context->ipv6_arp_table; -+ -+ LOG_DEBUG("IPV6: ARP update"); -+ /* -+ * Walk through the ARP mapping table and try to find an entry to -+ * update. If none is found, the IP -> MAC address mapping is -+ * inserted in the ARP table. -+ */ -+ for (i = 0; i < UIP_ARPTAB_SIZE; i++) { -+ arp_entry = &ipv6_arp_table[i]; -+ -+ /* Only check those entries that are actually in use. */ -+ if (arp_entry->ip_addr.addr[0] != 0) { -+ /* -+ * Check if the source IP address of the incoming -+ * packet matches the IP address in this ARP table -+ * entry. -+ */ -+ if (IPV6_ARE_ADDR_EQUAL(&arp_entry->ip_addr, ip_addr)) { -+ /* An old entry found, update this and return */ -+ memcpy((char __FAR__ *)&arp_entry->mac_addr, -+ (char __FAR__ *)mac_addr, -+ sizeof(MAC_ADDR)); -+ arp_entry->time = ipv6_context->arptime; -+ return; -+ } -+ } -+ } -+ -+ /* -+ * If we get here, no existing ARP table entry was found, so we -+ * create one. -+ * -+ * First, we try to find an unused entry in the ARP table. -+ */ -+ for (i = 0; i < UIP_ARPTAB_SIZE; i++) { -+ arp_entry = &ipv6_arp_table[i]; -+ -+ if (arp_entry->ip_addr.addr[0] == 0) -+ break; -+ } -+ -+ if (i == UIP_ARPTAB_SIZE) -+ return; -+ -+ /* Index j is the entry that is least used */ -+ arp_entry = &ipv6_arp_table[i]; -+ memcpy((char __FAR__ *)&arp_entry->ip_addr, (char __FAR__ *)ip_addr, -+ sizeof(IPV6_ADDR)); -+ memcpy((char __FAR__ *)&arp_entry->mac_addr, -+ (char __FAR__ *)mac_addr, sizeof(MAC_ADDR)); -+ -+ arp_entry->time = ipv6_context->arptime; -+} -+ -+/* DestIP is intact */ -+int ipv6_send_nd_solicited_packet(pIPV6_CONTEXT ipv6_context, pETH_HDR eth, -+ pIPV6_HDR ipv6) -+{ -+ pICMPV6_HDR icmp; -+ int pkt_len = 0; -+ pIPV6_ADDR longest_match_addr; -+ -+ ipv6->ipv6_nxt_hdr = IPPROTO_ICMPV6; -+ -+ /* Depending on the IPv6 address of the target, we'll need to determine -+ whether we use the assigned IPv6 address/RA or the link local address -+ */ -+ /* Use Link-local as source address */ -+ if (ipv6_is_it_our_link_local_address(ipv6_context, &ipv6->ipv6_dst) == -+ TRUE) { -+ LOG_DEBUG("IPV6: NS using link local"); -+ memcpy((char __FAR__ *)&ipv6->ipv6_src, -+ (char __FAR__ *)&ipv6_context->link_local_addr, -+ sizeof(IPV6_ADDR)); -+ } else { -+ longest_match_addr = -+ ipv6_find_longest_match(ipv6_context, &ipv6->ipv6_dst); -+ if (longest_match_addr) { -+ LOG_DEBUG("IPV6: NS using longest match addr"); -+ memcpy((char __FAR__ *)&ipv6->ipv6_src, -+ (char __FAR__ *)longest_match_addr, -+ sizeof(IPV6_ADDR)); -+ } else { -+ LOG_DEBUG("IPV6: NS using link local instead"); -+ memcpy((char __FAR__ *)&ipv6->ipv6_src, -+ (char __FAR__ *)&ipv6_context->link_local_addr, -+ sizeof(IPV6_ADDR)); -+ } -+ } -+ icmp = (pICMPV6_HDR) ((u8_t *) ipv6 + sizeof(IPV6_HDR)); -+ -+ LOG_DEBUG -+ ("IPV6: NS host ip addr %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x" -+ " %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x", -+ ipv6->ipv6_src.addr8[0], ipv6->ipv6_src.addr8[1], -+ ipv6->ipv6_src.addr8[2], ipv6->ipv6_src.addr8[3], -+ ipv6->ipv6_src.addr8[4], ipv6->ipv6_src.addr8[5], -+ ipv6->ipv6_src.addr8[6], ipv6->ipv6_src.addr8[7], -+ ipv6->ipv6_src.addr8[8], ipv6->ipv6_src.addr8[9], -+ ipv6->ipv6_src.addr8[10], ipv6->ipv6_src.addr8[11], -+ ipv6->ipv6_src.addr8[12], ipv6->ipv6_src.addr8[13], -+ ipv6->ipv6_src.addr8[14], ipv6->ipv6_src.addr8[15]); -+ /* -+ * Destination IP address to be resolved is after the ICMPv6 -+ * header. -+ */ -+ memcpy((char __FAR__ *)((u8_t *) icmp + sizeof(ICMPV6_HDR)), -+ (char __FAR__ *)&ipv6->ipv6_dst, sizeof(IPV6_ADDR)); -+ -+ /* -+ * Destination IP in the IPv6 header contains solicited-node multicast -+ * address corresponding to the target address. -+ * -+ * ff02::01:ffxx:yyzz. Where xyz are least -+ * significant of 24-bit MAC address. -+ */ -+ memset((char __FAR__ *)&ipv6->ipv6_dst, 0, sizeof(IPV6_ADDR) - 3); -+ ipv6->ipv6_dst.addr8[0] = 0xff; -+ ipv6->ipv6_dst.addr8[1] = 0x02; -+ ipv6->ipv6_dst.addr8[11] = 0x01; -+ ipv6->ipv6_dst.addr8[12] = 0xff; -+ ipv6_mc_init_dest_mac(eth, ipv6); -+ ipv6->ipv6_hop_limit = 255; -+ -+ icmp->icmpv6_type = ICMPV6_NEIGH_SOL; -+ icmp->icmpv6_code = 0; -+ icmp->icmpv6_data = 0; -+ icmp->icmpv6_cksum = 0; -+ ipv6_icmp_init_link_option(ipv6_context, -+ (pICMPV6_OPT_LINK_ADDR) ((u8_t *) icmp + -+ sizeof(ICMPV6_HDR) + -+ sizeof(IPV6_ADDR)), -+ IPV6_ICMP_OPTION_SRC_ADDR); -+ ipv6->ipv6_plen = -+ HOST_TO_NET16((sizeof(ICMPV6_HDR) + sizeof(ICMPV6_OPT_LINK_ADDR) + -+ sizeof(IPV6_ADDR))); -+ /* Total packet size */ -+ pkt_len = (u8_t *) icmp - (u8_t *) eth + -+ sizeof(ICMPV6_HDR) + -+ sizeof(ICMPV6_OPT_LINK_ADDR) + sizeof(IPV6_ADDR); -+ ipv6_setup_hdrs(ipv6_context, eth, ipv6, pkt_len); -+ return pkt_len; -+} -+ -+STATIC void ipv6_icmp_init_link_option(pIPV6_CONTEXT ipv6_context, -+ pICMPV6_OPT_LINK_ADDR link_opt, -+ u8_t type) -+{ -+ link_opt->hdr.type = type; -+ link_opt->hdr.len = sizeof(ICMPV6_OPT_LINK_ADDR) / 8; -+ memcpy((char __FAR__ *)&link_opt->link_addr, -+ (char __FAR__ *)&ipv6_context->mac_addr, sizeof(MAC_ADDRESS)); -+} -+ -+STATIC void ipv6_icmp_rx(pIPV6_CONTEXT ipv6_context) -+{ -+ pIPV6_HDR ipv6 = (pIPV6_HDR) ipv6_context->ustack->network_layer; -+ pICMPV6_HDR icmp = (pICMPV6_HDR) ((u8_t *) ipv6 + sizeof(IPV6_HDR)); -+ -+ switch (icmp->icmpv6_type) { -+ case ICMPV6_RTR_ADV: -+ ipv6_icmp_handle_router_adv(ipv6_context); -+ break; -+ -+ case ICMPV6_NEIGH_SOL: -+ ipv6_icmp_handle_nd_sol(ipv6_context); -+ break; -+ -+ case ICMPV6_NEIGH_ADV: -+ ipv6_icmp_handle_nd_adv(ipv6_context); -+ break; -+ -+ case ICMPV6_ECHO_REQUEST: -+ /* Response with ICMP reply */ -+ ipv6_icmp_handle_echo_request(ipv6_context); -+ break; -+ -+ default: -+ break; -+ } -+} -+ -+STATIC void ipv6_icmp_handle_router_adv(pIPV6_CONTEXT ipv6_context) -+{ -+ pIPV6_HDR ipv6 = (pIPV6_HDR) ipv6_context->ustack->network_layer; -+ pICMPV6_ROUTER_ADVERT icmp = -+ (pICMPV6_ROUTER_ADVERT) ((u8_t *) ipv6 + sizeof(IPV6_HDR)); -+ pICMPV6_OPT_HDR icmp_opt; -+ u16_t opt_len; -+ u16_t len; -+ -+ if (ipv6_context->flags & IPV6_FLAGS_ROUTER_ADV_RECEIVED) -+ return; -+ -+ opt_len = HOST_TO_NET16(ipv6->ipv6_plen) - sizeof(ICMPV6_ROUTER_ADVERT); -+ -+ icmp_opt = (pICMPV6_OPT_HDR) ((u8_t __FAR__ *) icmp + -+ sizeof(ICMPV6_ROUTER_ADVERT)); -+ len = 0; -+ while (len < opt_len) { -+ icmp_opt = (pICMPV6_OPT_HDR) ((u8_t __FAR__ *) icmp + -+ sizeof(ICMPV6_ROUTER_ADVERT) + -+ len); -+ -+ switch (icmp_opt->type) { -+ case IPV6_ICMP_OPTION_PREFIX: -+ ipv6_icmp_process_prefix(ipv6_context, -+ (pICMPV6_OPT_PREFIX) icmp_opt); -+ ipv6_context->flags |= IPV6_FLAGS_ROUTER_ADV_RECEIVED; -+ break; -+ -+ default: -+ break; -+ } -+ -+ len += icmp_opt->len * 8; -+ } -+ -+ if (ipv6_context->flags & IPV6_FLAGS_ROUTER_ADV_RECEIVED) { -+ LOG_DEBUG("IPV6: RTR ADV nd_ra_flags=0x%x", -+ icmp->nd_ra_flags_reserved); -+ if (icmp->nd_ra_curhoplimit > 0) -+ ipv6_context->hop_limit = icmp->nd_ra_curhoplimit; -+ -+ if (icmp->nd_ra_flags_reserved & IPV6_RA_MANAGED_FLAG) -+ ipv6_context->flags |= IPV6_FLAGS_MANAGED_ADDR_CONFIG; -+ -+ if (icmp->nd_ra_flags_reserved & IPV6_RA_CONFIG_FLAG) -+ ipv6_context->flags |= IPV6_FLAGS_OTHER_STATEFUL_CONFIG; -+ -+ if (icmp->nd_ra_router_lifetime != 0) { -+ /* This is a default router. */ -+ memcpy((char __FAR__ *)&ipv6_context->default_router, -+ (char __FAR__ *)&ipv6->ipv6_src, -+ sizeof(IPV6_ADDR)); -+ LOG_DEBUG("IPV6: def router " -+ "%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x " -+ "%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x", -+ ipv6->ipv6_src.addr8[0], ipv6->ipv6_src.addr8[1], -+ ipv6->ipv6_src.addr8[2], ipv6->ipv6_src.addr8[3], -+ ipv6->ipv6_src.addr8[4], ipv6->ipv6_src.addr8[5], -+ ipv6->ipv6_src.addr8[6], ipv6->ipv6_src.addr8[7], -+ ipv6->ipv6_src.addr8[8], ipv6->ipv6_src.addr8[9], -+ ipv6->ipv6_src.addr8[10], ipv6->ipv6_src.addr8[11], -+ ipv6->ipv6_src.addr8[12], ipv6->ipv6_src.addr8[13], -+ ipv6->ipv6_src.addr8[14], ipv6->ipv6_src.addr8[15]); -+ } -+ } -+} -+ -+STATIC void ipv6_icmp_process_prefix(pIPV6_CONTEXT ipv6_context, -+ pICMPV6_OPT_PREFIX icmp_prefix) -+{ -+ IPV6_ADDR addr; -+ -+ /* we only process on-link address info */ -+ if (!(icmp_prefix->flags & ICMPV6_OPT_PREFIX_FLAG_ON_LINK)) -+ return; -+ -+ /* -+ * We only process prefix length of 64 since our Identifier is 64-bit -+ */ -+ if (icmp_prefix->prefix_len == 64) { -+ /* Copy 64-bit from the local-link address to create IPv6 address */ -+ memcpy((char __FAR__ *)&addr, -+ (char __FAR__ *)&icmp_prefix->prefix, 8); -+ memcpy((char __FAR__ *)&addr.addr8[8], -+ &ipv6_context->link_local_addr.addr8[8], 8); -+ ipv6_add_prefix_entry(ipv6_context, &addr, 64); -+ } -+} -+ -+STATIC void ipv6_icmp_handle_nd_adv(pIPV6_CONTEXT ipv6_context) -+{ -+ pETH_HDR eth = (pETH_HDR) ipv6_context->ustack->data_link_layer; -+ pIPV6_HDR ipv6 = (pIPV6_HDR) ipv6_context->ustack->network_layer; -+ pICMPV6_HDR icmp = (pICMPV6_HDR) ((u8_t *) ipv6 + sizeof(IPV6_HDR)); -+ pICMPV6_OPT_LINK_ADDR link_opt = (pICMPV6_OPT_LINK_ADDR)((u8_t *)icmp + -+ sizeof(ICMPV6_HDR) + sizeof(IPV6_ADDR)); -+ pIPV6_ADDR tar_addr6; -+ -+ /* Added the multicast check for ARP table update */ -+ /* Should we qualify for only our host's multicast and our -+ link_local_multicast?? */ -+ LOG_DEBUG("IPV6: Handle nd adv"); -+ if ((ipv6_is_it_our_address(ipv6_context, &ipv6->ipv6_dst) == TRUE) || -+ (memcmp((char __FAR__ *)&ipv6_context->link_local_multi, -+ (char __FAR__ *)&ipv6->ipv6_dst, sizeof(IPV6_ADDR)) == 0) || -+ (memcmp((char __FAR__ *)&ipv6_context->multi, -+ (char __FAR__ *)&ipv6->ipv6_dst, sizeof(IPV6_ADDR)) == 0)) { -+ /* -+ * This is an ARP reply for our addresses. Let's update the -+ * ARP table. -+ */ -+ ipv6_update_arp_table(ipv6_context, &ipv6->ipv6_src, -+ ð->src_mac); -+ -+ /* Now check for the target address option and update that as -+ well */ -+ if (link_opt->hdr.type == IPV6_ICMP_OPTION_TAR_ADDR) { -+ tar_addr6 = (pIPV6_ADDR)((u8_t *)icmp + -+ sizeof(ICMPV6_HDR)); -+ LOG_DEBUG("IPV6: tar mac %x:%x:%x:%x:%x:%x", -+ link_opt->link_addr[0], link_opt->link_addr[1], -+ link_opt->link_addr[2], link_opt->link_addr[3], -+ link_opt->link_addr[4], link_opt->link_addr[5]); -+ LOG_DEBUG("IPV6: tar addr " -+ "%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x " -+ "%02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x", -+ tar_addr6->addr8[0], tar_addr6->addr8[1], -+ tar_addr6->addr8[2], tar_addr6->addr8[3], -+ tar_addr6->addr8[4], tar_addr6->addr8[5], -+ tar_addr6->addr8[6], tar_addr6->addr8[7], -+ tar_addr6->addr8[8], tar_addr6->addr8[9], -+ tar_addr6->addr8[10], tar_addr6->addr8[11], -+ tar_addr6->addr8[12], tar_addr6->addr8[13], -+ tar_addr6->addr8[14], tar_addr6->addr8[15]); -+ ipv6_update_arp_table(ipv6_context, tar_addr6, -+ (MAC_ADDR *)link_opt->link_addr); -+ } -+ -+ } -+} -+ -+STATIC void ipv6_icmp_handle_nd_sol(pIPV6_CONTEXT ipv6_context) -+{ -+ pETH_HDR eth = (pETH_HDR) ipv6_context->ustack->data_link_layer; -+ pIPV6_HDR ipv6 = (pIPV6_HDR) ipv6_context->ustack->network_layer; -+ pICMPV6_HDR icmp = (pICMPV6_HDR) ((u8_t *) ipv6 + sizeof(IPV6_HDR)); -+ pICMPV6_OPT_LINK_ADDR link_opt = (pICMPV6_OPT_LINK_ADDR)((u8_t *)icmp + -+ sizeof(ICMPV6_HDR) + sizeof(IPV6_ADDR)); -+ int icmpv6_opt_len = 0; -+ IPV6_ADDR tmp; -+ pIPV6_ADDR longest_match_addr; -+ pIPV6_ADDR tar_addr6; -+ -+ LOG_DEBUG("IPV6: Handle nd sol"); -+ -+ if ((memcmp((char __FAR__ *)&ipv6_context->mac_addr, -+ (char __FAR__ *)eth->dest_mac, sizeof(MAC_ADDR)) != 0) && -+ (iscsiL2IsOurMcAddr(ipv6_context, (pMAC_ADDRESS) & eth->dest_mac) == -+ FALSE)) { -+ /* This packet is not for us to handle */ -+ LOG_DEBUG("IPV6: MAC not addressed to us %x:%x:%x:%x:%x:%x", -+ eth->dest_mac[0], eth->dest_mac[1], -+ eth->dest_mac[2], eth->dest_mac[3], -+ eth->dest_mac[4], eth->dest_mac[5]); -+ return; -+ } -+ -+ /* Also check for the icmpv6_data before generating the reply */ -+ if (ipv6_is_it_our_address(ipv6_context, -+ (IPV6_ADDR *) ((u8_t *) icmp + -+ sizeof(ICMPV6_HDR))) -+ == FALSE) { -+ /* This packet is not for us to handle */ -+ LOG_DEBUG("IPV6: IP not addressed to us"); -+ return; -+ } -+ -+ /* Copy source MAC to Destination MAC */ -+ memcpy((char __FAR__ *)ð->dest_mac, -+ (char __FAR__ *)ð->src_mac, sizeof(MAC_ADDR)); -+ -+ /* Dest IP contains source IP */ -+ memcpy((char __FAR__ *)&tmp, -+ (char __FAR__ *)&ipv6->ipv6_dst, sizeof(IPV6_ADDR)); -+ memcpy((char __FAR__ *)&ipv6->ipv6_dst, -+ (char __FAR__ *)&ipv6->ipv6_src, sizeof(IPV6_ADDR)); -+ -+ /* Examine the Neighbor Solicitation ICMPv6 target address field. -+ If target address exist, use that to find best match src address -+ for the reply */ -+ if (link_opt->hdr.type == IPV6_ICMP_OPTION_SRC_ADDR) { -+ tar_addr6 = (pIPV6_ADDR)((u8_t *)icmp + sizeof(ICMPV6_HDR)); -+ if (ipv6_is_it_our_link_local_address(ipv6_context, tar_addr6) -+ == TRUE) { -+ LOG_DEBUG("IPV6: NA using link local"); -+ memcpy((char __FAR__ *)&ipv6->ipv6_src, -+ (char __FAR__ *)&ipv6_context->link_local_addr, -+ sizeof(IPV6_ADDR)); -+ } else { -+ longest_match_addr = -+ ipv6_find_longest_match(ipv6_context, tar_addr6); -+ if (longest_match_addr) { -+ LOG_DEBUG("IPV6: NA using longest match addr"); -+ memcpy((char __FAR__ *)&ipv6->ipv6_src, -+ (char __FAR__ *)longest_match_addr, -+ sizeof(IPV6_ADDR)); -+ } else { -+ LOG_DEBUG("IPV6: NA using link local instead"); -+ memcpy((char __FAR__ *)&ipv6->ipv6_src, -+ (char __FAR__ *)&ipv6_context->link_local_addr, -+ sizeof(IPV6_ADDR)); -+ } -+ } -+ } else { -+ /* No target link address, just use whatever it sent to us */ -+ LOG_DEBUG("IPV6: NA use dst addr"); -+ memcpy((char __FAR__ *)&ipv6->ipv6_src, -+ (char __FAR__ *)&tmp, -+ sizeof(IPV6_ADDR)); -+ } -+ ipv6->ipv6_hop_limit = 255; -+ icmp->icmpv6_type = ICMPV6_NEIGH_ADV; -+ icmp->icmpv6_code = 0; -+ icmp->icmpv6_data = 0; -+ icmp->icmpv6_cksum = 0; -+ icmp->data.icmpv6_un_data8[0] = -+ IPV6_NA_FLAG_SOLICITED | IPV6_NA_FLAG_OVERRIDE; -+ memcpy((char __FAR__ *)((u8_t *) icmp + sizeof(ICMPV6_HDR)), -+ (char __FAR__ *)&ipv6->ipv6_src, -+ sizeof(IPV6_ADDR)); -+ -+ /* Add the target link address option only for all solicitation */ -+/* -+ if ((memcmp((char __FAR__ *)&ipv6_context->multi_dest, -+ (char __FAR__ *)&tmp, sizeof(IPV6_ADDR)) == 0) || -+ (memcmp((char __FAR__ *)&ipv6_context->link_local_multi, -+ (char __FAR__ *)&tmp, sizeof(IPV6_ADDR)) == 0)) { -+*/ -+ ipv6_icmp_init_link_option(ipv6_context, -+ (pICMPV6_OPT_LINK_ADDR) ((u8_t *) -+ icmp + -+ sizeof -+ (ICMPV6_HDR) -+ + -+ sizeof -+ (IPV6_ADDR)), -+ IPV6_ICMP_OPTION_TAR_ADDR); -+ icmpv6_opt_len = sizeof(ICMPV6_OPT_LINK_ADDR); -+/* -+ } -+*/ -+ ipv6->ipv6_plen = HOST_TO_NET16((sizeof(ICMPV6_HDR) + -+ icmpv6_opt_len + sizeof(IPV6_ADDR))); -+ LOG_DEBUG("IPV6: Send nd adv"); -+ ipv6_send(ipv6_context, -+ (u8_t *) icmp - (u8_t *) eth + -+ sizeof(ICMPV6_HDR) + -+ sizeof(ICMPV6_OPT_LINK_ADDR) + sizeof(IPV6_ADDR)); -+ return; -+} -+ -+STATIC void ipv6_icmp_handle_echo_request(pIPV6_CONTEXT ipv6_context) -+{ -+ pETH_HDR eth = (pETH_HDR) ipv6_context->ustack->data_link_layer; -+ pIPV6_HDR ipv6 = (pIPV6_HDR) ipv6_context->ustack->network_layer; -+ pICMPV6_HDR icmp = (pICMPV6_HDR) ((u8_t *) ipv6 + sizeof(IPV6_HDR)); -+ IPV6_ADDR temp; -+ -+ /* Copy source MAC to Destination MAC */ -+ memcpy((char __FAR__ *)ð->dest_mac, -+ (char __FAR__ *)ð->src_mac, sizeof(MAC_ADDR)); -+ -+ memcpy((char __FAR__ *)&temp, -+ (char __FAR__ *)&ipv6->ipv6_dst, sizeof(IPV6_ADDR)); -+ -+ /* Dest IP contains source IP */ -+ memcpy((char __FAR__ *)&ipv6->ipv6_dst, -+ (char __FAR__ *)&ipv6->ipv6_src, sizeof(IPV6_ADDR)); -+ /* Use Link-local as source address */ -+ memcpy((char __FAR__ *)&ipv6->ipv6_src, -+ (char __FAR__ *)&temp, sizeof(IPV6_ADDR)); -+ -+ ipv6->ipv6_hop_limit = ipv6_context->hop_limit; -+ icmp->icmpv6_type = ICMPV6_ECHO_REPLY; -+ icmp->icmpv6_code = 0; -+ icmp->icmpv6_cksum = 0; -+ LOG_DEBUG("IPV6: Send echo reply"); -+ ipv6_send(ipv6_context, (u8_t *) icmp - (u8_t *) eth + -+ sizeof(IPV6_HDR) + HOST_TO_NET16(ipv6->ipv6_plen)); -+ return; -+} -+ -+void ipv6_set_ip_params(pIPV6_CONTEXT ipv6_context, -+ pIPV6_ADDR src_ip, u8_t prefix_len, -+ pIPV6_ADDR default_gateway) -+{ -+ if (!(IPV6_IS_ADDR_UNSPECIFIED(src_ip))) { -+ ipv6_add_prefix_entry(ipv6_context, src_ip, prefix_len); -+ /* Create the multi_dest address */ -+ memset(&ipv6_context->multi_dest, 0, sizeof(IPV6_ADDR)); -+ ipv6_context->multi_dest.addr8[0] = 0xff; -+ ipv6_context->multi_dest.addr8[1] = 0x02; -+ ipv6_context->multi_dest.addr8[11] = 0x01; -+ ipv6_context->multi_dest.addr8[12] = 0xff; -+ ipv6_context->multi_dest.addr8[13] = src_ip->addr8[13]; -+ ipv6_context->multi_dest.addr16[7] = src_ip->addr16[7]; -+ /* Create the multi address */ -+ memset(&ipv6_context->multi, 0, sizeof(IPV6_ADDR)); -+ ipv6_context->multi.addr8[0] = 0xfc; -+ ipv6_context->multi.addr8[2] = 0x02; -+ ipv6_context->multi.addr16[7] = src_ip->addr16[7]; -+ } -+ -+ if (!(IPV6_IS_ADDR_UNSPECIFIED(default_gateway))) { -+ /* This is a default router. */ -+ memcpy((char __FAR__ *)&ipv6_context->default_router, -+ (char __FAR__ *)default_gateway, sizeof(IPV6_ADDR)); -+ } -+} -+ -+int ipv6_get_source_ip_addrs(pIPV6_CONTEXT ipv6_context, -+ pIPV6_ADDR_ENTRY addr_list) -+{ -+ pIPV6_PREFIX_ENTRY ipv6_prefix; -+ int i; -+ -+ for (i = 0, ipv6_prefix = ipv6_context->addr_list; ipv6_prefix != NULL; -+ ipv6_prefix = ipv6_prefix->next) { -+ memcpy((char __FAR__ *)&addr_list->address, -+ (char __FAR__ *)&ipv6_prefix->address, -+ sizeof(IPV6_ADDR)); -+ addr_list->prefix_len = ipv6_prefix->prefix_len * 8; -+ -+ i++; -+ addr_list++; -+ } -+ -+ return i; -+} -+ -+int ipv6_get_default_router_ip_addrs(pIPV6_CONTEXT ipv6_context, -+ pIPV6_ADDR ip_addr) -+{ -+ /* This is a default router. */ -+ memcpy((char __FAR__ *)ip_addr, -+ (char __FAR__ *)&ipv6_context->default_router, -+ sizeof(IPV6_ADDR)); -+ -+ return 1; -+} -+ -+STATIC void ipv6_udp_rx(pIPV6_CONTEXT ipv6_context) -+{ -+ pETH_HDR eth = (pETH_HDR) ipv6_context->ustack->data_link_layer; -+ pIPV6_HDR ipv6 = (pIPV6_HDR) ipv6_context->ustack->network_layer; -+ UDP_HDR __FAR__ *udp = (pUDP_HDR) ((u8_t *) ipv6 + sizeof(IPV6_HDR)); -+ pDHCPV6_CONTEXT dhcpv6c; -+ -+ /* -+ * We only care about DHCPv6 packets from the DHCPv6 server. We drop -+ * all others. -+ */ -+ if (!(ipv6_context->flags & IPV6_FLAGS_DISABLE_DHCPV6)) { -+ if ((udp->src_port == HOST_TO_NET16(DHCPV6_SERVER_PORT)) && -+ (udp->dest_port == HOST_TO_NET16(DHCPV6_CLIENT_PORT))) { -+ dhcpv6c = ipv6_context->dhcpv6_context; -+ dhcpv6c->eth = eth; -+ dhcpv6c->ipv6 = ipv6; -+ dhcpv6c->udp = udp; -+ ipv6_udp_handle_dhcp(dhcpv6c); -+ } -+ } -+} -+ -+MAC_ADDRESS *ipv6_get_link_addr(pIPV6_CONTEXT ipv6_context) -+{ -+ return &ipv6_context->mac_addr; -+} -+ -+u16_t ipv6_do_stateful_dhcpv6(pIPV6_CONTEXT ipv6_context, u32_t flags) -+{ -+ u16_t task = 0; -+ u16_t ra_flags; -+ -+ ra_flags = ipv6_context->flags & -+ (IPV6_FLAGS_MANAGED_ADDR_CONFIG | IPV6_FLAGS_OTHER_STATEFUL_CONFIG); -+ -+ if (!(ipv6_context->flags & IPV6_FLAGS_ROUTER_ADV_RECEIVED)) { -+ LOG_DEBUG("IPV6: There is no IPv6 router on the network"); -+ ra_flags |= -+ (IPV6_FLAGS_MANAGED_ADDR_CONFIG | -+ IPV6_FLAGS_OTHER_STATEFUL_CONFIG); -+ } -+ -+ if ((flags & ISCSI_FLAGS_DHCP_TCPIP_CONFIG) && -+ (ra_flags & IPV6_FLAGS_MANAGED_ADDR_CONFIG)) -+ task |= DHCPV6_TASK_GET_IP_ADDRESS; -+ -+ if ((flags & ISCSI_FLAGS_DHCP_ISCSI_CONFIG) && -+ (ra_flags & IPV6_FLAGS_OTHER_STATEFUL_CONFIG)) -+ task |= DHCPV6_TASK_GET_OTHER_PARAMS; -+ -+ LOG_DEBUG("IPV6: Stateful flags=0x%x, ra_flags=0x%x, task=0x%x", flags, -+ ra_flags, task); -+ -+ return task; -+} -+ -+void ipv6_add_solit_node_address(pIPV6_CONTEXT ipv6_context, pIPV6_ADDR ip_addr) -+{ -+ MAC_ADDRESS mac_addr; -+ -+ /* -+ * Add Solicited Node Multicast Address for statically configured IPv6 -+ * address. -+ */ -+ mac_addr.addr[0] = 0x33; -+ mac_addr.addr[1] = 0x33; -+ mac_addr.addr[2] = 0xff; -+ mac_addr.addr[3] = ip_addr->addr8[13]; -+ mac_addr.addr[4] = ip_addr->addr8[14]; -+ mac_addr.addr[5] = ip_addr->addr8[15]; -+ iscsiL2AddMcAddr(ipv6_context, (MAC_ADDR *) & mac_addr); -+} -+ -+void ipv6_cfg_link_local_addr(pIPV6_CONTEXT ipv6_context, pIPV6_ADDR ip_addr) -+{ -+ memcpy((char __FAR__ *)&ipv6_context->link_local_addr, -+ (char __FAR__ *)ip_addr, sizeof(IPV6_ADDR)); -+} -+ -+void ipv6_disable_dhcpv6(pIPV6_CONTEXT ipv6_context) -+{ -+ ipv6_context->flags |= IPV6_FLAGS_DISABLE_DHCPV6; -+} -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/ipv6.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/ipv6.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/ipv6.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/ipv6.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,366 @@ -+/* -+ * Copyright (c) 2011, Broadcom Corporation -+ * -+ * Written by: Eddie Wai (eddie.wai@broadcom.com) -+ * Based on Kevin Tran's iSCSI boot code -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * ipv6.h - This file contains macro definitions pertaining to IPv6. -+ * -+ * RFC 2460 : IPv6 Specification -+ * RFC 2373 : IPv6 Addressing Architecture. -+ * RFC 2462 : IPv6 Stateless Address Autoconfiguration. -+ * RFC 2464 : Transmission of IPv6 Packets over Ethernet Networks. -+ * -+ */ -+#ifndef __IPV6_H__ -+#define __IPV6_H__ -+ -+#include "ipv6_ndpc.h" -+ -+#define PACK_DATA_STRUCTURE 1 -+ -+#ifdef PACK_DATA_STRUCTURE -+#pragma pack(push,1) -+#endif -+ -+#define STATIC static -+ -+#define __FAR__ -+#define FALSE 0 -+#define TRUE 1 -+ -+#ifdef ROM_DRIVER -+#define memcpy imemcpy -+#define memset imemset -+#define memcmp istrncmp -+#define system_get_ticks iscsiGetTicks -+#endif -+ -+#define LINK_LOCAL_PREFIX_LENGTH 2 -+#define LAYER2_HEADER_LENGTH 14 -+#define LAYER2_VLAN_HEADER_LENGTH 16 -+#define LAYER2_TYPE_IPV6 0x86dd -+ -+typedef struct IPV6_ADDR { -+ union { -+ u8_t addr8[16]; -+ u16_t addr16[8]; -+ u32_t addr[4]; -+ }; -+} IPV6_ADDR, *pIPV6_ADDR; -+ -+typedef struct UDP_HDR { -+ u16_t src_port; -+ u16_t dest_port; -+ u16_t length; -+ u16_t chksum; -+} UDP_HDR, *pUDP_HDR; -+ -+typedef struct MAC_ADDRESS { -+ u8_t addr[6]; -+} MAC_ADDRESS, *pMAC_ADDRESS; -+ -+typedef u8_t MAC_ADDR[6]; -+ -+#define HOST_TO_NET16(a) htons(a) -+#define HOST_TO_NET32(a) htonl(a) -+#define NET_TO_HOST16(a) ntohs(a) -+/* -+ * Local definition for masks -+ */ -+#define IPV6_MASK0 {{{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }}} -+#define IPV6_MASK32 {{{ 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, \ -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}} -+#define IPV6_MASK64 {{{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}} -+#define IPV6_MASK96 {{{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ -+ 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00 }}} -+#define IPV6_MASK128 {{{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, \ -+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }}} -+ -+#ifdef BIG_ENDIAN -+#define IPV6_ADDR_INT32_ONE 1 -+#define IPV6_ADDR_INT32_TWO 2 -+#define IPV6_ADDR_INT32_MNL 0xff010000 -+#define IPV6_ADDR_INT32_MLL 0xff020000 -+#define IPV6_ADDR_INT32_SMP 0x0000ffff -+#define IPV6_ADDR_INT16_ULL 0xfe80 -+#define IPV6_ADDR_INT16_USL 0xfec0 -+#define IPV6_ADDR_INT16_MLL 0xff02 -+#else /* LITTE ENDIAN */ -+#define IPV6_ADDR_INT32_ONE 0x01000000 -+#define IPV6_ADDR_INT32_TWO 0x02000000 -+#define IPV6_ADDR_INT32_MNL 0x000001ff -+#define IPV6_ADDR_INT32_MLL 0x000002ff -+#define IPV6_ADDR_INT32_SMP 0xffff0000 -+#define IPV6_ADDR_INT16_ULL 0x80fe -+#define IPV6_ADDR_INT16_USL 0xc0fe -+#define IPV6_ADDR_INT16_MLL 0x02ff -+#endif -+ -+/* -+ * Definition of some useful macros to handle IP6 addresses -+ */ -+#define IPV6_ADDR_ANY_INIT \ -+ {{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }}} -+#define IPV6_ADDR_LOOPBACK_INIT \ -+ {{{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }}} -+#define IPV6_ADDR_NODELOCAL_ALLNODES_INIT \ -+ {{{ 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }}} -+#define IPV6_ADDR_INTFACELOCAL_ALLNODES_INIT \ -+ {{{ 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }}} -+#define IPV6_ADDR_LINKLOCAL_ALLNODES_INIT \ -+ {{{ 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }}} -+#define IPV6_ADDR_LINKLOCAL_ALLROUTERS_INIT \ -+ {{{ 0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \ -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02 }}} -+ -+#define IPV6_ARE_ADDR_EQUAL(a, b) \ -+ (memcmp((char __FAR__ *)a,(char __FAR__ *)b,sizeof(IPV6_ADDR)) == 0) -+ -+/* Unspecified IPv6 address */ -+#define IPV6_IS_ADDR_UNSPECIFIED(a) \ -+ ((*(u32_t *)(&(a)->addr8[0]) == 0) && \ -+ (*(u32_t *)(&(a)->addr8[4]) == 0) && \ -+ (*(u32_t *)(&(a)->addr8[8]) == 0) && \ -+ (*(u32_t *)(&(a)->addr8[12]) == 0)) -+ -+/* Loopback IPv6 address */ -+#define IPV6_IS_ADDR_LOOPBACK(a) \ -+ ((*(u32_t *)(&(a)->addr8[0]) == 0) && \ -+ (*(u32_t *)(&(a)->addr8[4]) == 0) && \ -+ (*(u32_t *)(&(a)->addr8[8]) == 0) && \ -+ (*(u32_t *)(&(a)->addr8[12]) == 0x1)) -+ -+/* IPv4 compatible */ -+#define IPV6_IS_ADDR_IPV4_COMPAT(a) \ -+ ((*(u32_t *)(&(a)->addr8[0]) == 0) && \ -+ (*(u32_t *)(&(a)->addr8[4]) == 0) && \ -+ (*(u32_t *)(&(a)->addr8[8]) == 0) && \ -+ (*(u32_t *)(&(a)->addr8[12]) != 0) && \ -+ (*(u32_t *)(&(a)->addr8[12]) != 0x1)) -+ -+/* Mapped IPv4-IPv6 address */ -+#define IPV6_IS_ADDR_IPV4_MAPPED(a) \ -+ ((*(u32_t *)(&(a)->addr8[0]) == 0) && \ -+ (*(u32_t *)(&(a)->addr8[4]) == 0) && \ -+ (*(u32_t *)(&(a)->addr8[8]) == ntohl(0x0000ffff))) -+ -+/* IPv6 Scope Values */ -+#define IPV6_ADDR_SCOPE_INTFACELOCAL 0x01 /* Node-local scope */ -+#define IPV6_ADDR_SCOPE_LINKLOCAL 0x02 /* Link-local scope */ -+#define IPV6_ADDR_SCOPE_SITELOCAL 0x05 /* Site-local scope */ -+#define IPV6_ADDR_SCOPE_ORGLOCAL 0x08 /* Organization-local scope */ -+#define IPV6_ADDR_SCOPE_GLOBAL 0x0e /* Global scope */ -+ -+/* Link-local Unicast : 10-bits much be 1111111010b --> 0xfe80. */ -+#define IPV6_IS_ADDR_LINKLOCAL(a) \ -+ (((a)->addr8[0] == 0xfe) && (((a)->addr8[1] & 0xc0) == 0x80)) -+ -+/* Site-local Unicast : 10-bits much be 1111111011b --> 0xfec0. */ -+#define IPV6_IS_ADDR_SITELOCAL(a) \ -+ (((a)->addr8[0] == 0xfe) && (((a)->addr8[1] & 0xc0) == 0xc0)) -+ -+/* Multicast : 10bits much be 11111111b. Next 4 bits is flags | 4-bit scope */ -+#define IPV6_IS_ADDR_MULTICAST(a) ((a)->addr8[0] == 0xff) -+ -+#define IPV6_ADDR_MC_SCOPE(a) ((a)->addr8[1] & 0x0f) -+ -+/* Multicast Scope */ -+ -+typedef struct ETH_HDR { -+ MAC_ADDR dest_mac; -+ MAC_ADDR src_mac; -+ u16_t len_type; -+} ETH_HDR, *pETH_HDR; -+ -+typedef struct IPV6_HDR { -+ union { -+ struct { -+ u32_t ipv6_flow; /* Version (4-bit) | -+ Traffic Class (8-bit) | -+ Flow ID (20-bit) */ -+ u16_t ipv6_plen; /* Payload length */ -+ u8_t ipv6_nxt_hdr; /* Next Header */ -+ u8_t ipv6_hop_limit; /* hop limit */ -+ } ipv6_dw1; -+ -+ u8_t ipv6_version_fc; /* 4 bits version, top 4 bits class */ -+ } ipv6_ctrl; -+ -+ IPV6_ADDR ipv6_src; /* Source address */ -+ IPV6_ADDR ipv6_dst; /* Destination address */ -+} IPV6_HDR, *pIPV6_HDR; -+ -+#define ipv6_version_fc ipv6_ctrl.ipv6_version_fc -+#define ipv6_flow ipv6_ctrl.ipv6_dw1.ipv6_flow -+#define ipv6_plen ipv6_ctrl.ipv6_dw1.ipv6_plen -+#define ipv6_nxt_hdr ipv6_ctrl.ipv6_dw1.ipv6_nxt_hdr -+#define ipv6_hop_limit ipv6_ctrl.ipv6_dw1.ipv6_hop_limit -+ -+#define IPV6_VERSION 0x60 -+#define IPV6_VERSION_MASK 0xf0 -+#define IPV6_HOP_LIMIT 64 -+ -+/* Length of the IP header with no next header */ -+#define IPV6_HEADER_LEN sizeof(IPV6_HDR) -+ -+#ifdef BIG_ENDIAN -+#define IPV6_FLOWINFO_MASK 0x0fffffff /* flow info (28 bits) */ -+#define IPV6_FLOWLABEL_MASK 0x000fffff /* flow label (20 bits) */ -+#else /* LITTLE_ENDIAN */ -+#define IPV6_FLOWINFO_MASK 0xffffff0f /* flow info (28 bits) */ -+#define IPV6_FLOWLABEL_MASK 0xffff0f00 /* flow label (20 bits) */ -+#endif -+ -+typedef struct PACKET_IPV6 { -+ MAC_ADDR dest_mac; -+ MAC_ADDR src_mac; -+ u16_t len_type; -+ IPV6_HDR ip; -+ union { -+ UDP_HDR udp; -+ } layer4_prot; -+} PACKET_IPV6, *pPACKET_IPV6; -+ -+typedef struct PACKET_IPV6_VLAN { -+ MAC_ADDR dest_mac; -+ MAC_ADDR src_mac; -+ u16_t len_type; -+ u16_t vlan_id; -+ IPV6_HDR ip; -+ union { -+ UDP_HDR udp; -+ } layer4_prot; -+} PACKET_IPV6_VLAN, *pPACKET_IPV6_VLAN; -+ -+#ifdef PACK_DATA_STRUCTURE -+#pragma pack(pop) -+#endif -+ -+typedef struct IPV6_ARP_ENTRY { -+ IPV6_ADDR ip_addr; -+ MAC_ADDR mac_addr; -+ u8_t time; -+} IPV6_ARP_ENTRY, *pIPV6_ARP_ENTRY; -+ -+#define IPV6_NUM_OF_ADDRESS_ENTRY 4 -+ -+typedef struct _IPV6_PREFIX_ENTRY { -+ struct _IPV6_PREFIX_ENTRY *next; -+ IPV6_ADDR address; -+ u8_t prefix_len; -+} IPV6_PREFIX_ENTRY, *pIPV6_PREFIX_ENTRY; -+ -+typedef struct IPV6_ADDR_ENTRY { -+ IPV6_ADDR address; -+ u8_t prefix_len; -+} IPV6_ADDR_ENTRY, *pIPV6_ADDR_ENTRY; -+ -+typedef struct IPV6_CONTEXT { -+ u16_t flags; -+#define IPV6_FLAGS_MANAGED_ADDR_CONFIG (1 << 0) -+#define IPV6_FLAGS_OTHER_STATEFUL_CONFIG (1 << 1) -+#define IPV6_FLAGS_ROUTER_ADV_RECEIVED (1 << 2) -+#define IPV6_FLAGS_DISABLE_DHCPV6 (1 << 3) -+ -+ MAC_ADDRESS mac_addr; -+ IPV6_ADDR link_local_addr; -+ IPV6_ADDR link_local_multi; -+ IPV6_ADDR multi; /* For Static IPv6 only */ -+ IPV6_ADDR multi_dest; /* For Static IPv6 only */ -+ IPV6_ADDR default_router; -+ pIPV6_PREFIX_ENTRY addr_list; -+ u8_t hop_limit; -+#define UIP_ARPTAB_SIZE 8 -+ -+ struct uip_stack *ustack; -+#define MAX_MCADDR_TABLE 5 -+ MAC_ADDR mc_addr[MAX_MCADDR_TABLE]; -+ u8_t arptime; -+ IPV6_ARP_ENTRY ipv6_arp_table[UIP_ARPTAB_SIZE]; -+ IPV6_PREFIX_ENTRY ipv6_prefix_table[IPV6_NUM_OF_ADDRESS_ENTRY]; -+ -+ /* VLAN support */ -+ -+ void *dhcpv6_context; -+ -+} IPV6_CONTEXT, *pIPV6_CONTEXT; -+ -+#define ISCSI_FLAGS_DHCP_TCPIP_CONFIG (1<<0) -+#define ISCSI_FLAGS_DHCP_ISCSI_CONFIG (1<<1) -+ -+#define IPV6_MAX_ROUTER_SOL_DELAY 4 -+#define IPV6_MAX_ROUTER_SOL_RETRY 3 -+ -+#define DHCPV6_CLIENT_PORT 546 -+#define DHCPV6_SERVER_PORT 547 -+ -+/* Function prototype */ -+void ipv6_init(struct ndpc_state *ndp, int cfg); -+int ipv6_autoconfig(pIPV6_CONTEXT ipv6_context); -+int ipv6_discover_address(pIPV6_CONTEXT ipv6_context); -+pIPV6_ADDR ipv6_our_address(pIPV6_CONTEXT ipv6_context); -+int ipv6_ip_in_arp_table(pIPV6_CONTEXT ipv6_context, pIPV6_ADDR ipv6_addr, -+ MAC_ADDR * mac_addr); -+void ipv6_arp_timer(pIPV6_CONTEXT ipv6_context); -+void ipv6_arp_out(pIPV6_CONTEXT ipv6_context, int *uip_len); -+int ipv6_add_prefix_entry(pIPV6_CONTEXT ipv6_context, -+ IPV6_ADDR * ipv6_addr, u8_t prefix_len); -+void ipv6_set_ip_params(pIPV6_CONTEXT ipv6_context, -+ pIPV6_ADDR src_ip, u8_t prefix_len, -+ pIPV6_ADDR default_gateway); -+void ipv6_set_host_addr(pIPV6_CONTEXT ipv6_context, pIPV6_ADDR src_ip); -+int ipv6_get_default_router_ip_addrs(pIPV6_CONTEXT ipv6_context, -+ pIPV6_ADDR ip_addr); -+MAC_ADDRESS *ipv6_get_link_addr(pIPV6_CONTEXT ipv6_context); -+u16_t ipv6_do_stateful_dhcpv6(pIPV6_CONTEXT ipv6_context, u32_t flags); -+void ipv6_add_solit_node_address(pIPV6_CONTEXT ipv6_context, -+ pIPV6_ADDR ip_addr); -+int ipv6_get_source_ip_addrs(pIPV6_CONTEXT ipv6_context, -+ pIPV6_ADDR_ENTRY addr_list); -+void ipv6_cfg_link_local_addr(pIPV6_CONTEXT ipv6_context, pIPV6_ADDR ip_addr); -+void ipv6_disable_dhcpv6(pIPV6_CONTEXT ipv6_context); -+int ipv6_send_nd_solicited_packet(pIPV6_CONTEXT ipv6_context, pETH_HDR eth, -+ pIPV6_HDR ipv6); -+int ipv6_is_it_our_link_local_address(pIPV6_CONTEXT ipv6_context, -+ IPV6_ADDR __FAR__ * ipv6_addr); -+void ipv6_mc_init_dest_mac(pETH_HDR eth, pIPV6_HDR ipv6); -+pIPV6_ADDR ipv6_find_longest_match(pIPV6_CONTEXT ipv6_context, -+ pIPV6_ADDR ip_addr); -+ -+#endif /* __IPV6_H__ */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/ipv6_ndpc.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/ipv6_ndpc.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/ipv6_ndpc.c 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/ipv6_ndpc.c 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,408 @@ -+/* -+ * Copyright (c) 2011, Broadcom Corporation -+ * -+ * Written by: Eddie Wai (eddie.wai@broadcom.com) -+ * Based on the Swedish Institute of Computer Science's -+ * dhcpc.c code -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * ipv6_ndpc.c - Top level IPv6 Network Discovery Protocol Engine (RFC4861) -+ * -+ */ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "uip.h" -+#include "ipv6_ndpc.h" -+#include "timer.h" -+#include "pt.h" -+ -+#include "debug.h" -+#include "logger.h" -+#include "nic.h" -+#include "nic_utils.h" -+#include "ipv6.h" -+#include "ipv6_pkt.h" -+#include "dhcpv6.h" -+ -+const int dhcpv6_retry_timeout[DHCPV6_NUM_OF_RETRY] = { 1, 2, 4, 8 }; -+ -+static PT_THREAD(handle_ndp(struct uip_stack *ustack, int force)) -+{ -+ struct ndpc_state *s; -+ pIPV6_CONTEXT ipv6c; -+ pDHCPV6_CONTEXT dhcpv6c = NULL; -+ u16_t task = 0; -+ -+ s = ustack->ndpc; -+ if (s == NULL) { -+ LOG_DEBUG("NDP: Could not find ndpc state"); -+ return PT_ENDED; -+ } -+ -+ ipv6c = s->ipv6_context; -+ if (!ipv6c) -+ goto ndpc_state_null; -+ -+ dhcpv6c = s->dhcpv6_context; -+ -+ PT_BEGIN(&s->pt); -+ -+ if (s->state == NDPC_STATE_BACKGROUND_LOOP) -+ goto ipv6_loop; -+ -+ if (s->state == NDPC_STATE_RTR_ADV) -+ goto rtr_adv; -+ -+ s->state = NDPC_STATE_RTR_SOL; -+ /* try_again: */ -+ s->ticks = CLOCK_SECOND * IPV6_MAX_ROUTER_SOL_DELAY; -+ s->retry_count = 0; -+ do { -+ /* Perform router solicitation and wait for -+ router advertisement */ -+ LOG_DEBUG("%s: ndpc_handle send rtr sol", s->nic->log_name); -+ ipv6_autoconfig(s->ipv6_context); -+ -+ timer_set(&s->timer, s->ticks); -+ wait_rtr: -+ s->ustack->uip_flags &= ~UIP_NEWDATA; -+ LOG_DEBUG("%s: ndpc_handle wait for rtr adv flags=0x%x", -+ s->nic->log_name, ipv6c->flags); -+ PT_WAIT_UNTIL(&s->pt, uip_newdata(s->ustack) -+ || timer_expired(&s->timer) || force); -+ -+ if (uip_newdata(s->ustack)) { -+ /* Validate incoming packets -+ Note that the uip_len is init from nic loop */ -+ ipv6_rx_packet(ipv6c, (u16_t) uip_datalen(s->ustack)); -+ if (ipv6c->flags & IPV6_FLAGS_ROUTER_ADV_RECEIVED) { -+ LOG_INFO("%s: ROUTER_ADV_RECEIVED", -+ s->nic->log_name); -+ /* Success */ -+ break; -+ } else if (!timer_expired(&s->timer)) { -+ /* Yes new data, but not what we want, -+ check for timer expiration before bumping -+ tick */ -+ goto wait_rtr; -+ } -+ } -+ s->retry_count++; -+ if (s->retry_count >= IPV6_MAX_ROUTER_SOL_RETRY) -+ /* Max router solicitation retry reached. Move to -+ IPv6 loop (no DHCPv6) */ -+ goto no_rtr_adv; -+ -+ } while (!(ipv6c->flags & IPV6_FLAGS_ROUTER_ADV_RECEIVED)); -+ -+ LOG_DEBUG("%s: ndpc_handle got rtr adv", s->nic->log_name); -+ -+no_rtr_adv: -+ s->state = NDPC_STATE_RTR_ADV; -+ -+rtr_adv: -+ /* Both Static IPv6 and DHCPv6 comes here */ -+ -+ task = ipv6_do_stateful_dhcpv6(ipv6c, ISCSI_FLAGS_DHCP_TCPIP_CONFIG); -+ if (task && (ustack->ip_config == IPV6_CONFIG_DHCP)) { -+ /* Run the DHCPv6 engine */ -+ -+ if (!dhcpv6c) -+ goto ipv6_loop; -+ -+ dhcpv6c->dhcpv6_task = task; -+ s->retry_count = 0; -+ s->state = NDPC_STATE_DHCPV6_DIS; -+ do { -+ /* Do dhcpv6 */ -+ dhcpv6c->timeout = dhcpv6_retry_timeout[s->retry_count]; -+ s->ticks = CLOCK_SECOND * dhcpv6c->timeout; -+ LOG_DEBUG("%s: ndpc_handle send dhcpv6 sol retry " -+ "cnt=%d", s->nic->log_name, s->retry_count); -+ dhcpv6_do_discovery(dhcpv6c); -+ -+ timer_set(&s->timer, s->ticks); -+wait_dhcp: -+ s->ustack->uip_flags &= ~UIP_NEWDATA; -+ PT_WAIT_UNTIL(&s->pt, uip_newdata(s->ustack) -+ || timer_expired(&s->timer) || force); -+ -+ if (uip_newdata(s->ustack)) { -+ /* Validate incoming packets -+ Note that the uip_len is init from nic -+ loop */ -+ ipv6_rx_packet(ipv6c, -+ (u16_t) uip_datalen(s->ustack)); -+ if (dhcpv6c->dhcpv6_done == TRUE) -+ break; -+ else if (!timer_expired(&s->timer)) { -+ /* Yes new data, but not what we want, -+ check for timer expiration before -+ bumping tick */ -+ goto wait_dhcp; -+ } -+ } -+ s->retry_count++; -+ if (s->retry_count < DHCPV6_NUM_OF_RETRY) { -+ dhcpv6c->seconds += dhcpv6c->timeout; -+ } else { -+ LOG_DEBUG("%s: ndpc_handle DHCP failed", -+ s->nic->log_name); -+ /* Allow to goto background loop */ -+ //PT_RESTART(&s->pt); -+ goto ipv6_loop; -+ } -+ } while (dhcpv6c->dhcpv6_done == FALSE); -+ s->state = NDPC_STATE_DHCPV6_DONE; -+ LOG_DEBUG("%s: ndpc_handle got dhcpv6", s->nic->log_name); -+ -+ /* End of DHCPv6 engine */ -+ } else { -+ /* Static IPv6 */ -+ if (ustack->ip_config == IPV6_CONFIG_DHCP) { -+ LOG_DEBUG("%s: ndpc_handle DHCP failed", -+ s->nic->log_name); -+ PT_RESTART(&s->pt); -+ } -+ IPV6_ADDR tmp, tmp2; -+ char buf[INET6_ADDRSTRLEN]; -+ -+ ipv6_disable_dhcpv6(ipv6c); -+ memcpy(&tmp.addr8, &ustack->hostaddr6, sizeof(IPV6_ADDR)); -+ LOG_DEBUG("%s: host ip addr %02x:%02x:%02x:%02x:%02x:%02x:" -+ "%02x:%02x", s->nic->log_name, -+ ustack->hostaddr6[0], ustack->hostaddr6[1], -+ ustack->hostaddr6[2], ustack->hostaddr6[3], -+ ustack->hostaddr6[4], ustack->hostaddr6[5], -+ ustack->hostaddr6[6], ustack->hostaddr6[7]); -+ memset(&tmp2, 0, sizeof(tmp2)); -+ ipv6_set_ip_params(ipv6c, &tmp, -+ ustack->prefix_len, &tmp2); -+ -+ ipv6_add_solit_node_address(ipv6c, &tmp); -+ -+ inet_ntop(AF_INET6, &tmp.addr8, buf, sizeof(buf)); -+ LOG_INFO("%s: Static hostaddr IP: %s", s->nic->log_name, -+ buf); -+ -+ } -+ -+ipv6_loop: -+ s->state = NDPC_STATE_BACKGROUND_LOOP; -+ LOG_DEBUG("%s: Loop", s->nic->log_name); -+ /* Background IPv6 loop */ -+ while (1) { -+ /* Handle all neightbor solicitation/advertisement here */ -+ s->ustack->uip_flags &= ~UIP_NEWDATA; -+ PT_WAIT_UNTIL(&s->pt, uip_newdata(s->ustack)); -+ -+ /* Validate incoming packets */ -+ ipv6_rx_packet(ipv6c, (u16_t) uip_datalen(s->ustack)); -+ } -+ -+ndpc_state_null: -+ -+ while (1) { -+ PT_YIELD(&s->pt); -+ } -+ -+ PT_END(&(s->pt)); -+} -+ -+/*---------------------------------------------------------------------------*/ -+int ndpc_init(nic_t * nic, struct uip_stack *ustack, -+ const void *mac_addr, int mac_len) -+{ -+ pIPV6_CONTEXT ipv6c; -+ pDHCPV6_CONTEXT dhcpv6c; -+ struct ndpc_state *s = ustack->ndpc; -+ -+ if (s) { -+ LOG_DEBUG("NDP: NDP context already allocated"); -+ /* Already allocated, skip*/ -+ return -EALREADY; -+ } -+ s = malloc(sizeof(*s)); -+ if (s == NULL) { -+ LOG_ERR("%s: Couldn't allocate size for ndpc info", -+ nic->log_name); -+ goto error; -+ } -+ memset(s, 0, sizeof(*s)); -+ -+ if (s->ipv6_context) { -+ LOG_DEBUG("NDP: IPv6 context already allocated"); -+ ipv6c = s->ipv6_context; -+ goto init1; -+ } -+ ipv6c = malloc(sizeof(IPV6_CONTEXT)); -+ if (ipv6c == NULL) { -+ LOG_ERR("%s: Couldn't allocate mem for IPv6 context info", -+ nic->log_name); -+ goto error1; -+ } -+init1: -+ if (s->dhcpv6_context) { -+ LOG_DEBUG("NDP: DHCPv6 context already allocated"); -+ dhcpv6c = s->dhcpv6_context; -+ goto init2; -+ } -+ dhcpv6c = malloc(sizeof(DHCPV6_CONTEXT)); -+ if (dhcpv6c == NULL) { -+ LOG_ERR("%s: Couldn't allocate mem for DHCPv6 context info", -+ nic->log_name); -+ goto error2; -+ } -+init2: -+ memset(s, 0, sizeof(*s)); -+ memset(ipv6c, 0, sizeof(*ipv6c)); -+ memset(dhcpv6c, 0, sizeof(*dhcpv6c)); -+ -+ s->ipv6_context = ipv6c; -+ s->dhcpv6_context = dhcpv6c; -+ -+ s->nic = nic; -+ s->ustack = ustack; -+ s->mac_addr = (void *)mac_addr; -+ s->mac_len = mac_len; -+ s->state = NDPC_STATE_INIT; -+ -+ /* Init IPV6_CONTEXT */ -+ ipv6_init(s, ustack->ip_config); -+ -+ dhcpv6c->ipv6_context = ipv6c; -+ ipv6c->dhcpv6_context = dhcpv6c; -+ -+ /* Init DHCPV6_CONTEXT */ -+ dhcpv6_init(dhcpv6c); -+ -+ ustack->ndpc = s; -+ -+ PT_INIT(&s->pt); -+ -+ if (ustack->ip_config == IPV6_CONFIG_DHCP) { -+ /* DHCPv6 specific */ -+ } else { -+ /* Static v6 specific */ -+ } -+ -+ return 0; -+error2: -+ free(ipv6c); -+ s->ipv6_context = NULL; -+error1: -+ free(s); -+ ustack->ndpc = NULL; -+error: -+ return -ENOMEM; -+} -+ -+/*---------------------------------------------------------------------------*/ -+void ndpc_call(struct uip_stack *ustack) -+{ -+ handle_ndp(ustack, 0); -+} -+ -+void ndpc_exit(struct ndpc_state *ndp) -+{ -+ LOG_DEBUG("NDP - Exit ndpc_state=%p", ndp); -+ if (!ndp) -+ return; -+ if (ndp->ipv6_context) -+ free(ndp->ipv6_context); -+ if (ndp->dhcpv6_context) -+ free(ndp->dhcpv6_context); -+ free(ndp); -+} -+ -+int ndpc_request(struct uip_stack *ustack, void *in, void *out, int request) -+{ -+ struct ndpc_state *s; -+ pIPV6_CONTEXT ipv6c; -+ int ret = 0; -+ -+ if (!ustack) { -+ LOG_DEBUG("NDP: ustack == NULL"); -+ return -EINVAL; -+ } -+ s = ustack->ndpc; -+ if (s == NULL) { -+ LOG_DEBUG("NDP: Could not find ndpc state for request %d", -+ request); -+ return -EINVAL; -+ } -+ //LOG_DEBUG("%s: NDP - Request %d", s->nic->log_name, request); -+ -+ while (s->state != NDPC_STATE_BACKGROUND_LOOP) { -+ LOG_DEBUG("%s: ndpc state not in background loop, run handler", -+ s->nic->log_name); -+ handle_ndp(ustack, 1); -+ } -+ -+ ipv6c = s->ipv6_context; -+ switch (request) { -+ case NEIGHBOR_SOLICIT: -+ LOG_DEBUG("nd sol: in=%p in->eth=%p in->ipv6=%p", in, in, -+ (u8_t *) in + 4); -+ *(int *)out = ipv6_send_nd_solicited_packet(ipv6c, -+ (pETH_HDR) ((pNDPC_REQPTR)in)->eth, -+ (pIPV6_HDR) ((pNDPC_REQPTR)in)->ipv6); -+ break; -+ case CHECK_LINK_LOCAL_ADDR: -+ *(int *)out = ipv6_is_it_our_link_local_address(ipv6c, -+ (pIPV6_ADDR)in); -+ break; -+ case GET_LINK_LOCAL_ADDR: -+ *(pIPV6_ADDR *) out = &ipv6c->link_local_addr; -+ break; -+ case GET_DEFAULT_ROUTER_ADDR: -+ *(pIPV6_ADDR *)out = &ipv6c->default_router; -+ break; -+ case CHECK_ARP_TABLE: -+ *(int *)out = ipv6_ip_in_arp_table(ipv6c, -+ (pIPV6_ADDR) ((pNDPC_REQPTR)in)->ipv6, -+ (MAC_ADDR *) ((pNDPC_REQPTR)in)->eth); -+ break; -+ case GET_HOST_ADDR: -+ *(pIPV6_ADDR *)out = ipv6_find_longest_match(ipv6c, -+ (pIPV6_ADDR)in); -+ default: -+ break; -+ } -+ return ret; -+} -+ -+/*---------------------------------------------------------------------------*/ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/ipv6_ndpc.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/ipv6_ndpc.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/ipv6_ndpc.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/ipv6_ndpc.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,97 @@ -+/* -+ * Copyright (c) 2011, Broadcom Corporation -+ * -+ * Written by: Eddie Wai (eddie.wai@broadcom.com) -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * ipv6_ndpc.h - Top level IPv6 Network Discovery Protocol Engine (RFC4861) -+ * -+ */ -+#ifndef __NDPC_H__ -+#define __NDPC_H__ -+ -+#include -+ -+#include "nic.h" -+#include "timer.h" -+#include "pt.h" -+ -+typedef struct NDPC_REQPTR { -+ void *eth; -+ void *ipv6; -+} NDPC_REQPTR, *pNDPC_REQPTR; -+ -+struct ndpc_state { -+ struct pt pt; -+ -+ nic_t *nic; -+ struct uip_stack *ustack; -+ char state; -+ struct timer timer; -+ u16_t ticks; -+ void *mac_addr; -+ int mac_len; -+ int retry_count; -+ -+ time_t last_update; -+ -+ void *ipv6_context; -+ void *dhcpv6_context; -+}; -+ -+enum { -+ NDPC_STATE_INIT, -+ NDPC_STATE_RTR_SOL, -+ NDPC_STATE_RTR_ADV, -+ NDPC_STATE_DHCPV6_DIS, -+ NDPC_STATE_DHCPV6_DONE, -+ NDPC_STATE_BACKGROUND_LOOP -+}; -+ -+int ndpc_init(nic_t * nic, struct uip_stack *ustack, -+ const void *mac_addr, int mac_len); -+void ndpc_call(struct uip_stack *ustack); -+void ndpc_exit(struct ndpc_state *ndp); -+ -+enum { -+ NEIGHBOR_SOLICIT, -+ CHECK_LINK_LOCAL_ADDR, -+ GET_LINK_LOCAL_ADDR, -+ GET_DEFAULT_ROUTER_ADDR, -+ CHECK_ARP_TABLE, -+ GET_HOST_ADDR -+}; -+ -+int ndpc_request(struct uip_stack *ustack, void *in, void *out, int request); -+ -+#define UIP_NDP_CALL ndpc_call -+ -+#endif /* __NDPC_H__ */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/ipv6_pkt.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/ipv6_pkt.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/ipv6_pkt.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/ipv6_pkt.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,49 @@ -+/* -+ * Copyright (c) 2011, Broadcom Corporation -+ * -+ * Written by: Eddie Wai (eddie.wai@broadcom.com) -+ * Based on Kevin Tran's iSCSI boot code -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * ipv6_packet.h - IPv6 routine include file -+ * -+ */ -+#ifndef __IPV6_PKT_H__ -+#define __IPV6_PKT_H__ -+ -+u16_t ipv6_process_rx(pIPV6_HDR ipv6); -+void ipv6_rx_packet(pIPV6_CONTEXT ipv6_context, u16_t len); -+void ipv6_setup_hdrs(pIPV6_CONTEXT ipv6_context, pETH_HDR eth, pIPV6_HDR ipv6, -+ u16_t packet_len); -+int ipv6_send(pIPV6_CONTEXT ipv6_context, u16_t packet_len); -+void ipv6_send_udp_packet(pIPV6_CONTEXT ipv6_context, u16_t packet_len); -+ -+#endif /* __IPV6_PKT_H__ */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/lc-addrlabels.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/lc-addrlabels.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/lc-addrlabels.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/lc-addrlabels.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,82 @@ -+/* -+ * Copyright (c) 2004-2005, Swedish Institute of Computer Science. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. Neither the name of the Institute nor the names of its contributors -+ * may be used to endorse or promote products derived from this software -+ * without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE -+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ * This file is part of the uIP TCP/IP stack -+ * -+ * Author: Adam Dunkels -+ * -+ * $Id: lc-addrlabels.h,v 1.3 2006/06/12 08:00:30 adam Exp $ -+ */ -+ -+/** -+ * \addtogroup lc -+ * @{ -+ */ -+ -+/** -+ * \file -+ * Implementation of local continuations based on the "Labels as -+ * values" feature of gcc -+ * \author -+ * Adam Dunkels -+ * -+ * This implementation of local continuations is based on a special -+ * feature of the GCC C compiler called "labels as values". This -+ * feature allows assigning pointers with the address of the code -+ * corresponding to a particular C label. -+ * -+ * For more information, see the GCC documentation: -+ * http://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html -+ * -+ * Thanks to dividuum for finding the nice local scope label -+ * implementation. -+ */ -+ -+#ifndef __LC_ADDRLABELS_H__ -+#define __LC_ADDRLABELS_H__ -+ -+/** \hideinitializer */ -+typedef void *lc_t; -+ -+#define LC_INIT(s) s = NULL -+ -+#define LC_RESUME(s) \ -+ do { \ -+ if(s != NULL) { \ -+ goto *s; \ -+ } \ -+ } while(0) -+ -+#define LC_SET(s) \ -+ do { ({ __label__ resume; resume: (s) = &&resume; }); }while(0) -+ -+#define LC_END(s) -+ -+#endif /* __LC_ADDRLABELS_H__ */ -+ -+/** @} */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/lc.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/lc.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/lc.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/lc.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,131 @@ -+/* -+ * Copyright (c) 2004-2005, Swedish Institute of Computer Science. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. Neither the name of the Institute nor the names of its contributors -+ * may be used to endorse or promote products derived from this software -+ * without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE -+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ * This file is part of the uIP TCP/IP stack -+ * -+ * Author: Adam Dunkels -+ * -+ * $Id: lc.h,v 1.2 2006/06/12 08:00:30 adam Exp $ -+ */ -+ -+/** -+ * \addtogroup pt -+ * @{ -+ */ -+ -+/** -+ * \defgroup lc Local continuations -+ * @{ -+ * -+ * Local continuations form the basis for implementing protothreads. A -+ * local continuation can be set in a specific function to -+ * capture the state of the function. After a local continuation has -+ * been set can be resumed in order to restore the state of the -+ * function at the point where the local continuation was set. -+ * -+ * -+ */ -+ -+/** -+ * \file lc.h -+ * Local continuations -+ * \author -+ * Adam Dunkels -+ * -+ */ -+ -+#ifdef DOXYGEN -+/** -+ * Initialize a local continuation. -+ * -+ * This operation initializes the local continuation, thereby -+ * unsetting any previously set continuation state. -+ * -+ * \hideinitializer -+ */ -+#define LC_INIT(lc) -+ -+/** -+ * Set a local continuation. -+ * -+ * The set operation saves the state of the function at the point -+ * where the operation is executed. As far as the set operation is -+ * concerned, the state of the function does not include the -+ * call-stack or local (automatic) variables, but only the program -+ * counter and such CPU registers that needs to be saved. -+ * -+ * \hideinitializer -+ */ -+#define LC_SET(lc) -+ -+/** -+ * Resume a local continuation. -+ * -+ * The resume operation resumes a previously set local continuation, thus -+ * restoring the state in which the function was when the local -+ * continuation was set. If the local continuation has not been -+ * previously set, the resume operation does nothing. -+ * -+ * \hideinitializer -+ */ -+#define LC_RESUME(lc) -+ -+/** -+ * Mark the end of local continuation usage. -+ * -+ * The end operation signifies that local continuations should not be -+ * used any more in the function. This operation is not needed for -+ * most implementations of local continuation, but is required by a -+ * few implementations. -+ * -+ * \hideinitializer -+ */ -+#define LC_END(lc) -+ -+/** -+ * \var typedef lc_t; -+ * -+ * The local continuation type. -+ * -+ * \hideinitializer -+ */ -+#endif /* DOXYGEN */ -+ -+#ifndef __LC_H__ -+#define __LC_H__ -+ -+#ifdef LC_CONF_INCLUDE -+#include LC_CONF_INCLUDE -+#else -+#include "lc-switch.h" -+#endif /* LC_CONF_INCLUDE */ -+ -+#endif /* __LC_H__ */ -+ -+/** @} */ -+/** @} */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/lc-switch.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/lc-switch.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/lc-switch.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/lc-switch.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,76 @@ -+/* -+ * Copyright (c) 2004-2005, Swedish Institute of Computer Science. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. Neither the name of the Institute nor the names of its contributors -+ * may be used to endorse or promote products derived from this software -+ * without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE -+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ * This file is part of the uIP TCP/IP stack -+ * -+ * Author: Adam Dunkels -+ * -+ * $Id: lc-switch.h,v 1.2 2006/06/12 08:00:30 adam Exp $ -+ */ -+ -+/** -+ * \addtogroup lc -+ * @{ -+ */ -+ -+/** -+ * \file -+ * Implementation of local continuations based on switch() statment -+ * \author Adam Dunkels -+ * -+ * This implementation of local continuations uses the C switch() -+ * statement to resume execution of a function somewhere inside the -+ * function's body. The implementation is based on the fact that -+ * switch() statements are able to jump directly into the bodies of -+ * control structures such as if() or while() statmenets. -+ * -+ * This implementation borrows heavily from Simon Tatham's coroutines -+ * implementation in C: -+ * http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html -+ */ -+ -+#ifndef __LC_SWITCH_H__ -+#define __LC_SWTICH_H__ -+ -+/* WARNING! lc implementation using switch() does not work if an -+ LC_SET() is done within another switch() statement! */ -+ -+/** \hideinitializer */ -+typedef unsigned short lc_t; -+ -+#define LC_INIT(s) s = 0; -+ -+#define LC_RESUME(s) switch(s) { case 0: -+ -+#define LC_SET(s) s = __LINE__; case __LINE__: -+ -+#define LC_END(s) } -+ -+#endif /* __LC_SWITCH_H__ */ -+ -+/** @} */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/Makefile.am open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/Makefile.am ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/Makefile.am 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/Makefile.am 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,17 @@ -+INCLUDES = -I${top_srcdir}/src/unix \ -+ -I${top_srcdir}/src/apps/dhcpc \ -+ -I${top_srcdir}/src/apps/brcm-iscsi \ -+ -I${top_srcdir}/include -+ -+noinst_LIBRARIES = lib_iscsi_uip.a -+ -+lib_iscsi_uip_a_SOURCES = uip.c \ -+ uip_arp.c \ -+ psock.c \ -+ timer.c \ -+ uip-neighbor.c \ -+ uip_eth.c \ -+ ipv6_ndpc.c \ -+ ipv6.c -+ -+lib_iscsi_uip_a_CFLAGS = -DBYTE_ORDER=@ENDIAN@ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/Makefile.in open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/Makefile.in ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/Makefile.in 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/Makefile.in 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,561 @@ -+# Makefile.in generated by automake 1.9.6 from Makefile.am. -+# @configure_input@ -+ -+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -+# 2003, 2004, 2005 Free Software Foundation, Inc. -+# This Makefile.in 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. -+ -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -+# PARTICULAR PURPOSE. -+ -+@SET_MAKE@ -+ -+srcdir = @srcdir@ -+top_srcdir = @top_srcdir@ -+VPATH = @srcdir@ -+pkgdatadir = $(datadir)/@PACKAGE@ -+pkglibdir = $(libdir)/@PACKAGE@ -+pkgincludedir = $(includedir)/@PACKAGE@ -+top_builddir = ../.. -+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -+INSTALL = @INSTALL@ -+install_sh_DATA = $(install_sh) -c -m 644 -+install_sh_PROGRAM = $(install_sh) -c -+install_sh_SCRIPT = $(install_sh) -c -+INSTALL_HEADER = $(INSTALL_DATA) -+transform = $(program_transform_name) -+NORMAL_INSTALL = : -+PRE_INSTALL = : -+POST_INSTALL = : -+NORMAL_UNINSTALL = : -+PRE_UNINSTALL = : -+POST_UNINSTALL = : -+build_triplet = @build@ -+host_triplet = @host@ -+subdir = src/uip -+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -+am__aclocal_m4_deps = $(top_srcdir)/configure.ac -+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ -+ $(ACLOCAL_M4) -+mkinstalldirs = $(install_sh) -d -+CONFIG_HEADER = $(top_builddir)/config.h -+CONFIG_CLEAN_FILES = -+LIBRARIES = $(noinst_LIBRARIES) -+ARFLAGS = cru -+lib_iscsi_uip_a_AR = $(AR) $(ARFLAGS) -+lib_iscsi_uip_a_LIBADD = -+am_lib_iscsi_uip_a_OBJECTS = lib_iscsi_uip_a-uip.$(OBJEXT) \ -+ lib_iscsi_uip_a-uip_arp.$(OBJEXT) \ -+ lib_iscsi_uip_a-psock.$(OBJEXT) \ -+ lib_iscsi_uip_a-timer.$(OBJEXT) \ -+ lib_iscsi_uip_a-uip-neighbor.$(OBJEXT) \ -+ lib_iscsi_uip_a-uip_eth.$(OBJEXT) \ -+ lib_iscsi_uip_a-ipv6_ndpc.$(OBJEXT) \ -+ lib_iscsi_uip_a-ipv6.$(OBJEXT) -+lib_iscsi_uip_a_OBJECTS = $(am_lib_iscsi_uip_a_OBJECTS) -+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -+depcomp = $(SHELL) $(top_srcdir)/depcomp -+am__depfiles_maybe = depfiles -+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ -+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ -+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ -+ $(AM_CFLAGS) $(CFLAGS) -+CCLD = $(CC) -+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ -+ $(AM_LDFLAGS) $(LDFLAGS) -o $@ -+SOURCES = $(lib_iscsi_uip_a_SOURCES) -+DIST_SOURCES = $(lib_iscsi_uip_a_SOURCES) -+ETAGS = etags -+CTAGS = ctags -+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -+ACLOCAL = @ACLOCAL@ -+AMDEP_FALSE = @AMDEP_FALSE@ -+AMDEP_TRUE = @AMDEP_TRUE@ -+AMTAR = @AMTAR@ -+AR = @AR@ -+AUTOCONF = @AUTOCONF@ -+AUTOHEADER = @AUTOHEADER@ -+AUTOMAKE = @AUTOMAKE@ -+AWK = @AWK@ -+BASH = @BASH@ -+CC = @CC@ -+CCDEPMODE = @CCDEPMODE@ -+CFLAGS = @CFLAGS@ -+CPP = @CPP@ -+CPPFLAGS = @CPPFLAGS@ -+CXX = @CXX@ -+CXXCPP = @CXXCPP@ -+CXXDEPMODE = @CXXDEPMODE@ -+CXXFLAGS = @CXXFLAGS@ -+CYGPATH_W = @CYGPATH_W@ -+DEBUG_FALSE = @DEBUG_FALSE@ -+DEBUG_TRUE = @DEBUG_TRUE@ -+DEFS = @DEFS@ -+DEPDIR = @DEPDIR@ -+ECHO = @ECHO@ -+ECHO_C = @ECHO_C@ -+ECHO_N = @ECHO_N@ -+ECHO_T = @ECHO_T@ -+EGREP = @EGREP@ -+ENDIAN = @ENDIAN@ -+EXEEXT = @EXEEXT@ -+F77 = @F77@ -+FFLAGS = @FFLAGS@ -+INSTALL_DATA = @INSTALL_DATA@ -+INSTALL_PROGRAM = @INSTALL_PROGRAM@ -+INSTALL_SCRIPT = @INSTALL_SCRIPT@ -+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -+LDFLAGS = @LDFLAGS@ -+LIBOBJS = @LIBOBJS@ -+LIBS = @LIBS@ -+LIBTOOL = @LIBTOOL@ -+LN_S = @LN_S@ -+LTLIBOBJS = @LTLIBOBJS@ -+MAKEINFO = @MAKEINFO@ -+OBJEXT = @OBJEXT@ -+PACKAGE = @PACKAGE@ -+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -+PACKAGE_NAME = @PACKAGE_NAME@ -+PACKAGE_STRING = @PACKAGE_STRING@ -+PACKAGE_TARNAME = @PACKAGE_TARNAME@ -+PACKAGE_VERSION = @PACKAGE_VERSION@ -+PATH_SEPARATOR = @PATH_SEPARATOR@ -+RANLIB = @RANLIB@ -+SED = @SED@ -+SET_MAKE = @SET_MAKE@ -+SHELL = @SHELL@ -+STRIP = @STRIP@ -+VERSION = @VERSION@ -+ac_ct_AR = @ac_ct_AR@ -+ac_ct_CC = @ac_ct_CC@ -+ac_ct_CXX = @ac_ct_CXX@ -+ac_ct_F77 = @ac_ct_F77@ -+ac_ct_RANLIB = @ac_ct_RANLIB@ -+ac_ct_STRIP = @ac_ct_STRIP@ -+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ -+am__include = @am__include@ -+am__leading_dot = @am__leading_dot@ -+am__quote = @am__quote@ -+am__tar = @am__tar@ -+am__untar = @am__untar@ -+bindir = @bindir@ -+build = @build@ -+build_alias = @build_alias@ -+build_cpu = @build_cpu@ -+build_os = @build_os@ -+build_vendor = @build_vendor@ -+datadir = @datadir@ -+exec_prefix = @exec_prefix@ -+host = @host@ -+host_alias = @host_alias@ -+host_cpu = @host_cpu@ -+host_os = @host_os@ -+host_vendor = @host_vendor@ -+includedir = @includedir@ -+infodir = @infodir@ -+install_sh = @install_sh@ -+libdir = @libdir@ -+libexecdir = @libexecdir@ -+localstatedir = @localstatedir@ -+mandir = @mandir@ -+mkdir_p = @mkdir_p@ -+oldincludedir = @oldincludedir@ -+prefix = @prefix@ -+program_transform_name = @program_transform_name@ -+sbindir = @sbindir@ -+sharedstatedir = @sharedstatedir@ -+sysconfdir = @sysconfdir@ -+target_alias = @target_alias@ -+INCLUDES = -I${top_srcdir}/src/unix \ -+ -I${top_srcdir}/src/apps/dhcpc \ -+ -I${top_srcdir}/src/apps/brcm-iscsi \ -+ -I${top_srcdir}/include -+ -+noinst_LIBRARIES = lib_iscsi_uip.a -+lib_iscsi_uip_a_SOURCES = uip.c \ -+ uip_arp.c \ -+ psock.c \ -+ timer.c \ -+ uip-neighbor.c \ -+ uip_eth.c \ -+ ipv6_ndpc.c \ -+ ipv6.c -+ -+lib_iscsi_uip_a_CFLAGS = -DBYTE_ORDER=@ENDIAN@ -+all: all-am -+ -+.SUFFIXES: -+.SUFFIXES: .c .lo .o .obj -+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) -+ @for dep in $?; do \ -+ case '$(am__configure_deps)' in \ -+ *$$dep*) \ -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ -+ && exit 0; \ -+ exit 1;; \ -+ esac; \ -+ done; \ -+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/uip/Makefile'; \ -+ cd $(top_srcdir) && \ -+ $(AUTOMAKE) --gnu src/uip/Makefile -+.PRECIOUS: Makefile -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ @case '$?' in \ -+ *config.status*) \ -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ -+ *) \ -+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ -+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ -+ esac; -+ -+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+ -+$(top_srcdir)/configure: $(am__configure_deps) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+$(ACLOCAL_M4): $(am__aclocal_m4_deps) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+ -+clean-noinstLIBRARIES: -+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -+lib_iscsi_uip.a: $(lib_iscsi_uip_a_OBJECTS) $(lib_iscsi_uip_a_DEPENDENCIES) -+ -rm -f lib_iscsi_uip.a -+ $(lib_iscsi_uip_a_AR) lib_iscsi_uip.a $(lib_iscsi_uip_a_OBJECTS) $(lib_iscsi_uip_a_LIBADD) -+ $(RANLIB) lib_iscsi_uip.a -+ -+mostlyclean-compile: -+ -rm -f *.$(OBJEXT) -+ -+distclean-compile: -+ -rm -f *.tab.c -+ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_iscsi_uip_a-ipv6.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_iscsi_uip_a-ipv6_ndpc.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_iscsi_uip_a-psock.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_iscsi_uip_a-timer.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_iscsi_uip_a-uip-neighbor.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_iscsi_uip_a-uip.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_iscsi_uip_a-uip_arp.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lib_iscsi_uip_a-uip_eth.Po@am__quote@ -+ -+.c.o: -+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(COMPILE) -c $< -+ -+.c.obj: -+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` -+ -+.c.lo: -+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< -+ -+lib_iscsi_uip_a-uip.o: uip.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -MT lib_iscsi_uip_a-uip.o -MD -MP -MF "$(DEPDIR)/lib_iscsi_uip_a-uip.Tpo" -c -o lib_iscsi_uip_a-uip.o `test -f 'uip.c' || echo '$(srcdir)/'`uip.c; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib_iscsi_uip_a-uip.Tpo" "$(DEPDIR)/lib_iscsi_uip_a-uip.Po"; else rm -f "$(DEPDIR)/lib_iscsi_uip_a-uip.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='uip.c' object='lib_iscsi_uip_a-uip.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -c -o lib_iscsi_uip_a-uip.o `test -f 'uip.c' || echo '$(srcdir)/'`uip.c -+ -+lib_iscsi_uip_a-uip.obj: uip.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -MT lib_iscsi_uip_a-uip.obj -MD -MP -MF "$(DEPDIR)/lib_iscsi_uip_a-uip.Tpo" -c -o lib_iscsi_uip_a-uip.obj `if test -f 'uip.c'; then $(CYGPATH_W) 'uip.c'; else $(CYGPATH_W) '$(srcdir)/uip.c'; fi`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib_iscsi_uip_a-uip.Tpo" "$(DEPDIR)/lib_iscsi_uip_a-uip.Po"; else rm -f "$(DEPDIR)/lib_iscsi_uip_a-uip.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='uip.c' object='lib_iscsi_uip_a-uip.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -c -o lib_iscsi_uip_a-uip.obj `if test -f 'uip.c'; then $(CYGPATH_W) 'uip.c'; else $(CYGPATH_W) '$(srcdir)/uip.c'; fi` -+ -+lib_iscsi_uip_a-uip_arp.o: uip_arp.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -MT lib_iscsi_uip_a-uip_arp.o -MD -MP -MF "$(DEPDIR)/lib_iscsi_uip_a-uip_arp.Tpo" -c -o lib_iscsi_uip_a-uip_arp.o `test -f 'uip_arp.c' || echo '$(srcdir)/'`uip_arp.c; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib_iscsi_uip_a-uip_arp.Tpo" "$(DEPDIR)/lib_iscsi_uip_a-uip_arp.Po"; else rm -f "$(DEPDIR)/lib_iscsi_uip_a-uip_arp.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='uip_arp.c' object='lib_iscsi_uip_a-uip_arp.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -c -o lib_iscsi_uip_a-uip_arp.o `test -f 'uip_arp.c' || echo '$(srcdir)/'`uip_arp.c -+ -+lib_iscsi_uip_a-uip_arp.obj: uip_arp.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -MT lib_iscsi_uip_a-uip_arp.obj -MD -MP -MF "$(DEPDIR)/lib_iscsi_uip_a-uip_arp.Tpo" -c -o lib_iscsi_uip_a-uip_arp.obj `if test -f 'uip_arp.c'; then $(CYGPATH_W) 'uip_arp.c'; else $(CYGPATH_W) '$(srcdir)/uip_arp.c'; fi`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib_iscsi_uip_a-uip_arp.Tpo" "$(DEPDIR)/lib_iscsi_uip_a-uip_arp.Po"; else rm -f "$(DEPDIR)/lib_iscsi_uip_a-uip_arp.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='uip_arp.c' object='lib_iscsi_uip_a-uip_arp.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -c -o lib_iscsi_uip_a-uip_arp.obj `if test -f 'uip_arp.c'; then $(CYGPATH_W) 'uip_arp.c'; else $(CYGPATH_W) '$(srcdir)/uip_arp.c'; fi` -+ -+lib_iscsi_uip_a-psock.o: psock.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -MT lib_iscsi_uip_a-psock.o -MD -MP -MF "$(DEPDIR)/lib_iscsi_uip_a-psock.Tpo" -c -o lib_iscsi_uip_a-psock.o `test -f 'psock.c' || echo '$(srcdir)/'`psock.c; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib_iscsi_uip_a-psock.Tpo" "$(DEPDIR)/lib_iscsi_uip_a-psock.Po"; else rm -f "$(DEPDIR)/lib_iscsi_uip_a-psock.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='psock.c' object='lib_iscsi_uip_a-psock.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -c -o lib_iscsi_uip_a-psock.o `test -f 'psock.c' || echo '$(srcdir)/'`psock.c -+ -+lib_iscsi_uip_a-psock.obj: psock.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -MT lib_iscsi_uip_a-psock.obj -MD -MP -MF "$(DEPDIR)/lib_iscsi_uip_a-psock.Tpo" -c -o lib_iscsi_uip_a-psock.obj `if test -f 'psock.c'; then $(CYGPATH_W) 'psock.c'; else $(CYGPATH_W) '$(srcdir)/psock.c'; fi`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib_iscsi_uip_a-psock.Tpo" "$(DEPDIR)/lib_iscsi_uip_a-psock.Po"; else rm -f "$(DEPDIR)/lib_iscsi_uip_a-psock.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='psock.c' object='lib_iscsi_uip_a-psock.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -c -o lib_iscsi_uip_a-psock.obj `if test -f 'psock.c'; then $(CYGPATH_W) 'psock.c'; else $(CYGPATH_W) '$(srcdir)/psock.c'; fi` -+ -+lib_iscsi_uip_a-timer.o: timer.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -MT lib_iscsi_uip_a-timer.o -MD -MP -MF "$(DEPDIR)/lib_iscsi_uip_a-timer.Tpo" -c -o lib_iscsi_uip_a-timer.o `test -f 'timer.c' || echo '$(srcdir)/'`timer.c; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib_iscsi_uip_a-timer.Tpo" "$(DEPDIR)/lib_iscsi_uip_a-timer.Po"; else rm -f "$(DEPDIR)/lib_iscsi_uip_a-timer.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='timer.c' object='lib_iscsi_uip_a-timer.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -c -o lib_iscsi_uip_a-timer.o `test -f 'timer.c' || echo '$(srcdir)/'`timer.c -+ -+lib_iscsi_uip_a-timer.obj: timer.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -MT lib_iscsi_uip_a-timer.obj -MD -MP -MF "$(DEPDIR)/lib_iscsi_uip_a-timer.Tpo" -c -o lib_iscsi_uip_a-timer.obj `if test -f 'timer.c'; then $(CYGPATH_W) 'timer.c'; else $(CYGPATH_W) '$(srcdir)/timer.c'; fi`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib_iscsi_uip_a-timer.Tpo" "$(DEPDIR)/lib_iscsi_uip_a-timer.Po"; else rm -f "$(DEPDIR)/lib_iscsi_uip_a-timer.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='timer.c' object='lib_iscsi_uip_a-timer.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -c -o lib_iscsi_uip_a-timer.obj `if test -f 'timer.c'; then $(CYGPATH_W) 'timer.c'; else $(CYGPATH_W) '$(srcdir)/timer.c'; fi` -+ -+lib_iscsi_uip_a-uip-neighbor.o: uip-neighbor.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -MT lib_iscsi_uip_a-uip-neighbor.o -MD -MP -MF "$(DEPDIR)/lib_iscsi_uip_a-uip-neighbor.Tpo" -c -o lib_iscsi_uip_a-uip-neighbor.o `test -f 'uip-neighbor.c' || echo '$(srcdir)/'`uip-neighbor.c; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib_iscsi_uip_a-uip-neighbor.Tpo" "$(DEPDIR)/lib_iscsi_uip_a-uip-neighbor.Po"; else rm -f "$(DEPDIR)/lib_iscsi_uip_a-uip-neighbor.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='uip-neighbor.c' object='lib_iscsi_uip_a-uip-neighbor.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -c -o lib_iscsi_uip_a-uip-neighbor.o `test -f 'uip-neighbor.c' || echo '$(srcdir)/'`uip-neighbor.c -+ -+lib_iscsi_uip_a-uip-neighbor.obj: uip-neighbor.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -MT lib_iscsi_uip_a-uip-neighbor.obj -MD -MP -MF "$(DEPDIR)/lib_iscsi_uip_a-uip-neighbor.Tpo" -c -o lib_iscsi_uip_a-uip-neighbor.obj `if test -f 'uip-neighbor.c'; then $(CYGPATH_W) 'uip-neighbor.c'; else $(CYGPATH_W) '$(srcdir)/uip-neighbor.c'; fi`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib_iscsi_uip_a-uip-neighbor.Tpo" "$(DEPDIR)/lib_iscsi_uip_a-uip-neighbor.Po"; else rm -f "$(DEPDIR)/lib_iscsi_uip_a-uip-neighbor.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='uip-neighbor.c' object='lib_iscsi_uip_a-uip-neighbor.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -c -o lib_iscsi_uip_a-uip-neighbor.obj `if test -f 'uip-neighbor.c'; then $(CYGPATH_W) 'uip-neighbor.c'; else $(CYGPATH_W) '$(srcdir)/uip-neighbor.c'; fi` -+ -+lib_iscsi_uip_a-uip_eth.o: uip_eth.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -MT lib_iscsi_uip_a-uip_eth.o -MD -MP -MF "$(DEPDIR)/lib_iscsi_uip_a-uip_eth.Tpo" -c -o lib_iscsi_uip_a-uip_eth.o `test -f 'uip_eth.c' || echo '$(srcdir)/'`uip_eth.c; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib_iscsi_uip_a-uip_eth.Tpo" "$(DEPDIR)/lib_iscsi_uip_a-uip_eth.Po"; else rm -f "$(DEPDIR)/lib_iscsi_uip_a-uip_eth.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='uip_eth.c' object='lib_iscsi_uip_a-uip_eth.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -c -o lib_iscsi_uip_a-uip_eth.o `test -f 'uip_eth.c' || echo '$(srcdir)/'`uip_eth.c -+ -+lib_iscsi_uip_a-uip_eth.obj: uip_eth.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -MT lib_iscsi_uip_a-uip_eth.obj -MD -MP -MF "$(DEPDIR)/lib_iscsi_uip_a-uip_eth.Tpo" -c -o lib_iscsi_uip_a-uip_eth.obj `if test -f 'uip_eth.c'; then $(CYGPATH_W) 'uip_eth.c'; else $(CYGPATH_W) '$(srcdir)/uip_eth.c'; fi`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib_iscsi_uip_a-uip_eth.Tpo" "$(DEPDIR)/lib_iscsi_uip_a-uip_eth.Po"; else rm -f "$(DEPDIR)/lib_iscsi_uip_a-uip_eth.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='uip_eth.c' object='lib_iscsi_uip_a-uip_eth.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -c -o lib_iscsi_uip_a-uip_eth.obj `if test -f 'uip_eth.c'; then $(CYGPATH_W) 'uip_eth.c'; else $(CYGPATH_W) '$(srcdir)/uip_eth.c'; fi` -+ -+lib_iscsi_uip_a-ipv6_ndpc.o: ipv6_ndpc.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -MT lib_iscsi_uip_a-ipv6_ndpc.o -MD -MP -MF "$(DEPDIR)/lib_iscsi_uip_a-ipv6_ndpc.Tpo" -c -o lib_iscsi_uip_a-ipv6_ndpc.o `test -f 'ipv6_ndpc.c' || echo '$(srcdir)/'`ipv6_ndpc.c; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib_iscsi_uip_a-ipv6_ndpc.Tpo" "$(DEPDIR)/lib_iscsi_uip_a-ipv6_ndpc.Po"; else rm -f "$(DEPDIR)/lib_iscsi_uip_a-ipv6_ndpc.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ipv6_ndpc.c' object='lib_iscsi_uip_a-ipv6_ndpc.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -c -o lib_iscsi_uip_a-ipv6_ndpc.o `test -f 'ipv6_ndpc.c' || echo '$(srcdir)/'`ipv6_ndpc.c -+ -+lib_iscsi_uip_a-ipv6_ndpc.obj: ipv6_ndpc.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -MT lib_iscsi_uip_a-ipv6_ndpc.obj -MD -MP -MF "$(DEPDIR)/lib_iscsi_uip_a-ipv6_ndpc.Tpo" -c -o lib_iscsi_uip_a-ipv6_ndpc.obj `if test -f 'ipv6_ndpc.c'; then $(CYGPATH_W) 'ipv6_ndpc.c'; else $(CYGPATH_W) '$(srcdir)/ipv6_ndpc.c'; fi`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib_iscsi_uip_a-ipv6_ndpc.Tpo" "$(DEPDIR)/lib_iscsi_uip_a-ipv6_ndpc.Po"; else rm -f "$(DEPDIR)/lib_iscsi_uip_a-ipv6_ndpc.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ipv6_ndpc.c' object='lib_iscsi_uip_a-ipv6_ndpc.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -c -o lib_iscsi_uip_a-ipv6_ndpc.obj `if test -f 'ipv6_ndpc.c'; then $(CYGPATH_W) 'ipv6_ndpc.c'; else $(CYGPATH_W) '$(srcdir)/ipv6_ndpc.c'; fi` -+ -+lib_iscsi_uip_a-ipv6.o: ipv6.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -MT lib_iscsi_uip_a-ipv6.o -MD -MP -MF "$(DEPDIR)/lib_iscsi_uip_a-ipv6.Tpo" -c -o lib_iscsi_uip_a-ipv6.o `test -f 'ipv6.c' || echo '$(srcdir)/'`ipv6.c; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib_iscsi_uip_a-ipv6.Tpo" "$(DEPDIR)/lib_iscsi_uip_a-ipv6.Po"; else rm -f "$(DEPDIR)/lib_iscsi_uip_a-ipv6.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ipv6.c' object='lib_iscsi_uip_a-ipv6.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -c -o lib_iscsi_uip_a-ipv6.o `test -f 'ipv6.c' || echo '$(srcdir)/'`ipv6.c -+ -+lib_iscsi_uip_a-ipv6.obj: ipv6.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -MT lib_iscsi_uip_a-ipv6.obj -MD -MP -MF "$(DEPDIR)/lib_iscsi_uip_a-ipv6.Tpo" -c -o lib_iscsi_uip_a-ipv6.obj `if test -f 'ipv6.c'; then $(CYGPATH_W) 'ipv6.c'; else $(CYGPATH_W) '$(srcdir)/ipv6.c'; fi`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/lib_iscsi_uip_a-ipv6.Tpo" "$(DEPDIR)/lib_iscsi_uip_a-ipv6.Po"; else rm -f "$(DEPDIR)/lib_iscsi_uip_a-ipv6.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ipv6.c' object='lib_iscsi_uip_a-ipv6.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_iscsi_uip_a_CFLAGS) $(CFLAGS) -c -o lib_iscsi_uip_a-ipv6.obj `if test -f 'ipv6.c'; then $(CYGPATH_W) 'ipv6.c'; else $(CYGPATH_W) '$(srcdir)/ipv6.c'; fi` -+ -+mostlyclean-libtool: -+ -rm -f *.lo -+ -+clean-libtool: -+ -rm -rf .libs _libs -+ -+distclean-libtool: -+ -rm -f libtool -+uninstall-info-am: -+ -+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) ' { files[$$0] = 1; } \ -+ END { for (i in files) print i; }'`; \ -+ mkid -fID $$unique -+tags: TAGS -+ -+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ here=`pwd`; \ -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) ' { files[$$0] = 1; } \ -+ END { for (i in files) print i; }'`; \ -+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ -+ test -n "$$unique" || unique=$$empty_fix; \ -+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ -+ $$tags $$unique; \ -+ fi -+ctags: CTAGS -+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ here=`pwd`; \ -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) ' { files[$$0] = 1; } \ -+ END { for (i in files) print i; }'`; \ -+ test -z "$(CTAGS_ARGS)$$tags$$unique" \ -+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ -+ $$tags $$unique -+ -+GTAGS: -+ here=`$(am__cd) $(top_builddir) && pwd` \ -+ && cd $(top_srcdir) \ -+ && gtags -i $(GTAGS_ARGS) $$here -+ -+distclean-tags: -+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -+ -+distdir: $(DISTFILES) -+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ -+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ -+ list='$(DISTFILES)'; for file in $$list; do \ -+ case $$file in \ -+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ -+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ -+ esac; \ -+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ -+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ -+ dir="/$$dir"; \ -+ $(mkdir_p) "$(distdir)$$dir"; \ -+ else \ -+ dir=''; \ -+ fi; \ -+ if test -d $$d/$$file; then \ -+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ -+ fi; \ -+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ -+ else \ -+ test -f $(distdir)/$$file \ -+ || cp -p $$d/$$file $(distdir)/$$file \ -+ || exit 1; \ -+ fi; \ -+ done -+check-am: all-am -+check: check-am -+all-am: Makefile $(LIBRARIES) -+installdirs: -+install: install-am -+install-exec: install-exec-am -+install-data: install-data-am -+uninstall: uninstall-am -+ -+install-am: all-am -+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -+ -+installcheck: installcheck-am -+install-strip: -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ `test -z '$(STRIP)' || \ -+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -+mostlyclean-generic: -+ -+clean-generic: -+ -+distclean-generic: -+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -+ -+maintainer-clean-generic: -+ @echo "This command is intended for maintainers to use" -+ @echo "it deletes files that may require special tools to rebuild." -+clean: clean-am -+ -+clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ -+ mostlyclean-am -+ -+distclean: distclean-am -+ -rm -rf ./$(DEPDIR) -+ -rm -f Makefile -+distclean-am: clean-am distclean-compile distclean-generic \ -+ distclean-libtool distclean-tags -+ -+dvi: dvi-am -+ -+dvi-am: -+ -+html: html-am -+ -+info: info-am -+ -+info-am: -+ -+install-data-am: -+ -+install-exec-am: -+ -+install-info: install-info-am -+ -+install-man: -+ -+installcheck-am: -+ -+maintainer-clean: maintainer-clean-am -+ -rm -rf ./$(DEPDIR) -+ -rm -f Makefile -+maintainer-clean-am: distclean-am maintainer-clean-generic -+ -+mostlyclean: mostlyclean-am -+ -+mostlyclean-am: mostlyclean-compile mostlyclean-generic \ -+ mostlyclean-libtool -+ -+pdf: pdf-am -+ -+pdf-am: -+ -+ps: ps-am -+ -+ps-am: -+ -+uninstall-am: uninstall-info-am -+ -+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ -+ clean-libtool clean-noinstLIBRARIES ctags distclean \ -+ distclean-compile distclean-generic distclean-libtool \ -+ distclean-tags distdir dvi dvi-am html html-am info info-am \ -+ install install-am install-data install-data-am install-exec \ -+ install-exec-am install-info install-info-am install-man \ -+ install-strip installcheck installcheck-am installdirs \ -+ maintainer-clean maintainer-clean-generic mostlyclean \ -+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ -+ pdf pdf-am ps ps-am tags uninstall uninstall-am \ -+ uninstall-info-am -+ -+# Tell versions [3.59,3.63) of GNU make to not export all variables. -+# Otherwise a system limit (for SysV at least) may be exceeded. -+.NOEXPORT: -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/Makefile.include open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/Makefile.include ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/Makefile.include 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/Makefile.include 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,47 @@ -+ -+ -+ifdef APPS -+ APPDIRS = $(foreach APP, $(APPS), ../apps/$(APP)) -+ -include $(foreach APP, $(APPS), ../apps/$(APP)/Makefile.$(APP)) -+ CFLAGS += $(addprefix -I../apps/,$(APPS)) -+endif -+ -+ifndef CCDEP -+ CCDEP = $(CC) -+endif -+ifndef CCDEPCFLAGS -+ CCDEPCFLAGS = $(CFLAGS) -+endif -+ifndef OBJECTDIR -+ OBJECTDIR = obj -+endif -+ -+ifeq (${wildcard $(OBJECTDIR)},) -+ DUMMY := ${shell mkdir $(OBJECTDIR)} -+endif -+ -+ -+vpath %.c . ../uip ../lib $(APPDIRS) -+ -+$(OBJECTDIR)/%.o: %.c -+ $(CC) $(CFLAGS) -c $< -o $@ -+ -+$(OBJECTDIR)/%.d: %.c -+ @set -e; rm -f $@; \ -+ $(CCDEP) -MM $(CCDEPCFLAGS) $< > $@.$$$$; \ -+ sed 's,\($*\)\.o[ :]*,$(OBJECTDIR)/\1.o $@ : ,g' < $@.$$$$ > $@; \ -+ rm -f $@.$$$$ -+ -+UIP_SOURCES=uip.c uip_arp.c uiplib.c psock.c timer.c uip-neighbor.c uip_eth.c ipv6_ndp.c ipv6.c -+ -+ -+ifneq ($(MAKECMDGOALS),clean) -+-include $(addprefix $(OBJECTDIR)/,$(UIP_SOURCES:.c=.d) \ -+ $(APP_SOURCES:.c=.d)) -+endif -+ -+libuip.a: ${addprefix $(OBJECTDIR)/, $(UIP_SOURCES:.c=.o)} -+ $(AR) rc $@ $^ -+ -+libapps.a: ${addprefix $(OBJECTDIR)/, $(APP_SOURCES:.c=.o)} -+ $(AR) rc $@ $^ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/psock.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/psock.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/psock.c 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/psock.c 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,345 @@ -+/* -+ * Copyright (c) 2004, Swedish Institute of Computer Science. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. Neither the name of the Institute nor the names of its contributors -+ * may be used to endorse or promote products derived from this software -+ * without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE -+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ * This file is part of the uIP TCP/IP stack -+ * -+ * Author: Adam Dunkels -+ * -+ * $Id: psock.c,v 1.2 2006/06/12 08:00:30 adam Exp $ -+ */ -+ -+#include -+#include -+ -+#include "uipopt.h" -+#include "psock.h" -+#include "uip.h" -+ -+#define STATE_NONE 0 -+#define STATE_ACKED 1 -+#define STATE_READ 2 -+#define STATE_BLOCKED_NEWDATA 3 -+#define STATE_BLOCKED_CLOSE 4 -+#define STATE_BLOCKED_SEND 5 -+#define STATE_DATA_SENT 6 -+ -+/* -+ * Return value of the buffering functions that indicates that a -+ * buffer was not filled by incoming data. -+ * -+ */ -+#define BUF_NOT_FULL 0 -+#define BUF_NOT_FOUND 0 -+ -+/* -+ * Return value of the buffering functions that indicates that a -+ * buffer was completely filled by incoming data. -+ * -+ */ -+#define BUF_FULL 1 -+ -+/* -+ * Return value of the buffering functions that indicates that an -+ * end-marker byte was found. -+ * -+ */ -+#define BUF_FOUND 2 -+ -+/*---------------------------------------------------------------------------*/ -+static void buf_setup(struct psock_buf *buf, u8_t * bufptr, u16_t bufsize) -+{ -+ buf->ptr = bufptr; -+ buf->left = bufsize; -+} -+ -+/*---------------------------------------------------------------------------*/ -+static u8_t -+buf_bufdata(struct psock_buf *buf, u16_t len, u8_t ** dataptr, u16_t * datalen) -+{ -+ if (*datalen < buf->left) { -+ memcpy(buf->ptr, *dataptr, *datalen); -+ buf->ptr += *datalen; -+ buf->left -= *datalen; -+ *dataptr += *datalen; -+ *datalen = 0; -+ return BUF_NOT_FULL; -+ } else if (*datalen == buf->left) { -+ memcpy(buf->ptr, *dataptr, *datalen); -+ buf->ptr += *datalen; -+ buf->left = 0; -+ *dataptr += *datalen; -+ *datalen = 0; -+ return BUF_FULL; -+ } else { -+ memcpy(buf->ptr, *dataptr, buf->left); -+ buf->ptr += buf->left; -+ *datalen -= buf->left; -+ *dataptr += buf->left; -+ buf->left = 0; -+ return BUF_FULL; -+ } -+} -+ -+/*---------------------------------------------------------------------------*/ -+static u8_t -+buf_bufto(register struct psock_buf *buf, u8_t endmarker, -+ register u8_t ** dataptr, register u16_t * datalen) -+{ -+ u8_t c; -+ while (buf->left > 0 && *datalen > 0) { -+ c = *buf->ptr = **dataptr; -+ ++*dataptr; -+ ++buf->ptr; -+ --*datalen; -+ --buf->left; -+ -+ if (c == endmarker) { -+ return BUF_FOUND; -+ } -+ } -+ -+ if (*datalen == 0) { -+ return BUF_NOT_FOUND; -+ } -+ -+ while (*datalen > 0) { -+ c = **dataptr; -+ --*datalen; -+ ++*dataptr; -+ -+ if (c == endmarker) { -+ return BUF_FOUND | BUF_FULL; -+ } -+ } -+ -+ return BUF_FULL; -+} -+ -+/*---------------------------------------------------------------------------*/ -+static char send_data(register struct psock *s) -+{ -+ if (s->state != STATE_DATA_SENT || uip_rexmit(s->ustack)) { -+ if (s->sendlen > uip_mss(s->ustack)) { -+ uip_appsend(s->ustack, s->sendptr, uip_mss(s->ustack)); -+ } else { -+ uip_appsend(s->ustack, s->sendptr, s->sendlen); -+ } -+ s->state = STATE_DATA_SENT; -+ return 1; -+ } -+ return 0; -+} -+ -+/*---------------------------------------------------------------------------*/ -+static char data_acked(struct psock *s) -+{ -+ if (s->state == STATE_DATA_SENT && uip_acked(s->ustack)) { -+ if (s->sendlen > uip_mss(s->ustack)) { -+ s->sendlen -= uip_mss(s->ustack); -+ s->sendptr += uip_mss(s->ustack); -+ } else { -+ s->sendptr += s->sendlen; -+ s->sendlen = 0; -+ } -+ s->state = STATE_ACKED; -+ return 1; -+ } -+ return 0; -+} -+ -+/*---------------------------------------------------------------------------*/ -+PT_THREAD(psock_send(struct uip_stack * ustack, -+ register struct psock * s, const u8_t * buf, -+ unsigned int len)) -+{ -+ PT_BEGIN(&s->psockpt); -+ -+ /* If there is no data to send, we exit immediately. */ -+ if (len == 0) { -+ PT_EXIT(&s->psockpt); -+ } -+ -+ /* Save the length of and a pointer to the data that is to be -+ sent. */ -+ s->sendptr = buf; -+ s->sendlen = len; -+ -+ s->state = STATE_NONE; -+ -+ /* We loop here until all data is sent. The s->sendlen variable is -+ updated by the data_sent() function. */ -+ while (s->sendlen > 0) { -+ -+ /* -+ * The condition for this PT_WAIT_UNTIL is a little tricky: the -+ * protothread will wait here until all data has been acknowledged -+ * (data_acked() returns true) and until all data has been sent -+ * (send_data() returns true). The two functions data_acked() -+ * and send_data() must be called in succession to ensure that -+ * all data is sent. Therefore the & operator is used instead of -+ * the && operator, which would cause only the data_acked() -+ * function to be called when it returns false. -+ */ -+ PT_WAIT_UNTIL(&s->psockpt, data_acked(s) & send_data(s)); -+ } -+ -+ s->state = STATE_NONE; -+ -+ PT_END(&s->psockpt); -+} -+ -+/*---------------------------------------------------------------------------*/ -+PT_THREAD(psock_generator_send(register struct psock *s, -+ unsigned short (*generate) (void *), void *arg)) -+{ -+ PT_BEGIN(&s->psockpt); -+ -+ /* Ensure that there is a generator function to call. */ -+ if (generate == NULL) { -+ PT_EXIT(&s->psockpt); -+ } -+ -+ /* Call the generator function to generate the data in the -+ uip_appdata buffer. */ -+ s->sendlen = generate(arg); -+ s->sendptr = s->ustack->uip_appdata; -+ -+ s->state = STATE_NONE; -+ do { -+ /* Call the generator function again if we are called to perform -+ a retransmission. */ -+ if (uip_rexmit(s->ustack)) { -+ generate(arg); -+ } -+ /* Wait until all data is sent and acknowledged. */ -+ PT_WAIT_UNTIL(&s->psockpt, data_acked(s) & send_data(s)); -+ } while (s->sendlen > 0); -+ -+ s->state = STATE_NONE; -+ -+ PT_END(&s->psockpt); -+} -+ -+/*---------------------------------------------------------------------------*/ -+u16_t psock_datalen(struct psock *psock) -+{ -+ return psock->bufsize - psock->buf.left; -+} -+ -+/*---------------------------------------------------------------------------*/ -+char psock_newdata(struct psock *s) -+{ -+ if (s->readlen > 0) { -+ /* There is data in the uip_appdata buffer that has not yet been -+ read with the PSOCK_READ functions. */ -+ return 1; -+ } else if (s->state == STATE_READ) { -+ /* All data in uip_appdata buffer already consumed. */ -+ s->state = STATE_BLOCKED_NEWDATA; -+ return 0; -+ } else if (uip_newdata(s->ustack)) { -+ /* There is new data that has not been consumed. */ -+ return 1; -+ } else { -+ /* There is no new data. */ -+ return 0; -+ } -+} -+ -+/*---------------------------------------------------------------------------*/ -+PT_THREAD(psock_readto(register struct psock * psock, u8_t c)) -+{ -+ PT_BEGIN(&psock->psockpt); -+ -+ buf_setup(&psock->buf, psock->bufptr, psock->bufsize); -+ -+ /* XXX: Should add buf_checkmarker() before do{} loop, if -+ incoming data has been handled while waiting for a write. */ -+ -+ do { -+ if (psock->readlen == 0) { -+ PT_WAIT_UNTIL(&psock->psockpt, psock_newdata(psock)); -+ psock->state = STATE_READ; -+ psock->readptr = (u8_t *) psock->ustack->uip_appdata; -+ psock->readlen = uip_datalen(psock->ustack); -+ } -+ } while ((buf_bufto(&psock->buf, c, -+ &psock->readptr, -+ &psock->readlen) & BUF_FOUND) == 0); -+ -+ if (psock_datalen(psock) == 0) { -+ psock->state = STATE_NONE; -+ PT_RESTART(&psock->psockpt); -+ } -+ PT_END(&psock->psockpt); -+} -+ -+/*---------------------------------------------------------------------------*/ -+PT_THREAD(psock_readbuf(register struct psock *psock)) -+{ -+ PT_BEGIN(&psock->psockpt); -+ -+ buf_setup(&psock->buf, psock->bufptr, psock->bufsize); -+ -+ /* XXX: Should add buf_checkmarker() before do{} loop, if -+ incoming data has been handled while waiting for a write. */ -+ -+ do { -+ if (psock->readlen == 0) { -+ PT_WAIT_UNTIL(&psock->psockpt, psock_newdata(psock)); -+ printf("Waited for newdata\n"); -+ psock->state = STATE_READ; -+ psock->readptr = (u8_t *) psock->ustack->uip_appdata; -+ psock->readlen = uip_datalen(psock->ustack); -+ } -+ } while (buf_bufdata(&psock->buf, psock->bufsize, -+ &psock->readptr, &psock->readlen) != BUF_FULL); -+ -+ if (psock_datalen(psock) == 0) { -+ psock->state = STATE_NONE; -+ PT_RESTART(&psock->psockpt); -+ } -+ PT_END(&psock->psockpt); -+} -+ -+/*---------------------------------------------------------------------------*/ -+void -+psock_init(struct uip_stack *ustack, -+ register struct psock *psock, u8_t * buffer, unsigned int buffersize) -+{ -+ psock->state = STATE_NONE; -+ psock->readlen = 0; -+ psock->bufptr = buffer; -+ psock->bufsize = buffersize; -+ psock->ustack = ustack; -+ buf_setup(&psock->buf, buffer, buffersize); -+ PT_INIT(&psock->pt); -+ PT_INIT(&psock->psockpt); -+} -+ -+/*---------------------------------------------------------------------------*/ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/psock.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/psock.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/psock.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/psock.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,384 @@ -+/* -+ * Copyright (c) 2004, Swedish Institute of Computer Science. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. Neither the name of the Institute nor the names of its contributors -+ * may be used to endorse or promote products derived from this software -+ * without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE -+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ * This file is part of the uIP TCP/IP stack -+ * -+ * Author: Adam Dunkels -+ * -+ * $Id: psock.h,v 1.3 2006/06/12 08:00:30 adam Exp $ -+ */ -+ -+/** -+ * \defgroup psock Protosockets library -+ * @{ -+ * -+ * The protosocket library provides an interface to the uIP stack that is -+ * similar to the traditional BSD socket interface. Unlike programs -+ * written for the ordinary uIP event-driven interface, programs -+ * written with the protosocket library are executed in a sequential -+ * fashion and does not have to be implemented as explicit state -+ * machines. -+ * -+ * Protosockets only work with TCP connections. -+ * -+ * The protosocket library uses \ref pt protothreads to provide -+ * sequential control flow. This makes the protosockets lightweight in -+ * terms of memory, but also means that protosockets inherits the -+ * functional limitations of protothreads. Each protosocket lives only -+ * within a single function. Automatic variables (stack variables) are -+ * not retained across a protosocket library function call. -+ * -+ * \note Because the protosocket library uses protothreads, local -+ * variables will not always be saved across a call to a protosocket -+ * library function. It is therefore advised that local variables are -+ * used with extreme care. -+ * -+ * The protosocket library provides functions for sending data without -+ * having to deal with retransmissions and acknowledgements, as well -+ * as functions for reading data without having to deal with data -+ * being split across more than one TCP segment. -+ * -+ * Because each protosocket runs as a protothread, the protosocket has to be -+ * started with a call to PSOCK_BEGIN() at the start of the function -+ * in which the protosocket is used. Similarly, the protosocket protothread can -+ * be terminated by a call to PSOCK_EXIT(). -+ * -+ */ -+ -+/** -+ * \file -+ * Protosocket library header file -+ * \author -+ * Adam Dunkels -+ * -+ */ -+ -+#ifndef __PSOCK_H__ -+#define __PSOCK_H__ -+ -+#include "uip.h" -+#include "uipopt.h" -+#include "pt.h" -+ -+ /* -+ * The structure that holds the state of a buffer. -+ * -+ * This structure holds the state of a uIP buffer. The structure has -+ * no user-visible elements, but is used through the functions -+ * provided by the library. -+ * -+ */ -+struct psock_buf { -+ u8_t *ptr; -+ unsigned short left; -+}; -+ -+/** -+ * The representation of a protosocket. -+ * -+ * The protosocket structrure is an opaque structure with no user-visible -+ * elements. -+ */ -+struct psock { -+ struct pt pt, psockpt; /* Protothreads - one that's using the psock -+ functions, and one that runs inside the -+ psock functions. */ -+ const u8_t *sendptr; /* Pointer to the next data to be sent. */ -+ u8_t *readptr; /* Pointer to the next data to be read. */ -+ -+ u8_t *bufptr; /* Pointer to the buffer used for buffering -+ incoming data. */ -+ -+ u16_t sendlen; /* The number of bytes left to be sent. */ -+ u16_t readlen; /* The number of bytes left to be read. */ -+ -+ struct psock_buf buf; /* The structure holding the state of the -+ input buffer. */ -+ unsigned int bufsize; /* The size of the input buffer. */ -+ -+ unsigned char state; /* The state of the protosocket. */ -+ -+ struct uip_stack *ustack; -+}; -+ -+void psock_init(struct uip_stack *ustack, -+ struct psock *psock, u8_t * buffer, unsigned int buffersize); -+/** -+ * Initialize a protosocket. -+ * -+ * This macro initializes a protosocket and must be called before the -+ * protosocket is used. The initialization also specifies the input buffer -+ * for the protosocket. -+ * -+ * \param psock (struct psock *) A pointer to the protosocket to be -+ * initialized -+ * -+ * \param buffer (char *) A pointer to the input buffer for the -+ * protosocket. -+ * -+ * \param buffersize (unsigned int) The size of the input buffer. -+ * -+ * \hideinitializer -+ */ -+#define PSOCK_INIT(psock, buffer, buffersize) \ -+ psock_init(psock, buffer, buffersize) -+ -+/** -+ * Start the protosocket protothread in a function. -+ * -+ * This macro starts the protothread associated with the protosocket and -+ * must come before other protosocket calls in the function it is used. -+ * -+ * \param psock (struct psock *) A pointer to the protosocket to be -+ * started. -+ * -+ * \hideinitializer -+ */ -+#define PSOCK_BEGIN(psock) PT_BEGIN(&((psock)->pt)) -+ -+PT_THREAD(psock_send(struct uip_stack *ustack, -+ struct psock *psock, const u8_t * buf, unsigned int len)); -+/** -+ * Send data. -+ * -+ * This macro sends data over a protosocket. The protosocket protothread blocks -+ * until all data has been sent and is known to have been received by -+ * the remote end of the TCP connection. -+ * -+ * \param psock (struct psock *) A pointer to the protosocket over which -+ * data is to be sent. -+ * -+ * \param data (char *) A pointer to the data that is to be sent. -+ * -+ * \param datalen (unsigned int) The length of the data that is to be -+ * sent. -+ * -+ * \hideinitializer -+ */ -+#define PSOCK_SEND(psock, data, datalen) \ -+ PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, data, datalen)) -+ -+/** -+ * \brief Send a null-terminated string. -+ * \param psock Pointer to the protosocket. -+ * \param str The string to be sent. -+ * -+ * This function sends a null-terminated string over the -+ * protosocket. -+ * -+ * \hideinitializer -+ */ -+#define PSOCK_SEND_STR(psock, str) \ -+ PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, str, strlen(str))) -+ -+PT_THREAD(psock_generator_send(struct psock *psock, -+ unsigned short (*f) (void *), void *arg)); -+ -+/** -+ * \brief Generate data with a function and send it -+ * \param psock Pointer to the protosocket. -+ * \param generator Pointer to the generator function -+ * \param arg Argument to the generator function -+ * -+ * This function generates data and sends it over the -+ * protosocket. This can be used to dynamically generate -+ * data for a transmission, instead of generating the data -+ * in a buffer beforehand. This function reduces the need for -+ * buffer memory. The generator function is implemented by -+ * the application, and a pointer to the function is given -+ * as an argument with the call to PSOCK_GENERATOR_SEND(). -+ * -+ * The generator function should place the generated data -+ * directly in the uip_appdata buffer, and return the -+ * length of the generated data. The generator function is -+ * called by the protosocket layer when the data first is -+ * sent, and once for every retransmission that is needed. -+ * -+ * \hideinitializer -+ */ -+#define PSOCK_GENERATOR_SEND(psock, generator, arg) \ -+ PT_WAIT_THREAD(&((psock)->pt), \ -+ psock_generator_send(psock, generator, arg)) -+ -+/** -+ * Close a protosocket. -+ * -+ * This macro closes a protosocket and can only be called from within the -+ * protothread in which the protosocket lives. -+ * -+ * \param psock (struct psock *) A pointer to the protosocket that is to -+ * be closed. -+ * -+ * \hideinitializer -+ */ -+#define PSOCK_CLOSE(psock) uip_close() -+ -+PT_THREAD(psock_readbuf(struct psock *psock)); -+/** -+ * Read data until the buffer is full. -+ * -+ * This macro will block waiting for data and read the data into the -+ * input buffer specified with the call to PSOCK_INIT(). Data is read -+ * until the buffer is full.. -+ * -+ * \param psock (struct psock *) A pointer to the protosocket from which -+ * data should be read. -+ * -+ * \hideinitializer -+ */ -+#define PSOCK_READBUF(psock) \ -+ PT_WAIT_THREAD(&((psock)->pt), psock_readbuf(psock)) -+ -+PT_THREAD(psock_readto(struct psock *psock, unsigned char c)); -+/** -+ * Read data up to a specified character. -+ * -+ * This macro will block waiting for data and read the data into the -+ * input buffer specified with the call to PSOCK_INIT(). Data is only -+ * read until the specifieed character appears in the data stream. -+ * -+ * \param psock (struct psock *) A pointer to the protosocket from which -+ * data should be read. -+ * -+ * \param c (char) The character at which to stop reading. -+ * -+ * \hideinitializer -+ */ -+#define PSOCK_READTO(psock, c) \ -+ PT_WAIT_THREAD(&((psock)->pt), psock_readto(psock, c)) -+ -+/** -+ * The length of the data that was previously read. -+ * -+ * This macro returns the length of the data that was previously read -+ * using PSOCK_READTO() or PSOCK_READ(). -+ * -+ * \param psock (struct psock *) A pointer to the protosocket holding the data. -+ * -+ * \hideinitializer -+ */ -+#define PSOCK_DATALEN(psock) psock_datalen(psock) -+ -+u16_t psock_datalen(struct psock *psock); -+ -+/** -+ * Exit the protosocket's protothread. -+ * -+ * This macro terminates the protothread of the protosocket and should -+ * almost always be used in conjunction with PSOCK_CLOSE(). -+ * -+ * \sa PSOCK_CLOSE_EXIT() -+ * -+ * \param psock (struct psock *) A pointer to the protosocket. -+ * -+ * \hideinitializer -+ */ -+#define PSOCK_EXIT(psock) PT_EXIT(&((psock)->pt)) -+ -+/** -+ * Close a protosocket and exit the protosocket's protothread. -+ * -+ * This macro closes a protosocket and exits the protosocket's protothread. -+ * -+ * \param psock (struct psock *) A pointer to the protosocket. -+ * -+ * \hideinitializer -+ */ -+#define PSOCK_CLOSE_EXIT(psock) \ -+ do { \ -+ PSOCK_CLOSE(psock); \ -+ PSOCK_EXIT(psock); \ -+ } while(0) -+ -+/** -+ * Declare the end of a protosocket's protothread. -+ * -+ * This macro is used for declaring that the protosocket's protothread -+ * ends. It must always be used together with a matching PSOCK_BEGIN() -+ * macro. -+ * -+ * \param psock (struct psock *) A pointer to the protosocket. -+ * -+ * \hideinitializer -+ */ -+#define PSOCK_END(psock) PT_END(&((psock)->pt)) -+ -+char psock_newdata(struct psock *s); -+ -+/** -+ * Check if new data has arrived on a protosocket. -+ * -+ * This macro is used in conjunction with the PSOCK_WAIT_UNTIL() -+ * macro to check if data has arrived on a protosocket. -+ * -+ * \param psock (struct psock *) A pointer to the protosocket. -+ * -+ * \hideinitializer -+ */ -+#define PSOCK_NEWDATA(psock) psock_newdata(psock) -+ -+/** -+ * Wait until a condition is true. -+ * -+ * This macro blocks the protothread until the specified condition is -+ * true. The macro PSOCK_NEWDATA() can be used to check if new data -+ * arrives when the protosocket is waiting. -+ * -+ * Typically, this macro is used as follows: -+ * -+ \code -+ PT_THREAD(thread(struct psock *s, struct timer *t)) -+ { -+ PSOCK_BEGIN(s); -+ -+ PSOCK_WAIT_UNTIL(s, PSOCK_NEWADATA(s) || timer_expired(t)); -+ -+ if(PSOCK_NEWDATA(s)) { -+ PSOCK_READTO(s, '\n'); -+ } else { -+ handle_timed_out(s); -+ } -+ -+ PSOCK_END(s); -+ } -+ \endcode -+ * -+ * \param psock (struct psock *) A pointer to the protosocket. -+ * \param condition The condition to wait for. -+ * -+ * \hideinitializer -+ */ -+#define PSOCK_WAIT_UNTIL(psock, condition) \ -+ PT_WAIT_UNTIL(&((psock)->pt), (condition)); -+ -+#define PSOCK_WAIT_THREAD(psock, condition) \ -+ PT_WAIT_THREAD(&((psock)->pt), (condition)) -+ -+#endif /* __PSOCK_H__ */ -+ -+/** @} */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/pt.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/pt.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/pt.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/pt.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,323 @@ -+/* -+ * Copyright (c) 2004-2005, Swedish Institute of Computer Science. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. Neither the name of the Institute nor the names of its contributors -+ * may be used to endorse or promote products derived from this software -+ * without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE -+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ * This file is part of the uIP TCP/IP stack -+ * -+ * Author: Adam Dunkels -+ * -+ * $Id: pt.h,v 1.2 2006/06/12 08:00:30 adam Exp $ -+ */ -+ -+/** -+ * \addtogroup pt -+ * @{ -+ */ -+ -+/** -+ * \file -+ * Protothreads implementation. -+ * \author -+ * Adam Dunkels -+ * -+ */ -+ -+#ifndef __PT_H__ -+#define __PT_H__ -+ -+#include "lc.h" -+ -+struct pt { -+ lc_t lc; -+}; -+ -+#define PT_WAITING 0 -+#define PT_EXITED 1 -+#define PT_ENDED 2 -+#define PT_YIELDED 3 -+ -+/** -+ * \name Initialization -+ * @{ -+ */ -+ -+/** -+ * Initialize a protothread. -+ * -+ * Initializes a protothread. Initialization must be done prior to -+ * starting to execute the protothread. -+ * -+ * \param pt A pointer to the protothread control structure. -+ * -+ * \sa PT_SPAWN() -+ * -+ * \hideinitializer -+ */ -+#define PT_INIT(pt) LC_INIT((pt)->lc) -+ -+/** @} */ -+ -+/** -+ * \name Declaration and definition -+ * @{ -+ */ -+ -+/** -+ * Declaration of a protothread. -+ * -+ * This macro is used to declare a protothread. All protothreads must -+ * be declared with this macro. -+ * -+ * \param name_args The name and arguments of the C function -+ * implementing the protothread. -+ * -+ * \hideinitializer -+ */ -+#define PT_THREAD(name_args) char name_args -+ -+/** -+ * Declare the start of a protothread inside the C function -+ * implementing the protothread. -+ * -+ * This macro is used to declare the starting point of a -+ * protothread. It should be placed at the start of the function in -+ * which the protothread runs. All C statements above the PT_BEGIN() -+ * invokation will be executed each time the protothread is scheduled. -+ * -+ * \param pt A pointer to the protothread control structure. -+ * -+ * \hideinitializer -+ */ -+#define PT_BEGIN(pt) { char PT_YIELD_FLAG = 1; LC_RESUME((pt)->lc) -+ -+/** -+ * Declare the end of a protothread. -+ * -+ * This macro is used for declaring that a protothread ends. It must -+ * always be used together with a matching PT_BEGIN() macro. -+ * -+ * \param pt A pointer to the protothread control structure. -+ * -+ * \hideinitializer -+ */ -+#define PT_END(pt) LC_END((pt)->lc); PT_YIELD_FLAG = 0; \ -+ PT_INIT(pt); return PT_ENDED; } -+ -+/** @} */ -+ -+/** -+ * \name Blocked wait -+ * @{ -+ */ -+ -+/** -+ * Block and wait until condition is true. -+ * -+ * This macro blocks the protothread until the specified condition is -+ * true. -+ * -+ * \param pt A pointer to the protothread control structure. -+ * \param condition The condition. -+ * -+ * \hideinitializer -+ */ -+#define PT_WAIT_UNTIL(pt, condition) \ -+ do { \ -+ LC_SET((pt)->lc); \ -+ if(!(condition)) { \ -+ return PT_WAITING; \ -+ } \ -+ } while(0) -+ -+/** -+ * Block and wait while condition is true. -+ * -+ * This function blocks and waits while condition is true. See -+ * PT_WAIT_UNTIL(). -+ * -+ * \param pt A pointer to the protothread control structure. -+ * \param cond The condition. -+ * -+ * \hideinitializer -+ */ -+#define PT_WAIT_WHILE(pt, cond) PT_WAIT_UNTIL((pt), !(cond)) -+ -+/** @} */ -+ -+/** -+ * \name Hierarchical protothreads -+ * @{ -+ */ -+ -+/** -+ * Block and wait until a child protothread completes. -+ * -+ * This macro schedules a child protothread. The current protothread -+ * will block until the child protothread completes. -+ * -+ * \note The child protothread must be manually initialized with the -+ * PT_INIT() function before this function is used. -+ * -+ * \param pt A pointer to the protothread control structure. -+ * \param thread The child protothread with arguments -+ * -+ * \sa PT_SPAWN() -+ * -+ * \hideinitializer -+ */ -+#define PT_WAIT_THREAD(pt, thread) PT_WAIT_WHILE((pt), PT_SCHEDULE(thread)) -+ -+/** -+ * Spawn a child protothread and wait until it exits. -+ * -+ * This macro spawns a child protothread and waits until it exits. The -+ * macro can only be used within a protothread. -+ * -+ * \param pt A pointer to the protothread control structure. -+ * \param child A pointer to the child protothread's control structure. -+ * \param thread The child protothread with arguments -+ * -+ * \hideinitializer -+ */ -+#define PT_SPAWN(pt, child, thread) \ -+ do { \ -+ PT_INIT((child)); \ -+ PT_WAIT_THREAD((pt), (thread)); \ -+ } while(0) -+ -+/** @} */ -+ -+/** -+ * \name Exiting and restarting -+ * @{ -+ */ -+ -+/** -+ * Restart the protothread. -+ * -+ * This macro will block and cause the running protothread to restart -+ * its execution at the place of the PT_BEGIN() call. -+ * -+ * \param pt A pointer to the protothread control structure. -+ * -+ * \hideinitializer -+ */ -+#define PT_RESTART(pt) \ -+ do { \ -+ PT_INIT(pt); \ -+ return PT_WAITING; \ -+ } while(0) -+ -+/** -+ * Exit the protothread. -+ * -+ * This macro causes the protothread to exit. If the protothread was -+ * spawned by another protothread, the parent protothread will become -+ * unblocked and can continue to run. -+ * -+ * \param pt A pointer to the protothread control structure. -+ * -+ * \hideinitializer -+ */ -+#define PT_EXIT(pt) \ -+ do { \ -+ PT_INIT(pt); \ -+ return PT_EXITED; \ -+ } while(0) -+ -+/** @} */ -+ -+/** -+ * \name Calling a protothread -+ * @{ -+ */ -+ -+/** -+ * Schedule a protothread. -+ * -+ * This function shedules a protothread. The return value of the -+ * function is non-zero if the protothread is running or zero if the -+ * protothread has exited. -+ * -+ * \param f The call to the C function implementing the protothread to -+ * be scheduled -+ * -+ * \hideinitializer -+ */ -+#define PT_SCHEDULE(f) ((f) == PT_WAITING) -+ -+/** @} */ -+ -+/** -+ * \name Yielding from a protothread -+ * @{ -+ */ -+ -+/** -+ * Yield from the current protothread. -+ * -+ * This function will yield the protothread, thereby allowing other -+ * processing to take place in the system. -+ * -+ * \param pt A pointer to the protothread control structure. -+ * -+ * \hideinitializer -+ */ -+#define PT_YIELD(pt) \ -+ do { \ -+ PT_YIELD_FLAG = 0; \ -+ LC_SET((pt)->lc); \ -+ if(PT_YIELD_FLAG == 0) { \ -+ return PT_YIELDED; \ -+ } \ -+ } while(0) -+ -+/** -+ * \brief Yield from the protothread until a condition occurs. -+ * \param pt A pointer to the protothread control structure. -+ * \param cond The condition. -+ * -+ * This function will yield the protothread, until the -+ * specified condition evaluates to true. -+ * -+ * -+ * \hideinitializer -+ */ -+#define PT_YIELD_UNTIL(pt, cond) \ -+ do { \ -+ PT_YIELD_FLAG = 0; \ -+ LC_SET((pt)->lc); \ -+ if((PT_YIELD_FLAG == 0) || !(cond)) { \ -+ return PT_YIELDED; \ -+ } \ -+ } while(0) -+ -+/** @} */ -+ -+#endif /* __PT_H__ */ -+ -+/** @} */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/timer.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/timer.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/timer.c 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/timer.c 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,128 @@ -+/** -+ * \addtogroup timer -+ * @{ -+ */ -+ -+/** -+ * \file -+ * Timer library implementation. -+ * \author -+ * Adam Dunkels -+ */ -+ -+/* -+ * Copyright (c) 2004, Swedish Institute of Computer Science. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. Neither the name of the Institute nor the names of its contributors -+ * may be used to endorse or promote products derived from this software -+ * without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE -+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ * This file is part of the uIP TCP/IP stack -+ * -+ * Author: Adam Dunkels -+ * -+ * $Id: timer.c,v 1.2 2006/06/12 08:00:30 adam Exp $ -+ */ -+ -+#include "clock.h" -+#include "timer.h" -+ -+/*---------------------------------------------------------------------------*/ -+/** -+ * Set a timer. -+ * -+ * This function is used to set a timer for a time sometime in the -+ * future. The function timer_expired() will evaluate to true after -+ * the timer has expired. -+ * -+ * \param t A pointer to the timer -+ * \param interval The interval before the timer expires. -+ * -+ */ -+void timer_set(struct timer *t, clock_time_t interval) -+{ -+ t->interval = interval; -+ t->start = clock_time(); -+} -+ -+/*---------------------------------------------------------------------------*/ -+/** -+ * Reset the timer with the same interval. -+ * -+ * This function resets the timer with the same interval that was -+ * given to the timer_set() function. The start point of the interval -+ * is the exact time that the timer last expired. Therefore, this -+ * function will cause the timer to be stable over time, unlike the -+ * timer_rester() function. -+ * -+ * \param t A pointer to the timer. -+ * -+ * \sa timer_restart() -+ */ -+void timer_reset(struct timer *t) -+{ -+ t->start += t->interval; -+} -+ -+/*---------------------------------------------------------------------------*/ -+/** -+ * Restart the timer from the current point in time -+ * -+ * This function restarts a timer with the same interval that was -+ * given to the timer_set() function. The timer will start at the -+ * current time. -+ * -+ * \note A periodic timer will drift if this function is used to reset -+ * it. For preioric timers, use the timer_reset() function instead. -+ * -+ * \param t A pointer to the timer. -+ * -+ * \sa timer_reset() -+ */ -+void timer_restart(struct timer *t) -+{ -+ t->start = clock_time(); -+} -+ -+/*---------------------------------------------------------------------------*/ -+/** -+ * Check if a timer has expired. -+ * -+ * This function tests if a timer has expired and returns true or -+ * false depending on its status. -+ * -+ * \param t A pointer to the timer -+ * -+ * \return Non-zero if the timer has expired, zero otherwise. -+ * -+ */ -+int timer_expired(struct timer *t) -+{ -+ return (clock_time_t) (clock_time() - t->start) >= -+ (clock_time_t) t->interval; -+} -+ -+/*---------------------------------------------------------------------------*/ -+ -+/** @} */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/timer.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/timer.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/timer.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/timer.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,85 @@ -+/** -+ * \defgroup timer Timer library -+ * -+ * The timer library provides functions for setting, resetting and -+ * restarting timers, and for checking if a timer has expired. An -+ * application must "manually" check if its timers have expired; this -+ * is not done automatically. -+ * -+ * A timer is declared as a \c struct \c timer and all access to the -+ * timer is made by a pointer to the declared timer. -+ * -+ * \note The timer library uses the \ref clock "Clock library" to -+ * measure time. Intervals should be specified in the format used by -+ * the clock library. -+ * -+ * @{ -+ */ -+ -+/** -+ * \file -+ * Timer library header file. -+ * \author -+ * Adam Dunkels -+ */ -+ -+/* -+ * Copyright (c) 2004, Swedish Institute of Computer Science. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. Neither the name of the Institute nor the names of its contributors -+ * may be used to endorse or promote products derived from this software -+ * without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE -+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ * This file is part of the uIP TCP/IP stack -+ * -+ * Author: Adam Dunkels -+ * -+ * $Id: timer.h,v 1.3 2006/06/11 21:46:39 adam Exp $ -+ */ -+#ifndef __TIMER_H__ -+#define __TIMER_H__ -+ -+#include "clock.h" -+ -+/** -+ * A timer. -+ * -+ * This structure is used for declaring a timer. The timer must be set -+ * with timer_set() before it can be used. -+ * -+ * \hideinitializer -+ */ -+struct timer { -+ clock_time_t start; -+ clock_time_t interval; -+}; -+ -+void timer_set(struct timer *t, clock_time_t interval); -+void timer_reset(struct timer *t); -+void timer_restart(struct timer *t); -+int timer_expired(struct timer *t); -+ -+#endif /* __TIMER_H__ */ -+ -+/** @} */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/uip_arch.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/uip_arch.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/uip_arch.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/uip_arch.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,138 @@ -+/** -+ * \addtogroup uip -+ * {@ -+ */ -+ -+/** -+ * \defgroup uiparch Architecture specific uIP functions -+ * @{ -+ * -+ * The functions in the architecture specific module implement the IP -+ * check sum and 32-bit additions. -+ * -+ * The IP checksum calculation is the most computationally expensive -+ * operation in the TCP/IP stack and it therefore pays off to -+ * implement this in efficient assembler. The purpose of the uip-arch -+ * module is to let the checksum functions to be implemented in -+ * architecture specific assembler. -+ * -+ */ -+ -+/** -+ * \file -+ * Declarations of architecture specific functions. -+ * \author Adam Dunkels -+ */ -+ -+/* -+ * Copyright (c) 2001, Adam Dunkels. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * This file is part of the uIP TCP/IP stack. -+ * -+ * $Id: uip_arch.h,v 1.2 2006/06/07 09:15:19 adam Exp $ -+ * -+ */ -+ -+#ifndef __UIP_ARCH_H__ -+#define __UIP_ARCH_H__ -+ -+#include "uip.h" -+ -+/** -+ * Carry out a 32-bit addition. -+ * -+ * Because not all architectures for which uIP is intended has native -+ * 32-bit arithmetic, uIP uses an external C function for doing the -+ * required 32-bit additions in the TCP protocol processing. This -+ * function should add the two arguments and place the result in the -+ * global variable uip_acc32. -+ * -+ * \note The 32-bit integer pointed to by the op32 parameter and the -+ * result in the uip_acc32 variable are in network byte order (big -+ * endian). -+ * -+ * \param op32 A pointer to a 4-byte array representing a 32-bit -+ * integer in network byte order (big endian). -+ * -+ * \param op16 A 16-bit integer in host byte order. -+ */ -+void uip_add32(u8_t * op32, u16_t op16, u8_t * uip_add32); -+ -+/** -+ * Calculate the Internet checksum over a buffer. -+ * -+ * The Internet checksum is the one's complement of the one's -+ * complement sum of all 16-bit words in the buffer. -+ * -+ * See RFC1071. -+ * -+ * \note This function is not called in the current version of uIP, -+ * but future versions might make use of it. -+ * -+ * \param buf A pointer to the buffer over which the checksum is to be -+ * computed. -+ * -+ * \param len The length of the buffer over which the checksum is to -+ * be computed. -+ * -+ * \return The Internet checksum of the buffer. -+ */ -+u16_t uip_chksum(u16_t * buf, u16_t len); -+ -+/** -+ * Calculate the IP header checksum of the packet header in uip_buf. -+ * -+ * The IP header checksum is the Internet checksum of the 20 bytes of -+ * the IP header. -+ * -+ * \return The IP header checksum of the IP header in the uip_buf -+ * buffer. -+ */ -+u16_t uip_ipchksum(struct uip_stack *ustack); -+ -+/** -+ * Calculate the TCP checksum of the packet in uip_buf and uip_appdata. -+ * -+ * The TCP checksum is the Internet checksum of data contents of the -+ * TCP segment, and a pseudo-header as defined in RFC793. -+ * -+ * \note The uip_appdata pointer that points to the packet data may -+ * point anywhere in memory, so it is not possible to simply calculate -+ * the Internet checksum of the contents of the uip_buf buffer. -+ * -+ * \return The TCP checksum of the TCP segment in uip_buf and pointed -+ * to by uip_appdata. -+ */ -+u16_t uip_tcpchksum(struct uip_stack *ustack); -+ -+u16_t uip_udpchksum(struct uip_stack *ustack); -+ -+/** @} */ -+/** @} */ -+ -+#endif /* __UIP_ARCH_H__ */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/uip_arp.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/uip_arp.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/uip_arp.c 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/uip_arp.c 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,485 @@ -+#include -+//#include -+ -+#include -+#include -+ -+#include "logger.h" -+#include "packet.h" -+ -+/** -+ * \addtogroup uip -+ * @{ -+ */ -+ -+/** -+ * \defgroup uiparp uIP Address Resolution Protocol -+ * @{ -+ * -+ * The Address Resolution Protocol ARP is used for mapping between IP -+ * addresses and link level addresses such as the Ethernet MAC -+ * addresses. ARP uses broadcast queries to ask for the link level -+ * address of a known IP address and the host which is configured with -+ * the IP address for which the query was meant, will respond with its -+ * link level address. -+ * -+ * \note This ARP implementation only supports Ethernet. -+ */ -+ -+/** -+ * \file -+ * Implementation of the ARP Address Resolution Protocol. -+ * \author Adam Dunkels -+ * -+ */ -+ -+/* -+ * Copyright (c) 2001-2003, Adam Dunkels. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * This file is part of the uIP TCP/IP stack. -+ * -+ * $Id: uip_arp.c,v 1.8 2006/06/02 23:36:21 adam Exp $ -+ * -+ */ -+ -+#include "uip_arp.h" -+#include "uip_eth.h" -+ -+#include -+#include -+ -+static const struct uip_eth_addr broadcast_ethaddr = -+ { {0xff, 0xff, 0xff, 0xff, 0xff, 0xff} }; -+static const u16_t broadcast_ipaddr[2] = { 0xffff, 0xffff }; -+ -+pthread_mutex_t arp_table_mutex = PTHREAD_MUTEX_INITIALIZER; -+static struct arp_entry arp_table[UIP_ARPTAB_SIZE]; -+ -+static u8_t arptime; -+ -+/** -+ * Initialize the ARP module. -+ * -+ */ -+/*-----------------------------------------------------------------------------------*/ -+void uip_arp_init(void) -+{ -+ u8_t i; -+ for (i = 0; i < UIP_ARPTAB_SIZE; ++i) { -+ memset(&arp_table[i], 0, sizeof(arp_table[i])); -+ } -+ -+ pthread_mutex_init(&arp_table_mutex, NULL); -+} -+ -+/*-----------------------------------------------------------------------------------*/ -+/** -+ * Periodic ARP processing function. -+ * -+ * This function performs periodic timer processing in the ARP module -+ * and should be called at regular intervals. The recommended interval -+ * is 10 seconds between the calls. -+ * -+ */ -+/*-----------------------------------------------------------------------------------*/ -+void uip_arp_timer(void) -+{ -+ u8_t i; -+ struct arp_entry *tabptr; -+ -+ ++arptime; -+ for (i = 0; i < UIP_ARPTAB_SIZE; ++i) { -+ tabptr = &arp_table[i]; -+ if ((tabptr->ipaddr[0] | tabptr->ipaddr[1]) != 0 && -+ arptime - tabptr->time >= UIP_ARP_MAXAGE) { -+ memset(tabptr->ipaddr, 0, 4); -+ } -+ } -+ -+} -+ -+/*-----------------------------------------------------------------------------------*/ -+static void uip_arp_update(u16_t * ipaddr, struct uip_eth_addr *ethaddr) -+{ -+ u8_t i; -+ struct arp_entry *tabptr; -+ -+ pthread_mutex_lock(&arp_table_mutex); -+ /* Walk through the ARP mapping table and try to find an entry to -+ update. If none is found, the IP -> MAC address mapping is -+ inserted in the ARP table. */ -+ for (i = 0; i < UIP_ARPTAB_SIZE; ++i) { -+ -+ tabptr = &arp_table[i]; -+ /* Only check those entries that are actually in use. */ -+ if (tabptr->ipaddr[0] != 0 && tabptr->ipaddr[1] != 0) { -+ -+ /* Check if the source IP address of the incoming packet -+ matches the IP address in this ARP table entry. */ -+ if (ipaddr[0] == tabptr->ipaddr[0] && -+ ipaddr[1] == tabptr->ipaddr[1]) { -+ -+ tabptr->time = arptime; -+ -+ pthread_mutex_unlock(&arp_table_mutex); -+ return; -+ } -+ } -+ } -+ -+ /* If we get here, no existing ARP table entry was found, so we -+ create one. */ -+ -+ /* First, we try to find an unused entry in the ARP table. */ -+ for (i = 0; i < UIP_ARPTAB_SIZE; ++i) { -+ tabptr = &arp_table[i]; -+ if (tabptr->ipaddr[0] == 0 && tabptr->ipaddr[1] == 0) { -+ break; -+ } -+ } -+ -+ /* If no unused entry is found, we try to find the oldest entry and -+ throw it away. */ -+ if (i == UIP_ARPTAB_SIZE) { -+ u8_t c; -+ u8_t tmpage = 0; -+ c = 0; -+ for (i = 0; i < UIP_ARPTAB_SIZE; ++i) { -+ tabptr = &arp_table[i]; -+ if (arptime - tabptr->time > tmpage) { -+ tmpage = arptime - tabptr->time; -+ c = i; -+ } -+ } -+ i = c; -+ tabptr = &arp_table[i]; -+ } -+ -+ /* Now, i is the ARP table entry which we will fill with the new -+ information. */ -+ memcpy(tabptr->ipaddr, ipaddr, 4); -+ memcpy(tabptr->ethaddr.addr, ethaddr->addr, 6); -+ tabptr->time = arptime; -+ -+ pthread_mutex_unlock(&arp_table_mutex); -+} -+ -+/** -+ * ARP processing for incoming ARP packets. -+ * -+ * This function should be called by the device driver when an ARP -+ * packet has been received. The function will act differently -+ * depending on the ARP packet type: if it is a reply for a request -+ * that we previously sent out, the ARP cache will be filled in with -+ * the values from the ARP reply. If the incoming ARP packet is an ARP -+ * request for our IP address, an ARP reply packet is created and put -+ * into the uip_buf[] buffer. -+ * -+ * When the function returns, the value of the global variable uip_len -+ * indicates whether the device driver should send out a packet or -+ * not. If uip_len is zero, no packet should be sent. If uip_len is -+ * non-zero, it contains the length of the outbound packet that is -+ * present in the uip_buf[] buffer. -+ * -+ * This function expects an ARP packet with a prepended Ethernet -+ * header in the uip_buf[] buffer, and the length of the packet in the -+ * global variable uip_len. -+ */ -+void uip_arp_ipin(struct uip_stack *ustack, packet_t * pkt) -+{ -+ struct ip_hdr *ip; -+ struct uip_eth_hdr *eth; -+ -+ eth = (struct uip_eth_hdr *)pkt->data_link_layer; -+ ip = (struct ip_hdr *)pkt->network_layer; -+ -+ if (uip_ip4addr_cmp(ip->destipaddr, ustack->hostaddr)) { -+ /* First, we register the one who made the request in our ARP -+ table, since it is likely that we will do more communication -+ with this host in the future. */ -+ uip_arp_update(ip->srcipaddr, ð->src); -+ } -+} -+ -+void -+uip_arp_arpin(nic_interface_t * nic_iface, -+ struct uip_stack *ustack, packet_t * pkt) -+{ -+ struct arp_hdr *arp; -+ struct uip_eth_hdr *eth; -+ -+ if (pkt->buf_size < sizeof(struct arp_hdr)) { -+ pkt->buf_size = 0; -+ return; -+ } -+ pkt->buf_size = 0; -+ -+ eth = (struct uip_eth_hdr *)pkt->data_link_layer; -+ arp = (struct arp_hdr *)pkt->network_layer; -+ -+ switch (arp->opcode) { -+ case const_htons(ARP_REQUEST): -+ /* ARP request. If it asked for our address, we send out a -+ reply. */ -+ if (uip_ip4addr_cmp(arp->dipaddr, ustack->hostaddr)) { -+ /* First, we register the one who made the request in -+ our ARP table, since it is likely that we will do -+ more communication with this host in the future. */ -+ uip_arp_update(arp->sipaddr, &arp->shwaddr); -+ -+ /* The reply opcode is 2. */ -+ arp->opcode = htons(2); -+ -+ memcpy(arp->dhwaddr.addr, arp->shwaddr.addr, 6); -+ memcpy(arp->shwaddr.addr, ustack->uip_ethaddr.addr, 6); -+ memcpy(eth->src.addr, ustack->uip_ethaddr.addr, 6); -+ memcpy(eth->dest.addr, arp->dhwaddr.addr, 6); -+ -+ arp->dipaddr[0] = arp->sipaddr[0]; -+ arp->dipaddr[1] = arp->sipaddr[1]; -+ arp->sipaddr[0] = ustack->hostaddr[0]; -+ arp->sipaddr[1] = ustack->hostaddr[1]; -+ -+ if (nic_iface->vlan_id == 0) -+ eth->type = htons(UIP_ETHTYPE_ARP); -+ else -+ eth->type = htons(UIP_ETHTYPE_8021Q); -+ pkt->buf_size = sizeof(*arp) + sizeof(*eth); -+ } -+ break; -+ case const_htons(ARP_REPLY): -+ uip_arp_update(arp->sipaddr, &arp->shwaddr); -+ break; -+ default: -+ LOG_WARN("Unknown ARP opcode: %d", ntohs(arp->opcode)); -+ break; -+ } -+ -+ return; -+} -+ -+/** -+ * Prepend Ethernet header to an outbound IP packet and see if we need -+ * to send out an ARP request. -+ * -+ * This function should be called before sending out an IP packet. The -+ * function checks the destination IP address of the IP packet to see -+ * what Ethernet MAC address that should be used as a destination MAC -+ * address on the Ethernet. -+ * -+ * If the destination IP address is in the local network (determined -+ * by logical ANDing of netmask and our IP address), the function -+ * checks the ARP cache to see if an entry for the destination IP -+ * address is found. If so, an Ethernet header is prepended and the -+ * function returns. If no ARP cache entry is found for the -+ * destination IP address, the packet in the uip_buf[] is replaced by -+ * an ARP request packet for the IP address. The IP packet is dropped -+ * and it is assumed that they higher level protocols (e.g., TCP) -+ * eventually will retransmit the dropped packet. -+ * -+ * If the destination IP address is not on the local network, the IP -+ * address of the default router is used instead. -+ * -+ * When the function returns, a packet is present in the uip_buf[] -+ * buffer, and the length of the packet is in the global variable -+ * uip_len. -+ */ -+ -+dest_ipv4_addr_t -+uip_determine_dest_ipv4_addr(struct uip_stack * ustack, u16_t * ipaddr) -+{ -+ struct arp_hdr *arp; -+ struct uip_eth_hdr *eth; -+ struct ip_hdr *ip_buf; -+ -+ arp = (struct arp_hdr *)ustack->network_layer; -+ eth = (struct uip_eth_hdr *)ustack->data_link_layer; -+ ip_buf = (struct ip_hdr *)ustack->network_layer; -+ -+ /* Find the destination IP address in the ARP table and construct -+ the Ethernet header. If the destination IP addres isn't on the -+ local network, we use the default router's IP address instead. -+ -+ If not ARP table entry is found, we overwrite the original IP -+ packet with an ARP request for the IP address. */ -+ -+ /* First check if destination is a local broadcast. */ -+ if (uip_ip4addr_cmp(ip_buf->destipaddr, broadcast_ipaddr)) { -+ memcpy(ð->dest, broadcast_ethaddr.addr, 6); -+ -+ return LOCAL_BROADCAST; -+ } else { -+ /* Check if the destination address is on the local network. */ -+ if (!uip_ip4addr_maskcmp(ip_buf->destipaddr, -+ ustack->hostaddr, ustack->netmask)) { -+ /* Destination address was not on the local network, -+ so we need to use the default router's IP address -+ instead of the destination address when determining -+ the MAC address. */ -+ uip_ip4addr_copy(ipaddr, ustack->default_route_addr); -+ } else { -+ /* Else, we use the destination IP address. */ -+ uip_ip4addr_copy(ipaddr, ip_buf->destipaddr); -+ } -+ -+ return NONLOCAL_BROADCAST; -+ } -+} -+ -+arp_out_t is_in_arp_table(u16_t * ipaddr, struct arp_entry ** tabptr) -+{ -+ u8_t i; -+ -+ pthread_mutex_lock(&arp_table_mutex); -+ -+ for (i = 0; i < UIP_ARPTAB_SIZE; ++i) { -+ if (uip_ip4addr_cmp(ipaddr, arp_table[i].ipaddr)) { -+ *tabptr = &arp_table[i]; -+ break; -+ } -+ } -+ -+ pthread_mutex_unlock(&arp_table_mutex); -+ -+ if (i == UIP_ARPTAB_SIZE) { -+ return NOT_IN_ARP_TABLE; -+ } else { -+ return IS_IN_ARP_TABLE; -+ } -+} -+ -+void uip_build_arp_request(struct uip_stack *ustack, u16_t * ipaddr) -+{ -+ struct arp_hdr *arp; -+ struct uip_eth_hdr *eth; -+ -+ arp = (struct arp_hdr *)ustack->network_layer; -+ eth = (struct uip_eth_hdr *)ustack->data_link_layer; -+ -+ /* The destination address was not in our ARP table, so we -+ overwrite the IP packet with an ARP request. */ -+ -+ memset(eth->dest.addr, 0xff, 6); -+ memset(arp->dhwaddr.addr, 0x00, 6); -+ memcpy(eth->src.addr, ustack->uip_ethaddr.addr, 6); -+ memcpy(arp->shwaddr.addr, ustack->uip_ethaddr.addr, 6); -+ -+ uip_ip4addr_copy(arp->dipaddr, ipaddr); -+ uip_ip4addr_copy(arp->sipaddr, ustack->hostaddr); -+ arp->opcode = const_htons(ARP_REQUEST); /* ARP request. */ -+ arp->hwtype = const_htons(ARP_HWTYPE_ETH); -+ arp->protocol = const_htons(UIP_ETHTYPE_IPv4); -+ arp->hwlen = 6; -+ arp->protolen = 4; -+ eth->type = const_htons(UIP_ETHTYPE_ARP); -+ -+ ustack->uip_appdata = &ustack->uip_buf[UIP_TCP_IPv4_HLEN + UIP_LLH_LEN]; -+ -+ ustack->uip_len = sizeof(*arp) + sizeof(*eth); -+} -+ -+void -+uip_build_eth_header(struct uip_stack *ustack, -+ u16_t * ipaddr, -+ struct arp_entry *tabptr, -+ struct packet *pkt, u16_t vlan_id) -+{ -+ struct uip_ipv4_hdr *ip_buf; -+ struct uip_eth_hdr *eth; -+ struct uip_vlan_eth_hdr *eth_vlan; -+ -+ ip_buf = (struct uip_ipv4_hdr *)ustack->network_layer; -+ eth = (struct uip_eth_hdr *)ustack->data_link_layer; -+ eth_vlan = (struct uip_vlan_eth_hdr *)ustack->data_link_layer; -+ -+ /* First check if destination is a local broadcast. */ -+ if (uip_ip4addr_cmp(ip_buf->destipaddr, broadcast_ipaddr)) { -+ memcpy(eth->dest.addr, broadcast_ethaddr.addr, 6); -+ } else { -+ /* Build an ethernet header. */ -+ memcpy(eth->dest.addr, tabptr->ethaddr.addr, 6); -+ } -+ memcpy(eth->src.addr, ustack->uip_ethaddr.addr, 6); -+ -+ if (vlan_id == 0) { -+ eth->type = htons(UIP_ETHTYPE_IPv4); -+ -+ ustack->uip_len += sizeof(struct uip_eth_hdr); -+ pkt->buf_size += sizeof(struct uip_eth_hdr); -+ } else { -+ eth_vlan->tpid = htons(UIP_ETHTYPE_8021Q); -+ eth_vlan->vid = htons(vlan_id); -+ eth_vlan->type = htons(UIP_ETHTYPE_IPv4); -+ -+ ustack->uip_len += sizeof(struct uip_vlan_eth_hdr); -+ pkt->buf_size += sizeof(struct uip_vlan_eth_hdr); -+ } -+} -+ -+static struct arp_entry *uip_get_arp_entry(int index) -+{ -+ return &arp_table[index]; -+} -+ -+int uip_lookup_arp_entry(uint32_t ip_addr, uint8_t * mac_addr) -+{ -+ int i; -+ int rc = -EINVAL; -+ -+ pthread_mutex_lock(&arp_table_mutex); -+ -+ for (i = 0; i < UIP_ARPTAB_SIZE; ++i) { -+ struct arp_entry *entry = uip_get_arp_entry(i); -+ -+ if (((entry->ipaddr[1] << 16) == (ip_addr & 0xffff0000)) && -+ ((entry->ipaddr[0]) == (ip_addr & 0x0000ffff))) { -+ struct in_addr addr; -+ char *addr_str; -+ -+ addr.s_addr = ip_addr; -+ addr_str = inet_ntoa(addr); -+ -+ memcpy(mac_addr, entry->ethaddr.addr, 6); -+ -+ LOG_INFO("Found %s at %02x:%02x:%02x:%02x:%02x:%02x", -+ addr_str, -+ mac_addr[0], mac_addr[1], mac_addr[2], -+ mac_addr[3], mac_addr[4], mac_addr[5]); -+ rc = 0; -+ break; -+ } -+ } -+ -+ pthread_mutex_unlock(&arp_table_mutex); -+ return rc; -+} -+ -+/*-----------------------------------------------------------------------------------*/ -+ -+/** @} */ -+/** @} */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/uip_arp.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/uip_arp.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/uip_arp.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/uip_arp.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,196 @@ -+/** -+ * \addtogroup uip -+ * @{ -+ */ -+ -+/** -+ * \addtogroup uiparp -+ * @{ -+ */ -+ -+/** -+ * \file -+ * Macros and definitions for the ARP module. -+ * \author Adam Dunkels -+ */ -+ -+/* -+ * Copyright (c) 2001-2003, Adam Dunkels. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * This file is part of the uIP TCP/IP stack. -+ * -+ * $Id: uip_arp.h,v 1.5 2006/06/11 21:46:39 adam Exp $ -+ * -+ */ -+ -+#ifndef __UIP_ARP_H__ -+#define __UIP_ARP_H__ -+ -+#include "packet.h" -+#include "uip.h" -+#include "uip_eth.h" -+ -+#define ARP_REQUEST 1 -+#define ARP_REPLY 2 -+ -+#define ARP_HWTYPE_ETH 1 -+ -+struct __attribute__ ((__packed__)) arp_hdr { -+ u16_t hwtype; -+ u16_t protocol; -+ u8_t hwlen; -+ u8_t protolen; -+ u16_t opcode; -+ struct uip_eth_addr shwaddr; -+ u16_t sipaddr[2]; -+ struct uip_eth_addr dhwaddr; -+ u16_t dipaddr[2]; -+}; -+ -+struct __attribute__ ((__packed__)) ip_hdr { -+ /* IP header. */ -+ u8_t vhl, tos, len[2], ipid[2], ipoffset[2], ttl, proto; -+ u16_t ipchksum; -+ u16_t srcipaddr[2], destipaddr[2]; -+}; -+ -+struct __attribute__ ((__packed__)) ethip_hdr { -+ struct uip_eth_hdr ethhdr; -+ /* IP header. */ -+ u8_t vhl, tos, len[2], ipid[2], ipoffset[2], ttl, proto; -+ u16_t ipchksum; -+ u16_t srcipaddr[2], destipaddr[2]; -+}; -+ -+struct arp_entry { -+ u16_t ipaddr[2]; -+ struct uip_eth_addr ethaddr; -+ u8_t time; -+}; -+ -+/* The uip_arp_init() function must be called before any of the other -+ ARP functions. */ -+void uip_arp_init(void); -+ -+/* The uip_arp_ipin() function should be called whenever an IP packet -+ arrives from the Ethernet. This function refreshes the ARP table or -+ inserts a new mapping if none exists. The function assumes that an -+ IP packet with an Ethernet header is present in the uip_buf buffer -+ and that the length of the packet is in the uip_len variable. */ -+/*void uip_arp_ipin(void);*/ -+//#define uip_arp_ipin() -+void uip_arp_ipin(struct uip_stack *ustack, struct packet *pkt); -+ -+/* The uip_arp_arpin() should be called when an ARP packet is received -+ by the Ethernet driver. This function also assumes that the -+ Ethernet frame is present in the uip_buf buffer. When the -+ uip_arp_arpin() function returns, the contents of the uip_buf -+ buffer should be sent out on the Ethernet if the uip_len variable -+ is > 0. */ -+void uip_arp_arpin(nic_interface_t * nic_iface, -+ struct uip_stack *ustack, struct packet *pkt); -+ -+typedef enum { -+ ARP_SENT = 1, -+ ETH_HEADER_APPEDEND = 2, -+} arp_out_t; -+ -+typedef enum { -+ LOCAL_BROADCAST = 1, -+ NONLOCAL_BROADCAST = 2, -+} dest_ipv4_addr_t; -+ -+typedef enum { -+ IS_IN_ARP_TABLE = 1, -+ NOT_IN_ARP_TABLE = 2, -+} arp_table_query_t; -+ -+dest_ipv4_addr_t -+uip_determine_dest_ipv4_addr(struct uip_stack *ustack, u16_t * ipaddr); -+arp_out_t is_in_arp_table(u16_t * ipaddr, struct arp_entry **tabptr); -+ -+void uip_build_arp_request(struct uip_stack *ustack, u16_t * ipaddr); -+ -+void -+uip_build_eth_header(struct uip_stack *ustack, -+ u16_t * ipaddr, -+ struct arp_entry *tabptr, -+ struct packet *pkt, u16_t vlan_id); -+ -+/* The uip_arp_out() function should be called when an IP packet -+ should be sent out on the Ethernet. This function creates an -+ Ethernet header before the IP header in the uip_buf buffer. The -+ Ethernet header will have the correct Ethernet MAC destination -+ address filled in if an ARP table entry for the destination IP -+ address (or the IP address of the default router) is present. If no -+ such table entry is found, the IP packet is overwritten with an ARP -+ request and we rely on TCP to retransmit the packet that was -+ overwritten. In any case, the uip_len variable holds the length of -+ the Ethernet frame that should be transmitted. */ -+arp_out_t uip_arp_out(struct uip_stack *ustack); -+ -+/* The uip_arp_timer() function should be called every ten seconds. It -+ is responsible for flushing old entries in the ARP table. */ -+void uip_arp_timer(void); -+ -+int uip_lookup_arp_entry(uint32_t ip_addr, uint8_t * mac_addr); -+ -+/** @} */ -+ -+/** -+ * \addtogroup uipconffunc -+ * @{ -+ */ -+ -+/** -+ * Specifiy the Ethernet MAC address. -+ * -+ * The ARP code needs to know the MAC address of the Ethernet card in -+ * order to be able to respond to ARP queries and to generate working -+ * Ethernet headers. -+ * -+ * \note This macro only specifies the Ethernet MAC address to the ARP -+ * code. It cannot be used to change the MAC address of the Ethernet -+ * card. -+ * -+ * \param eaddr A pointer to a struct uip_eth_addr containing the -+ * Ethernet MAC address of the Ethernet card. -+ * -+ * \hideinitializer -+ */ -+#define uip_setethaddr(eaddr) do {uip_ethaddr.addr[0] = eaddr.addr[0]; \ -+ uip_ethaddr.addr[1] = eaddr.addr[1];\ -+ uip_ethaddr.addr[2] = eaddr.addr[2];\ -+ uip_ethaddr.addr[3] = eaddr.addr[3];\ -+ uip_ethaddr.addr[4] = eaddr.addr[4];\ -+ uip_ethaddr.addr[5] = eaddr.addr[5];} while(0) -+ -+/** @} */ -+/** @} */ -+ -+#endif /* __UIP_ARP_H__ */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/uip.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/uip.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/uip.c 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/uip.c 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,2450 @@ -+#include -+#include -+#include -+#include -+#include -+#include "uip.h" -+#include "dhcpc.h" -+#include "ipv6_ndpc.h" -+#include "brcm_iscsi.h" -+ -+/** -+ * \defgroup uip The uIP TCP/IP stack -+ * @{ -+ * -+ * uIP is an implementation of the TCP/IP protocol stack intended for -+ * small 8-bit and 16-bit microcontrollers. -+ * -+ * uIP provides the necessary protocols for Internet communication, -+ * with a very small code footprint and RAM requirements - the uIP -+ * code size is on the order of a few kilobytes and RAM usage is on -+ * the order of a few hundred bytes. -+ */ -+ -+/** -+ * \file -+ * The uIP TCP/IP stack code. -+ * \author Adam Dunkels -+ */ -+ -+/* -+ * Copyright (c) 2001-2003, Adam Dunkels. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * This file is part of the uIP TCP/IP stack. -+ * -+ * $Id: uip.c,v 1.65 2006/06/11 21:46:39 adam Exp $ -+ * -+ */ -+ -+/* -+ * uIP is a small implementation of the IP, UDP and TCP protocols (as -+ * well as some basic ICMP stuff). The implementation couples the IP, -+ * UDP, TCP and the application layers very tightly. To keep the size -+ * of the compiled code down, this code frequently uses the goto -+ * statement. While it would be possible to break the uip_process() -+ * function into many smaller functions, this would increase the code -+ * size because of the overhead of parameter passing and the fact that -+ * the optimier would not be as efficient. -+ * -+ * The principle is that we have a small buffer, called the uip_buf, -+ * in which the device driver puts an incoming packet. The TCP/IP -+ * stack parses the headers in the packet, and calls the -+ * application. If the remote host has sent data to the application, -+ * this data is present in the uip_buf and the application read the -+ * data from there. It is up to the application to put this data into -+ * a byte stream if needed. The application will not be fed with data -+ * that is out of sequence. -+ * -+ * If the application whishes to send data to the peer, it should put -+ * its data into the uip_buf. The uip_appdata pointer points to the -+ * first available byte. The TCP/IP stack will calculate the -+ * checksums, and fill in the necessary header fields and finally send -+ * the packet back to the peer. -+*/ -+ -+#include "logger.h" -+ -+#include "uip.h" -+#include "uipopt.h" -+#include "uip_arch.h" -+#include "uip_eth.h" -+#include "uip-neighbor.h" -+ -+#include -+ -+/******************************************************************************* -+ * Constants -+ ******************************************************************************/ -+#define PFX "uip " -+ -+static const uip_ip6addr_t all_ones_addr6 = -+ { 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff }; -+static const uip_ip4addr_t all_ones_addr4 = { 0xffff, 0xffff }; -+ -+const uip_ip6addr_t all_zeroes_addr6 = -+ { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }; -+const uip_ip4addr_t all_zeroes_addr4 = { 0x0000, 0x0000 }; -+ -+const uint8_t mutlicast_ipv6_prefix[16] = -+ { 0xfc, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -+}; -+ -+const uint8_t link_local_addres_prefix[16] = -+ { 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, -+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -+}; -+const uint32_t link_local_address_prefix_length = 10; -+ -+/* Structures and definitions. */ -+#define TCP_FIN 0x01 -+#define TCP_SYN 0x02 -+#define TCP_RST 0x04 -+#define TCP_PSH 0x08 -+#define TCP_ACK 0x10 -+#define TCP_URG 0x20 -+#define TCP_CTL 0x3f -+ -+#define TCP_OPT_END 0 /* End of TCP options list */ -+#define TCP_OPT_NOOP 1 /* "No-operation" TCP option */ -+#define TCP_OPT_MSS 2 /* Maximum segment size TCP option */ -+ -+#define TCP_OPT_MSS_LEN 4 /* Length of TCP MSS option. */ -+ -+#define ICMP_ECHO_REPLY 0 -+#define ICMP_ECHO 8 -+ -+#define ICMP6_ECHO_REPLY 129 -+#define ICMP6_ECHO 128 -+#define ICMP6_NEIGHBOR_SOLICITATION 135 -+#define ICMP6_NEIGHBOR_ADVERTISEMENT 136 -+ -+#define ICMP6_FLAG_S (1 << 6) -+ -+#define ICMP6_OPTION_SOURCE_LINK_ADDRESS 1 -+#define ICMP6_OPTION_TARGET_LINK_ADDRESS 2 -+ -+/* Macros. */ -+#define FBUF ((struct uip_tcpip_hdr *)&uip_reassbuf[0]) -+#define UDPBUF(ustack) ((struct uip_udpip_hdr *)ustack->network_layer) -+ -+/****************************************************************************** -+ * Utility Functions -+ *****************************************************************************/ -+static int is_ipv6(struct uip_stack *ustack) -+{ -+ u16_t type; -+ -+ type = ETH_BUF(ustack->uip_buf)->type; -+ type = ntohs(type); -+ if (type == UIP_ETHTYPE_8021Q) -+ type = ntohs(VLAN_ETH_BUF(ustack->uip_buf)->type); -+ else -+ type = ntohs(ETH_BUF(ustack->uip_buf)->type); -+ -+ return (type == UIP_ETHTYPE_IPv6); -+} -+ -+int is_ipv6_link_local_address(uip_ip6addr_t * addr) -+{ -+ u8_t *test_adddr = (u8_t *) addr; -+ u8_t test_remainder; -+ -+ if (test_adddr[0] != link_local_addres_prefix[0]) -+ return 0; -+ -+ test_remainder = (test_adddr[1] & 0xC0) >> 6; -+ if (test_remainder != 2) -+ return 0; -+ -+ return 1; -+} -+ -+void uip_sethostaddr4(struct uip_stack *ustack, uip_ip4addr_t * addr) -+{ -+ pthread_mutex_lock(&ustack->lock); -+ uip_ip4addr_copy(ustack->hostaddr, (addr)); -+ pthread_mutex_unlock(&ustack->lock); -+} -+ -+void uip_setdraddr4(struct uip_stack *ustack, uip_ip4addr_t * addr) -+{ -+ pthread_mutex_lock(&ustack->lock); -+ uip_ip4addr_copy(ustack->default_route_addr, (addr)); -+ pthread_mutex_unlock(&ustack->lock); -+} -+ -+void uip_setnetmask4(struct uip_stack *ustack, uip_ip4addr_t * addr) -+{ -+ pthread_mutex_lock(&ustack->lock); -+ uip_ip4addr_copy(ustack->netmask, (addr)); -+ pthread_mutex_unlock(&ustack->lock); -+} -+ -+void uip_setethernetmac(struct uip_stack *ustack, uint8_t * mac) -+{ -+ pthread_mutex_lock(&ustack->lock); -+ memcpy(ustack->uip_ethaddr.addr, (mac), 6); -+ pthread_mutex_unlock(&ustack->lock); -+} -+ -+void set_uip_stack(struct uip_stack *ustack, -+ uip_ip4addr_t * ip, -+ uip_ip4addr_t * netmask, -+ uip_ip4addr_t * default_route, uint8_t * mac_addr) -+{ -+ uip_sethostaddr4(ustack, ip); -+ uip_setnetmask4(ustack, netmask); -+ uip_setdraddr4(ustack, default_route); -+ uip_setethernetmac(ustack, mac_addr); -+} -+ -+#if ! UIP_ARCH_ADD32 -+void uip_add32(u8_t * op32, u16_t op16, u8_t * uip_acc32) -+{ -+ uip_acc32[3] = op32[3] + (op16 & 0xff); -+ uip_acc32[2] = op32[2] + (op16 >> 8); -+ uip_acc32[1] = op32[1]; -+ uip_acc32[0] = op32[0]; -+ -+ if (uip_acc32[2] < (op16 >> 8)) { -+ ++uip_acc32[1]; -+ if (uip_acc32[1] == 0) { -+ ++uip_acc32[0]; -+ } -+ } -+ -+ if (uip_acc32[3] < (op16 & 0xff)) { -+ ++uip_acc32[2]; -+ if (uip_acc32[2] == 0) { -+ ++uip_acc32[1]; -+ if (uip_acc32[1] == 0) { -+ ++uip_acc32[0]; -+ } -+ } -+ } -+} -+ -+#endif /* UIP_ARCH_ADD32 */ -+ -+#if ! UIP_ARCH_CHKSUM -+/*---------------------------------------------------------------------------*/ -+static u16_t chksum(u16_t sum, const u8_t * data, u16_t len) -+{ -+ u16_t t; -+ const u8_t *dataptr; -+ const u8_t *last_byte; -+ -+ dataptr = data; -+ last_byte = data + len - 1; -+ -+ while (dataptr < last_byte) { /* At least two more bytes */ -+ t = (dataptr[0] << 8) + dataptr[1]; -+ sum += t; -+ if (sum < t) { -+ sum++; /* carry */ -+ } -+ dataptr += 2; -+ } -+ -+ if (dataptr == last_byte) { -+ t = (dataptr[0] << 8) + 0; -+ sum += t; -+ if (sum < t) { -+ sum++; /* carry */ -+ } -+ } -+ -+ /* Return sum in host byte order. */ -+ return sum; -+} -+ -+/*---------------------------------------------------------------------------*/ -+u16_t uip_chksum(u16_t * data, u16_t len) -+{ -+ return htons(chksum(0, (u8_t *) data, len)); -+} -+ -+/*---------------------------------------------------------------------------*/ -+#ifndef UIP_ARCH_IPCHKSUM -+u16_t uip_ipchksum(struct uip_stack * ustack) -+{ -+ u16_t sum; -+ u16_t uip_iph_len; -+ -+ if (is_ipv6(ustack)) -+ uip_iph_len = UIP_IPv6_H_LEN; -+ else -+ uip_iph_len = UIP_IPv4_H_LEN; -+ -+ sum = chksum(0, ustack->network_layer, uip_iph_len); -+ return (sum == 0) ? 0xffff : htons(sum); -+} -+#endif -+ -+/*---------------------------------------------------------------------------*/ -+static u16_t upper_layer_chksum_ipv4(struct uip_stack *ustack, u8_t proto) -+{ -+ u16_t upper_layer_len; -+ u16_t sum; -+ struct uip_tcp_ipv4_hdr *tcp_ipv4_hdr = NULL; -+ -+ tcp_ipv4_hdr = (struct uip_tcp_ipv4_hdr *)ustack->network_layer; -+ -+ upper_layer_len = (((u16_t) (tcp_ipv4_hdr->len[0]) << 8) + -+ tcp_ipv4_hdr->len[1]) - UIP_IPv4_H_LEN; -+ -+ /* First sum pseudoheader. */ -+ /* IP protocol and length fields. This addition cannot carry. */ -+ sum = upper_layer_len + proto; -+ -+ sum = -+ chksum(sum, (u8_t *) & tcp_ipv4_hdr->srcipaddr[0], -+ 2 * sizeof(uip_ip4addr_t)); -+ /* Sum TCP header and data. */ -+ sum = chksum(sum, ustack->network_layer + UIP_IPv4_H_LEN, -+ upper_layer_len); -+ -+ return (sum == 0) ? 0xffff : htons(sum); -+} -+ -+/*---------------------------------------------------------------------------*/ -+static uint16_t upper_layer_checksum_ipv6(uint8_t * data, uint8_t proto) -+{ -+ uint16_t upper_layer_len; -+ uint16_t sum; -+ struct ip6_hdr *ipv6_hdr; -+ uint8_t *upper_layer; -+ uint32_t val; -+ -+ ipv6_hdr = (struct ip6_hdr *)data; -+ -+ upper_layer_len = ntohs(ipv6_hdr->ip6_plen); -+ -+ /* First sum pseudoheader. */ -+ sum = 0; -+ sum = chksum(sum, (const u8_t *)ipv6_hdr->ip6_src.s6_addr, -+ sizeof(ipv6_hdr->ip6_src)); -+ sum = chksum(sum, (const u8_t *)ipv6_hdr->ip6_dst.s6_addr, -+ sizeof(ipv6_hdr->ip6_dst)); -+ -+ val = htons(upper_layer_len); -+ sum = chksum(sum, (u8_t *) & val, sizeof(val)); -+ -+ val = htons(proto); -+ sum = chksum(sum, (u8_t *) & val, sizeof(val)); -+ -+ upper_layer = (uint8_t *) (ipv6_hdr + 1); -+ sum = chksum(sum, upper_layer, upper_layer_len); -+ -+ return (sum == 0) ? 0xffff : htons(sum); -+} -+ -+/*---------------------------------------------------------------------------*/ -+ -+u16_t uip_icmp6chksum(struct uip_stack * ustack) -+{ -+ uint8_t *data = ustack->network_layer; -+ -+ return upper_layer_checksum_ipv6(data, UIP_PROTO_ICMP6); -+} -+ -+uint16_t icmpv6_checksum(uint8_t * data) -+{ -+ return upper_layer_checksum_ipv6(data, IPPROTO_ICMPV6); -+} -+ -+/*---------------------------------------------------------------------------*/ -+u16_t uip_tcpchksum(struct uip_stack * ustack) -+{ -+ return upper_layer_chksum_ipv4(ustack, UIP_PROTO_TCP); -+} -+ -+/*---------------------------------------------------------------------------*/ -+#if UIP_UDP_CHECKSUMS -+static u16_t uip_udpchksum_ipv4(struct uip_stack *ustack) -+{ -+ return upper_layer_chksum_ipv4(ustack, UIP_PROTO_UDP); -+} -+ -+static u16_t uip_udpchksum_ipv6(struct uip_stack *ustack) -+{ -+ uint8_t *data = ustack->network_layer; -+ -+ return upper_layer_checksum_ipv6(data, UIP_PROTO_UDP); -+} -+ -+u16_t uip_udpchksum(struct uip_stack * ustack) -+{ -+ if (is_ipv6(ustack)) -+ return uip_udpchksum_ipv6(ustack); -+ else -+ return uip_udpchksum_ipv4(ustack); -+} -+#endif /* UIP_UDP_CHECKSUMS */ -+#endif /* UIP_ARCH_CHKSUM */ -+/*---------------------------------------------------------------------------*/ -+void uip_init(struct uip_stack *ustack, uint8_t ipv6_enabled) -+{ -+ u8_t c; -+ -+ for (c = 0; c < UIP_LISTENPORTS; ++c) { -+ ustack->uip_listenports[c] = 0; -+ } -+ for (c = 0; c < UIP_CONNS; ++c) { -+ ustack->uip_conns[c].tcpstateflags = UIP_CLOSED; -+ } -+#if UIP_ACTIVE_OPEN -+ ustack->lastport = 1024; -+#endif /* UIP_ACTIVE_OPEN */ -+ -+#if UIP_UDP -+ for (c = 0; c < UIP_UDP_CONNS; ++c) { -+ ustack->uip_udp_conns[c].lport = 0; -+ } -+#endif /* UIP_UDP */ -+ -+ /* IPv4 initialization. */ -+#if UIP_FIXEDADDR == 0 -+ /* uip_hostaddr[0] = uip_hostaddr[1] = 0; */ -+#endif /* UIP_FIXEDADDR */ -+ -+ /* zero out the uIP statistics */ -+ memset(&ustack->stats, 0, sizeof(ustack->stats)); -+ -+ /* prepare the uIP lock */ -+ pthread_mutex_init(&ustack->lock, NULL); -+ -+ if (ipv6_enabled) { -+ ustack->enable_IPv6 = UIP_SUPPORT_IPv6_ENABLED; -+ } else -+ ustack->enable_IPv6 = UIP_SUPPORT_IPv6_DISABLED; -+ -+ ustack->dhcpc = NULL; -+ ustack->ndpc = NULL; -+} -+void uip_reset(struct uip_stack *ustack) -+{ -+ /* There was an associated DHCP object, this memory needs to be -+ * freed */ -+ if (ustack->dhcpc) -+ free(ustack->dhcpc); -+ -+ ndpc_exit(ustack->ndpc); -+ -+ memset(ustack, 0, sizeof(*ustack)); -+} -+ -+/*---------------------------------------------------------------------------*/ -+#if UIP_ACTIVE_OPEN -+struct uip_conn *uip_connect(struct uip_stack *ustack, uip_ip4addr_t * ripaddr, -+ u16_t rport) -+{ -+ u8_t c; -+ register struct uip_conn *conn, *cconn; -+ -+ /* Find an unused local port. */ -+again: -+ ++ustack->lastport; -+ -+ if (ustack->lastport >= 32000) { -+ ustack->lastport = 4096; -+ } -+ -+ /* Check if this port is already in use, and if so try to find -+ another one. */ -+ for (c = 0; c < UIP_CONNS; ++c) { -+ conn = &ustack->uip_conns[c]; -+ if (conn->tcpstateflags != UIP_CLOSED && -+ conn->lport == htons(ustack->lastport)) { -+ goto again; -+ } -+ } -+ -+ conn = 0; -+ for (c = 0; c < UIP_CONNS; ++c) { -+ cconn = &ustack->uip_conns[c]; -+ if (cconn->tcpstateflags == UIP_CLOSED) { -+ conn = cconn; -+ break; -+ } -+ if (cconn->tcpstateflags == UIP_TIME_WAIT) { -+ if (conn == 0 || cconn->timer > conn->timer) { -+ conn = cconn; -+ } -+ } -+ } -+ -+ if (conn == 0) { -+ return 0; -+ } -+ -+ conn->tcpstateflags = UIP_SYN_SENT; -+ -+ conn->snd_nxt[0] = ustack->iss[0]; -+ conn->snd_nxt[1] = ustack->iss[1]; -+ conn->snd_nxt[2] = ustack->iss[2]; -+ conn->snd_nxt[3] = ustack->iss[3]; -+ -+ conn->initialmss = conn->mss = UIP_TCP_MSS; -+ -+ conn->len = 1; /* TCP length of the SYN is one. */ -+ conn->nrtx = 0; -+ conn->timer = 1; /* Send the SYN next time around. */ -+ conn->rto = UIP_RTO; -+ conn->sa = 0; -+ conn->sv = 16; /* Initial value of the RTT variance. */ -+ conn->lport = htons(ustack->lastport); -+ conn->rport = rport; -+ uip_ip4addr_copy(&conn->ripaddr, ripaddr); -+ -+ return conn; -+} -+#endif /* UIP_ACTIVE_OPEN */ -+/*---------------------------------------------------------------------------*/ -+#if UIP_UDP -+struct uip_udp_conn *uip_udp_new(struct uip_stack *ustack, -+ uip_ip4addr_t * ripaddr, u16_t rport) -+{ -+ u8_t c; -+ register struct uip_udp_conn *conn; -+ -+ /* Find an unused local port. */ -+again: -+ ++ustack->lastport; -+ -+ if (ustack->lastport >= 32000) { -+ ustack->lastport = 4096; -+ } -+ -+ for (c = 0; c < UIP_UDP_CONNS; ++c) { -+ if (ustack->uip_udp_conns[c].lport == htons(ustack->lastport)) { -+ goto again; -+ } -+ } -+ -+ conn = 0; -+ for (c = 0; c < UIP_UDP_CONNS; ++c) { -+ if (ustack->uip_udp_conns[c].lport == 0) { -+ conn = &ustack->uip_udp_conns[c]; -+ break; -+ } -+ } -+ -+ if (conn == 0) { -+ return 0; -+ } -+ -+ conn->lport = htons(ustack->lastport); -+ conn->rport = rport; -+ if (ripaddr == NULL) { -+ memset(conn->ripaddr, 0, sizeof(uip_ip4addr_t)); -+ } else { -+ uip_ip4addr_copy(&conn->ripaddr, ripaddr); -+ } -+ conn->ttl = UIP_TTL; -+ -+ return conn; -+} -+#endif /* UIP_UDP */ -+/*---------------------------------------------------------------------------*/ -+void uip_unlisten(struct uip_stack *ustack, u16_t port) -+{ -+ u8_t c; -+ -+ for (c = 0; c < UIP_LISTENPORTS; ++c) { -+ if (ustack->uip_listenports[c] == port) { -+ ustack->uip_listenports[c] = 0; -+ return; -+ } -+ } -+} -+ -+/*---------------------------------------------------------------------------*/ -+void uip_listen(struct uip_stack *ustack, u16_t port) -+{ -+ u8_t c; -+ -+ for (c = 0; c < UIP_LISTENPORTS; ++c) { -+ if (ustack->uip_listenports[c] == 0) { -+ ustack->uip_listenports[c] = port; -+ return; -+ } -+ } -+} -+ -+/** -+ * Is new incoming data available? -+ * -+ * Will reduce to non-zero if there is new data for the application -+ * present at the uip_appdata pointer. The size of the data is -+ * avaliable through the uip_len variable. -+ * -+ * \hideinitializer -+ */ -+int uip_newdata(struct uip_stack *ustack) -+{ -+ return ustack->uip_flags & UIP_NEWDATA; -+} -+ -+/** -+ * Has previously sent data been acknowledged? -+ * -+ * Will reduce to non-zero if the previously sent data has been -+ * acknowledged by the remote host. This means that the application -+ * can send new data. -+ * -+ * \hideinitializer -+ */ -+#define uip_acked() (uip_flags & UIP_ACKDATA) -+ -+/** -+ * Has the connection just been connected? -+ * -+ * Reduces to non-zero if the current connection has been connected to -+ * a remote host. This will happen both if the connection has been -+ * actively opened (with uip_connect()) or passively opened (with -+ * uip_listen()). -+ * -+ * \hideinitializer -+ */ -+int uip_connected(struct uip_stack *ustack) -+{ -+ return ustack->uip_flags & UIP_CONNECTED; -+} -+ -+/** -+ * Has the connection been closed by the other end? -+ * -+ * Is non-zero if the connection has been closed by the remote -+ * host. The application may then do the necessary clean-ups. -+ * -+ * \hideinitializer -+ */ -+int uip_closed(struct uip_stack *ustack) -+{ -+ return ustack->uip_flags & UIP_CLOSE; -+} -+ -+/** -+ * Has the connection been aborted by the other end? -+ * -+ * Non-zero if the current connection has been aborted (reset) by the -+ * remote host. -+ * -+ * \hideinitializer -+ */ -+int uip_aborted(struct uip_stack *ustack) -+{ -+ return ustack->uip_flags & UIP_ABORT; -+} -+ -+/** -+ * Has the connection timed out? -+ * -+ * Non-zero if the current connection has been aborted due to too many -+ * retransmissions. -+ * -+ * \hideinitializer -+ */ -+int uip_timedout(struct uip_stack *ustack) -+{ -+ return ustack->uip_flags & UIP_TIMEDOUT; -+} -+ -+/** -+ * Do we need to retransmit previously data? -+ * -+ * Reduces to non-zero if the previously sent data has been lost in -+ * the network, and the application should retransmit it. The -+ * application should send the exact same data as it did the last -+ * time, using the uip_send() function. -+ * -+ * \hideinitializer -+ */ -+int uip_rexmit(struct uip_stack *ustack) -+{ -+ return ustack->uip_flags & UIP_REXMIT; -+} -+ -+/** -+ * Is the connection being polled by uIP? -+ * -+ * Is non-zero if the reason the application is invoked is that the -+ * current connection has been idle for a while and should be -+ * polled. -+ * -+ * The polling event can be used for sending data without having to -+ * wait for the remote host to send data. -+ * -+ * \hideinitializer -+ */ -+int uip_poll(struct uip_stack *ustack) -+{ -+ return ustack->uip_flags & UIP_POLL; -+} -+ -+int uip_initialmss(struct uip_stack *ustack) -+{ -+ return ustack->uip_conn->initialmss; -+} -+ -+int uip_mss(struct uip_stack *ustack) -+{ -+ return ustack->uip_conn->mss; -+} -+ -+/*---------------------------------------------------------------------------*/ -+/* XXX: IP fragment reassembly: not well-tested. */ -+ -+#if UIP_REASSEMBLY && !UIP_CONF_IPV6 -+#define UIP_REASS_BUFSIZE (UIP_BUFSIZE - UIP_LLH_LEN) -+static u8_t uip_reassbuf[UIP_REASS_BUFSIZE]; -+static u8_t uip_reassbitmap[UIP_REASS_BUFSIZE / (8 * 8)]; -+static const u8_t bitmap_bits[8] = { 0xff, 0x7f, 0x3f, 0x1f, -+ 0x0f, 0x07, 0x03, 0x01 -+}; -+static u16_t uip_reasslen; -+static u8_t uip_reassflags; -+#define UIP_REASS_FLAG_LASTFRAG 0x01 -+static u8_t uip_reasstmr; -+ -+#define IP_MF 0x20 -+ -+static u8_t uip_reass(void) -+{ -+ u16_t offset, len; -+ u16_t i; -+ -+ /* If ip_reasstmr is zero, no packet is present in the buffer, so we -+ write the IP header of the fragment into the reassembly -+ buffer. The timer is updated with the maximum age. */ -+ if (uip_reasstmr == 0) { -+ memcpy(uip_reassbuf, &BUF(ustack)->vhl, uip_iph_len); -+ uip_reasstmr = UIP_REASS_MAXAGE; -+ uip_reassflags = 0; -+ /* Clear the bitmap. */ -+ memset(uip_reassbitmap, 0, sizeof(uip_reassbitmap)); -+ } -+ -+ /* Check if the incoming fragment matches the one currently present -+ in the reasembly buffer. If so, we proceed with copying the -+ fragment into the buffer. */ -+ if (BUF(ustack)->srcipaddr[0] == FBUF(ustack)->srcipaddr[0] && -+ BUF(ustack)->srcipaddr[1] == FBUF(ustack)->srcipaddr[1] && -+ BUF(ustack)->destipaddr[0] == FBUF(ustack)->destipaddr[0] && -+ BUF(ustack)->destipaddr[1] == FBUF(ustack)->destipaddr[1] && -+ BUF(ustack)->ipid[0] == FBUF(ustack)->ipid[0] && -+ BUF(ustack)->ipid[1] == FBUF(ustack)->ipid[1]) { -+ -+ len = -+ (BUF(ustack)->len[0] << 8) + BUF(ustack)->len[1] - -+ (BUF(ustack)->vhl & 0x0f) * 4; -+ offset = -+ (((BUF(ustack)->ipoffset[0] & 0x3f) << 8) + -+ BUF(ustack)->ipoffset[1]) * 8; -+ -+ /* If the offset or the offset + fragment length overflows the -+ reassembly buffer, we discard the entire packet. */ -+ if (offset > UIP_REASS_BUFSIZE || -+ offset + len > UIP_REASS_BUFSIZE) { -+ uip_reasstmr = 0; -+ goto nullreturn; -+ } -+ -+ /* Copy the fragment into the reassembly buffer, at the right -+ offset. */ -+ memcpy(&uip_reassbuf[uip_iph_len + offset], -+ (char *)BUF + (int)((BUF(ustack)->vhl & 0x0f) * 4), len); -+ -+ /* Update the bitmap. */ -+ if (offset / (8 * 8) == (offset + len) / (8 * 8)) { -+ /* If the two endpoints are in the same byte, we only -+ update that byte. */ -+ -+ uip_reassbitmap[offset / (8 * 8)] |= -+ bitmap_bits[(offset / 8) & 7] & -+ ~bitmap_bits[((offset + len) / 8) & 7]; -+ } else { -+ /* If the two endpoints are in different bytes, we -+ update the bytes in the endpoints and fill the -+ stuff inbetween with 0xff. */ -+ uip_reassbitmap[offset / (8 * 8)] |= -+ bitmap_bits[(offset / 8) & 7]; -+ for (i = 1 + offset / (8 * 8); -+ i < (offset + len) / (8 * 8); ++i) { -+ uip_reassbitmap[i] = 0xff; -+ } -+ uip_reassbitmap[(offset + len) / (8 * 8)] |= -+ ~bitmap_bits[((offset + len) / 8) & 7]; -+ } -+ -+ /* If this fragment has the More Fragments flag set to zero, we -+ know that this is the last fragment, so we can calculate the -+ size of the entire packet. We also set the -+ IP_REASS_FLAG_LASTFRAG flag to indicate that we have received -+ the final fragment. */ -+ -+ if ((BUF(ustack)->ipoffset[0] & IP_MF) == 0) { -+ uip_reassflags |= UIP_REASS_FLAG_LASTFRAG; -+ uip_reasslen = offset + len; -+ } -+ -+ /* Finally, we check if we have a full packet in the buffer. -+ We do this by checking if we have the last fragment and if -+ all bits in the bitmap are set. */ -+ if (uip_reassflags & UIP_REASS_FLAG_LASTFRAG) { -+ /* Check all bytes up to and including all but the last -+ byte in the bitmap. */ -+ for (i = 0; i < uip_reasslen / (8 * 8) - 1; ++i) { -+ if (uip_reassbitmap[i] != 0xff) { -+ goto nullreturn; -+ } -+ } -+ /* Check the last byte in the bitmap. It should contain -+ just the right amount of bits. */ -+ if (uip_reassbitmap[uip_reasslen / (8 * 8)] != -+ (u8_t) ~ bitmap_bits[uip_reasslen / 8 & 7]) { -+ goto nullreturn; -+ } -+ -+ /* If we have come this far, we have a full packet in -+ the buffer, so we allocate a pbuf and copy the -+ packet into it. We also reset the timer. */ -+ uip_reasstmr = 0; -+ memcpy(BUF, FBUF, uip_reasslen); -+ -+ /* Pretend to be a "normal" (i.e., not fragmented) IP -+ packet from now on. */ -+ BUF(ustack)->ipoffset[0] = BUF(ustack)->ipoffset[1] = 0; -+ BUF(ustack)->len[0] = uip_reasslen >> 8; -+ BUF(ustack)->len[1] = uip_reasslen & 0xff; -+ BUF(ustack)->ipchksum = 0; -+ BUF(ustack)->ipchksum = ~(uip_ipchksum()); -+ -+ return uip_reasslen; -+ } -+ } -+ -+nullreturn: -+ return 0; -+} -+#endif /* UIP_REASSEMBLY */ -+/*---------------------------------------------------------------------------*/ -+static void uip_add_rcv_nxt(struct uip_stack *ustack, u16_t n) -+{ -+ u8_t uip_acc32[4]; -+ -+ uip_add32(ustack->uip_conn->rcv_nxt, n, uip_acc32); -+ ustack->uip_conn->rcv_nxt[0] = uip_acc32[0]; -+ ustack->uip_conn->rcv_nxt[1] = uip_acc32[1]; -+ ustack->uip_conn->rcv_nxt[2] = uip_acc32[2]; -+ ustack->uip_conn->rcv_nxt[3] = uip_acc32[3]; -+} -+ -+/*---------------------------------------------------------------------------*/ -+ -+/** @} */ -+ -+/** -+ * \defgroup uipdevfunc uIP device driver functions -+ * @{ -+ * -+ * These functions are used by a network device driver for interacting -+ * with uIP. -+ */ -+ -+/** -+ * Process an incoming packet. -+ * -+ * This function should be called when the device driver has received -+ * a packet from the network. The packet from the device driver must -+ * be present in the uip_buf buffer, and the length of the packet -+ * should be placed in the uip_len variable. -+ * -+ * When the function returns, there may be an outbound packet placed -+ * in the uip_buf packet buffer. If so, the uip_len variable is set to -+ * the length of the packet. If no packet is to be sent out, the -+ * uip_len variable is set to 0. -+ * -+ * The usual way of calling the function is presented by the source -+ * code below. -+ \code -+ uip_len = devicedriver_poll(); -+ if(uip_len > 0) { -+ uip_input(); -+ if(uip_len > 0) { -+ devicedriver_send(); -+ } -+ } -+ \endcode -+ * -+ * \note If you are writing a uIP device driver that needs ARP -+ * (Address Resolution Protocol), e.g., when running uIP over -+ * Ethernet, you will need to call the uIP ARP code before calling -+ * this function: -+ \code -+ #define BUF ((struct uip_eth_hdr *)&uip_buf[0]) -+ uip_len = ethernet_devicedrver_poll(); -+ if(uip_len > 0) { -+ if(BUF(ustack)->type == HTONS(UIP_ETHTYPE_IP)) { -+ uip_arp_ipin(); -+ uip_input(); -+ if(uip_len > 0) { -+ uip_arp_out(); -+ ethernet_devicedriver_send(); -+ } -+ } else if(BUF(ustack)->type == HTONS(UIP_ETHTYPE_ARP)) { -+ uip_arp_arpin(); -+ if(uip_len > 0) { -+ ethernet_devicedriver_send(); -+ } -+ } -+ \endcode -+ * -+ * \hideinitializer -+ */ -+void uip_input(struct uip_stack *ustack) -+{ -+ uip_process(ustack, UIP_DATA); -+} -+ -+/** -+ * Periodic processing for a connection identified by its number. -+ * -+ * This function does the necessary periodic processing (timers, -+ * polling) for a uIP TCP conneciton, and should be called when the -+ * periodic uIP timer goes off. It should be called for every -+ * connection, regardless of whether they are open of closed. -+ * -+ * When the function returns, it may have an outbound packet waiting -+ * for service in the uIP packet buffer, and if so the uip_len -+ * variable is set to a value larger than zero. The device driver -+ * should be called to send out the packet. -+ * -+ * The ususal way of calling the function is through a for() loop like -+ * this: -+ \code -+ for(i = 0; i < UIP_CONNS; ++i) { -+ uip_periodic(i); -+ if(uip_len > 0) { -+ devicedriver_send(); -+ } -+ } -+ \endcode -+ * -+ * \note If you are writing a uIP device driver that needs ARP -+ * (Address Resolution Protocol), e.g., when running uIP over -+ * Ethernet, you will need to call the uip_arp_out() function before -+ * calling the device driver: -+ \code -+ for(i = 0; i < UIP_CONNS; ++i) { -+ uip_periodic(i); -+ if(uip_len > 0) { -+ uip_arp_out(); -+ ethernet_devicedriver_send(); -+ } -+ } -+ \endcode -+ * -+ * \param conn The number of the connection which is to be periodically polled. -+ * -+ * \hideinitializer -+ */ -+void uip_periodic(struct uip_stack *ustack, int conn) -+{ -+ ustack->uip_conn = &ustack->uip_conns[conn]; -+ uip_process(ustack, UIP_TIMER); -+} -+ -+#if UIP_UDP -+/** -+ * Periodic processing for a UDP connection identified by its number. -+ * -+ * This function is essentially the same as uip_periodic(), but for -+ * UDP connections. It is called in a similar fashion as the -+ * uip_periodic() function: -+ \code -+ for(i = 0; i < UIP_UDP_CONNS; i++) { -+ uip_udp_periodic(i); -+ if(uip_len > 0) { -+ devicedriver_send(); -+ } -+ } -+ \endcode -+ * -+ * \note As for the uip_periodic() function, special care has to be -+ * taken when using uIP together with ARP and Ethernet: -+ \code -+ for(i = 0; i < UIP_UDP_CONNS; i++) { -+ uip_udp_periodic(i); -+ if(uip_len > 0) { -+ uip_arp_out(); -+ ethernet_devicedriver_send(); -+ } -+ } -+ \endcode -+ * -+ * \param conn The number of the UDP connection to be processed. -+ * -+ * \hideinitializer -+ */ -+void uip_udp_periodic(struct uip_stack *ustack, int conn) -+{ -+ ustack->uip_udp_conn = &ustack->uip_udp_conns[conn]; -+ uip_process(ustack, UIP_UDP_TIMER); -+} -+#endif -+ -+void uip_ndp_periodic(struct uip_stack *ustack) -+{ -+ uip_process(ustack, UIP_NDP_TIMER); -+} -+ -+void uip_process(struct uip_stack *ustack, u8_t flag) -+{ -+ u8_t c; -+ u16_t tmp16; -+ register struct uip_conn *uip_connr = ustack->uip_conn; -+ -+ u16_t uip_iph_len = 0; -+ u16_t uip_ip_udph_len = 0; -+ u16_t uip_ip_tcph_len = 0; -+ struct ip6_hdr *ipv6_hdr = NULL; -+ struct uip_tcp_ipv4_hdr *tcp_ipv4_hdr = NULL; -+ struct uip_tcp_hdr *tcp_hdr = NULL; -+ struct uip_icmpv4_hdr *icmpv4_hdr = NULL; -+ struct uip_icmpv6_hdr *icmpv6_hdr = NULL; -+ struct uip_udp_hdr *udp_hdr = NULL; -+ -+ /* Drop invalid packets */ -+ if (ustack->uip_buf == NULL) { -+ LOG_ERR(PFX "ustack->uip_buf == NULL."); -+ return; -+ } -+ -+ if (is_ipv6(ustack)) { -+ uint8_t *buf; -+ uip_iph_len = UIP_IPv6_H_LEN; -+ uip_ip_udph_len = UIP_IPv6_UDPH_LEN; -+ uip_ip_tcph_len = UIP_IPv6_TCPH_LEN; -+ -+ ipv6_hdr = (struct ip6_hdr *)ustack->network_layer; -+ -+ buf = ustack->network_layer; -+ buf += sizeof(struct uip_ipv6_hdr); -+ tcp_hdr = (struct uip_tcp_hdr *)buf; -+ -+ buf = ustack->network_layer; -+ buf += sizeof(struct uip_ipv6_hdr); -+ udp_hdr = (struct uip_udp_hdr *)buf; -+ -+ buf = ustack->network_layer; -+ buf += sizeof(struct uip_ipv6_hdr); -+ icmpv6_hdr = (struct uip_icmpv6_hdr *)buf; -+ } else { -+ uint8_t *buf; -+ -+ uip_iph_len = UIP_IPv4_H_LEN; -+ uip_ip_udph_len = UIP_IPv4_UDPH_LEN; -+ uip_ip_tcph_len = UIP_IPv4_TCPH_LEN; -+ -+ tcp_ipv4_hdr = (struct uip_tcp_ipv4_hdr *)ustack->network_layer; -+ -+ buf = ustack->network_layer; -+ buf += sizeof(struct uip_ipv4_hdr); -+ tcp_hdr = (struct uip_tcp_hdr *)buf; -+ -+ buf = ustack->network_layer; -+ buf += sizeof(struct uip_ipv4_hdr); -+ icmpv4_hdr = (struct uip_icmpv4_hdr *)buf; -+ -+ buf = ustack->network_layer; -+ buf += sizeof(struct uip_ipv4_hdr); -+ udp_hdr = (struct uip_udp_hdr *)buf; -+ } /* End of ipv6 */ -+ -+#if UIP_UDP -+ if (flag == UIP_UDP_SEND_CONN) { -+ goto udp_send; -+ } -+#endif /* UIP_UDP */ -+ ustack->uip_sappdata = ustack->uip_appdata = ustack->network_layer + -+ uip_ip_tcph_len; -+ -+ /* Check if we were invoked because of a poll request for a -+ particular connection. */ -+ if (flag == UIP_POLL_REQUEST) { -+ if ((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED -+ && !uip_outstanding(uip_connr)) { -+ ustack->uip_flags = UIP_POLL; -+ UIP_APPCALL(ustack); -+ goto appsend; -+ } -+ goto drop; -+ -+ /* Check if we were invoked because of the perodic timer -+ firing. */ -+ } else if (flag == UIP_TIMER) { -+#if UIP_REASSEMBLY -+ if (uip_reasstmr != 0) { -+ --uip_reasstmr; -+ } -+#endif /* UIP_REASSEMBLY */ -+ /* Increase the initial sequence number. */ -+ if (++ustack->iss[3] == 0) { -+ if (++ustack->iss[2] == 0) { -+ if (++ustack->iss[1] == 0) { -+ ++ustack->iss[0]; -+ } -+ } -+ } -+ -+ /* Reset the length variables. */ -+ ustack->uip_len = 0; -+ ustack->uip_slen = 0; -+ -+ /* Check if the connection is in a state in which we simply wait -+ for the connection to time out. If so, we increase the -+ connection's timer and remove the connection if it times -+ out. */ -+ if (uip_connr->tcpstateflags == UIP_TIME_WAIT || -+ uip_connr->tcpstateflags == UIP_FIN_WAIT_2) { -+ ++(uip_connr->timer); -+ if (uip_connr->timer == UIP_TIME_WAIT_TIMEOUT) { -+ uip_connr->tcpstateflags = UIP_CLOSED; -+ } -+ } else if (uip_connr->tcpstateflags != UIP_CLOSED) { -+ /* If the connection has outstanding data, we increase -+ the connection's timer and see if it has reached the -+ RTO value in which case we retransmit. */ -+ if (uip_outstanding(uip_connr)) { -+ if (uip_connr->timer-- == 0) { -+ if (uip_connr->nrtx == UIP_MAXRTX || -+ ((uip_connr->tcpstateflags == -+ UIP_SYN_SENT -+ || uip_connr->tcpstateflags == -+ UIP_SYN_RCVD) -+ && uip_connr->nrtx == -+ UIP_MAXSYNRTX)) { -+ uip_connr->tcpstateflags = -+ UIP_CLOSED; -+ -+ /* We call UIP_APPCALL() with -+ uip_flags set to UIP_TIMEDOUT -+ to inform the application -+ that the connection has timed -+ out. */ -+ ustack->uip_flags = -+ UIP_TIMEDOUT; -+ UIP_APPCALL(ustack); -+ -+ /* We also send a reset packet -+ to the remote host. */ -+ tcp_hdr->flags = -+ TCP_RST | TCP_ACK; -+ goto tcp_send_nodata; -+ } -+ -+ /* Exponential backoff. */ -+ uip_connr->timer = -+ UIP_RTO << (uip_connr->nrtx > -+ 4 ? 4 : uip_connr-> -+ nrtx); -+ ++(uip_connr->nrtx); -+ -+ /* Ok, so we need to retransmit. -+ We do this differently depending on -+ which state we are in. -+ In ESTABLISHED, we call upon the -+ application so that it may prepare -+ the data for the retransmit. -+ In SYN_RCVD, we resend the SYNACK -+ that we sent earlier and in LAST_ACK -+ we have to retransmit our FINACK. */ -+ ++ustack->stats.tcp.rexmit; -+ switch (uip_connr-> -+ tcpstateflags & UIP_TS_MASK) { -+ case UIP_SYN_RCVD: -+ /* In the SYN_RCVD state, we -+ should retransmit our SYNACK -+ */ -+ goto tcp_send_synack; -+#if UIP_ACTIVE_OPEN -+ case UIP_SYN_SENT: -+ /* In the SYN_SENT state, -+ we retransmit out SYN. */ -+ tcp_hdr->flags = 0; -+ goto tcp_send_syn; -+#endif /* UIP_ACTIVE_OPEN */ -+ -+ case UIP_ESTABLISHED: -+ /* In the ESTABLISHED state, -+ we call upon the application -+ to do the actual retransmit -+ after which we jump into -+ the code for sending out the -+ packet (the apprexmit -+ label). */ -+ ustack->uip_flags = UIP_REXMIT; -+ UIP_APPCALL(ustack); -+ goto apprexmit; -+ -+ case UIP_FIN_WAIT_1: -+ case UIP_CLOSING: -+ case UIP_LAST_ACK: -+ /* In all these states we should -+ retransmit a FINACK. */ -+ goto tcp_send_finack; -+ -+ } -+ } -+ } else if ((uip_connr->tcpstateflags & UIP_TS_MASK) == -+ UIP_ESTABLISHED) { -+ /* If there was no need for a retransmission, -+ we poll the application for new data. */ -+ ustack->uip_flags = UIP_POLL; -+ UIP_APPCALL(ustack); -+ goto appsend; -+ } -+ } -+ goto drop; -+ } /* End of UIP_TIMER */ -+#if UIP_UDP -+ if (flag == UIP_UDP_TIMER) { -+ /* This is for IPv4 DHCP only! */ -+ if (ustack->uip_udp_conn->lport != 0) { -+ ustack->uip_conn = NULL; -+ ustack->uip_sappdata = ustack->uip_appdata = -+ ustack->network_layer + uip_ip_udph_len; -+ ustack->uip_len = ustack->uip_slen = 0; -+ ustack->uip_flags = UIP_POLL; -+ UIP_UDP_APPCALL(ustack); -+ goto udp_send; -+ } else { -+ goto drop; -+ } -+ } -+#endif -+ if (flag == UIP_NDP_TIMER) { -+ /* This is for IPv6 NDP Only! */ -+ if (1) { /* If NDP engine active */ -+ ustack->uip_len = ustack->uip_slen = 0; -+ ustack->uip_flags = UIP_POLL; -+ goto ndp_send; -+ } -+ } -+ -+ /* This is where the input processing starts. */ -+ ++ustack->stats.ip.recv; -+ -+ /* Start of IP input header processing code. */ -+ -+ if (is_ipv6(ustack)) { -+ u8_t version = ((ipv6_hdr->ip6_vfc) & 0xf0) >> 4; -+ -+ /* Check validity of the IP header. */ -+ if (version != 0x6) { /* IP version and header length. */ -+ ++ustack->stats.ip.drop; -+ ++ustack->stats.ip.vhlerr; -+ LOG_DEBUG(PFX "ipv6: invalid version(0x%x).", version); -+ goto drop; -+ } -+ } else { -+ /* Check validity of the IP header. */ -+ if (tcp_ipv4_hdr->vhl != 0x45) { -+ /* IP version and header length. */ -+ ++ustack->stats.ip.drop; -+ ++ustack->stats.ip.vhlerr; -+ LOG_DEBUG(PFX -+ "ipv4: invalid version or header length: " -+ "0x%x.", -+ tcp_ipv4_hdr->vhl); -+ goto drop; -+ } -+ } -+ -+ /* Check the size of the packet. If the size reported to us in -+ uip_len is smaller the size reported in the IP header, we assume -+ that the packet has been corrupted in transit. If the size of -+ uip_len is larger than the size reported in the IP packet header, -+ the packet has been padded and we set uip_len to the correct -+ value.. */ -+ -+ if (is_ipv6(ustack)) { -+ u16_t len = ntohs(ipv6_hdr->ip6_plen); -+ if (len <= ustack->uip_len) { -+ } else { -+ LOG_WARN(PFX -+ "ip: packet shorter than reported in IP header" -+ ":IPv6_BUF(ustack)->len: %d ustack->uip_len: " -+ "%d", len, ustack->uip_len); -+ goto drop; -+ } -+ } else { -+ if ((tcp_ipv4_hdr->len[0] << 8) + -+ tcp_ipv4_hdr->len[1] <= ustack->uip_len) { -+ ustack->uip_len = (tcp_ipv4_hdr->len[0] << 8) + -+ tcp_ipv4_hdr->len[1]; -+ } else { -+ LOG_WARN(PFX -+ "ip: packet shorter than reported in IP header" -+ ":tcp_ipv4_hdr->len: %d ustack->uip_len:%d.", -+ (tcp_ipv4_hdr->len[0] << 8) + -+ tcp_ipv4_hdr->len[1], ustack->uip_len); -+ goto drop; -+ } -+ } -+ -+ if (!is_ipv6(ustack)) { -+ /* Check the fragment flag. */ -+ if ((tcp_ipv4_hdr->ipoffset[0] & 0x3f) != 0 || -+ tcp_ipv4_hdr->ipoffset[1] != 0) { -+#if UIP_REASSEMBLY -+ uip_len = uip_reass(); -+ if (uip_len == 0) { -+ goto drop; -+ } -+#else /* UIP_REASSEMBLY */ -+ ++ustack->stats.ip.drop; -+ ++ustack->stats.ip.fragerr; -+ LOG_WARN(PFX "ip: fragment dropped."); -+ goto drop; -+#endif /* UIP_REASSEMBLY */ -+ } -+ } -+ -+ if (is_ipv6(ustack)) { -+ } else { -+ /* ipv4 */ -+ if (uip_ip4addr_cmp(ustack->hostaddr, all_zeroes_addr4)) { -+ /* If we are configured to use ping IP address -+ configuration and hasn't been assigned an IP -+ address yet, we accept all ICMP packets. */ -+#if UIP_PINGADDRCONF && !UIP_CONF_IPV6 -+ if (tcp_ipv4_hdr->proto == UIP_PROTO_ICMP) { -+ LOG_WARN(PFX -+ "ip: possible ping config packet " -+ "received."); -+ goto icmp_input; -+ } else { -+ LOG_WARN(PFX -+ "ip: packet dropped since no " -+ "address assigned."); -+ goto drop; -+ } -+#endif /* UIP_PINGADDRCONF */ -+ } else { -+ int broadcast_addr = 0xFFFFFFFF; -+ /* If IP broadcast support is configured, we check for -+ a broadcast UDP packet, which may be destined to us -+ */ -+ if ((tcp_ipv4_hdr->proto == UIP_PROTO_UDP) && -+ (uip_ip4addr_cmp -+ (tcp_ipv4_hdr->destipaddr, &broadcast_addr)) -+ /*&& -+ uip_ipchksum() == 0xffff */ -+ ) { -+ goto udp_input; -+ } -+ -+ /* Check if the packet is destined for our IP address -+ */ -+ if (!uip_ip4addr_cmp(tcp_ipv4_hdr->destipaddr, -+ ustack->hostaddr)) { -+ ++ustack->stats.ip.drop; -+ goto drop; -+ } -+ } -+ if (uip_ipchksum(ustack) != 0xffff) { -+ /* Compute and check the IP header checksum. */ -+ ++ustack->stats.ip.drop; -+ ++ustack->stats.ip.chkerr; -+ LOG_ERR(PFX "ip: bad checksum."); -+ goto drop; -+ } -+ } /* End of ipv4 */ -+ -+ if (is_ipv6(ustack)) { -+ if (ipv6_hdr->ip6_nxt == UIP_PROTO_TCP) { -+ /* Check for TCP packet. If so, proceed with TCP input -+ processing. */ -+ goto ndp_newdata; -+ } -+#if UIP_UDP -+ if (ipv6_hdr->ip6_nxt == UIP_PROTO_UDP) { -+ goto ndp_newdata; -+ } -+#endif /* UIP_UDP */ -+ -+ /* This is IPv6 ICMPv6 processing code. */ -+ LOG_DEBUG(PFX "icmp6_input: length %d", ustack->uip_len); -+ -+ if (ipv6_hdr->ip6_nxt != UIP_PROTO_ICMP6) { -+ /* We only allow ICMPv6 packets from here. */ -+ ++ustack->stats.ip.drop; -+ ++ustack->stats.ip.protoerr; -+ goto drop; -+ } -+ -+ ++ustack->stats.icmp.recv; -+ -+ndp_newdata: -+ /* This call is to handle the IPv6 Network Discovery Protocol */ -+ ustack->uip_flags = UIP_NEWDATA; -+ ustack->uip_slen = 0; -+ndp_send: -+ UIP_NDP_CALL(ustack); -+ if (ustack->uip_slen != 0) { -+ ustack->uip_len = ustack->uip_slen; -+ goto send; -+ } else { -+ goto drop; -+ } -+ } else { -+ /* IPv4 Processing */ -+ if (tcp_ipv4_hdr->proto == UIP_PROTO_TCP) { -+ /* Check for TCP packet. If so, proceed with TCP input -+ processing. */ -+ goto tcp_input; -+ } -+#if UIP_UDP -+ if (tcp_ipv4_hdr->proto == UIP_PROTO_UDP) { -+ goto udp_input; -+ } -+#endif /* UIP_UDP */ -+ -+ /* ICMPv4 processing code follows. */ -+ if (tcp_ipv4_hdr->proto != UIP_PROTO_ICMP) { -+ /* We only allow ICMP packets from here. */ -+ ++ustack->stats.ip.drop; -+ ++ustack->stats.ip.protoerr; -+ LOG_DEBUG(PFX "ip: neither tcp nor icmp."); -+ goto drop; -+ } -+#if UIP_PINGADDRCONF -+icmp_input: -+#endif /* UIP_PINGADDRCONF */ -+ ++ustack->stats.icmp.recv; -+ -+ /* ICMP echo (i.e., ping) processing. This is simple, we only -+ change the ICMP type from ECHO to ECHO_REPLY and adjust the -+ ICMP checksum before we return the packet. */ -+ if (icmpv4_hdr->type != ICMP_ECHO) { -+ ++ustack->stats.icmp.drop; -+ ++ustack->stats.icmp.typeerr; -+ LOG_DEBUG(PFX "icmp: not icmp echo."); -+ goto drop; -+ } -+ -+ /* If we are configured to use ping IP address assignment, we -+ use the destination IP address of this ping packet and assign -+ it to ourself. */ -+#if UIP_PINGADDRCONF -+ if ((ustack->hostaddr[0] | ustack->hostaddr[1]) == 0) { -+ ustack->hostaddr[0] = tcp_ipv4_hdr->destipaddr[0]; -+ ustack->hostaddr[1] = tcp_ipv4_hdr->destipaddr[1]; -+ } -+#endif /* UIP_PINGADDRCONF */ -+ -+ icmpv4_hdr->type = ICMP_ECHO_REPLY; -+ -+ if (icmpv4_hdr->icmpchksum >= htons(0xffff - -+ (ICMP_ECHO << 8))) { -+ icmpv4_hdr->icmpchksum += htons(ICMP_ECHO << 8) + 1; -+ } else { -+ icmpv4_hdr->icmpchksum += htons(ICMP_ECHO << 8); -+ } -+ -+ /* Swap IP addresses. */ -+ uip_ip4addr_copy(tcp_ipv4_hdr->destipaddr, -+ tcp_ipv4_hdr->srcipaddr); -+ uip_ip4addr_copy(tcp_ipv4_hdr->srcipaddr, ustack->hostaddr); -+ -+ ++ustack->stats.icmp.sent; -+ goto send; -+ -+ /* End of IPv4 input header processing code. */ -+ } -+ -+#if UIP_UDP -+ /* UDP input processing. */ -+ udp_input: -+ /* UDP processing is really just a hack. We don't do anything to the -+ UDP/IP headers, but let the UDP application do all the hard -+ work. If the application sets uip_slen, it has a packet to -+ send. */ -+#if UIP_UDP_CHECKSUMS -+ ustack->uip_len = ustack->uip_len - uip_ip_udph_len; -+ ustack->uip_appdata = ustack->network_layer + uip_ip_udph_len; -+ if (UDPBUF(ustack)->udpchksum != 0 && uip_udpchksum(ustack) != 0xffff) { -+ ++ustack->stats.udp.drop; -+ ++ustack->stats.udp.chkerr; -+ LOG_WARN(PFX "udp: bad checksum."); -+ goto drop; -+ } -+#else /* UIP_UDP_CHECKSUMS */ -+ uip_len = uip_len - uip_ip_udph_len; -+#endif /* UIP_UDP_CHECKSUMS */ -+ -+ if (is_ipv6(ustack)) -+ goto udp_found; -+ -+ /* Demultiplex this UDP packet between the UDP "connections". */ -+ for (ustack->uip_udp_conn = &ustack->uip_udp_conns[0]; -+ ustack->uip_udp_conn < &ustack->uip_udp_conns[UIP_UDP_CONNS]; -+ ++ustack->uip_udp_conn) { -+ /* If the local UDP port is non-zero, the connection is -+ considered to be used. If so, the local port number is -+ checked against the destination port number in the -+ received packet. If the two port -+ numbers match, the remote port number is checked if the -+ connection is bound to a remote port. Finally, if the -+ connection is bound to a remote IP address, the source IP -+ address of the packet is checked. */ -+ -+ if (ustack->uip_udp_conn->lport != 0 && -+ UDPBUF(ustack)->destport == ustack->uip_udp_conn->lport && -+ (ustack->uip_udp_conn->rport == 0 || -+ UDPBUF(ustack)->srcport == ustack->uip_udp_conn->rport) && -+ (uip_ip4addr_cmp(ustack->uip_udp_conn->ripaddr, -+ all_zeroes_addr4) || -+ uip_ip4addr_cmp(ustack->uip_udp_conn->ripaddr, -+ all_ones_addr4) || -+ uip_ip4addr_cmp(tcp_ipv4_hdr->srcipaddr, -+ ustack->uip_udp_conn->ripaddr))) { -+ goto udp_found; -+ } -+ } -+ LOG_DEBUG(PFX -+ "udp: no matching connection found: dest port: %d src port: " -+ "%d", udp_hdr->destport, udp_hdr->srcport); -+ goto drop; -+ -+udp_found: -+ ustack->uip_conn = NULL; -+ ustack->uip_flags = UIP_NEWDATA; -+ ustack->uip_sappdata = ustack->uip_appdata = ustack->network_layer + -+ uip_ip_udph_len; -+ ustack->uip_slen = 0; -+ if (is_ipv6(ustack)) -+ UIP_NDP_CALL(ustack); -+ else -+ UIP_UDP_APPCALL(ustack); -+udp_send: -+ if (ustack->uip_slen == 0) { -+ goto drop; -+ } -+ -+ ustack->uip_len = ustack->uip_slen + uip_ip_udph_len; -+ -+ if (is_ipv6(ustack)) { -+ goto ip_send_nolen; -+ } else { -+ tcp_ipv4_hdr->len[0] = (ustack->uip_len >> 8); -+ tcp_ipv4_hdr->len[1] = (ustack->uip_len & 0xff); -+ tcp_ipv4_hdr->ttl = ustack->uip_udp_conn->ttl; -+ tcp_ipv4_hdr->proto = UIP_PROTO_UDP; -+ } -+ -+ udp_hdr->udplen = htons(ustack->uip_slen + UIP_UDPH_LEN); -+ udp_hdr->udpchksum = 0; -+ -+ udp_hdr->srcport = ustack->uip_udp_conn->lport; -+ udp_hdr->destport = ustack->uip_udp_conn->rport; -+ -+ uip_ip4addr_copy(tcp_ipv4_hdr->srcipaddr, ustack->hostaddr); -+ uip_ip4addr_copy(tcp_ipv4_hdr->destipaddr, -+ ustack->uip_udp_conn->ripaddr); -+ -+ ustack->uip_appdata = ustack->network_layer + uip_ip_tcph_len; -+ -+ if (ustack->uip_buf == NULL) { -+ LOG_WARN(PFX "uip_buf == NULL on udp send"); -+ goto drop; -+ } -+#if UIP_UDP_CHECKSUMS -+ /* Calculate UDP checksum. */ -+ udp_hdr->udpchksum = ~(uip_udpchksum(ustack)); -+ if (udp_hdr->udpchksum == 0) { -+ udp_hdr->udpchksum = 0xffff; -+ } -+#endif /* UIP_UDP_CHECKSUMS */ -+ -+ goto ip_send_nolen; -+#endif /* UIP_UDP */ -+ -+ /* TCP input processing. */ -+tcp_input: -+ ++ustack->stats.tcp.recv; -+ -+ /* Start of TCP input header processing code. */ -+ -+ if (uip_tcpchksum(ustack) != 0xffff) { /* Compute and check the TCP -+ checksum. */ -+ ++ustack->stats.tcp.drop; -+ ++ustack->stats.tcp.chkerr; -+ LOG_WARN(PFX "tcp: bad checksum."); -+ goto drop; -+ } -+ -+ if (is_ipv6(ustack)) { -+ /* Demultiplex this segment. */ -+ /* First check any active connections. */ -+ for (uip_connr = &ustack->uip_conns[0]; -+ uip_connr <= &ustack->uip_conns[UIP_CONNS - 1]; -+ ++uip_connr) { -+ if (uip_connr->tcpstateflags != UIP_CLOSED && -+ tcp_hdr->destport == uip_connr->lport && -+ tcp_hdr->srcport == uip_connr->rport && -+ uip_ip6addr_cmp(IPv6_BUF(ustack)->srcipaddr, -+ uip_connr->ripaddr)) { -+ goto found; -+ } -+ } -+ } else { -+ /* Demultiplex this segment. */ -+ /* First check any active connections. */ -+ for (uip_connr = &ustack->uip_conns[0]; -+ uip_connr <= &ustack->uip_conns[UIP_CONNS - 1]; -+ ++uip_connr) { -+ if (uip_connr->tcpstateflags != UIP_CLOSED && -+ tcp_hdr->destport == uip_connr->lport && -+ tcp_hdr->srcport == uip_connr->rport && -+ uip_ip4addr_cmp(tcp_ipv4_hdr->srcipaddr, -+ uip_connr->ripaddr)) { -+ goto found; -+ } -+ } -+ } -+ -+ /* If we didn't find and active connection that expected the packet, -+ either this packet is an old duplicate, or this is a SYN packet -+ destined for a connection in LISTEN. If the SYN flag isn't set, -+ it is an old packet and we send a RST. */ -+ if ((tcp_hdr->flags & TCP_CTL) != TCP_SYN) { -+ goto reset; -+ } -+ -+ tmp16 = tcp_hdr->destport; -+ /* Next, check listening connections. */ -+ for (c = 0; c < UIP_LISTENPORTS; ++c) { -+ if (tmp16 == ustack->uip_listenports[c]) -+ goto found_listen; -+ } -+ -+ /* No matching connection found, so we send a RST packet. */ -+ ++ustack->stats.tcp.synrst; -+reset: -+ -+ /* We do not send resets in response to resets. */ -+ if (tcp_hdr->flags & TCP_RST) { -+ goto drop; -+ } -+ -+ ++ustack->stats.tcp.rst; -+ -+ tcp_hdr->flags = TCP_RST | TCP_ACK; -+ ustack->uip_len = uip_ip_tcph_len; -+ tcp_hdr->tcpoffset = 5 << 4; -+ -+ /* Flip the seqno and ackno fields in the TCP header. */ -+ c = tcp_hdr->seqno[3]; -+ tcp_hdr->seqno[3] = tcp_hdr->ackno[3]; -+ tcp_hdr->ackno[3] = c; -+ -+ c = tcp_hdr->seqno[2]; -+ tcp_hdr->seqno[2] = tcp_hdr->ackno[2]; -+ tcp_hdr->ackno[2] = c; -+ -+ c = tcp_hdr->seqno[1]; -+ tcp_hdr->seqno[1] = tcp_hdr->ackno[1]; -+ tcp_hdr->ackno[1] = c; -+ -+ c = tcp_hdr->seqno[0]; -+ tcp_hdr->seqno[0] = tcp_hdr->ackno[0]; -+ tcp_hdr->ackno[0] = c; -+ -+ /* We also have to increase the sequence number we are -+ acknowledging. If the least significant byte overflowed, we need -+ to propagate the carry to the other bytes as well. */ -+ if (++tcp_hdr->ackno[3] == 0) { -+ if (++tcp_hdr->ackno[2] == 0) { -+ if (++tcp_hdr->ackno[1] == 0) { -+ ++tcp_hdr->ackno[0]; -+ } -+ } -+ } -+ -+ /* Swap port numbers. */ -+ tmp16 = tcp_hdr->srcport; -+ tcp_hdr->srcport = tcp_hdr->destport; -+ tcp_hdr->destport = tmp16; -+ -+ /* Swap IP addresses. */ -+ if (is_ipv6(ustack)) { -+ uip_ip6addr_copy(IPv6_BUF(ustack)->destipaddr, -+ IPv6_BUF(ustack)->srcipaddr); -+ uip_ip6addr_copy(IPv6_BUF(ustack)->srcipaddr, -+ ustack->hostaddr6); -+ } else { -+ uip_ip4addr_copy(tcp_ipv4_hdr->destipaddr, -+ tcp_ipv4_hdr->srcipaddr); -+ uip_ip4addr_copy(tcp_ipv4_hdr->srcipaddr, ustack->hostaddr); -+ } -+ -+ /* And send out the RST packet! */ -+ goto tcp_send_noconn; -+ -+ /* This label will be jumped to if we matched the incoming packet -+ with a connection in LISTEN. In that case, we should create a new -+ connection and send a SYNACK in return. */ -+found_listen: -+ /* First we check if there are any connections avaliable. Unused -+ connections are kept in the same table as used connections, but -+ unused ones have the tcpstate set to CLOSED. Also, connections in -+ TIME_WAIT are kept track of and we'll use the oldest one if no -+ CLOSED connections are found. Thanks to Eddie C. Dost for a very -+ nice algorithm for the TIME_WAIT search. */ -+ uip_connr = 0; -+ for (c = 0; c < UIP_CONNS; ++c) { -+ if (ustack->uip_conns[c].tcpstateflags == UIP_CLOSED) { -+ uip_connr = &ustack->uip_conns[c]; -+ break; -+ } -+ if (ustack->uip_conns[c].tcpstateflags == UIP_TIME_WAIT) { -+ if (uip_connr == 0 || -+ ustack->uip_conns[c].timer > uip_connr->timer) { -+ uip_connr = &ustack->uip_conns[c]; -+ } -+ } -+ } -+ -+ if (uip_connr == 0) { -+ /* All connections are used already, we drop packet and hope -+ that the remote end will retransmit the packet at a time when -+ we have more spare connections. */ -+ ++ustack->stats.tcp.syndrop; -+ LOG_WARN(PFX "tcp: found no unused connections."); -+ goto drop; -+ } -+ ustack->uip_conn = uip_connr; -+ -+ /* Fill in the necessary fields for the new connection. */ -+ uip_connr->rto = uip_connr->timer = UIP_RTO; -+ uip_connr->sa = 0; -+ uip_connr->sv = 4; -+ uip_connr->nrtx = 0; -+ uip_connr->lport = tcp_hdr->destport; -+ uip_connr->rport = tcp_hdr->srcport; -+ if (is_ipv6(ustack)) { -+ uip_ip6addr_copy(uip_connr->ripaddr, -+ IPv6_BUF(ustack)->srcipaddr); -+ } else { -+ uip_ip4addr_copy(uip_connr->ripaddr, tcp_ipv4_hdr->srcipaddr); -+ } -+ uip_connr->tcpstateflags = UIP_SYN_RCVD; -+ -+ uip_connr->snd_nxt[0] = ustack->iss[0]; -+ uip_connr->snd_nxt[1] = ustack->iss[1]; -+ uip_connr->snd_nxt[2] = ustack->iss[2]; -+ uip_connr->snd_nxt[3] = ustack->iss[3]; -+ uip_connr->len = 1; -+ -+ /* rcv_nxt should be the seqno from the incoming packet + 1. */ -+ uip_connr->rcv_nxt[3] = tcp_hdr->seqno[3]; -+ uip_connr->rcv_nxt[2] = tcp_hdr->seqno[2]; -+ uip_connr->rcv_nxt[1] = tcp_hdr->seqno[1]; -+ uip_connr->rcv_nxt[0] = tcp_hdr->seqno[0]; -+ uip_add_rcv_nxt(ustack, 1); -+ -+ /* Parse the TCP MSS option, if present. */ -+ if ((tcp_hdr->tcpoffset & 0xf0) > 0x50) { -+ for (c = 0; c < ((tcp_hdr->tcpoffset >> 4) - 5) << 2;) { -+ ustack->opt = -+ ustack->uip_buf[uip_ip_tcph_len + UIP_LLH_LEN + c]; -+ if (ustack->opt == TCP_OPT_END) { -+ /* End of options. */ -+ break; -+ } else if (ustack->opt == TCP_OPT_NOOP) { -+ ++c; -+ /* NOP option. */ -+ } else if (ustack->opt == TCP_OPT_MSS && -+ ustack->uip_buf[uip_ip_tcph_len + -+ UIP_LLH_LEN + 1 + c] == -+ TCP_OPT_MSS_LEN) { -+ /* An MSS option with the right option length.*/ -+ tmp16 = -+ ((u16_t) ustack-> -+ uip_buf[uip_ip_tcph_len + UIP_LLH_LEN + 2 + -+ c] << 8) | (u16_t) ustack-> -+ uip_buf[uip_ip_tcph_len + UIP_LLH_LEN + 3 + -+ c]; -+ uip_connr->initialmss = uip_connr->mss = -+ tmp16 > UIP_TCP_MSS ? UIP_TCP_MSS : tmp16; -+ -+ /* And we are done processing options. */ -+ break; -+ } else { -+ /* All other options have a length field, so -+ that we easily can skip past them. */ -+ if (ustack-> -+ uip_buf[uip_ip_tcph_len + UIP_LLH_LEN + 1 + -+ c] == 0) { -+ /* If the length field is zero, the -+ options are malformed -+ and we don't process them further. */ -+ break; -+ } -+ c += ustack->uip_buf[uip_ip_tcph_len + -+ UIP_LLH_LEN + 1 + c]; -+ } -+ } -+ } -+ -+ /* Our response will be a SYNACK. */ -+#if UIP_ACTIVE_OPEN -+tcp_send_synack: -+ tcp_hdr->flags = TCP_ACK; -+ -+tcp_send_syn: -+ tcp_hdr->flags |= TCP_SYN; -+#else /* UIP_ACTIVE_OPEN */ -+tcp_send_synack: -+ tcp_hdr->flags = TCP_SYN | TCP_ACK; -+#endif /* UIP_ACTIVE_OPEN */ -+ -+ /* We send out the TCP Maximum Segment Size option with our -+ SYNACK. */ -+ tcp_hdr->optdata[0] = TCP_OPT_MSS; -+ tcp_hdr->optdata[1] = TCP_OPT_MSS_LEN; -+ tcp_hdr->optdata[2] = (UIP_TCP_MSS) / 256; -+ tcp_hdr->optdata[3] = (UIP_TCP_MSS) & 255; -+ ustack->uip_len = uip_ip_tcph_len + TCP_OPT_MSS_LEN; -+ tcp_hdr->tcpoffset = ((UIP_TCPH_LEN + TCP_OPT_MSS_LEN) / 4) << 4; -+ goto tcp_send; -+ -+ /* This label will be jumped to if we found an active connection. */ -+found: -+ ustack->uip_conn = uip_connr; -+ ustack->uip_flags = 0; -+ /* We do a very naive form of TCP reset processing; we just accept -+ any RST and kill our connection. We should in fact check if the -+ sequence number of this reset is wihtin our advertised window -+ before we accept the reset. */ -+ if (tcp_hdr->flags & TCP_RST) { -+ uip_connr->tcpstateflags = UIP_CLOSED; -+ LOG_WARN(PFX "tcp: got reset, aborting connection."); -+ ustack->uip_flags = UIP_ABORT; -+ UIP_APPCALL(ustack); -+ goto drop; -+ } -+ /* Calculated the length of the data, if the application has sent -+ any data to us. */ -+ c = (tcp_hdr->tcpoffset >> 4) << 2; -+ /* uip_len will contain the length of the actual TCP data. This is -+ calculated by subtracing the length of the TCP header (in -+ c) and the length of the IP header (20 bytes). */ -+ ustack->uip_len = ustack->uip_len - c - uip_iph_len; -+ -+ /* First, check if the sequence number of the incoming packet is -+ what we're expecting next. If not, we send out an ACK with the -+ correct numbers in. */ -+ if (!(((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_SYN_SENT) && -+ ((tcp_hdr->flags & TCP_CTL) == (TCP_SYN | TCP_ACK)))) { -+ if ((ustack->uip_len > 0 -+ || ((tcp_hdr->flags & (TCP_SYN | TCP_FIN)) != 0)) -+ && (tcp_hdr->seqno[0] != uip_connr->rcv_nxt[0] -+ || tcp_hdr->seqno[1] != uip_connr->rcv_nxt[1] -+ || tcp_hdr->seqno[2] != uip_connr->rcv_nxt[2] -+ || tcp_hdr->seqno[3] != uip_connr->rcv_nxt[3])) { -+ goto tcp_send_ack; -+ } -+ } -+ -+ { -+ u8_t uip_acc32[4]; -+ -+ /* Next, check if the incoming segment acknowledges any outstanding -+ data. If so, we update the sequence number, reset the length of -+ the outstanding data, calculate RTT estimations, and reset the -+ retransmission timer. */ -+ if ((tcp_hdr->flags & TCP_ACK) && uip_outstanding(uip_connr)) { -+ uip_add32(uip_connr->snd_nxt, uip_connr->len, -+ uip_acc32); -+ -+ if (tcp_hdr->ackno[0] == uip_acc32[0] && -+ tcp_hdr->ackno[1] == uip_acc32[1] && -+ tcp_hdr->ackno[2] == uip_acc32[2] && -+ tcp_hdr->ackno[3] == uip_acc32[3]) { -+ /* Update sequence number. */ -+ uip_connr->snd_nxt[0] = uip_acc32[0]; -+ uip_connr->snd_nxt[1] = uip_acc32[1]; -+ uip_connr->snd_nxt[2] = uip_acc32[2]; -+ uip_connr->snd_nxt[3] = uip_acc32[3]; -+ -+ /* Do RTT estimation, unless we have done -+ retransmissions. */ -+ if (uip_connr->nrtx == 0) { -+ signed char m; -+ m = uip_connr->rto - uip_connr->timer; -+ /* This is taken directly from VJs -+ original code in his paper */ -+ m = m - (uip_connr->sa >> 3); -+ uip_connr->sa += m; -+ if (m < 0) { -+ m = -m; -+ } -+ m = m - (uip_connr->sv >> 2); -+ uip_connr->sv += m; -+ uip_connr->rto = -+ (uip_connr->sa >> 3) + -+ uip_connr->sv; -+ -+ } -+ /* Set the acknowledged flag. */ -+ ustack->uip_flags = UIP_ACKDATA; -+ /* Reset the retransmission timer. */ -+ uip_connr->timer = uip_connr->rto; -+ -+ /* Reset length of outstanding data. */ -+ uip_connr->len = 0; -+ } -+ -+ } -+ -+ } -+ -+ /* Do different things depending on in what state the connection is. */ -+ switch (uip_connr->tcpstateflags & UIP_TS_MASK) { -+ /* CLOSED and LISTEN are not handled here. CLOSE_WAIT is not -+ implemented, since we force the application to close when the -+ peer sends a FIN (hence the application goes directly from -+ ESTABLISHED to LAST_ACK). */ -+ case UIP_SYN_RCVD: -+ /* In SYN_RCVD we have sent out a SYNACK in response to a SYN, -+ and we are waiting for an ACK that acknowledges the data we -+ sent out the last time. Therefore, we want to have the -+ UIP_ACKDATA flag set. -+ If so, we enter the ESTABLISHED state. */ -+ if (ustack->uip_flags & UIP_ACKDATA) { -+ uip_connr->tcpstateflags = UIP_ESTABLISHED; -+ ustack->uip_flags = UIP_CONNECTED; -+ uip_connr->len = 0; -+ if (ustack->uip_len > 0) { -+ ustack->uip_flags |= UIP_NEWDATA; -+ uip_add_rcv_nxt(ustack, ustack->uip_len); -+ } -+ ustack->uip_slen = 0; -+ UIP_APPCALL(ustack); -+ goto appsend; -+ } -+ goto drop; -+#if UIP_ACTIVE_OPEN -+ case UIP_SYN_SENT: -+ /* In SYN_SENT, we wait for a SYNACK that is sent in response to -+ our SYN. The rcv_nxt is set to sequence number in the SYNACK -+ plus one, and we send an ACK. We move into the ESTABLISHED -+ state. */ -+ if ((ustack->uip_flags & UIP_ACKDATA) && -+ (tcp_hdr->flags & TCP_CTL) == (TCP_SYN | TCP_ACK)) { -+ -+ /* Parse the TCP MSS option, if present. */ -+ if ((tcp_hdr->tcpoffset & 0xf0) > 0x50) { -+ for (c = 0; -+ c < -+ ((tcp_hdr->tcpoffset >> 4) - 5) << 2;) { -+ ustack->opt = -+ ustack->uip_buf[uip_ip_tcph_len + -+ UIP_LLH_LEN + c]; -+ if (ustack->opt == TCP_OPT_END) { -+ /* End of options. */ -+ break; -+ } else if (ustack->opt == -+ TCP_OPT_NOOP) { -+ ++c; -+ /* NOP option. */ -+ } else if (ustack->opt == TCP_OPT_MSS && -+ ustack-> -+ uip_buf[uip_ip_tcph_len + -+ UIP_LLH_LEN + 1 + -+ c] == -+ TCP_OPT_MSS_LEN) { -+ /* An MSS option with the right -+ option length. */ -+ tmp16 = -+ (ustack-> -+ uip_buf[uip_ip_tcph_len + -+ UIP_LLH_LEN + 2 + -+ c] << 8) | ustack-> -+ uip_buf[uip_ip_tcph_len + -+ UIP_LLH_LEN + 3 + -+ c]; -+ uip_connr->initialmss = -+ uip_connr->mss = -+ tmp16 > -+ UIP_TCP_MSS ? UIP_TCP_MSS : -+ tmp16; -+ -+ /* And we are done processing -+ options. */ -+ break; -+ } else { -+ /* All other options have a -+ length field, so that we -+ easily can skip past them */ -+ if (ustack-> -+ uip_buf[uip_ip_tcph_len + -+ UIP_LLH_LEN + 1 + -+ c] == 0) { -+ /* If the length field -+ is zero, the options -+ are malformed and we -+ don't process them -+ further. */ -+ break; -+ } -+ c += ustack-> -+ uip_buf[uip_ip_tcph_len + -+ UIP_LLH_LEN + 1 + -+ c]; -+ } -+ } -+ } -+ uip_connr->tcpstateflags = UIP_ESTABLISHED; -+ uip_connr->rcv_nxt[0] = tcp_hdr->seqno[0]; -+ uip_connr->rcv_nxt[1] = tcp_hdr->seqno[1]; -+ uip_connr->rcv_nxt[2] = tcp_hdr->seqno[2]; -+ uip_connr->rcv_nxt[3] = tcp_hdr->seqno[3]; -+ uip_add_rcv_nxt(ustack, 1); -+ ustack->uip_flags = UIP_CONNECTED | UIP_NEWDATA; -+ uip_connr->len = 0; -+ ustack->uip_len = 0; -+ ustack->uip_slen = 0; -+ UIP_APPCALL(ustack); -+ goto appsend; -+ } -+ /* Inform the application that the connection failed */ -+ ustack->uip_flags = UIP_ABORT; -+ UIP_APPCALL(ustack); -+ /* The connection is closed after we send the RST */ -+ ustack->uip_conn->tcpstateflags = UIP_CLOSED; -+ goto reset; -+#endif /* UIP_ACTIVE_OPEN */ -+ -+ case UIP_ESTABLISHED: -+ /* In the ESTABLISHED state, we call upon the application to -+ feed data into the uip_buf. If the UIP_ACKDATA flag is set, -+ the application should put new data into the buffer, -+ otherwise we are retransmitting an old segment, and the -+ application should put that data into the buffer. -+ -+ If the incoming packet is a FIN, we should close the -+ connection on this side as well, and we send out a FIN and -+ enter the LAST_ACK state. We require that there is no -+ outstanding data; otherwise the sequence numbers will be -+ screwed up. */ -+ -+ if (tcp_hdr->flags & TCP_FIN -+ && !(uip_connr->tcpstateflags & UIP_STOPPED)) { -+ if (uip_outstanding(uip_connr)) { -+ goto drop; -+ } -+ uip_add_rcv_nxt(ustack, 1 + ustack->uip_len); -+ ustack->uip_flags |= UIP_CLOSE; -+ if (ustack->uip_len > 0) { -+ ustack->uip_flags |= UIP_NEWDATA; -+ } -+ UIP_APPCALL(ustack); -+ uip_connr->len = 1; -+ uip_connr->tcpstateflags = UIP_LAST_ACK; -+ uip_connr->nrtx = 0; -+ tcp_send_finack: -+ tcp_hdr->flags = TCP_FIN | TCP_ACK; -+ goto tcp_send_nodata; -+ } -+ -+ /* Check the URG flag. If this is set, the segment carries -+ urgent data that we must pass to the application. */ -+ if ((tcp_hdr->flags & TCP_URG) != 0) { -+#if UIP_URGDATA > 0 -+ uip_urglen = (tcp_hdr->urgp[0] << 8) | tcp_hdr->urgp[1]; -+ if (uip_urglen > uip_len) { -+ /* There is more urgent data in the next segment -+ to come. */ -+ uip_urglen = uip_len; -+ } -+ uip_add_rcv_nxt(uip_urglen); -+ uip_len -= uip_urglen; -+ uip_urgdata = uip_appdata; -+ uip_appdata += uip_urglen; -+ } else { -+ uip_urglen = 0; -+#else /* UIP_URGDATA > 0 */ -+ ustack->uip_appdata = -+ ((char *)ustack->uip_appdata) + -+ ((tcp_hdr->urgp[0] << 8) | tcp_hdr->urgp[1]); -+ ustack->uip_len -= -+ (tcp_hdr->urgp[0] << 8) | tcp_hdr->urgp[1]; -+#endif /* UIP_URGDATA > 0 */ -+ } -+ -+ /* If uip_len > 0 we have TCP data in the packet, and we flag -+ this by setting the UIP_NEWDATA flag and update the sequence -+ number we acknowledge. If the application has stopped the -+ dataflow using uip_stop(), we must not accept any data -+ packets from the remote host. */ -+ if (ustack->uip_len > 0 -+ && !(uip_connr->tcpstateflags & UIP_STOPPED)) { -+ ustack->uip_flags |= UIP_NEWDATA; -+ uip_add_rcv_nxt(ustack, ustack->uip_len); -+ } -+ -+ /* Check if the available buffer space advertised by the other -+ end is smaller than the initial MSS for this connection. -+ If so, we set the current MSS to the window size to ensure -+ that the application does not send more data than the other -+ end can handle. -+ -+ If the remote host advertises a zero window, we set the MSS -+ to the initial MSS so that the application will send an -+ entire MSS of data. This data will not be acknowledged by -+ the receiver, and the application will retransmit it. -+ This is called the "persistent timer" and uses the -+ retransmission mechanim. -+ */ -+ tmp16 = -+ ((u16_t) tcp_hdr->wnd[0] << 8) + (u16_t) tcp_hdr->wnd[1]; -+ if (tmp16 > uip_connr->initialmss || tmp16 == 0) { -+ tmp16 = uip_connr->initialmss; -+ } -+ uip_connr->mss = tmp16; -+ -+ /* If this packet constitutes an ACK for outstanding data -+ (flagged by the UIP_ACKDATA flag, we should call the -+ application since it might want to send more data. -+ If the incoming packet had data from the peer -+ (as flagged by the UIP_NEWDATA flag), the application -+ must also be notified. -+ -+ When the application is called, the global variable uip_len -+ contains the length of the incoming data. The application can -+ access the incoming data through the global pointer -+ uip_appdata, which usually points uip_ip_tcph_len + -+ UIP_LLH_LEN bytes into the uip_buf array. -+ -+ If the application wishes to send any data, this data should -+ be put into the uip_appdata and the length of the data should -+ be put into uip_len. If the application don't have any data -+ to send, uip_len must be set to 0. */ -+ if (ustack->uip_flags & (UIP_NEWDATA | UIP_ACKDATA)) { -+ ustack->uip_slen = 0; -+ UIP_APPCALL(ustack); -+ -+ appsend: -+ -+ if (ustack->uip_flags & UIP_ABORT) { -+ ustack->uip_slen = 0; -+ uip_connr->tcpstateflags = UIP_CLOSED; -+ tcp_hdr->flags = TCP_RST | TCP_ACK; -+ goto tcp_send_nodata; -+ } -+ -+ if (ustack->uip_flags & UIP_CLOSE) { -+ ustack->uip_slen = 0; -+ uip_connr->len = 1; -+ uip_connr->tcpstateflags = UIP_FIN_WAIT_1; -+ uip_connr->nrtx = 0; -+ tcp_hdr->flags = TCP_FIN | TCP_ACK; -+ goto tcp_send_nodata; -+ } -+ -+ /* If uip_slen > 0, the application has data to be sent -+ */ -+ if (ustack->uip_slen > 0) { -+ -+ /* If the connection has acknowledged data, the -+ contents of the ->len variable should be -+ discarded. */ -+ if ((ustack->uip_flags & UIP_ACKDATA) != 0) { -+ uip_connr->len = 0; -+ } -+ -+ /* If the ->len variable is non-zero the -+ connection has already data in transit and -+ cannot send anymore right now. */ -+ if (uip_connr->len == 0) { -+ -+ /* The application cannot send more than -+ what is allowed by the mss (the -+ minumum of the MSS and the available -+ window). */ -+ if (ustack->uip_slen > uip_connr->mss) { -+ ustack->uip_slen = -+ uip_connr->mss; -+ } -+ -+ /* Remember how much data we send out -+ now so that we know when everything -+ has been acknowledged. */ -+ uip_connr->len = ustack->uip_slen; -+ } else { -+ -+ /* If the application already had -+ unacknowledged data, we make sure -+ that the application does not send -+ (i.e., retransmit) out more than it -+ previously sent out. */ -+ ustack->uip_slen = uip_connr->len; -+ } -+ } -+ uip_connr->nrtx = 0; -+apprexmit: -+ ustack->uip_appdata = ustack->uip_sappdata; -+ -+ /* If the application has data to be sent, or if the -+ incoming packet had new data in it, we must send -+ out a packet. */ -+ if (ustack->uip_slen > 0 && uip_connr->len > 0) { -+ /* Add the length of the IP and TCP headers. */ -+ ustack->uip_len = -+ uip_connr->len + uip_ip_tcph_len; -+ /* We always set the ACK flag in response -+ packets. */ -+ tcp_hdr->flags = TCP_ACK | TCP_PSH; -+ /* Send the packet. */ -+ goto tcp_send_noopts; -+ } -+ /* If there is no data to send, just send out a pure ACK -+ if there is newdata. */ -+ if (ustack->uip_flags & UIP_NEWDATA) { -+ ustack->uip_len = uip_ip_tcph_len; -+ tcp_hdr->flags = TCP_ACK; -+ goto tcp_send_noopts; -+ } -+ } -+ goto drop; -+ case UIP_LAST_ACK: -+ /* We can close this connection if the peer has acknowledged our -+ FIN. This is indicated by the UIP_ACKDATA flag. */ -+ if (ustack->uip_flags & UIP_ACKDATA) { -+ uip_connr->tcpstateflags = UIP_CLOSED; -+ ustack->uip_flags = UIP_CLOSE; -+ UIP_APPCALL(ustack); -+ } -+ break; -+ -+ case UIP_FIN_WAIT_1: -+ /* The application has closed the connection, but the remote -+ host hasn't closed its end yet. Thus we do nothing but wait -+ for a FIN from the other side. */ -+ if (ustack->uip_len > 0) { -+ uip_add_rcv_nxt(ustack, ustack->uip_len); -+ } -+ if (tcp_hdr->flags & TCP_FIN) { -+ if (ustack->uip_flags & UIP_ACKDATA) { -+ uip_connr->tcpstateflags = UIP_TIME_WAIT; -+ uip_connr->timer = 0; -+ uip_connr->len = 0; -+ } else { -+ uip_connr->tcpstateflags = UIP_CLOSING; -+ } -+ uip_add_rcv_nxt(ustack, 1); -+ ustack->uip_flags = UIP_CLOSE; -+ UIP_APPCALL(ustack); -+ goto tcp_send_ack; -+ } else if (ustack->uip_flags & UIP_ACKDATA) { -+ uip_connr->tcpstateflags = UIP_FIN_WAIT_2; -+ uip_connr->len = 0; -+ goto drop; -+ } -+ if (ustack->uip_len > 0) { -+ goto tcp_send_ack; -+ } -+ goto drop; -+ -+ case UIP_FIN_WAIT_2: -+ if (ustack->uip_len > 0) { -+ uip_add_rcv_nxt(ustack, ustack->uip_len); -+ } -+ if (tcp_hdr->flags & TCP_FIN) { -+ uip_connr->tcpstateflags = UIP_TIME_WAIT; -+ uip_connr->timer = 0; -+ uip_add_rcv_nxt(ustack, 1); -+ ustack->uip_flags = UIP_CLOSE; -+ UIP_APPCALL(ustack); -+ goto tcp_send_ack; -+ } -+ if (ustack->uip_len > 0) { -+ goto tcp_send_ack; -+ } -+ goto drop; -+ -+ case UIP_TIME_WAIT: -+ goto tcp_send_ack; -+ -+ case UIP_CLOSING: -+ if (ustack->uip_flags & UIP_ACKDATA) { -+ uip_connr->tcpstateflags = UIP_TIME_WAIT; -+ uip_connr->timer = 0; -+ } -+ } -+ goto drop; -+ -+ /* We jump here when we are ready to send the packet, and just want -+ to set the appropriate TCP sequence numbers in the TCP header. */ -+tcp_send_ack: -+ tcp_hdr->flags = TCP_ACK; -+tcp_send_nodata: -+ ustack->uip_len = uip_ip_tcph_len; -+tcp_send_noopts: -+ tcp_hdr->tcpoffset = (UIP_TCPH_LEN / 4) << 4; -+tcp_send: -+ /* We're done with the input processing. We are now ready to send a -+ reply. Our job is to fill in all the fields of the TCP and IP -+ headers before calculating the checksum and finally send the -+ packet. */ -+ tcp_hdr->ackno[0] = uip_connr->rcv_nxt[0]; -+ tcp_hdr->ackno[1] = uip_connr->rcv_nxt[1]; -+ tcp_hdr->ackno[2] = uip_connr->rcv_nxt[2]; -+ tcp_hdr->ackno[3] = uip_connr->rcv_nxt[3]; -+ -+ tcp_hdr->seqno[0] = uip_connr->snd_nxt[0]; -+ tcp_hdr->seqno[1] = uip_connr->snd_nxt[1]; -+ tcp_hdr->seqno[2] = uip_connr->snd_nxt[2]; -+ tcp_hdr->seqno[3] = uip_connr->snd_nxt[3]; -+ -+ if (is_ipv6(ustack)) { -+ IPv6_BUF(ustack)->proto = UIP_PROTO_TCP; -+ uip_ip6addr_copy(IPv6_BUF(ustack)->srcipaddr, -+ ustack->hostaddr6); -+ uip_ip6addr_copy(IPv6_BUF(ustack)->destipaddr, -+ uip_connr->ripaddr); -+ } else { -+ tcp_ipv4_hdr->proto = UIP_PROTO_TCP; -+ uip_ip4addr_copy(tcp_ipv4_hdr->srcipaddr, ustack->hostaddr); -+ uip_ip4addr_copy(tcp_ipv4_hdr->destipaddr, uip_connr->ripaddr); -+ } -+ -+ tcp_hdr->srcport = uip_connr->lport; -+ tcp_hdr->destport = uip_connr->rport; -+ -+ if (uip_connr->tcpstateflags & UIP_STOPPED) { -+ /* If the connection has issued uip_stop(), we advertise a zero -+ window so that the remote host will stop sending data. */ -+ tcp_hdr->wnd[0] = tcp_hdr->wnd[1] = 0; -+ } else { -+ tcp_hdr->wnd[0] = ((UIP_RECEIVE_WINDOW) >> 8); -+ tcp_hdr->wnd[1] = ((UIP_RECEIVE_WINDOW) & 0xff); -+ } -+ -+tcp_send_noconn: -+ if (is_ipv6(ustack)) { -+ IPv6_BUF(ustack)->ttl = UIP_TTL; -+ -+ /* For IPv6, the IP length field does not include the IPv6 IP -+ header length. */ -+ IPv6_BUF(ustack)->len[0] = -+ ((ustack->uip_len - uip_iph_len) >> 8); -+ IPv6_BUF(ustack)->len[1] = -+ ((ustack->uip_len - uip_iph_len) & 0xff); -+ } else { -+ tcp_ipv4_hdr->ttl = UIP_TTL; -+ tcp_ipv4_hdr->len[0] = (ustack->uip_len >> 8); -+ tcp_ipv4_hdr->len[1] = (ustack->uip_len & 0xff); -+ } -+ -+ tcp_hdr->urgp[0] = tcp_hdr->urgp[1] = 0; -+ -+ /* Calculate TCP checksum. */ -+ tcp_hdr->tcpchksum = 0; -+ tcp_hdr->tcpchksum = ~(uip_tcpchksum(ustack)); -+ -+ip_send_nolen: -+ -+ if (is_ipv6(ustack)) { -+ } else { -+ tcp_ipv4_hdr->vhl = 0x45; -+ tcp_ipv4_hdr->tos = 0; -+ tcp_ipv4_hdr->ipoffset[0] = tcp_ipv4_hdr->ipoffset[1] = 0; -+ ++ustack->ipid; -+ tcp_ipv4_hdr->ipid[0] = ustack->ipid >> 8; -+ tcp_ipv4_hdr->ipid[1] = ustack->ipid & 0xff; -+ /* Calculate IP checksum. */ -+ tcp_ipv4_hdr->ipchksum = 0; -+ tcp_ipv4_hdr->ipchksum = ~(uip_ipchksum(ustack)); -+ } -+ -+ ++ustack->stats.tcp.sent; -+send: -+ if (is_ipv6(ustack)) { -+ LOG_DEBUG(PFX "Sending packet with length %d (%d)", -+ ustack->uip_len, ipv6_hdr ? ipv6_hdr->ip6_plen : 0); -+ } else { -+ LOG_DEBUG(PFX "Sending packet with length %d (%d)", -+ ustack->uip_len, -+ (tcp_ipv4_hdr->len[0] << 8) | tcp_ipv4_hdr->len[1]); -+ } -+ -+ ++ustack->stats.ip.sent; -+ /* Return and let the caller do the actual transmission. */ -+ ustack->uip_flags = 0; -+ return; -+drop: -+ ustack->uip_len = 0; -+ ustack->uip_flags = 0; -+ return; -+} -+ -+/*---------------------------------------------------------------------------*/ -+void uip_send(struct uip_stack *ustack, const void *data, int len) -+{ -+ if (len > 0) { -+ ustack->uip_slen = len; -+ if (data != ustack->uip_buf) { -+ memcpy(ustack->uip_buf, (data), ustack->uip_slen); -+ } -+ } -+} -+ -+void uip_appsend(struct uip_stack *ustack, const void *data, int len) -+{ -+ if (len > 0) { -+ ustack->uip_slen = len; -+ if (data != ustack->uip_sappdata) { -+ memcpy(ustack->uip_sappdata, (data), ustack->uip_slen); -+ } -+ } -+} -+ -+u16_t uip_datalen(struct uip_stack *ustack) -+{ -+ return ustack->uip_len; -+} -+ -+/** @} */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/uip_eth.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/uip_eth.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/uip_eth.c 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/uip_eth.c 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,50 @@ -+/* -+ * Copyright (c) 2009-2011, Broadcom Corporation -+ * -+ * Written by: Benjamin Li (benli@broadcom.com) -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * uip_eth.c - CNIC UIO uIP user space stack -+ * -+ */ -+ -+#include "uip.h" -+#include "uip_eth.h" -+ -+int is_vlan_packet(struct uip_vlan_eth_hdr *hdr) -+{ -+ /* The TPID field in a 802.1Q Header must be 0x8100 */ -+ if (hdr->tpid == const_htons(UIP_ETHTYPE_8021Q)) { -+ return 1; -+ } -+ -+ return 0; -+} -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/uip_eth.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/uip_eth.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/uip_eth.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/uip_eth.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,43 @@ -+#ifndef __UIP_ETH_H__ -+#define __UIP_ETH_H__ -+ -+#include "uipopt.h" -+ -+/******************************************************************************* -+ * Ether types -+ ******************************************************************************/ -+#define UIP_ETHTYPE_ARP 0x0806 -+#define UIP_ETHTYPE_IPv4 0x0800 -+#define UIP_ETHTYPE_8021Q 0x8100 -+#define UIP_ETHTYPE_IPv6 0x86dd -+ -+/** -+ * Representation of a 48-bit Ethernet address. -+ */ -+struct uip_eth_addr { -+ u8_t addr[6]; -+}; -+ -+/** -+ * The Ethernet header. -+ */ -+struct __attribute__ ((__packed__)) uip_eth_hdr { -+ struct uip_eth_addr dest; -+ struct uip_eth_addr src; -+ u16_t type; -+}; -+ -+/** -+ * The 802.1Q Ethernet header (VLAN). -+ */ -+struct __attribute__ ((__packed__)) uip_vlan_eth_hdr { -+ struct uip_eth_addr dest; -+ struct uip_eth_addr src; -+ u16_t tpid; -+ u16_t vid; -+ u16_t type; -+}; -+ -+int is_vlan_packet(struct uip_vlan_eth_hdr *hdr); -+ -+#endif /* __UIP_ETH_H__ */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/uip.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/uip.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/uip.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/uip.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,1611 @@ -+ -+/** -+ * \addtogroup uip -+ * @{ -+ */ -+ -+/** -+ * \file -+ * Header file for the uIP TCP/IP stack. -+ * \author Adam Dunkels -+ * -+ * The uIP TCP/IP stack header file contains definitions for a number -+ * of C macros that are used by uIP programs as well as internal uIP -+ * structures, TCP/IP header structures and function declarations. -+ * -+ */ -+ -+/* -+ * Copyright (c) 2001-2003, Adam Dunkels. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * This file is part of the uIP TCP/IP stack. -+ * -+ * $Id: uip.h,v 1.40 2006/06/08 07:12:07 adam Exp $ -+ * -+ */ -+ -+#ifndef __UIP_H__ -+#define __UIP_H__ -+ -+#include -+#include -+ -+#include "uipopt.h" -+ -+#include "debug.h" -+ -+#include "uip_eth.h" -+ -+/* Forware declaration */ -+struct uip_stack; -+ -+/** -+ * Repressentation of an IP address. -+ * -+ */ -+typedef u16_t uip_ip4addr_t[2]; -+typedef u16_t uip_ip6addr_t[8]; -+ -+const uip_ip6addr_t all_zeroes_addr6; -+const uip_ip4addr_t all_zeroes_addr4; -+ -+#define ETH_BUF(buf) ((struct uip_eth_hdr *)buf) -+#define VLAN_ETH_BUF(buf) ((struct uip_vlan_eth_hdr *)buf) -+#define IPv4_BUF(buf) ((struct uip_tcp_ipv4_hdr *)buf) -+#define IPv6_BUF(buf) ((struct uip_tcp_ipv6_hdr *)buf) -+ -+/*---------------------------------------------------------------------------*/ -+/* First, the functions that should be called from the -+ * system. Initialization, the periodic timer and incoming packets are -+ * handled by the following three functions. -+ */ -+ -+/** -+ * Set the IP address of this host. -+ * -+ * The IP address is represented as a 4-byte array where the first -+ * octet of the IP address is put in the first member of the 4-byte -+ * array. -+ * -+ * Example: -+ \code -+ -+ uip_ipaddr_t addr; -+ -+ uip_ipaddr(&addr, 192,168,1,2); -+ uip_sethostaddr(&addr); -+ -+ \endcode -+ * \param addr A pointer to an IP address of type uip_ipaddr_t; -+ * -+ * \sa uip_ipaddr() -+ * -+ * \hideinitializer -+ */ -+void uip_sethostaddr4(struct uip_stack *ustack, uip_ip4addr_t * addr); -+ -+/** -+ * Set the default router's IP address. -+ * -+ * \param addr A pointer to a uip_ipaddr_t variable containing the IP -+ * address of the default router. -+ * -+ * \sa uip_ipaddr() -+ * -+ * \hideinitializer -+ */ -+void uip_setdraddr4(struct uip_stack *ustack, uip_ip4addr_t * addr); -+ -+/** -+ * Set the netmask. -+ * -+ * \param addr A pointer to a uip_ipaddr_t variable containing the IP -+ * address of the netmask. -+ * -+ * \sa uip_ipaddr() -+ * -+ * \hideinitializer -+ */ -+void uip_setnetmask4(struct uip_stack *ustack, uip_ip4addr_t * addr); -+ -+/** -+ * Set the ethernet MAC address. -+ * -+ * \param addr A pointer to a uip_ipaddr_t variable containing the IP -+ * address of the netmask. -+ * -+ * \sa uip_ipaddr() -+ * -+ * \hideinitializer -+ */ -+void uip_setethernetmac(struct uip_stack *ustack, uint8_t * mac); -+ -+/** -+ * Get the default router's IP address. -+ * -+ * \param addr A pointer to a uip_ipaddr_t variable that will be -+ * filled in with the IP address of the default router. -+ * -+ * \hideinitializer -+ */ -+#define uip_getdraddr(addr) uip_ipaddr_copy((addr), uip_draddr) -+ -+/** -+ * Get the netmask. -+ * -+ * \param addr A pointer to a uip_ipaddr_t variable that will be -+ * filled in with the value of the netmask. -+ * -+ * \hideinitializer -+ */ -+#define uip_getnetmask(addr) uip_ipaddr_copy((addr), uip_netmask) -+ -+void set_uip_stack(struct uip_stack *ustack, -+ uip_ip4addr_t * ip, -+ uip_ip4addr_t * netmask, -+ uip_ip4addr_t * default_route, uint8_t * mac_addr); -+ -+/** @} */ -+ -+/** -+ * \defgroup uipinit uIP initialization functions -+ * @{ -+ * -+ * The uIP initialization functions are used for booting uIP. -+ */ -+ -+/** -+ * uIP initialization function. -+ * -+ * This function should be called at boot up to initilize the uIP -+ * TCP/IP stack. -+ */ -+void uip_init(struct uip_stack *ustack, uint8_t enable_ipv6); -+ -+/** -+ * uIP reset function. -+ * -+ * This function should be called at to reset the uIP TCP/IP stack. -+ */ -+void uip_reset(struct uip_stack *ustack); -+ -+/** -+ * uIP initialization function. -+ * -+ * This function may be used at boot time to set the initial ip_id. -+ */ -+void uip_setipid(u16_t id); -+ -+/** -+ * -+ * -+ */ -+#define uip_conn_active(conn) (uip_conns[conn].tcpstateflags != UIP_CLOSED) -+ -+#if UIP_UDP -+ -+#if 0 -+/** -+ * Periodic processing for a UDP connection identified by its number. -+ * -+ * This function is essentially the same as uip_periodic(), but for -+ * UDP connections. It is called in a similar fashion as the -+ * uip_periodic() function: -+ \code -+ for(i = 0; i < UIP_UDP_CONNS; i++) { -+ uip_udp_periodic(i); -+ if(uip_len > 0) { -+ devicedriver_send(); -+ } -+ } -+ \endcode -+ * -+ * \note As for the uip_periodic() function, special care has to be -+ * taken when using uIP together with ARP and Ethernet: -+ \code -+ for(i = 0; i < UIP_UDP_CONNS; i++) { -+ uip_udp_periodic(i); -+ if(uip_len > 0) { -+ uip_arp_out(); -+ ethernet_devicedriver_send(); -+ } -+ } -+ \endcode -+ * -+ * \param conn The number of the UDP connection to be processed. -+ * -+ * \hideinitializer -+ */ -+#define uip_udp_periodic(conn) do { uip_udp_conn = &uip_udp_conns[conn]; \ -+ uip_process(UIP_UDP_TIMER); } while (0) -+ -+/** -+ * Periodic processing for a UDP connection identified by a pointer to -+ * its structure. -+ * -+ * Same as uip_udp_periodic() but takes a pointer to the actual -+ * uip_conn struct instead of an integer as its argument. This -+ * function can be used to force periodic processing of a specific -+ * connection. -+ * -+ * \param conn A pointer to the uip_udp_conn struct for the connection -+ * to be processed. -+ * -+ * \hideinitializer -+ */ -+#define uip_udp_periodic_conn(conn) do { uip_udp_conn = conn; \ -+ uip_process(UIP_UDP_TIMER); } while (0) -+ -+#endif -+ -+void uip_udp_periodic(struct uip_stack *ustack, int conn); -+#endif /* UIP_UDP */ -+ -+void uip_ndp_periodic(struct uip_stack *ustack); -+ -+/** -+ * The uIP packet buffer. -+ * -+ * The uip_buf array is used to hold incoming and outgoing -+ * packets. The device driver should place incoming data into this -+ * buffer. When sending data, the device driver should read the link -+ * level headers and the TCP/IP headers from this buffer. The size of -+ * the link level headers is configured by the UIP_LLH_LEN define. -+ * -+ * \note The application data need not be placed in this buffer, so -+ * the device driver must read it from the place pointed to by the -+ * uip_appdata pointer as illustrated by the following example: -+ \code -+ void -+ devicedriver_send(void) -+ { -+ hwsend(&uip_buf[0], UIP_LLH_LEN); -+ if(uip_len <= UIP_LLH_LEN + UIP_TCPIP_HLEN) { -+ hwsend(&uip_buf[UIP_LLH_LEN], uip_len - UIP_LLH_LEN); -+ } else { -+ hwsend(&uip_buf[UIP_LLH_LEN], UIP_TCPIP_HLEN); -+ hwsend(uip_appdata, uip_len - UIP_TCPIP_HLEN - UIP_LLH_LEN); -+ } -+ } -+ \endcode -+ */ -+//extern u8_t uip_buf[UIP_BUFSIZE+2]; -+ -+/** @} */ -+ -+/*---------------------------------------------------------------------------*/ -+/* Functions that are used by the uIP application program. Opening and -+ * closing connections, sending and receiving data, etc. is all -+ * handled by the functions below. -+*/ -+/** -+ * \defgroup uipappfunc uIP application functions -+ * @{ -+ * -+ * Functions used by an application running of top of uIP. -+ */ -+ -+/** -+ * Start listening to the specified port. -+ * -+ * \note Since this function expects the port number in network byte -+ * order, a conversion using HTONS() or htons() is necessary. -+ * -+ \code -+ uip_listen(HTONS(80)); -+ \endcode -+ * -+ * \param port A 16-bit port number in network byte order. -+ */ -+void uip_listen(struct uip_stack *ustack, u16_t port); -+ -+/** -+ * Stop listening to the specified port. -+ * -+ * \note Since this function expects the port number in network byte -+ * order, a conversion using HTONS() or htons() is necessary. -+ * -+ \code -+ uip_unlisten(HTONS(80)); -+ \endcode -+ * -+ * \param port A 16-bit port number in network byte order. -+ */ -+void uip_unlisten(struct uip_stack *ustack, u16_t port); -+ -+/** -+ * Connect to a remote host using TCP. -+ * -+ * This function is used to start a new connection to the specified -+ * port on the specied host. It allocates a new connection identifier, -+ * sets the connection to the SYN_SENT state and sets the -+ * retransmission timer to 0. This will cause a TCP SYN segment to be -+ * sent out the next time this connection is periodically processed, -+ * which usually is done within 0.5 seconds after the call to -+ * uip_connect(). -+ * -+ * \note This function is avaliable only if support for active open -+ * has been configured by defining UIP_ACTIVE_OPEN to 1 in uipopt.h. -+ * -+ * \note Since this function requires the port number to be in network -+ * byte order, a conversion using HTONS() or htons() is necessary. -+ * -+ \code -+ uip_ipaddr_t ipaddr; -+ -+ uip_ipaddr(&ipaddr, 192,168,1,2); -+ uip_connect(&ipaddr, HTONS(80)); -+ \endcode -+ * -+ * \param ripaddr The IP address of the remote hot. -+ * -+ * \param port A 16-bit port number in network byte order. -+ * -+ * \return A pointer to the uIP connection identifier for the new connection, -+ * or NULL if no connection could be allocated. -+ * -+ */ -+struct uip_conn *uip_connect(struct uip_stack *ustack, -+ uip_ip4addr_t * ripaddr, u16_t port); -+ -+/** -+ * \internal -+ * -+ * Check if a connection has outstanding (i.e., unacknowledged) data. -+ * -+ * \param conn A pointer to the uip_conn structure for the connection. -+ * -+ * \hideinitializer -+ */ -+#define uip_outstanding(conn) ((conn)->len) -+ -+/** -+ * Send data on the current connection. -+ * -+ * This function is used to send out a single segment of TCP -+ * data. Only applications that have been invoked by uIP for event -+ * processing can send data. -+ * -+ * The amount of data that actually is sent out after a call to this -+ * funcion is determined by the maximum amount of data TCP allows. uIP -+ * will automatically crop the data so that only the appropriate -+ * amount of data is sent. The function uip_mss() can be used to query -+ * uIP for the amount of data that actually will be sent. -+ * -+ * \note This function does not guarantee that the sent data will -+ * arrive at the destination. If the data is lost in the network, the -+ * application will be invoked with the uip_rexmit() event being -+ * set. The application will then have to resend the data using this -+ * function. -+ * -+ * \param data A pointer to the data which is to be sent. -+ * -+ * \param len The maximum amount of data bytes to be sent. -+ * -+ * \hideinitializer -+ */ -+void uip_send(struct uip_stack *ustack, const void *data, int len); -+void uip_appsend(struct uip_stack *ustack, const void *data, int len); -+ -+/** -+ * The length of any incoming data that is currently avaliable (if avaliable) -+ * in the uip_appdata buffer. -+ * -+ * The test function uip_data() must first be used to check if there -+ * is any data available at all. -+ * -+ * \hideinitializer -+ */ -+/*void uip_datalen(void);*/ -+u16_t uip_datalen(struct uip_stack *ustack); -+ -+/** -+ * The length of any out-of-band data (urgent data) that has arrived -+ * on the connection. -+ * -+ * \note The configuration parameter UIP_URGDATA must be set for this -+ * function to be enabled. -+ * -+ * \hideinitializer -+ */ -+#define uip_urgdatalen() uip_urglen -+ -+/** -+ * Close the current connection. -+ * -+ * This function will close the current connection in a nice way. -+ * -+ * \hideinitializer -+ */ -+#define uip_close() (uip_flags = UIP_CLOSE) -+ -+/** -+ * Abort the current connection. -+ * -+ * This function will abort (reset) the current connection, and is -+ * usually used when an error has occured that prevents using the -+ * uip_close() function. -+ * -+ * \hideinitializer -+ */ -+#define uip_abort() (uip_flags = UIP_ABORT) -+ -+/** -+ * Tell the sending host to stop sending data. -+ * -+ * This function will close our receiver's window so that we stop -+ * receiving data for the current connection. -+ * -+ * \hideinitializer -+ */ -+#define uip_stop() (uip_conn->tcpstateflags |= UIP_STOPPED) -+ -+/** -+ * Find out if the current connection has been previously stopped with -+ * uip_stop(). -+ * -+ * \hideinitializer -+ */ -+#define uip_stopped(conn) ((conn)->tcpstateflags & UIP_STOPPED) -+ -+/** -+ * Restart the current connection, if is has previously been stopped -+ * with uip_stop(). -+ * -+ * This function will open the receiver's window again so that we -+ * start receiving data for the current connection. -+ * -+ * \hideinitializer -+ */ -+#define uip_restart() do { uip_flags |= UIP_NEWDATA; \ -+ uip_conn->tcpstateflags &= ~UIP_STOPPED; \ -+ } while(0) -+ -+/* uIP tests that can be made to determine in what state the current -+ connection is, and what the application function should do. */ -+ -+/** -+ * Is the current connection a UDP connection? -+ * -+ * This function checks whether the current connection is a UDP connection. -+ * -+ * \hideinitializer -+ * -+ */ -+#define uip_udpconnection() (uip_conn == NULL) -+ -+/** -+ * Function declarations for hte uip_flags -+ */ -+/** -+ * Is new incoming data available? -+ * -+ * Will reduce to non-zero if there is new data for the application -+ * present at the uip_appdata pointer. The size of the data is -+ * avaliable through the uip_len variable. -+ * -+ * \hideinitializer -+ */ -+int uip_newdata(struct uip_stack *ustack); -+ -+/** -+ * Has previously sent data been acknowledged? -+ * -+ * Will reduce to non-zero if the previously sent data has been -+ * acknowledged by the remote host. This means that the application -+ * can send new data. -+ * -+ * \hideinitializer -+ */ -+int uip_acked(struct uip_stack *ustack); -+ -+/** -+ * Has the connection just been connected? -+ * -+ * Reduces to non-zero if the current connection has been connected to -+ * a remote host. This will happen both if the connection has been -+ * actively opened (with uip_connect()) or passively opened (with -+ * uip_listen()). -+ * -+ * \hideinitializer -+ */ -+int uip_connected(struct uip_stack *ustack); -+ -+/** -+ * Has the connection been closed by the other end? -+ * -+ * Is non-zero if the connection has been closed by the remote -+ * host. The application may then do the necessary clean-ups. -+ * -+ * \hideinitializer -+ */ -+int uip_closed(struct uip_stack *ustack); -+ -+/** -+ * Has the connection been aborted by the other end? -+ * -+ * Non-zero if the current connection has been aborted (reset) by the -+ * remote host. -+ * -+ * \hideinitializer -+ */ -+int uip_aborted(struct uip_stack *ustack); -+ -+/** -+ * Has the connection timed out? -+ * -+ * Non-zero if the current connection has been aborted due to too many -+ * retransmissions. -+ * -+ * \hideinitializer -+ */ -+int uip_timedout(struct uip_stack *ustack); -+ -+/** -+ * Do we need to retransmit previously data? -+ * -+ * Reduces to non-zero if the previously sent data has been lost in -+ * the network, and the application should retransmit it. The -+ * application should send the exact same data as it did the last -+ * time, using the uip_send() function. -+ * -+ * \hideinitializer -+ */ -+int uip_rexmit(struct uip_stack *ustack); -+ -+/** -+ * Is the connection being polled by uIP? -+ * -+ * Is non-zero if the reason the application is invoked is that the -+ * current connection has been idle for a while and should be -+ * polled. -+ * -+ * The polling event can be used for sending data without having to -+ * wait for the remote host to send data. -+ * -+ * \hideinitializer -+ */ -+int uip_poll(struct uip_stack *ustack); -+ -+/** -+ * Get the initial maxium segment size (MSS) of the current -+ * connection. -+ * -+ * \hideinitializer -+ */ -+int uip_initialmss(struct uip_stack *ustack); -+ -+/** -+ * Get the current maxium segment size that can be sent on the current -+ * connection. -+ * -+ * The current maxiumum segment size that can be sent on the -+ * connection is computed from the receiver's window and the MSS of -+ * the connection (which also is available by calling -+ * uip_initialmss()). -+ * -+ * \hideinitializer -+ */ -+int uip_mss(struct uip_stack *ustack); -+ -+/** -+ * Set up a new UDP connection. -+ * -+ * This function sets up a new UDP connection. The function will -+ * automatically allocate an unused local port for the new -+ * connection. However, another port can be chosen by using the -+ * uip_udp_bind() call, after the uip_udp_new() function has been -+ * called. -+ * -+ * Example: -+ \code -+ uip_ipaddr_t addr; -+ struct uip_udp_conn *c; -+ -+ uip_ipaddr(&addr, 192,168,2,1); -+ c = uip_udp_new(&addr, HTONS(12345)); -+ if(c != NULL) { -+ uip_udp_bind(c, HTONS(12344)); -+ } -+ \endcode -+ * \param ripaddr The IP address of the remote host. -+ * -+ * \param rport The remote port number in network byte order. -+ * -+ * \return The uip_udp_conn structure for the new connection or NULL -+ * if no connection could be allocated. -+ */ -+struct uip_udp_conn *uip_udp_new(struct uip_stack *ustack, -+ uip_ip4addr_t * ripaddr, u16_t rport); -+ -+/** -+ * Removed a UDP connection. -+ * -+ * \param conn A pointer to the uip_udp_conn structure for the connection. -+ * -+ * \hideinitializer -+ */ -+#define uip_udp_remove(conn) (conn)->lport = 0 -+ -+/** -+ * Bind a UDP connection to a local port. -+ * -+ * \param conn A pointer to the uip_udp_conn structure for the -+ * connection. -+ * -+ * \param port The local port number, in network byte order. -+ * -+ * \hideinitializer -+ */ -+#define uip_udp_bind(conn, port) (conn)->lport = port -+ -+/** -+ * Send a UDP datagram of length len on the current connection. -+ * -+ * This function can only be called in response to a UDP event (poll -+ * or newdata). The data must be present in the uip_buf buffer, at the -+ * place pointed to by the uip_appdata pointer. -+ * -+ * \param len The length of the data in the uip_buf buffer. -+ * -+ * \hideinitializer -+ */ -+#define uip_udp_send(len) uip_appsend((char *)uip_appdata, len) -+ -+/** @} */ -+ -+/* uIP convenience and converting functions. */ -+ -+/** -+ * \defgroup uipconvfunc uIP conversion functions -+ * @{ -+ * -+ * These functions can be used for converting between different data -+ * formats used by uIP. -+ */ -+ -+/** -+ * Construct an IP address from four bytes. -+ * -+ * This function constructs an IP address of the type that uIP handles -+ * internally from four bytes. The function is handy for specifying IP -+ * addresses to use with e.g. the uip_connect() function. -+ * -+ * Example: -+ \code -+ uip_ipaddr_t ipaddr; -+ struct uip_conn *c; -+ -+ uip_ipaddr(&ipaddr, 192,168,1,2); -+ c = uip_connect(&ipaddr, HTONS(80)); -+ \endcode -+ * -+ * \param addr A pointer to a uip_ipaddr_t variable that will be -+ * filled in with the IP address. -+ * -+ * \param addr0 The first octet of the IP address. -+ * \param addr1 The second octet of the IP address. -+ * \param addr2 The third octet of the IP address. -+ * \param addr3 The forth octet of the IP address. -+ * -+ * \hideinitializer -+ */ -+#define uip_ipaddr(addr, addr0,addr1,addr2,addr3) do { \ -+ ((u16_t *)(addr))[0] = const_htons(((addr0) << 8) | (addr1)); \ -+ ((u16_t *)(addr))[1] = const_htons(((addr2) << 8) | (addr3)); \ -+ } while(0) -+ -+/** -+ * Construct an IPv6 address from eight 16-bit words. -+ * -+ * This function constructs an IPv6 address. -+ * -+ * \hideinitializer -+ */ -+#define uip_ip6addr(addr, addr0,addr1,addr2,addr3,addr4,addr5,addr6,addr7) do {\ -+ ((u16_t *)(addr))[0] = HTONS((addr0)); \ -+ ((u16_t *)(addr))[1] = HTONS((addr1)); \ -+ ((u16_t *)(addr))[2] = HTONS((addr2)); \ -+ ((u16_t *)(addr))[3] = HTONS((addr3)); \ -+ ((u16_t *)(addr))[4] = HTONS((addr4)); \ -+ ((u16_t *)(addr))[5] = HTONS((addr5)); \ -+ ((u16_t *)(addr))[6] = HTONS((addr6)); \ -+ ((u16_t *)(addr))[7] = HTONS((addr7)); \ -+ } while(0) -+ -+/** -+ * Copy an IP address to another IP address. -+ * -+ * Copies an IP address from one place to another. -+ * -+ * Example: -+ \code -+ uip_ipaddr_t ipaddr1, ipaddr2; -+ -+ uip_ipaddr(&ipaddr1, 192,16,1,2); -+ uip_ipaddr_copy(&ipaddr2, &ipaddr1); -+ \endcode -+ * -+ * \param dest The destination for the copy. -+ * \param src The source from where to copy. -+ * -+ * \hideinitializer -+ */ -+#define uip_ip4addr_copy(dest, src) memcpy(dest, src, sizeof(uip_ip4addr_t)) -+#define uip_ip6addr_copy(dest, src) memcpy(dest, src, sizeof(uip_ip6addr_t)) -+ -+/** -+ * Compare two IP addresses -+ * -+ * Compares two IP addresses. -+ * -+ * Example: -+ \code -+ uip_ipaddr_t ipaddr1, ipaddr2; -+ -+ uip_ipaddr(&ipaddr1, 192,16,1,2); -+ if(uip_ipaddr_cmp(&ipaddr2, &ipaddr1)) { -+ printf("They are the same"); -+ } -+ \endcode -+ * -+ * \param addr1 The first IP address. -+ * \param addr2 The second IP address. -+ * -+ * \hideinitializer -+ */ -+#define uip_ip4addr_cmp(addr1, addr2) (memcmp(addr1, addr2, \ -+ sizeof(uip_ip4addr_t)) == 0) -+#define uip_ip6addr_cmp(addr1, addr2) (memcmp(addr1, addr2, \ -+ sizeof(uip_ip6addr_t)) == 0) -+ -+/** -+ * Compare two IP addresses with netmasks -+ * -+ * Compares two IP addresses with netmasks. The masks are used to mask -+ * out the bits that are to be compared. -+ * -+ * Example: -+ \code -+ uip_ipaddr_t ipaddr1, ipaddr2, mask; -+ -+ uip_ipaddr(&mask, 255,255,255,0); -+ uip_ipaddr(&ipaddr1, 192,16,1,2); -+ uip_ipaddr(&ipaddr2, 192,16,1,3); -+ if(uip_ipaddr_maskcmp(&ipaddr1, &ipaddr2, &mask)) { -+ printf("They are the same"); -+ } -+ \endcode -+ * -+ * \param addr1 The first IP address. -+ * \param addr2 The second IP address. -+ * \param mask The netmask. -+ * -+ * \hideinitializer -+ */ -+#define uip_ip4addr_maskcmp(addr1, addr2, mask) \ -+ (((((u16_t *)addr1)[0] & ((u16_t *)mask)[0]) == \ -+ (((u16_t *)addr2)[0] & ((u16_t *)mask)[0])) && \ -+ ((((u16_t *)addr1)[1] & ((u16_t *)mask)[1]) == \ -+ (((u16_t *)addr2)[1] & ((u16_t *)mask)[1]))) -+ -+/** -+ * Mask out the network part of an IP address. -+ * -+ * Masks out the network part of an IP address, given the address and -+ * the netmask. -+ * -+ * Example: -+ \code -+ uip_ipaddr_t ipaddr1, ipaddr2, netmask; -+ -+ uip_ipaddr(&ipaddr1, 192,16,1,2); -+ uip_ipaddr(&netmask, 255,255,255,0); -+ uip_ipaddr_mask(&ipaddr2, &ipaddr1, &netmask); -+ \endcode -+ * -+ * In the example above, the variable "ipaddr2" will contain the IP -+ * address 192.168.1.0. -+ * -+ * \param dest Where the result is to be placed. -+ * \param src The IP address. -+ * \param mask The netmask. -+ * -+ * \hideinitializer -+ */ -+#define uip_ip4addr_mask(dest, src, mask) do { \ -+ ((u16_t *)dest)[0] = ((u16_t *)src)[0] & ((u16_t *)mask)[0]; \ -+ ((u16_t *)dest)[1] = ((u16_t *)src)[1] & ((u16_t *)mask)[1]; \ -+ } while(0) -+ -+/** -+ * Pick the first octet of an IP address. -+ * -+ * Picks out the first octet of an IP address. -+ * -+ * Example: -+ \code -+ uip_ipaddr_t ipaddr; -+ u8_t octet; -+ -+ uip_ipaddr(&ipaddr, 1,2,3,4); -+ octet = uip_ipaddr1(&ipaddr); -+ \endcode -+ * -+ * In the example above, the variable "octet" will contain the value 1. -+ * -+ * \hideinitializer -+ */ -+#define uip_ipaddr1(addr) (htons(((u16_t *)(addr))[0]) >> 8) -+ -+/** -+ * Pick the second octet of an IP address. -+ * -+ * Picks out the second octet of an IP address. -+ * -+ * Example: -+ \code -+ uip_ipaddr_t ipaddr; -+ u8_t octet; -+ -+ uip_ipaddr(&ipaddr, 1,2,3,4); -+ octet = uip_ipaddr2(&ipaddr); -+ \endcode -+ * -+ * In the example above, the variable "octet" will contain the value 2. -+ * -+ * \hideinitializer -+ */ -+#define uip_ipaddr2(addr) (htons(((u16_t *)(addr))[0]) & 0xff) -+ -+/** -+ * Pick the third octet of an IP address. -+ * -+ * Picks out the third octet of an IP address. -+ * -+ * Example: -+ \code -+ uip_ipaddr_t ipaddr; -+ u8_t octet; -+ -+ uip_ipaddr(&ipaddr, 1,2,3,4); -+ octet = uip_ipaddr3(&ipaddr); -+ \endcode -+ * -+ * In the example above, the variable "octet" will contain the value 3. -+ * -+ * \hideinitializer -+ */ -+#define uip_ipaddr3(addr) (htons(((u16_t *)(addr))[1]) >> 8) -+ -+/** -+ * Pick the fourth octet of an IP address. -+ * -+ * Picks out the fourth octet of an IP address. -+ * -+ * Example: -+ \code -+ uip_ipaddr_t ipaddr; -+ u8_t octet; -+ -+ uip_ipaddr(&ipaddr, 1,2,3,4); -+ octet = uip_ipaddr4(&ipaddr); -+ \endcode -+ * -+ * In the example above, the variable "octet" will contain the value 4. -+ * -+ * \hideinitializer -+ */ -+#define uip_ipaddr4(addr) (htons(((u16_t *)(addr))[1]) & 0xff) -+ -+/** -+ * Convert 16-bit quantity from host byte order to network byte order. -+ * -+ * This macro is primarily used for converting constants from host -+ * byte order to network byte order. For converting variables to -+ * network byte order, use the htons() function instead. -+ * -+ * \hideinitializer -+ */ -+#if 0 -+#ifndef HTONS -+# if UIP_BYTE_ORDER == UIP_BIG_ENDIAN -+# define HTONS(n) (n) -+# else /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */ -+# define HTONS(n) (u16_t)((((u16_t) (n)) << 8) | (((u16_t) (n)) >> 8)) -+# endif /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */ -+#else -+#error "HTONS already defined!" -+#endif /* HTONS */ -+#endif -+ -+#if UIP_BYTE_ORDER == UIP_BIG_ENDIAN -+# error "Should not be here" -+# define const_htons(n) (n) -+# else /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */ -+# define const_htons(n) (u16_t)((((u16_t) (n)) << 8) | (((u16_t) (n)) >> 8)) -+# endif /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */ -+ -+/* BWL */ -+#if 0 -+/** -+ * Convert 16-bit quantity from host byte order to network byte order. -+ * -+ * This function is primarily used for converting variables from host -+ * byte order to network byte order. For converting constants to -+ * network byte order, use the HTONS() macro instead. -+ */ -+#ifndef htons -+u16_t htons(u16_t val); -+#endif /* htons */ -+#ifndef ntohs -+#define ntohs htons -+#endif -+#endif -+ -+/** @} */ -+ -+/** -+ * Pointer to the application data in the packet buffer. -+ * -+ * This pointer points to the application data when the application is -+ * called. If the application wishes to send data, the application may -+ * use this space to write the data into before calling uip_send(). -+ */ -+//extern void *uip_appdata; -+ -+#if UIP_URGDATA > 0 -+/* u8_t *uip_urgdata: -+ * -+ * This pointer points to any urgent data that has been received. Only -+ * present if compiled with support for urgent data (UIP_URGDATA). -+ */ -+extern void *uip_urgdata; -+#endif /* UIP_URGDATA > 0 */ -+ -+/** -+ * \defgroup uipdrivervars Variables used in uIP device drivers -+ * @{ -+ * -+ * uIP has a few global variables that are used in device drivers for -+ * uIP. -+ */ -+ -+/** -+ * The length of the packet in the uip_buf buffer. -+ * -+ * The global variable uip_len holds the length of the packet in the -+ * uip_buf buffer. -+ * -+ * When the network device driver calls the uIP input function, -+ * uip_len should be set to the length of the packet in the uip_buf -+ * buffer. -+ * -+ * When sending packets, the device driver should use the contents of -+ * the uip_len variable to determine the length of the outgoing -+ * packet. -+ * -+ */ -+//extern u16_t uip_len; -+ -+/** @} */ -+ -+#if UIP_URGDATA > 0 -+extern u16_t uip_urglen, uip_surglen; -+#endif /* UIP_URGDATA > 0 */ -+ -+/** -+ * Representation of a uIP TCP connection. -+ * -+ * The uip_conn structure is used for identifying a connection. All -+ * but one field in the structure are to be considered read-only by an -+ * application. The only exception is the appstate field whos purpose -+ * is to let the application store application-specific state (e.g., -+ * file pointers) for the connection. The type of this field is -+ * configured in the "uipopt.h" header file. -+ */ -+struct __attribute__ ((__packed__)) uip_conn { -+ uip_ip4addr_t ripaddr; -+ /**< The IP address of the remote host. */ -+ -+ u16_t lport; /**< The local TCP port, in network byte order. */ -+ u16_t rport; /**< The local remote TCP port, in network byte -+ order. */ -+ -+ u8_t rcv_nxt[4]; -+ /**< The sequence number that we expect to -+ receive next. */ -+ u8_t snd_nxt[4]; -+ /**< The sequence number that was last sent by -+ us. */ -+ u16_t len; /**< Length of the data that was previously sent. */ -+ u16_t mss; /**< Current maximum segment size for the -+ connection. */ -+ u16_t initialmss; -+ /**< Initial maximum segment size for the -+ connection. */ -+ u8_t sa; /**< Retransmission time-out calculation state -+ variable. */ -+ u8_t sv; /**< Retransmission time-out calculation state -+ variable. */ -+ u8_t rto; /**< Retransmission time-out. */ -+ u8_t tcpstateflags; -+ /**< TCP state and flags. */ -+ u8_t timer; /**< The retransmission timer. */ -+ u8_t nrtx; /**< The number of retransmissions for the last -+ segment sent. */ -+ -+ /** The application state. */ -+/* BWL */ -+// uip_tcp_appstate_t appstate; -+}; -+ -+/** -+ * \addtogroup uiparch -+ * @{ -+ */ -+ -+/** -+ * 4-byte array used for the 32-bit sequence number calculations. -+ */ -+extern u8_t uip_acc32[4]; -+ -+/** @} */ -+ -+#if UIP_UDP -+/** -+ * Representation of a uIP UDP connection. -+ */ -+struct uip_udp_conn { -+ uip_ip4addr_t ripaddr; -+ /**< The IP address of the remote peer. */ -+ u16_t lport; /**< The local port number in network byte order. */ -+ u16_t rport; /**< The remote port number in network byte order. */ -+ u8_t ttl; /**< Default time-to-live. */ -+ -+ /** The application state. */ -+// uip_udp_appstate_t appstate; -+}; -+ -+#endif /* UIP_UDP */ -+ -+/** -+ * The structure holding the TCP/IP statistics that are gathered if -+ * UIP_STATISTICS is set to 1. -+ * -+ */ -+struct uip_stats { -+ struct { -+ uip_stats_t drop; -+ /**< Number of dropped packets at the IP -+ layer. */ -+ uip_stats_t recv; -+ /**< Number of received packets at the IP -+ layer. */ -+ uip_stats_t sent; -+ /**< Number of sent packets at the IP -+ layer. */ -+ uip_stats_t vhlerr; -+ /**< Number of packets dropped due to wrong -+ IP version or header length. */ -+ uip_stats_t hblenerr; -+ /**< Number of packets dropped due to wrong -+ IP length, high byte. */ -+ uip_stats_t lblenerr; -+ /**< Number of packets dropped due to wrong -+ IP length, low byte. */ -+ uip_stats_t fragerr; -+ /**< Number of packets dropped since they -+ were IP fragments. */ -+ uip_stats_t chkerr; -+ /**< Number of packets dropped due to IP -+ checksum errors. */ -+ uip_stats_t protoerr; -+ /**< Number of packets dropped since they -+ were neither ICMP, UDP nor TCP. */ -+ } ip; /**< IP statistics. */ -+ struct { -+ uip_stats_t drop; -+ /**< Number of dropped ICMP packets. */ -+ uip_stats_t recv; -+ /**< Number of received ICMP packets. */ -+ uip_stats_t sent; -+ /**< Number of sent ICMP packets. */ -+ uip_stats_t typeerr; -+ /**< Number of ICMP packets with a wrong -+ type. */ -+ } icmp; /**< ICMP statistics. */ -+ struct { -+ uip_stats_t drop; -+ /**< Number of dropped TCP segments. */ -+ uip_stats_t recv; -+ /**< Number of recived TCP segments. */ -+ uip_stats_t sent; -+ /**< Number of sent TCP segments. */ -+ uip_stats_t chkerr; -+ /**< Number of TCP segments with a bad -+ checksum. */ -+ uip_stats_t ackerr; -+ /**< Number of TCP segments with a bad ACK -+ number. */ -+ uip_stats_t rst; -+ /**< Number of recevied TCP RST (reset) segments. */ -+ uip_stats_t rexmit; -+ /**< Number of retransmitted TCP segments. */ -+ uip_stats_t syndrop; -+ /**< Number of dropped SYNs due to too few -+ connections was avaliable. */ -+ uip_stats_t synrst; -+ /**< Number of SYNs for closed ports, -+ triggering a RST. */ -+ } tcp; /**< TCP statistics. */ -+#if UIP_UDP -+ struct { -+ uip_stats_t drop; -+ /**< Number of dropped UDP segments. */ -+ uip_stats_t recv; -+ /**< Number of recived UDP segments. */ -+ uip_stats_t sent; -+ /**< Number of sent UDP segments. */ -+ uip_stats_t chkerr; -+ /**< Number of UDP segments with a bad -+ checksum. */ -+ } udp; /**< UDP statistics. */ -+#endif /* UIP_UDP */ -+}; -+ -+/*---------------------------------------------------------------------------*/ -+/* All the stuff below this point is internal to uIP and should not be -+ * used directly by an application or by a device driver. -+ */ -+/*---------------------------------------------------------------------------*/ -+/* u8_t uip_flags: -+ * -+ * When the application is called, uip_flags will contain the flags -+ * that are defined in this file. Please read below for more -+ * infomation. -+ */ -+//extern u8_t uip_flags; -+ -+/* The following flags may be set in the global variable uip_flags -+ before calling the application callback. The UIP_ACKDATA, -+ UIP_NEWDATA, and UIP_CLOSE flags may both be set at the same time, -+ whereas the others are mutualy exclusive. Note that these flags -+ should *NOT* be accessed directly, but only through the uIP -+ functions/macros. */ -+ -+#define UIP_ACKDATA 1 /* Signifies that the outstanding data was -+ acked and the application should send -+ out new data instead of retransmitting -+ the last data. */ -+#define UIP_NEWDATA 2 /* Flags the fact that the peer has sent -+ us new data. */ -+#define UIP_REXMIT 4 /* Tells the application to retransmit the -+ data that was last sent. */ -+#define UIP_POLL 8 /* Used for polling the application, to -+ check if the application has data that -+ it wants to send. */ -+#define UIP_CLOSE 16 /* The remote host has closed the -+ connection, thus the connection has -+ gone away. Or the application signals -+ that it wants to close the -+ connection. */ -+#define UIP_ABORT 32 /* The remote host has aborted the -+ connection, thus the connection has -+ gone away. Or the application signals -+ that it wants to abort the -+ connection. */ -+#define UIP_CONNECTED 64 /* We have got a connection from a remote -+ host and have set up a new connection -+ for it, or an active connection has -+ been successfully established. */ -+ -+#define UIP_TIMEDOUT 128 /* The connection has been aborted due to -+ too many retransmissions. */ -+ -+void uip_input(struct uip_stack *ustack); -+void uip_periodic(struct uip_stack *ustack, int conn); -+ -+/* uip_process(flag): -+ * -+ * The actual uIP function which does all the work. -+ */ -+void uip_process(struct uip_stack *ustack, u8_t flag); -+ -+/* The following flags are passed as an argument to the uip_process() -+ function. They are used to distinguish between the two cases where -+ uip_process() is called. It can be called either because we have -+ incoming data that should be processed, or because the periodic -+ timer has fired. These values are never used directly, but only in -+ the macrose defined in this file. */ -+ -+#define UIP_DATA 1 /* Tells uIP that there is incoming -+ data in the uip_buf buffer. The -+ length of the data is stored in the -+ global variable uip_len. */ -+#define UIP_TIMER 2 /* Tells uIP that the periodic timer -+ has fired. */ -+#define UIP_POLL_REQUEST 3 /* Tells uIP that a connection should -+ be polled. */ -+#define UIP_UDP_SEND_CONN 4 /* Tells uIP that a UDP datagram -+ should be constructed in the -+ uip_buf buffer. */ -+#if UIP_UDP -+#define UIP_UDP_TIMER 5 -+#endif /* UIP_UDP */ -+ -+#define UIP_NDP_TIMER 6 -+ -+/* The TCP states used in the uip_conn->tcpstateflags. */ -+#define UIP_CLOSED 0 -+#define UIP_SYN_RCVD 1 -+#define UIP_SYN_SENT 2 -+#define UIP_ESTABLISHED 3 -+#define UIP_FIN_WAIT_1 4 -+#define UIP_FIN_WAIT_2 5 -+#define UIP_CLOSING 6 -+#define UIP_TIME_WAIT 7 -+#define UIP_LAST_ACK 8 -+#define UIP_TS_MASK 15 -+ -+#define UIP_STOPPED 16 -+ -+struct __attribute__ ((__packed__)) uip_tcp_hdr { -+ /* TCP header. */ -+ u16_t srcport, destport; -+ u8_t seqno[4], ackno[4], tcpoffset, flags, wnd[2]; -+ u16_t tcpchksum; -+ u8_t urgp[2]; -+ u8_t optdata[4]; -+}; -+ -+struct __attribute__ ((__packed__)) uip_ipv4_hdr { -+ /* IPv4 header. */ -+ u8_t vhl, tos, len[2], ipid[2], ipoffset[2], ttl, proto; -+ u16_t ipchksum; -+ u16_t srcipaddr[2], destipaddr[2]; -+}; -+ -+struct __attribute__ ((__packed__)) uip_ipv6_hdr { -+ /* IPv6 header. */ -+ u8_t vtc, tcflow; -+ u16_t flow; -+// u8_t len[2]; -+ u16_t len; -+ u8_t proto, ttl; -+ uip_ip6addr_t srcipaddr, destipaddr; -+}; -+ -+/* The TCP and IPv4 headers. */ -+struct __attribute__ ((__packed__)) uip_tcp_ipv4_hdr { -+ /* IPv4 header. */ -+ u8_t vhl, tos, len[2], ipid[2], ipoffset[2], ttl, proto; -+ u16_t ipchksum; -+ u16_t srcipaddr[2], destipaddr[2]; -+ -+ /* TCP header. */ -+ u16_t srcport, destport; -+ u8_t seqno[4], ackno[4], tcpoffset, flags, wnd[2]; -+ u16_t tcpchksum; -+ u8_t urgp[2]; -+ u8_t optdata[4]; -+}; -+ -+/* The TCP and IP headers. */ -+struct __attribute__ ((__packed__)) uip_tcp_ipv6_hdr { -+ /* IPv6 header. */ -+ u8_t vtc, tcflow; -+ u16_t flow; -+ u8_t len[2]; -+ u8_t proto, ttl; -+ uip_ip6addr_t srcipaddr, destipaddr; -+ -+ /* TCP header. */ -+ u16_t srcport, destport; -+ u8_t seqno[4], ackno[4], tcpoffset, flags, wnd[2]; -+ u16_t tcpchksum; -+ u8_t urgp[2]; -+ u8_t optdata[4]; -+}; -+ -+/* The ICMPv4 */ -+struct __attribute__ ((__packed__)) uip_icmpv4_hdr { -+ /* ICMP (echo) header. */ -+ u8_t type, icode; -+ u16_t icmpchksum; -+ u16_t id, seqno; -+}; -+ -+/* The ICMPv6 */ -+struct __attribute__ ((__packed__)) uip_icmpv6_hdr { -+ /* ICMP (echo) header. */ -+ u8_t type, icode; -+ u16_t icmpchksum; -+ u8_t flags, reserved1, reserved2, reserved3; -+ u8_t icmp6data[16]; -+ u8_t options[1]; -+}; -+ -+/* The ICMP and IP headers. */ -+struct __attribute__ ((__packed__)) uip_icmpip_hdr { -+#if UIP_CONF_IPV6 -+ /* IPv6 header. */ -+ u8_t vtc, tcf; -+ u16_t flow; -+ u8_t len[2]; -+ u8_t proto, ttl; -+ uip_ip6addr_t srcipaddr, destipaddr; -+#else /* UIP_CONF_IPV6 */ -+ /* IPv4 header. */ -+ u8_t vhl, tos, len[2], ipid[2], ipoffset[2], ttl, proto; -+ u16_t ipchksum; -+ u16_t srcipaddr[2], destipaddr[2]; -+#endif /* UIP_CONF_IPV6 */ -+ -+ /* ICMP (echo) header. */ -+ u8_t type, icode; -+ u16_t icmpchksum; -+#if !UIP_CONF_IPV6 -+ u16_t id, seqno; -+#else /* !UIP_CONF_IPV6 */ -+ u8_t flags, reserved1, reserved2, reserved3; -+ u8_t icmp6data[16]; -+ u8_t options[1]; -+#endif /* !UIP_CONF_IPV6 */ -+}; -+ -+/* The UDP */ -+struct __attribute__ ((__packed__)) uip_udp_hdr { -+ /* UDP header. */ -+ u16_t srcport, destport; -+ u16_t udplen; -+ u16_t udpchksum; -+}; -+ -+/* The UDP and IP headers. */ -+struct __attribute__ ((__packed__)) uip_udpip_hdr { -+#if UIP_CONF_IPV6 -+ /* IPv6 header. */ -+ u8_t vtc, tcf; -+ u16_t flow; -+ u8_t len[2]; -+ u8_t proto, ttl; -+ uip_ip6addr_t srcipaddr, destipaddr; -+#else /* UIP_CONF_IPV6 */ -+ /* IP header. */ -+ u8_t vhl, tos, len[2], ipid[2], ipoffset[2], ttl, proto; -+ u16_t ipchksum; -+ u16_t srcipaddr[2], destipaddr[2]; -+#endif /* UIP_CONF_IPV6 */ -+ -+ /* UDP header. */ -+ u16_t srcport, destport; -+ u16_t udplen; -+ u16_t udpchksum; -+}; -+ -+/** -+ * The buffer size available for user data in the \ref uip_buf buffer. -+ * -+ * This macro holds the available size for user data in the \ref -+ * uip_buf buffer. The macro is intended to be used for checking -+ * bounds of available user data. -+ * -+ * Example: -+ \code -+ snprintf(uip_appdata, UIP_APPDATA_SIZE, "%u\n", i); -+ \endcode -+ * -+ * \hideinitializer -+ */ -+#define UIP_APPDATA_SIZE (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN) -+ -+#define UIP_PROTO_ICMP 1 -+#define UIP_PROTO_TCP 6 -+#define UIP_PROTO_UDP 17 -+#define UIP_PROTO_ICMP6 58 -+ -+/* Header sizes. */ -+#define UIP_IPv6_H_LEN 40 /* Size of IPv6 header */ -+#define UIP_IPv4_H_LEN 20 /* Size of IPv4 header */ -+ -+#define UIP_UDPH_LEN 8 /* Size of UDP header */ -+#define UIP_TCPH_LEN 20 /* Size of TCP header */ -+ -+#define UIP_IPv4_UDPH_LEN (UIP_UDPH_LEN + UIP_IPv4_H_LEN) /* Size of IPv4 -+ + UDP -+ header */ -+#define UIP_IPv4_TCPH_LEN (UIP_TCPH_LEN + UIP_IPv4_H_LEN) /* Size of IPv4 -+ + TCP -+ header */ -+#define UIP_TCP_IPv4_HLEN UIP_IPv4_TCPH_LEN -+ -+#define UIP_IPv6_UDPH_LEN (UIP_UDPH_LEN + UIP_IPv6_H_LEN) /* Size of IPv6 -+ + UDP -+ header */ -+#define UIP_IPv6_TCPH_LEN (UIP_TCPH_LEN + UIP_IPv6_H_LEN) /* Size of IPv6 -+ + TCP -+ header */ -+#define UIP_TCP_IPv6_HLEN UIP_IPv6_TCPH_LEN -+ -+/** -+ * Calculate the Internet checksum over a buffer. -+ * -+ * The Internet checksum is the one's complement of the one's -+ * complement sum of all 16-bit words in the buffer. -+ * -+ * See RFC1071. -+ * -+ * \param buf A pointer to the buffer over which the checksum is to be -+ * computed. -+ * -+ * \param len The length of the buffer over which the checksum is to -+ * be computed. -+ * -+ * \return The Internet checksum of the buffer. -+ */ -+u16_t uip_chksum(u16_t * buf, u16_t len); -+ -+/** -+ * Calculate the IP header checksum of the packet header in uip_buf. -+ * -+ * The IP header checksum is the Internet checksum of the 20 bytes of -+ * the IP header. -+ * -+ * \return The IP header checksum of the IP header in the uip_buf -+ * buffer. -+ */ -+u16_t uip_ipchksum(struct uip_stack *ustack); -+ -+/** -+ * Calculate the TCP checksum of the packet in uip_buf and uip_appdata. -+ * -+ * The TCP checksum is the Internet checksum of data contents of the -+ * TCP segment, and a pseudo-header as defined in RFC793. -+ * -+ * \return The TCP checksum of the TCP segment in uip_buf and pointed -+ * to by uip_appdata. -+ */ -+u16_t uip_tcpchksum(struct uip_stack *ustack); -+ -+/** -+ * Calculate the UDP checksum of the packet in uip_buf and uip_appdata. -+ * -+ * The UDP checksum is the Internet checksum of data contents of the -+ * UDP segment, and a pseudo-header as defined in RFC768. -+ * -+ * \return The UDP checksum of the UDP segment in uip_buf and pointed -+ * to by uip_appdata. -+ */ -+u16_t uip_udpchksum(struct uip_stack *ustack); -+ -+/* IPv6 checksum */ -+uint16_t icmpv6_checksum(uint8_t * data); -+ -+struct neighbor_entry { -+ struct in6_addr ipaddr; -+ struct uip_eth_addr mac_addr; -+ u8_t time; -+}; -+ -+struct uip_stack { -+ struct uip_eth_addr uip_ethaddr; -+ -+ u8_t *uip_buf; -+ -+ uint8_t *data_link_layer; /* Pointer to the data link layer */ -+ uint8_t *network_layer; /* Pointer to the network layer */ -+ void *uip_appdata; /* The uip_appdata pointer points to -+ application data. */ -+ void *uip_sappdata; /* The uip_appdata pointer points to -+ the application data which is to -+ be sent. */ -+#if UIP_URGDATA > 0 -+ void *uip_urgdata; /* The uip_urgdata pointer points to -+ urgent data (out-of-band data), if -+ present. */ -+ u16_t uip_urglen, uip_surglen; -+#endif /* UIP_URGDATA > 0 */ -+ -+ u16_t uip_len, uip_slen; /* The uip_len is either 8 or 16 bits, -+ depending on the maximum packet -+ size. */ -+ u8_t uip_flags; /* The uip_flags variable is used for -+ communication between the TCP/IP stack -+ and the application program. */ -+ struct uip_conn *uip_conn; /* uip_conn always points to the current -+ connection. */ -+ -+ struct uip_conn uip_conns[UIP_CONNS]; -+ /* The uip_conns array holds all TCP -+ connections. */ -+ u16_t uip_listenports[UIP_LISTENPORTS]; -+ /* The uip_listenports list all currently -+ listning ports. */ -+#if UIP_UDP -+ struct uip_udp_conn *uip_udp_conn; -+ struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS]; -+#endif /* UIP_UDP */ -+ -+ u16_t ipid; /* This ipid variable is an increasing -+ number that is used for the IP ID -+ field. */ -+ -+ u8_t iss[4]; /* The iss variable is used for the TCP -+ initial sequence number. */ -+ -+#if UIP_ACTIVE_OPEN -+ u16_t lastport; /* Keeps track of the last port used for -+ a new connection. */ -+#endif /* UIP_ACTIVE_OPEN */ -+ -+#define IPV4_CONFIG_OFF 0x01 -+#define IPV4_CONFIG_STATIC 0x02 -+#define IPV4_CONFIG_DHCP 0x04 -+#define IPV6_CONFIG_OFF 0x10 -+#define IPV6_CONFIG_STATIC 0x20 -+#define IPV6_CONFIG_DHCP 0x40 -+ u8_t ip_config; -+ -+ uip_ip4addr_t hostaddr, netmask, default_route_addr; -+ uip_ip6addr_t hostaddr6, netmask6, default_route_addr6; -+ int prefix_len; -+ -+#define UIP_NEIGHBOR_ENTRIES 8 -+ struct neighbor_entry neighbor_entries[UIP_NEIGHBOR_ENTRIES]; -+ -+ struct uip_stats stats; -+ -+ u8_t opt; -+ -+ pthread_mutex_t lock; -+ -+ /* IPv6 support */ -+ -+#define UIP_SUPPORT_IPv6_ENABLED 0x01 -+#define UIP_SUPPORT_IPv6_DISABLED 0x02 -+ u8_t enable_IPv6; -+ -+ /* DHCPC client attached */ -+ void *dhcpc; -+ -+ /* NDP client */ -+ void *ndpc; -+}; -+ -+/******************************************************************************* -+ * IPv6 Support -+ ******************************************************************************/ -+int set_ipv6_link_local_address(struct uip_stack *ustack); -+int is_ipv6_link_local_address(uip_ip6addr_t * addr); -+ -+void dump_uip_packet(struct uip_stack *ustack); -+ -+#endif /* __UIP_H__ */ -+ -+/** @} */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/uip-neighbor.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/uip-neighbor.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/uip-neighbor.c 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/uip-neighbor.c 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,221 @@ -+/* -+ * Copyright (c) 2006, Swedish Institute of Computer Science. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. Neither the name of the Institute nor the names of its contributors -+ * may be used to endorse or promote products derived from this software -+ * without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE -+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ * This file is part of the uIP TCP/IP stack -+ * -+ * $Id: uip-neighbor.c,v 1.2 2006/06/12 08:00:30 adam Exp $ -+ */ -+ -+/** -+ * \file -+ * Database of link-local neighbors, used by IPv6 code and -+ * to be used by a future ARP code rewrite. -+ * \author -+ * Adam Dunkels -+ */ -+ -+#include "logger.h" -+#include "uip.h" -+#include "uip-neighbor.h" -+ -+#include -+#include -+#include -+ -+/******************************************************************************* -+ * Constants -+ ******************************************************************************/ -+#define PFX "uip-neigh " -+ -+#define MAX_TIME 128 -+ -+/*---------------------------------------------------------------------------*/ -+void uip_neighbor_init(struct uip_stack *ustack) -+{ -+ int i; -+ -+ pthread_mutex_lock(&ustack->lock); -+ for (i = 0; i < UIP_NEIGHBOR_ENTRIES; ++i) { -+ memset(&(ustack->neighbor_entries[i].ipaddr), 0, -+ sizeof(ustack->neighbor_entries[i].ipaddr)); -+ memset(&(ustack->neighbor_entries[i].mac_addr), 0, -+ sizeof(ustack->neighbor_entries[i].mac_addr)); -+ ustack->neighbor_entries[i].time = MAX_TIME; -+ } -+ pthread_mutex_unlock(&ustack->lock); -+} -+ -+void uip_neighbor_add(struct uip_stack *ustack, -+ struct in6_addr *addr6, struct uip_eth_addr *addr) -+{ -+ int i, oldest; -+ u8_t oldest_time; -+ char buf[INET6_ADDRSTRLEN]; -+ -+ inet_ntop(AF_INET6, addr6, buf, sizeof(buf)); -+ -+ pthread_mutex_lock(&ustack->lock); -+ -+ /* Find the first unused entry or the oldest used entry. */ -+ oldest_time = 0; -+ oldest = 0; -+ for (i = 0; i < UIP_NEIGHBOR_ENTRIES; ++i) { -+ if (ustack->neighbor_entries[i].time == MAX_TIME) { -+ oldest = i; -+ break; -+ } -+ if (uip_ip6addr_cmp -+ (ustack->neighbor_entries[i].ipaddr.s6_addr, addr6)) { -+ oldest = i; -+ break; -+ } -+ if (ustack->neighbor_entries[i].time > oldest_time) { -+ oldest = i; -+ oldest_time = ustack->neighbor_entries[i].time; -+ } -+ } -+ -+ /* Use the oldest or first free entry (either pointed to by the -+ "oldest" variable). */ -+ ustack->neighbor_entries[oldest].time = 0; -+ uip_ip6addr_copy(ustack->neighbor_entries[oldest].ipaddr.s6_addr, -+ addr6); -+ memcpy(&ustack->neighbor_entries[oldest].mac_addr, addr, -+ sizeof(struct uip_eth_addr)); -+ -+ LOG_DEBUG("Adding neighbor %s with " -+ "mac address %02x:%02x:%02x:%02x:%02x:%02x at %d", -+ buf, addr->addr[0], addr->addr[1], addr->addr[2], -+ addr->addr[3], addr->addr[4], addr->addr[5], oldest); -+ -+ pthread_mutex_unlock(&ustack->lock); -+} -+ -+/*---------------------------------------------------------------------------*/ -+static struct neighbor_entry *find_entry(struct uip_stack *ustack, -+ struct in6_addr *addr6) -+{ -+ int i; -+ -+ for (i = 0; i < UIP_NEIGHBOR_ENTRIES; ++i) { -+ if (uip_ip6addr_cmp -+ (ustack->neighbor_entries[i].ipaddr.s6_addr, -+ addr6->s6_addr)) { -+ return &ustack->neighbor_entries[i]; -+ } -+ } -+ -+ return NULL; -+} -+ -+/*---------------------------------------------------------------------------*/ -+void uip_neighbor_update(struct uip_stack *ustack, struct in6_addr *addr6) -+{ -+ struct neighbor_entry *e; -+ -+ pthread_mutex_lock(&ustack->lock); -+ -+ e = find_entry(ustack, addr6); -+ if (e != NULL) { -+ e->time = 0; -+ } -+ -+ pthread_mutex_unlock(&ustack->lock); -+} -+ -+/*---------------------------------------------------------------------------*/ -+int uip_neighbor_lookup(struct uip_stack *ustack, -+ struct in6_addr *addr6, uint8_t * mac_addr) -+{ -+ struct neighbor_entry *e; -+ -+ pthread_mutex_lock(&ustack->lock); -+ e = find_entry(ustack, addr6); -+ if (e != NULL) { -+ char addr6_str[INET6_ADDRSTRLEN]; -+ uint8_t *entry_mac_addr; -+ -+ addr6_str[0] = '\0'; -+ inet_ntop(AF_INET6, addr6->s6_addr, addr6_str, -+ sizeof(addr6_str)); -+ entry_mac_addr = (uint8_t *) & e->mac_addr.addr; -+ -+ LOG_DEBUG(PFX -+ "Found %s at %02x:%02x:%02x:%02x:%02x:%02x", -+ addr6_str, -+ entry_mac_addr[0], entry_mac_addr[1], -+ entry_mac_addr[2], entry_mac_addr[3], -+ entry_mac_addr[4], entry_mac_addr[5]); -+ -+ memcpy(mac_addr, entry_mac_addr, sizeof(e->mac_addr)); -+ pthread_mutex_unlock(&ustack->lock); -+ return 0; -+ } -+ -+ pthread_mutex_unlock(&ustack->lock); -+ return -ENOENT; -+} -+ -+void uip_neighbor_out(struct uip_stack *ustack) -+{ -+ struct neighbor_entry *e; -+ struct uip_eth_hdr *eth_hdr = -+ (struct uip_eth_hdr *)ustack->data_link_layer; -+ struct uip_ipv6_hdr *ipv6_hdr = -+ (struct uip_ipv6_hdr *)ustack->network_layer; -+ -+ pthread_mutex_lock(&ustack->lock); -+ -+ /* Find the destination IP address in the neighbor table and construct -+ the Ethernet header. If the destination IP addres isn't on the -+ local network, we use the default router's IP address instead. -+ -+ If not ARP table entry is found, we overwrite the original IP -+ packet with an ARP request for the IP address. */ -+ e = find_entry(ustack, (struct in6_addr *)ipv6_hdr->destipaddr); -+ if (e == NULL) { -+ struct uip_eth_addr eth_addr_tmp; -+ -+ memcpy(ð_addr_tmp, eth_hdr->src.addr, sizeof(eth_addr_tmp)); -+ memcpy(eth_hdr->src.addr, ustack->uip_ethaddr.addr, -+ sizeof(eth_hdr->src.addr)); -+ memcpy(eth_hdr->dest.addr, ð_addr_tmp, -+ sizeof(eth_hdr->dest.addr)); -+ -+ pthread_mutex_unlock(&ustack->lock); -+ return; -+ } -+ -+ memcpy(eth_hdr->dest.addr, &e->mac_addr, sizeof(eth_hdr->dest.addr)); -+ memcpy(eth_hdr->src.addr, ustack->uip_ethaddr.addr, -+ sizeof(eth_hdr->src.addr)); -+ -+ pthread_mutex_unlock(&ustack->lock); -+} -+ -+/*---------------------------------------------------------------------------*/ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/uip-neighbor.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/uip-neighbor.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/uip-neighbor.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/uip-neighbor.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,106 @@ -+/* -+ * Copyright (c) 2006, Swedish Institute of Computer Science. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. Neither the name of the Institute nor the names of its contributors -+ * may be used to endorse or promote products derived from this software -+ * without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE -+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ * This file is part of the uIP TCP/IP stack -+ * -+ * $Id: uip-neighbor.h,v 1.2 2006/06/12 08:00:30 adam Exp $ -+ */ -+ -+/** -+ * \file -+ * Header file for database of link-local neighbors, used by -+ * IPv6 code and to be used by future ARP code. -+ * \author -+ * Adam Dunkels -+ */ -+ -+#ifndef __UIP_NEIGHBOR_H__ -+#define __UIP_NEIGHBOR_H__ -+ -+#include "uip.h" -+#include "uip_eth.h" -+ -+/* ICMP types */ -+/* ICMPv6 error Messages */ -+#define ICMPV6_DEST_UNREACH 1 -+#define ICMPV6_PKT_TOOBIG 2 -+#define ICMPV6_TIME_EXCEED 3 -+#define ICMPV6_PARAMPROB 4 -+ -+/* ICMPv6 Informational Messages */ -+#define ICMPV6_ECHO_REQUEST 128 -+#define ICMPV6_ECHO_REPLY 129 -+#define ICMPV6_MGM_QUERY 130 -+#define ICMPV6_MGM_REPORT 131 -+#define ICMPV6_MGM_REDUCTION 132 -+ -+/* Codes for Destination Unreachable */ -+#define ICMPV6_NOROUTE 0 -+#define ICMPV6_ADM_PROHIBITED 1 -+#define ICMPV6_NOT_NEIGHBOUR 2 -+#define ICMPV6_ADDR_UNREACH 3 -+#define ICMPV6_PORT_UNREACH 4 -+ -+/* Codes for Time Exceeded */ -+#define ICMPV6_EXC_HOPLIMIT 0 -+#define ICMPV6_EXC_FRAGTIME 1 -+ -+/* Codes for Parameter Problem */ -+#define ICMPV6_HDR_FIELD 0 -+#define ICMPV6_UNK_NEXTHDR 1 -+#define ICMPV6_UNK_OPTION 2 -+ -+#if 0 -+struct __attribute__ ((__packed__)) icmpv6_hdr { -+ u8_t type; -+ u8_t code; -+ u16_t checksum; -+ union { -+ struct { -+ u16_t id; -+ u16_t sequence; -+ } echo; -+ u32_t gateway; -+ struct { -+ u16_t unused; -+ u16_t mtu; -+ } frag; -+ } un; -+}; -+#endif -+ -+void uip_neighbor_init(struct uip_stack *ustack); -+void uip_neighbor_add(struct uip_stack *ustack, -+ struct in6_addr *addr6, struct uip_eth_addr *addr); -+void uip_neighbor_update(struct uip_stack *ustack, struct in6_addr *addr6); -+int uip_neighbor_lookup(struct uip_stack *ustack, struct in6_addr *ipaddr, -+ uint8_t * mac_addr); -+void uip_neighbor_periodic(void); -+void uip_neighbor_out(struct uip_stack *ustack); -+ -+#endif /* __UIP-NEIGHBOR_H__ */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/uipopt.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/uipopt.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip/uipopt.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip/uipopt.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,537 @@ -+/** -+ * \defgroup uipopt Configuration options for uIP -+ * @{ -+ * -+ * uIP is configured using the per-project configuration file -+ * uipopt.h. This file contains all compile-time options for uIP and -+ * should be tweaked to match each specific project. The uIP -+ * distribution contains a documented example "uipopt.h" that can be -+ * copied and modified for each project. -+ * -+ * \note Most of the configuration options in the uipopt.h should not -+ * be changed, but rather the per-project uip-conf.h file. -+ */ -+ -+/** -+ * \file -+ * Configuration options for uIP. -+ * \author Adam Dunkels -+ * -+ * This file is used for tweaking various configuration options for -+ * uIP. You should make a copy of this file into one of your project's -+ * directories instead of editing this example "uipopt.h" file that -+ * comes with the uIP distribution. -+ */ -+ -+/* -+ * Copyright (c) 2001-2003, Adam Dunkels. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * This file is part of the uIP TCP/IP stack. -+ * -+ * $Id: uipopt.h,v 1.4 2006/06/12 08:00:31 adam Exp $ -+ * -+ */ -+ -+#ifndef __UIPOPT_H__ -+#define __UIPOPT_H__ -+ -+#ifndef UIP_LITTLE_ENDIAN -+#define UIP_LITTLE_ENDIAN 3412 -+#endif /* UIP_LITTLE_ENDIAN */ -+#ifndef UIP_BIG_ENDIAN -+#define UIP_BIG_ENDIAN 1234 -+#endif /* UIP_BIG_ENDIAN */ -+ -+#include "uip-conf.h" -+ -+/*------------------------------------------------------------------------------*/ -+ -+/** -+ * \name Static configuration options -+ * @{ -+ * -+ * These configuration options can be used for setting the IP address -+ * settings statically, but only if UIP_FIXEDADDR is set to 1. The -+ * configuration options for a specific node includes IP address, -+ * netmask and default router as well as the Ethernet address. The -+ * netmask, default router and Ethernet address are appliciable only -+ * if uIP should be run over Ethernet. -+ * -+ * All of these should be changed to suit your project. -+*/ -+ -+/** -+ * Determines if uIP should use a fixed IP address or not. -+ * -+ * If uIP should use a fixed IP address, the settings are set in the -+ * uipopt.h file. If not, the macros uip_sethostaddr(), -+ * uip_setdraddr() and uip_setnetmask() should be used instead. -+ * -+ * \hideinitializer -+ */ -+#define UIP_FIXEDADDR 0 -+ -+/** -+ * Ping IP address asignment. -+ * -+ * uIP uses a "ping" packets for setting its own IP address if this -+ * option is set. If so, uIP will start with an empty IP address and -+ * the destination IP address of the first incoming "ping" (ICMP echo) -+ * packet will be used for setting the hosts IP address. -+ * -+ * \note This works only if UIP_FIXEDADDR is 0. -+ * -+ * \hideinitializer -+ */ -+#ifdef UIP_CONF_PINGADDRCONF -+#define UIP_PINGADDRCONF UIP_CONF_PINGADDRCONF -+#else /* UIP_CONF_PINGADDRCONF */ -+#define UIP_PINGADDRCONF 0 -+#endif /* UIP_CONF_PINGADDRCONF */ -+ -+/** -+ * Specifies if the uIP ARP module should be compiled with a fixed -+ * Ethernet MAC address or not. -+ * -+ * If this configuration option is 0, the macro uip_setethaddr() can -+ * be used to specify the Ethernet address at run-time. -+ * -+ * \hideinitializer -+ */ -+#define UIP_FIXEDETHADDR 0 -+ -+/** @} */ -+/*------------------------------------------------------------------------------*/ -+/** -+ * \name IP configuration options -+ * @{ -+ * -+ */ -+/** -+ * The IP TTL (time to live) of IP packets sent by uIP. -+ * -+ * This should normally not be changed. -+ */ -+#define UIP_TTL 64 -+ -+/** -+ * Turn on support for IP packet reassembly. -+ * -+ * uIP supports reassembly of fragmented IP packets. This features -+ * requires an additonal amount of RAM to hold the reassembly buffer -+ * and the reassembly code size is approximately 700 bytes. The -+ * reassembly buffer is of the same size as the uip_buf buffer -+ * (configured by UIP_BUFSIZE). -+ * -+ * \note IP packet reassembly is not heavily tested. -+ * -+ * \hideinitializer -+ */ -+#define UIP_REASSEMBLY 0 -+ -+/** -+ * The maximum time an IP fragment should wait in the reassembly -+ * buffer before it is dropped. -+ * -+ */ -+#define UIP_REASS_MAXAGE 40 -+ -+/** @} */ -+ -+/*------------------------------------------------------------------------------*/ -+/** -+ * \name UDP configuration options -+ * @{ -+ */ -+ -+/** -+ * Toggles wether UDP support should be compiled in or not. -+ * -+ * \hideinitializer -+ */ -+#ifdef UIP_CONF_UDP -+#define UIP_UDP UIP_CONF_UDP -+#else /* UIP_CONF_UDP */ -+#define UIP_UDP 0 -+#endif /* UIP_CONF_UDP */ -+ -+/** -+ * Toggles if UDP checksums should be used or not. -+ * -+ * \note Support for UDP checksums is currently not included in uIP, -+ * so this option has no function. -+ * -+ * \hideinitializer -+ */ -+#ifdef UIP_CONF_UDP_CHECKSUMS -+#define UIP_UDP_CHECKSUMS UIP_CONF_UDP_CHECKSUMS -+#else -+#define UIP_UDP_CHECKSUMS 0 -+#endif -+ -+/** -+ * The maximum amount of concurrent UDP connections. -+ * -+ * \hideinitializer -+ */ -+#ifdef UIP_CONF_UDP_CONNS -+#define UIP_UDP_CONNS UIP_CONF_UDP_CONNS -+#else /* UIP_CONF_UDP_CONNS */ -+#define UIP_UDP_CONNS 10 -+#endif /* UIP_CONF_UDP_CONNS */ -+ -+/** -+ * The name of the function that should be called when UDP datagrams arrive. -+ * -+ * \hideinitializer -+ */ -+ -+/** @} */ -+/*------------------------------------------------------------------------------*/ -+/** -+ * \name TCP configuration options -+ * @{ -+ */ -+ -+/** -+ * Determines if support for opening connections from uIP should be -+ * compiled in. -+ * -+ * If the applications that are running on top of uIP for this project -+ * do not need to open outgoing TCP connections, this configration -+ * option can be turned off to reduce the code size of uIP. -+ * -+ * \hideinitializer -+ */ -+#define UIP_ACTIVE_OPEN 1 -+ -+/** -+ * The maximum number of simultaneously open TCP connections. -+ * -+ * Since the TCP connections are statically allocated, turning this -+ * configuration knob down results in less RAM used. Each TCP -+ * connection requires approximatly 30 bytes of memory. -+ * -+ * \hideinitializer -+ */ -+#ifndef UIP_CONF_MAX_CONNECTIONS -+#define UIP_CONNS 10 -+#else /* UIP_CONF_MAX_CONNECTIONS */ -+#define UIP_CONNS UIP_CONF_MAX_CONNECTIONS -+#endif /* UIP_CONF_MAX_CONNECTIONS */ -+ -+/** -+ * The maximum number of simultaneously listening TCP ports. -+ * -+ * Each listening TCP port requires 2 bytes of memory. -+ * -+ * \hideinitializer -+ */ -+#ifndef UIP_CONF_MAX_LISTENPORTS -+#define UIP_LISTENPORTS 20 -+#else /* UIP_CONF_MAX_LISTENPORTS */ -+#define UIP_LISTENPORTS UIP_CONF_MAX_LISTENPORTS -+#endif /* UIP_CONF_MAX_LISTENPORTS */ -+ -+/** -+ * Determines if support for TCP urgent data notification should be -+ * compiled in. -+ * -+ * Urgent data (out-of-band data) is a rarely used TCP feature that -+ * very seldom would be required. -+ * -+ * \hideinitializer -+ */ -+#define UIP_URGDATA 0 -+ -+/** -+ * The initial retransmission timeout counted in timer pulses. -+ * -+ * This should not be changed. -+ */ -+#define UIP_RTO 3 -+ -+/** -+ * The maximum number of times a segment should be retransmitted -+ * before the connection should be aborted. -+ * -+ * This should not be changed. -+ */ -+#define UIP_MAXRTX 8 -+ -+/** -+ * The maximum number of times a SYN segment should be retransmitted -+ * before a connection request should be deemed to have been -+ * unsuccessful. -+ * -+ * This should not need to be changed. -+ */ -+#define UIP_MAXSYNRTX 5 -+ -+/** -+ * The TCP maximum segment size. -+ * -+ * This is should not be to set to more than -+ * UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN. -+ */ -+#define UIP_TCP_MSS (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCP_IPv4_HLEN) -+ -+/** -+ * The size of the advertised receiver's window. -+ * -+ * Should be set low (i.e., to the size of the uip_buf buffer) is the -+ * application is slow to process incoming data, or high (32768 bytes) -+ * if the application processes data quickly. -+ * -+ * \hideinitializer -+ */ -+#ifndef UIP_CONF_RECEIVE_WINDOW -+#define UIP_RECEIVE_WINDOW UIP_TCP_MSS -+#else -+#define UIP_RECEIVE_WINDOW UIP_CONF_RECEIVE_WINDOW -+#endif -+ -+/** -+ * How long a connection should stay in the TIME_WAIT state. -+ * -+ * This configiration option has no real implication, and it should be -+ * left untouched. -+ */ -+#define UIP_TIME_WAIT_TIMEOUT 120 -+ -+/** @} */ -+/*------------------------------------------------------------------------------*/ -+/** -+ * \name ARP configuration options -+ * @{ -+ */ -+ -+/** -+ * The size of the ARP table. -+ * -+ * This option should be set to a larger value if this uIP node will -+ * have many connections from the local network. -+ * -+ * \hideinitializer -+ */ -+#ifdef UIP_CONF_ARPTAB_SIZE -+#define UIP_ARPTAB_SIZE UIP_CONF_ARPTAB_SIZE -+#else -+#define UIP_ARPTAB_SIZE 8 -+#endif -+ -+/** -+ * The maxium age of ARP table entries measured in 10ths of seconds. -+ * -+ * An UIP_ARP_MAXAGE of 120 corresponds to 20 minutes (BSD -+ * default). -+ * Changed the default to 30 which corresponds to 5 minutes (Linux default) -+ */ -+#define UIP_ARP_MAXAGE 30 -+ -+/** @} */ -+ -+/*------------------------------------------------------------------------------*/ -+ -+/** -+ * \name General configuration options -+ * @{ -+ */ -+ -+/** -+ * The size of the uIP packet buffer. -+ * -+ * The uIP packet buffer should not be smaller than 60 bytes, and does -+ * not need to be larger than 1500 bytes. Lower size results in lower -+ * TCP throughput, larger size results in higher TCP throughput. -+ * -+ * \hideinitializer -+ */ -+#ifndef UIP_CONF_BUFFER_SIZE -+#define UIP_BUFSIZE 400 -+#else /* UIP_CONF_BUFFER_SIZE */ -+#define UIP_BUFSIZE UIP_CONF_BUFFER_SIZE -+#endif /* UIP_CONF_BUFFER_SIZE */ -+ -+/** -+ * Determines if statistics support should be compiled in. -+ * -+ * The statistics is useful for debugging and to show the user. -+ * -+ * \hideinitializer -+ */ -+#ifndef UIP_CONF_STATISTICS -+#define UIP_STATISTICS 0 -+#else /* UIP_CONF_STATISTICS */ -+#define UIP_STATISTICS UIP_CONF_STATISTICS -+#endif /* UIP_CONF_STATISTICS */ -+ -+/** -+ * Determines if logging of certain events should be compiled in. -+ * -+ * This is useful mostly for debugging. The function uip_log() -+ * must be implemented to suit the architecture of the project, if -+ * logging is turned on. -+ * -+ * \hideinitializer -+ */ -+#ifndef UIP_CONF_LOGGING -+#define UIP_LOGGING 0 -+#else /* UIP_CONF_LOGGING */ -+#define UIP_LOGGING UIP_CONF_LOGGING -+#endif /* UIP_CONF_LOGGING */ -+ -+/** -+ * Broadcast support. -+ * -+ * This flag configures IP broadcast support. This is useful only -+ * together with UDP. -+ * -+ * \hideinitializer -+ * -+ */ -+#ifndef UIP_CONF_BROADCAST -+#define UIP_BROADCAST 0 -+#else /* UIP_CONF_BROADCAST */ -+#define UIP_BROADCAST UIP_CONF_BROADCAST -+#endif /* UIP_CONF_BROADCAST */ -+ -+/** -+ * Print out a uIP log message. -+ * -+ * This function must be implemented by the module that uses uIP, and -+ * is called by uIP whenever a log message is generated. -+ */ -+void uip_log(char *msg); -+ -+/** -+ * The link level header length. -+ * -+ * This is the offset into the uip_buf where the IP header can be -+ * found. For Ethernet, this should be set to 14. For SLIP, this -+ * should be set to 0. -+ * -+ * \hideinitializer -+ */ -+#ifdef UIP_CONF_LLH_LEN -+#define UIP_LLH_LEN UIP_CONF_LLH_LEN -+#else /* UIP_CONF_LLH_LEN */ -+#define UIP_LLH_LEN 14 -+#endif /* UIP_CONF_LLH_LEN */ -+ -+#if 0 -+/** @} */ -+/*------------------------------------------------------------------------------*/ -+/** -+ * \name CPU architecture configuration -+ * @{ -+ * -+ * The CPU architecture configuration is where the endianess of the -+ * CPU on which uIP is to be run is specified. Most CPUs today are -+ * little endian, and the most notable exception are the Motorolas -+ * which are big endian. The BYTE_ORDER macro should be changed to -+ * reflect the CPU architecture on which uIP is to be run. -+ */ -+ -+/** -+ * The byte order of the CPU architecture on which uIP is to be run. -+ * -+ * This option can be either BIG_ENDIAN (Motorola byte order) or -+ * LITTLE_ENDIAN (Intel byte order). -+ * -+ * \hideinitializer -+ */ -+#ifdef UIP_CONF_BYTE_ORDER -+#define UIP_BYTE_ORDER UIP_CONF_BYTE_ORDER -+#else /* UIP_CONF_BYTE_ORDER */ -+#define UIP_BYTE_ORDER UIP_LITTLE_ENDIAN -+#endif /* UIP_CONF_BYTE_ORDER */ -+#endif -+ -+/** @} */ -+/*------------------------------------------------------------------------------*/ -+ -+/** -+ * \name Appication specific configurations -+ * @{ -+ * -+ * An uIP application is implemented using a single application -+ * function that is called by uIP whenever a TCP/IP event occurs. The -+ * name of this function must be registered with uIP at compile time -+ * using the UIP_APPCALL definition. -+ * -+ * uIP applications can store the application state within the -+ * uip_conn structure by specifying the type of the application -+ * structure by typedef:ing the type uip_tcp_appstate_t and uip_udp_appstate_t. -+ * -+ * The file containing the definitions must be included in the -+ * uipopt.h file. -+ * -+ * The following example illustrates how this can look. -+ \code -+ -+void httpd_appcall(void); -+#define UIP_APPCALL httpd_appcall -+ -+struct httpd_state { -+ u8_t state; -+ u16_t count; -+ char *dataptr; -+ char *script; -+}; -+typedef struct httpd_state uip_tcp_appstate_t -+ \endcode -+ */ -+ -+/** -+ * \var #define UIP_APPCALL -+ * -+ * The name of the application function that uIP should call in -+ * response to TCP/IP events. -+ * -+ */ -+ -+/** -+ * \var typedef uip_tcp_appstate_t -+ * -+ * The type of the application state that is to be stored in the -+ * uip_conn structure. This usually is typedef:ed to a struct holding -+ * application state information. -+ */ -+ -+/** -+ * \var typedef uip_udp_appstate_t -+ * -+ * The type of the application state that is to be stored in the -+ * uip_conn structure. This usually is typedef:ed to a struct holding -+ * application state information. -+ */ -+/** @} */ -+/** @} */ -+ -+#endif /* __UIPOPT_H__ */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip-1.0-changelog.txt open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip-1.0-changelog.txt ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/uip-1.0-changelog.txt 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/uip-1.0-changelog.txt 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,98 @@ -+* A new API: protosockets that are similar to BSD sockets but does not -+ require any underlying multithreading system. -+ -+* Very rudimentary IPv6 support -+ -+* New application: DHCP client. Web server rewritten with protosockets. -+ -+* Removed uIP zero-copy functionality in order to simplify uIP device -+ driver coding: outbound packets are now *always* stored in full in -+ the uip_buf buffer. -+ -+* Checksum computation is now part of uip.c, but it still is possible -+ to implement them in assembly code by specifying a configuration -+ option. Checksum code now runs on architectures with 2-byte alignment. -+ -+* Added TCP persistent timer. -+ -+* Made all IP address representations use the new uip_ipaddr_ip -+ datatype for clarity. -+ -+* Updated window behavior so that sending to a host with a small open -+ window works better now. -+ -+* UDP API change: uip_udp_new() now takes port numbers in network byte -+ order like TCP functions. -+ -+* Allow reception of packets when no IP address is configured to make -+ DHCP work. -+ -+* Moved Ethernet address into main uIP module from ARP module. -+ -+* Made constants explicit #defines and moved them out of the code -+ (header sizes, TCP options, TCP header length field). -+ -+* If uip_len is less than that reported by the IP header, the packet -+ is discarded. If uip_len is greater than the length reported by the -+ IP header, uip_len is adjusted. -+ -+* Moved header size definitions into header file. -+ -+* Added uIP call for polling an application without triggering any -+ timer events. Removed redundant assignments of uip_len and uip_slen. -+ -+* Removed compiler warning about icmp_input label being defined when -+ UIP_PINGADDRCONF was not used. -+ -+* Added UIP_APPDATA_SIZE macro that holds the available buffer size -+ for user data. -+ -+* Added uip_udp_bind() call. -+ -+* Moved checksum code into main uIP module. -+ -+* Switched the TCP, UDP and IP header structures to be structs rather -+ than typedefs. -+ -+* Prefixed TCP state names with UIP_ to avoid name space -+ contamination. -+ -+* Changed declarations of uip_appdatap and friends to void * to avoid -+ explicit typecasts. -+ -+* Bugfixes -+ -+ o TCP: Fixed bug with high byte of peer window size. -+ -+ o TCP: Fixed bug that in some cases prevented concurrent reception and -+ transmission of TCP data. -+ -+ o TCP: uip_connect() didn't correctly calculate age of TIME_WAIT -+ connections. -+ -+ o TCP: Array index for uip_conns[] array was out of bounds in -+ comparison. Comparison changed to make index within bounds. -+ -+ o TCP: if the remote host crashes and tries to reestablish an old -+ connection, uIP should respond with an ACK with the correct -+ sequence and acknowledgment numbers, to which the remote host -+ should respond with an ACK. uIP did not respond with the correct -+ ACK. -+ -+ o TCP: Fixed check for SYNACK segment: now checks only relevant TCP -+ control flags and discards flags reserved for future expansion. -+ -+ o TCP: Fixed bug where uIP did not inform application that a connection -+ had been aborted during an active open. -+ -+ o TCP: FIN segment was accepted even though application had stopped -+ incoming data with uip_stop(). -+ -+ o TCP: A FINACK segment would not always correctly acknowledge data. -+ -+ o UDP: checksums are now calculated after all fields have been -+ filled in. -+ -+ o UDP: network byte order on lastport in uip_udp_new(). -+ -+ o IP: memset() bugs in IP fragment reassembly code fixed. -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/build_date.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/build_date.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/build_date.c 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/build_date.c 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1 @@ -+char *build_date ="Thu May 5 12:17:42 PDT 2011"; -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/build_date.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/build_date.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/build_date.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/build_date.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1 @@ -+char *build_date; -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/clock-arch.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/clock-arch.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/clock-arch.c 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/clock-arch.c 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,55 @@ -+/* -+ * Copyright (c) 2006, Swedish Institute of Computer Science. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. Neither the name of the Institute nor the names of its contributors -+ * may be used to endorse or promote products derived from this software -+ * without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE -+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ * This file is part of the uIP TCP/IP stack -+ * -+ * $Id: clock-arch.c,v 1.2 2006/06/12 08:00:31 adam Exp $ -+ */ -+ -+/** -+ * \file -+ * Implementation of architecture-specific clock functionality -+ * \author -+ * Adam Dunkels -+ */ -+ -+#include "clock-arch.h" -+#include -+ -+/*---------------------------------------------------------------------------*/ -+clock_time_t clock_time(void) -+{ -+ struct timeval tv; -+ struct timezone tz; -+ -+ gettimeofday(&tv, &tz); -+ -+ return tv.tv_sec * 1000 + tv.tv_usec / 1000; -+} -+ -+/*---------------------------------------------------------------------------*/ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/clock-arch.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/clock-arch.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/clock-arch.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/clock-arch.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,40 @@ -+/* -+ * Copyright (c) 2006, Swedish Institute of Computer Science. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. Neither the name of the Institute nor the names of its contributors -+ * may be used to endorse or promote products derived from this software -+ * without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE -+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ * This file is part of the uIP TCP/IP stack -+ * -+ * $Id: clock-arch.h,v 1.2 2006/06/12 08:00:31 adam Exp $ -+ */ -+ -+#ifndef __CLOCK_ARCH_H__ -+#define __CLOCK_ARCH_H__ -+ -+typedef int clock_time_t; -+#define CLOCK_CONF_SECOND 1000 -+ -+#endif /* __CLOCK_ARCH_H__ */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/iscsid_ipc.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/iscsid_ipc.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/iscsid_ipc.c 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/iscsid_ipc.c 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,823 @@ -+/* -+ * Copyright (c) 2009-2011, Broadcom Corporation -+ * -+ * Written by: Benjamin Li (benli@broadcom.com) -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * iscsi_ipc.c - Generic NIC management/utility functions -+ * -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#define PFX "iscsi_ipc " -+ -+/* TODO fix me */ -+#define IFNAMSIZ 15 -+ -+#include "nic.h" -+#include "nic_utils.h" -+#include "nic_vlan.h" -+#include "options.h" -+#include "mgmt_ipc.h" -+#include "iscsid_ipc.h" -+#include "uip.h" -+#include "uip_mgmt_ipc.h" -+ -+#include "logger.h" -+#include "uip.h" -+ -+/* private iscsid options stucture */ -+struct iscsid_options { -+ int fd; -+ pthread_t thread; -+}; -+ -+struct ip_addr_mask { -+ int ip_type; -+ union { -+ struct in_addr addr4; -+ struct in6_addr addr6; -+ } addr; -+ union { -+ struct in_addr nm4; -+ struct in6_addr nm6; -+ } netmask; -+#define addr4 addr.addr4 -+#define addr6 addr.addr6 -+#define nm4 netmask.nm4 -+#define nm6 netmask.nm6 -+}; -+ -+/****************************************************************************** -+ * iscsid_ipc Constants -+ *****************************************************************************/ -+static const char uio_udev_path_template[] = "/dev/uio%d"; -+ -+/****************************************************************************** -+ * Globals -+ *****************************************************************************/ -+static struct iscsid_options iscsid_opts = { -+ .fd = INVALID_FD, -+ .thread = INVALID_THREAD, -+}; -+ -+/****************************************************************************** -+ * iscsid Functions -+ *****************************************************************************/ -+ -+static void *enable_nic_thread(void *data) -+{ -+ nic_t *nic = (nic_t *) data; -+ -+ prepare_nic_thread(nic); -+ LOG_INFO(PFX "%s: started NIC enable thread state: 0x%x", -+ nic->log_name, nic->state) -+ -+ /* Enable the NIC */ -+ nic_enable(nic); -+ -+ pthread_exit(NULL); -+} -+ -+static int decode_cidr(char *in_ipaddr_str, struct ip_addr_mask *ipam, -+ int *prefix_len) -+{ -+ int rc = 0, i; -+ char *tmp, *tok; -+ char ipaddr_str[NI_MAXHOST]; -+ char str[INET6_ADDRSTRLEN]; -+ int keepbits = 0; -+ struct in_addr ia; -+ struct in6_addr ia6; -+ -+ memset(ipam, 0, sizeof(struct ip_addr_mask)); -+ if (strlen(in_ipaddr_str) > NI_MAXHOST) -+ strncpy(ipaddr_str, in_ipaddr_str, NI_MAXHOST); -+ else -+ strcpy(ipaddr_str, in_ipaddr_str); -+ -+ /* Find the CIDR if any */ -+ tmp = strchr(ipaddr_str, '/'); -+ if (tmp) { -+ /* CIDR found, now decode, tmpbuf = ip, tmp = netmask */ -+ tmp = ipaddr_str; -+ tok = strsep(&tmp, "/"); -+ LOG_INFO(PFX "in cidr: bitmask '%s' ip '%s'", tmp, tok); -+ keepbits = atoi(tmp); -+ strcpy(ipaddr_str, tok); -+ } -+ -+ /* Determine if the IP address passed from the iface file is -+ * an IPv4 or IPv6 address */ -+ rc = inet_pton(AF_INET, ipaddr_str, &ipam->addr6); -+ if (rc == 0) { -+ /* Test to determine if the addres is an IPv6 address */ -+ rc = inet_pton(AF_INET6, ipaddr_str, &ipam->addr6); -+ if (rc == 0) { -+ LOG_ERR(PFX "Could not parse IP address: '%s'", -+ ipaddr_str); -+ goto out; -+ } -+ ipam->ip_type = AF_INET6; -+ if (keepbits > 128) { -+ LOG_ERR(PFX "CIDR netmask > 128 for IPv6: %d(%s)", -+ keepbits, tmp); -+ goto out; -+ } -+ if (!keepbits) { -+ /* Default prefix mask to 64 */ -+ memcpy(&ipam->nm6.s6_addr, all_zeroes_addr6, -+ sizeof(struct in6_addr)); -+ for (i = 0; i < 2; i++) -+ ipam->nm6.s6_addr32[i] = 0xffffffff; -+ goto out; -+ } -+ *prefix_len = keepbits; -+ memcpy(&ia6.s6_addr, all_zeroes_addr6, -+ sizeof(struct in6_addr)); -+ for (i = 0; i < 4; i++) { -+ if (keepbits < 32) { -+ ia6.s6_addr32[i] = keepbits > 0 ? -+ 0x00 - (1 << (32 - keepbits)) : 0; -+ break; -+ } else -+ ia6.s6_addr32[i] = 0xFFFFFFFF; -+ keepbits -= 32; -+ } -+ ipam->nm6 = ia6; -+ if (inet_ntop(AF_INET6, &ia6, str, sizeof(str))) -+ LOG_INFO(PFX "Using netmask: %s", str); -+ } else { -+ ipam->ip_type = AF_INET; -+ rc = inet_pton(AF_INET, ipaddr_str, &ipam->addr4); -+ -+ if (keepbits > 32) { -+ LOG_ERR(PFX "CIDR netmask > 32 for IPv4: %d(%s)", -+ keepbits, tmp); -+ goto out; -+ } -+ ia.s_addr = keepbits > 0 ? 0x00 - (1 << (32 - keepbits)) : 0; -+ ipam->nm4.s_addr = htonl(ia.s_addr); -+ LOG_INFO(PFX "Using netmask: %s", inet_ntoa(ipam->nm4)); -+ } -+out: -+ return rc; -+} -+ -+static int parse_iface(void *arg) -+{ -+ int rc; -+ nic_t *nic = NULL; -+ nic_interface_t *nic_iface, *next_nic_iface; -+ char *transport_name; -+ size_t transport_name_size; -+ nic_lib_handle_t *handle; -+ iscsid_uip_broadcast_t *data; -+ short int vlan; -+ char ipv6_buf_str[INET6_ADDRSTRLEN]; -+ int request_type = 0; -+ struct in_addr netmask; -+ int i, prefix_len = 64; -+ struct ip_addr_mask ipam; -+ -+ data = (iscsid_uip_broadcast_t *) arg; -+ -+ LOG_INFO(PFX "Received request for '%s' to set IP address: '%s' " -+ "VLAN: '%s'", -+ data->u.iface_rec.rec.netdev, -+ data->u.iface_rec.rec.ipaddress, data->u.iface_rec.rec.vlan); -+ -+ vlan = atoi(data->u.iface_rec.rec.vlan); -+ if ((valid_vlan(vlan) == 0) && -+ (strcmp(data->u.iface_rec.rec.vlan, "") != 0)) { -+ LOG_ERR(PFX "Invalid VLAN tag: '%s'", -+ data->u.iface_rec.rec.vlan) -+ rc = -EIO; -+ goto early_exit; -+ } -+ -+ /* Detect for CIDR notation and strip off the netmask if present */ -+ rc = decode_cidr(data->u.iface_rec.rec.ipaddress, &ipam, &prefix_len); -+ if (rc && !ipam.ip_type) { -+ LOG_ERR(PFX "decode_cidr: rc=%d, ipam.ip_type=%d", -+ rc, ipam.ip_type) -+ goto early_exit; -+ } -+ if (ipam.ip_type == AF_INET6) -+ inet_ntop(AF_INET6, &ipam.addr6, ipv6_buf_str, -+ sizeof(ipv6_buf_str)); -+ -+ for (i = 0; i < 10; i++) { -+ struct timespec sleep_req, sleep_rem; -+ -+ if (pthread_mutex_trylock(&nic_list_mutex) == 0) -+ break; -+ -+ sleep_req.tv_sec = 0; -+ sleep_req.tv_nsec = 100000; -+ nanosleep(&sleep_req, &sleep_rem); -+ } -+ -+ if (i >= 10) { -+ LOG_WARN(PFX "Could not aquire nic_list_mutex lock"); -+ -+ rc = -EIO; -+ goto early_exit; -+ } -+ -+ /* Check if we can find the NIC device using the netdev -+ * name */ -+ rc = from_netdev_name_find_nic(data->u.iface_rec.rec.netdev, &nic); -+ -+ if (rc != 0) { -+ LOG_WARN(PFX "Couldn't find NIC: %s, creating an instance", -+ data->u.iface_rec.rec.netdev); -+ -+ nic = nic_init(); -+ if (nic == NULL) { -+ LOG_ERR(PFX "Couldn't allocate space for NIC %s", -+ data->u.iface_rec.rec.netdev); -+ -+ rc = -ENOMEM; -+ goto done; -+ } -+ -+ strncpy(nic->eth_device_name, -+ data->u.iface_rec.rec.netdev, -+ sizeof(nic->eth_device_name)); -+ nic->config_device_name = nic->eth_device_name; -+ nic->log_name = nic->eth_device_name; -+ -+ if (nic_fill_name(nic) != 0) { -+ free(nic); -+ rc = -EIO; -+ goto done; -+ } -+ -+ nic_add(nic); -+ } else { -+ LOG_INFO(PFX " %s, using existing NIC", -+ data->u.iface_rec.rec.netdev); -+ } -+ -+ if (nic->flags & NIC_GOING_DOWN) { -+ rc = -EIO; -+ LOG_INFO(PFX "nic->flags GOING DOWN"); -+ goto done; -+ } -+ -+ /* If we retry too many times allow iscsid to to timeout */ -+ if (nic->pending_count > 1000) { -+ LOG_WARN(PFX "%s: pending count excceded 1000", nic->log_name); -+ -+ pthread_mutex_lock(&nic->nic_mutex); -+ nic->pending_count = 0; -+ nic->flags &= ~NIC_ENABLED_PENDING; -+ pthread_mutex_unlock(&nic->nic_mutex); -+ -+ rc = 0; -+ goto done; -+ } -+ -+ if (nic->flags & NIC_ENABLED_PENDING) { -+ struct timespec sleep_req, sleep_rem; -+ -+ sleep_req.tv_sec = 0; -+ sleep_req.tv_nsec = 100000; -+ nanosleep(&sleep_req, &sleep_rem); -+ -+ pthread_mutex_lock(&nic->nic_mutex); -+ nic->pending_count++; -+ pthread_mutex_unlock(&nic->nic_mutex); -+ -+ LOG_INFO(PFX "%s: enabled pending", nic->log_name); -+ rc = -EAGAIN; -+ goto done; -+ } -+ -+ prepare_library(nic); -+ -+ /* Sanity Check to ensure the transport names are the same */ -+ handle = nic->nic_library; -+ if (handle != NULL) { -+ (*handle->ops->lib_ops.get_transport_name) (&transport_name, -+ &transport_name_size); -+ -+ if (strncmp(transport_name, -+ data->u.iface_rec.rec.transport_name, -+ transport_name_size) != 0) { -+ LOG_ERR(PFX "%s Transport name is not equal " -+ "expected: %s got: %s", -+ nic->log_name, -+ data->u.iface_rec.rec.transport_name, -+ transport_name); -+ } -+ } else { -+ LOG_ERR(PFX "%s Couldn't find nic library ", nic->log_name); -+ rc = -EIO; -+ goto done; -+ } -+ -+ LOG_INFO(PFX "%s library set using transport_name %s", -+ nic->log_name, transport_name); -+ -+ /* Create the network interface if it doesn't exist */ -+ nic_iface = nic_find_nic_iface_protocol(nic, vlan, ipam.ip_type); -+ if (nic_iface == NULL) { -+ LOG_INFO(PFX "%s couldn't find VLAN %d interface with " -+ "ip_type: 0x%x creating it", -+ nic->log_name, vlan, ipam.ip_type); -+ -+ /* Create the vlan interface */ -+ nic_iface = nic_iface_init(); -+ -+ if (nic_iface == NULL) { -+ LOG_ERR(PFX "Couldn't allocate nic_iface for VLAN: %d", -+ nic_iface, vlan); -+ goto done; -+ } -+ -+ nic_iface->protocol = ipam.ip_type; -+ nic_iface->vlan_id = vlan; -+ nic_add_nic_iface(nic, nic_iface); -+ -+ persist_all_nic_iface(nic); -+ -+ LOG_INFO(PFX "%s: created network interface", nic->log_name); -+ } else { -+ LOG_INFO(PFX "%s: using existing network interface", -+ nic->log_name); -+ } -+ -+ /* Determine how to configure the IP address */ -+ if (ipam.ip_type == AF_INET) { -+ if (memcmp(&ipam.addr4, -+ all_zeroes_addr4, sizeof(uip_ip4addr_t)) == 0) { -+ LOG_INFO(PFX "%s: requesting configuration using DHCP", -+ nic->log_name); -+ request_type = IPV4_CONFIG_DHCP; -+ } else { -+ LOG_INFO(PFX "%s: requesting configuration using " -+ "static IP address", nic->log_name); -+ request_type = IPV4_CONFIG_STATIC; -+ } -+ } else if (ipam.ip_type == AF_INET6) { -+ if (memcmp(&ipam.addr6, -+ all_zeroes_addr6, sizeof(uip_ip6addr_t)) == 0) { -+ LOG_INFO(PFX -+ "%s: requesting configuration using DHCPv6", -+ nic->log_name); -+ request_type = IPV6_CONFIG_DHCP; -+ } else { -+ LOG_INFO(PFX "%s: request configuration using static " -+ "IPv6 address: '%s'", -+ nic->log_name, ipv6_buf_str); -+ request_type = IPV6_CONFIG_STATIC; -+ } -+ } else { -+ LOG_ERR(PFX "%s: unknown ip_type to configure: 0x%x", -+ nic->log_name, ipam.ip_type); -+ -+ rc = -EIO; -+ goto done; -+ } -+ -+ if (nic_iface->ustack.ip_config == request_type) { -+ if (request_type == IPV4_CONFIG_STATIC) { -+ if (memcmp(nic_iface->ustack.hostaddr, &ipam.addr4, -+ sizeof(struct in_addr))) -+ goto diff; -+ } else if (request_type == IPV6_CONFIG_STATIC) { -+ if (memcmp(nic_iface->ustack.hostaddr6, &ipam.addr6, -+ sizeof(struct in6_addr))) -+ goto diff; -+ } -+ LOG_INFO(PFX "%s: IP configuration didn't change using 0x%x", -+ nic->log_name, nic_iface->ustack.ip_config); -+ goto enable_nic; -+diff: -+ /* Disable the NIC */ -+ nic_disable(nic, 0); -+ } else { -+ if (request_type == IPV4_CONFIG_DHCP -+ || request_type == IPV6_CONFIG_DHCP) -+ nic->flags |= NIC_RESET_UIP; -+ -+ /* Disable the NIC */ -+ nic_disable(nic, 0); -+ } -+ -+ /* Check to see if this is using DHCP or if this is -+ * a static IPv4 address. This is done by checking -+ * if the IP address is equal to 0.0.0.0. If it is -+ * then the user has specified to use DHCP. If not -+ * then the user has spcicied to use a static IP address -+ * an the default netmask will be used */ -+ switch (request_type) { -+ case IPV4_CONFIG_DHCP: -+ memset(nic_iface->ustack.hostaddr, 0, sizeof(struct in_addr)); -+ LOG_INFO(PFX "%s: configuring using DHCP", nic->log_name); -+ nic_iface->ustack.ip_config = IPV4_CONFIG_DHCP; -+ -+ break; -+ case IPV4_CONFIG_STATIC: -+ memcpy(nic_iface->ustack.hostaddr, &ipam.addr4, -+ sizeof(struct in_addr)); -+ LOG_INFO(PFX "%s: configuring using static IP " -+ "IPv4 address :%s ", -+ nic->log_name, inet_ntoa(ipam.addr4)); -+ netmask.s_addr = ipam.nm4.s_addr; -+ if (!netmask.s_addr) -+ netmask.s_addr = -+ calculate_default_netmask(ipam.addr4.s_addr); -+ memcpy(nic_iface->ustack.netmask, -+ &netmask, sizeof(netmask.s_addr)); -+ LOG_INFO(PFX " netmask :%s", inet_ntoa(netmask)); -+ -+ nic_iface->ustack.ip_config = IPV4_CONFIG_STATIC; -+ break; -+ case IPV6_CONFIG_DHCP: -+ memset(nic_iface->ustack.hostaddr6, 0, -+ sizeof(struct in6_addr)); -+ nic_iface->ustack.prefix_len = prefix_len; -+ if (ipam.nm6.s6_addr[0] | ipam.nm6.s6_addr[1] | -+ ipam.nm6.s6_addr[2] | ipam.nm6.s6_addr[3] | -+ ipam.nm6.s6_addr[4] | ipam.nm6.s6_addr[5] | -+ ipam.nm6.s6_addr[6] | ipam.nm6.s6_addr[7]) -+ memcpy(nic_iface->ustack.netmask6, -+ &ipam.nm6, sizeof(struct in6_addr)); -+ LOG_INFO(PFX "%s: configuring using DHCPv6", -+ nic->log_name); -+ nic_iface->ustack.ip_config = IPV6_CONFIG_DHCP; -+ break; -+ case IPV6_CONFIG_STATIC: -+ memcpy(nic_iface->ustack.hostaddr6, &ipam.addr6, -+ sizeof(struct in6_addr)); -+ -+ nic_iface->ustack.prefix_len = prefix_len; -+ if (ipam.nm6.s6_addr[0] | ipam.nm6.s6_addr[1] | -+ ipam.nm6.s6_addr[2] | ipam.nm6.s6_addr[3] | -+ ipam.nm6.s6_addr[4] | ipam.nm6.s6_addr[5] | -+ ipam.nm6.s6_addr[6] | ipam.nm6.s6_addr[7]) -+ memcpy(nic_iface->ustack.netmask6, -+ &ipam.nm6, sizeof(struct in6_addr)); -+ -+ LOG_INFO(PFX "%s: configuring using static IP " -+ "IPv6 address: '%s'", nic->log_name, ipv6_buf_str); -+ -+ nic_iface->ustack.ip_config = IPV6_CONFIG_STATIC; -+ break; -+ default: -+ LOG_INFO(PFX "%s: Unknown request type: 0x%x", -+ nic->log_name, request_type); -+ -+ } -+ -+ /* Configuration changed, do VLAN WA */ -+ next_nic_iface = nic_iface->next; -+ while (next_nic_iface) { -+ if (next_nic_iface->vlan_id) { -+ /* TODO: When VLAN support is placed in the iface file -+ * revisit this code */ -+ next_nic_iface->ustack.ip_config = -+ nic_iface->ustack.ip_config; -+ memcpy(next_nic_iface->ustack.hostaddr, -+ nic_iface->ustack.hostaddr, -+ sizeof(nic_iface->ustack.hostaddr)); -+ memcpy(next_nic_iface->ustack.netmask, -+ nic_iface->ustack.netmask, -+ sizeof(nic_iface->ustack.netmask)); -+ memcpy(next_nic_iface->ustack.hostaddr6, -+ nic_iface->ustack.hostaddr6, -+ sizeof(nic_iface->ustack.hostaddr6)); -+ } -+ next_nic_iface = next_nic_iface->next; -+ } -+ -+enable_nic: -+ if (nic->state & NIC_STOPPED) { -+ pthread_mutex_lock(&nic->nic_mutex); -+ nic->flags |= NIC_ENABLED_PENDING; -+ pthread_mutex_unlock(&nic->nic_mutex); -+ -+ /* This thread will be thrown away when completed */ -+ rc = pthread_create(&nic->enable_thread, NULL, -+ enable_nic_thread, (void *)nic); -+ if (rc != 0) -+ LOG_WARN(PFX "%s: failed starting enable NIC thread\n", -+ nic->log_name); -+ -+ rc = -EAGAIN; -+ } else { -+ LOG_INFO(PFX "%s: NIC already enabled " -+ "flags: 0x%x state: 0x%x\n", -+ nic->log_name, nic->flags, nic->state); -+ rc = 0; -+ } -+ -+ LOG_INFO(PFX "ISCSID_UIP_IPC_GET_IFACE: command: %x " -+ "name: %s, netdev: %s ipaddr: %s vlan: %d transport_name:%s", -+ data->header.command, data->u.iface_rec.rec.name, -+ data->u.iface_rec.rec.netdev, -+ (ipam.ip_type == -+ AF_INET) ? inet_ntoa(ipam.addr4) : ipv6_buf_str, vlan, -+ data->u.iface_rec.rec.transport_name); -+ -+done: -+ pthread_mutex_unlock(&nic_list_mutex); -+ -+early_exit: -+ return rc; -+} -+ -+/** -+ * process_iscsid_broadcast() - This function is used to process the -+ * broadcast messages from iscsid -+ */ -+int process_iscsid_broadcast(int s2) -+{ -+ int rc = 0; -+ iscsid_uip_broadcast_t *data; -+ iscsid_uip_rsp_t rsp; -+ FILE *fd; -+ size_t size; -+ iscsid_uip_cmd_e cmd; -+ uint32_t payload_len; -+ -+ fd = fdopen(s2, "r+"); -+ if (fd == NULL) { -+ LOG_ERR(PFX "Couldn't open file descriptor: %d(%s)", -+ errno, strerror(errno)); -+ return -EIO; -+ } -+ -+ /* This will be freed by parse_iface_thread() */ -+ data = (iscsid_uip_broadcast_t *) malloc(sizeof(*data)); -+ if (data == NULL) { -+ LOG_ERR(PFX "Couldn't allocate memory for iface data"); -+ return -ENOMEM; -+ } -+ memset(data, 0, sizeof(*data)); -+ -+ size = fread(data, sizeof(iscsid_uip_broadcast_header_t), 1, fd); -+ if (size == -1) { -+ LOG_ERR(PFX "Could not read request: %d(%s)", -+ errno, strerror(errno)); -+ rc = ferror(fd); -+ goto error; -+ } -+ -+ cmd = data->header.command; -+ payload_len = data->header.payload_len; -+ -+ LOG_DEBUG(PFX "recv iscsid request: cmd: %d, payload_len: %d", -+ cmd, payload_len); -+ -+ size = fread(&data->u.iface_rec, payload_len, 1, fd); -+ if (size == -1) { -+ LOG_ERR(PFX "Could not read data: %d(%s)", -+ errno, strerror(errno)); -+ goto error; -+ } -+ -+ switch (cmd) { -+ case ISCSID_UIP_IPC_GET_IFACE: -+ rc = parse_iface(data); -+ switch (rc) { -+ case 0: -+ rsp.command = cmd; -+ rsp.err = ISCISD_UIP_MGMT_IPC_DEVICE_UP; -+ break; -+ case -EAGAIN: -+ rsp.command = cmd; -+ rsp.err = ISCISD_UIP_MGMT_IPC_DEVICE_INITIALIZING; -+ break; -+ default: -+ rsp.command = cmd; -+ rsp.err = ISCISD_UIP_MGMT_IPC_ERR; -+ } -+ -+ break; -+ default: -+ LOG_WARN(PFX "Unknown iscsid broadcast command: %x", -+ data->header.command); -+ -+ /* Send a response back to iscsid to tell it the -+ operation succeeded */ -+ rsp.command = cmd; -+ rsp.err = ISCSID_UIP_MGMT_IPC_OK; -+ break; -+ } -+ -+ size = fwrite(&rsp, sizeof(rsp), 1, fd); -+ if (size == -1) { -+ LOG_ERR(PFX "Could not send response: %d(%s)", -+ errno, strerror(errno)); -+ rc = ferror(fd); -+ } -+ -+error: -+ free(data); -+ fclose(fd); -+ -+ return rc; -+} -+ -+static void iscsid_loop_close(void *arg) -+{ -+ close(iscsid_opts.fd); -+ -+ LOG_INFO(PFX "iSCSI daemon socket closed"); -+} -+ -+/** -+ * iscsid_loop() - This is the function which will process the broadcast -+ * messages from iscsid -+ * -+ */ -+static void *iscsid_loop(void *arg) -+{ -+ int rc; -+ sigset_t set; -+ -+ pthread_cleanup_push(iscsid_loop_close, arg); -+ -+ sigfillset(&set); -+ rc = pthread_sigmask(SIG_BLOCK, &set, NULL); -+ if (rc != 0) { -+ LOG_ERR(PFX -+ "Couldn't set signal mask for the iscisd listening " -+ "thread"); -+ } -+ -+ LOG_DEBUG(PFX "Started iscsid listening thread"); -+ -+ while (1) { -+ struct sockaddr_un remote; -+ socklen_t sock_len; -+ int s2; -+ -+ LOG_DEBUG(PFX "Waiting for iscsid command"); -+ -+ sock_len = sizeof(remote); -+ s2 = accept(iscsid_opts.fd, -+ (struct sockaddr *)&remote, &sock_len); -+ if (s2 == -1) { -+ if (errno == EAGAIN) { -+ LOG_DEBUG("Got EAGAIN from accept"); -+ sleep(1); -+ continue; -+ } else if (errno == EINTR) { -+ LOG_DEBUG("Got EINTR from accept"); -+ /* The program is terminating, time to exit */ -+ break; -+ } -+ -+ LOG_ERR(PFX "Could not accept: %d(%s)", -+ s2, strerror(errno)); -+ continue; -+ } -+ -+ process_iscsid_broadcast(s2); -+ close(s2); -+ } -+ -+ pthread_cleanup_pop(0); -+ -+ LOG_ERR(PFX "exit iscsid listening thread"); -+ -+ pthread_exit(NULL); -+} -+ -+/****************************************************************************** -+ * Initialize/Cleanup routines -+ ******************************************************************************/ -+/** -+ * iscsid_init() - This function will setup the thread used to listen for -+ * the iscsid broadcast messages -+ * @return 0 on success, <0 on failure -+ */ -+int iscsid_init() -+{ -+ int rc; -+ struct sockaddr_un addr; -+ -+ iscsid_opts.fd = socket(AF_LOCAL, SOCK_STREAM, 0); -+ if (iscsid_opts.fd < 0) { -+ LOG_ERR(PFX "Can not create IPC socket"); -+ return iscsid_opts.fd; -+ } -+ -+ memset(&addr, 0, sizeof(addr)); -+ addr.sun_family = AF_LOCAL; -+ memcpy((char *)&addr.sun_path + 1, ISCSID_UIP_NAMESPACE, -+ strlen(ISCSID_UIP_NAMESPACE)); -+ -+ rc = bind(iscsid_opts.fd, (struct sockaddr *)&addr, sizeof(addr)); -+ if (rc < 0) { -+ LOG_ERR(PFX "Can not bind IPC socket: %s", strerror(errno)); -+ goto error; -+ } -+ -+ rc = listen(iscsid_opts.fd, 32); -+ if (rc < 0) { -+ LOG_ERR(PFX "Can not listen IPC socket: %s", strerror(errno)); -+ goto error; -+ } -+ -+ return 0; -+error: -+ close(iscsid_opts.fd); -+ iscsid_opts.fd = INVALID_FD; -+ -+ return rc; -+} -+ -+/** -+ * iscsid_start() - This function will start the thread used to listen for -+ * the iscsid broadcast messages -+ * @return 0 on success, <0 on failure -+ */ -+int iscsid_start() -+{ -+ int rc; -+ -+ rc = pthread_create(&iscsid_opts.thread, NULL, iscsid_loop, NULL); -+ if (rc != 0) { -+ LOG_ERR(PFX "Could not start iscsid listening thread rc=%d", -+ rc); -+ goto error; -+ } -+ -+ return 0; -+ -+error: -+ close(iscsid_opts.fd); -+ iscsid_opts.fd = INVALID_FD; -+ -+ return rc; -+} -+ -+/** -+ * iscsid_cleanup() - This is called when stoping the thread listening -+ * for the iscsid broadcast messages -+ */ -+void iscsid_cleanup() -+{ -+ int rc; -+ void *res; -+ -+ if (iscsid_opts.fd != INVALID_FD) { -+ rc = pthread_cancel(iscsid_opts.thread); -+ if (rc != 0) { -+ LOG_ERR("Could not cancel iscsid listening thread: %s", -+ strerror(rc)); -+ } -+ -+ rc = pthread_join(iscsid_opts.thread, &res); -+ if (rc != 0) { -+ LOG_ERR("Could not wait for the iscsid listening " -+ "thread: %s", strerror(rc)); -+ } -+ } -+ -+ LOG_INFO(PFX "iscsid listening thread has shutdown"); -+} -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/iscsid_ipc.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/iscsid_ipc.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/iscsid_ipc.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/iscsid_ipc.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,51 @@ -+/* -+ * Copyright (c) 2009-2011, Broadcom Corporation -+ * -+ * Written by: Benjamin Li (benli@broadcom.com) -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * iscsid_ipc.h: Generic NIC management/utility functions -+ * -+ */ -+#ifndef __ISCSID_IPC_H__ -+#define __ISCSID_IPC_H__ -+ -+#include "uip.h" -+#include "mgmt_ipc.h" -+ -+mgmt_ipc_err_e iscsid_connect(int *fd); -+int iscsid_get_ipaddr(int fd, uip_ip4addr_t * ipaddr); -+ -+int iscsid_init(); -+int iscsid_start(); -+void iscsid_cleanup(); -+ -+#endif /* __ISCSID_IPC_H__ */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/libs/bnx2.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/libs/bnx2.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/libs/bnx2.c 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/libs/bnx2.c 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,1122 @@ -+/* -+ * Copyright (c) 2009-2011, Broadcom Corporation -+ * -+ * Written by: Benjamin Li (benli@broadcom.com) -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * bnx2.c - bnx2 user space driver -+ * -+ */ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "config.h" -+ -+#include "build_date.h" -+#include "bnx2.h" -+#include "cnic.h" -+#include "logger.h" -+#include "nic.h" -+#include "nic_utils.h" -+#include "options.h" -+ -+#define PFX "bnx2 " -+ -+/* Foward struct declarations */ -+struct nic_ops bnx2_op; -+ -+/******************************************************************************* -+ * NIC Library Strings -+ ******************************************************************************/ -+static const char library_name[] = "bnx2"; -+static const char library_version[] = PACKAGE_VERSION; -+static const char library_uio_name[] = "bnx2_cnic"; -+ -+/* The name that should be returned from /sys/class/uio/uio0/name */ -+static const char cnic_uio_sysfs_name_tempate[] = "/sys/class/uio/uio%i/name"; -+static const char cnic_uio_sysfs_name[] = "bnx2_cnic"; -+ -+/******************************************************************************* -+ * String constants used to display human readable adapter name -+ ******************************************************************************/ -+static const char brcm_5706C[] = "Broadcom NetXtreme II BCM5706 1000Base-T"; -+static const char hp_NC370T[] = -+ "HP NC370T Multifunction Gigabit Server Adapter"; -+static const char hp_NC370I[] = -+ "HP NC370i Multifunction Gigabit Server Adapter"; -+static const char brcm_5706S[] = "Broadcom NetXtreme II BCM5706 1000Base-SX"; -+static const char hp_NC370F[] = -+ "HP NC370F Multifunction Gigabit Server Adapter"; -+static const char brcm_5708C[] = "Broadcom NetXtreme II BCM5708 1000Base-T"; -+static const char brcm_5708S[] = "Broadcom NetXtreme II BCM5708 1000Base-SX"; -+static const char brcm_5709C[] = "Broadcom NetXtreme II BCM5709 1000Base-T"; -+static const char brcm_5709S[] = "Broadcom NetXtreme II BCM5709 1000Base-SX"; -+static const char brcm_5716C[] = "Broadcom NetXtreme II BCM5716 1000Base-T"; -+static const char brcm_5716S[] = "Broadcom NetXtreme II BCM5716 1000Base-SX"; -+ -+/******************************************************************************* -+ * PCI ID constants -+ ******************************************************************************/ -+#define PCI_VENDOR_ID_BROADCOM 0x14e4 -+#define PCI_DEVICE_ID_NX2_5709 0x1639 -+#define PCI_DEVICE_ID_NX2_5709S 0x163a -+#define PCI_DEVICE_ID_NX2_5706 0x164a -+#define PCI_DEVICE_ID_NX2_5708 0x164c -+#define PCI_DEVICE_ID_NX2_5706S 0x16aa -+#define PCI_DEVICE_ID_NX2_5708S 0x16ac -+ -+#define PCI_VENDOR_ID_HP 0x103c -+ -+#define PCI_ANY_ID (~0) -+ -+/* This is the table used to match PCI vendor and device ID's to the -+ * human readable string names of the devices */ -+static const struct pci_device_id bnx2_pci_tbl[] = { -+ {PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_5706, -+ PCI_VENDOR_ID_HP, 0x3101, hp_NC370T}, -+ {PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_5706, -+ PCI_VENDOR_ID_HP, 0x3106, hp_NC370I}, -+ {PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_5706, -+ PCI_ANY_ID, PCI_ANY_ID, brcm_5706S}, -+ {PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_5708, -+ PCI_ANY_ID, PCI_ANY_ID, brcm_5708C}, -+ {PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_5706S, -+ PCI_VENDOR_ID_HP, 0x3102, hp_NC370F}, -+ {PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_5706S, -+ PCI_ANY_ID, PCI_ANY_ID, brcm_5706S}, -+ {PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_5708S, -+ PCI_ANY_ID, PCI_ANY_ID, brcm_5708S}, -+ {PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_5709, -+ PCI_ANY_ID, PCI_ANY_ID, brcm_5709C}, -+ {PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_5709S, -+ PCI_ANY_ID, PCI_ANY_ID, brcm_5709S}, -+ {PCI_VENDOR_ID_BROADCOM, 0x163b, -+ PCI_ANY_ID, PCI_ANY_ID, brcm_5716C}, -+ {PCI_VENDOR_ID_BROADCOM, 0x163c, -+ PCI_ANY_ID, PCI_ANY_ID, brcm_5716S}, -+}; -+ -+/******************************************************************************* -+ * bnx2 Library Functions -+ ******************************************************************************/ -+/** -+ * bnx2_get_library_name() - Used to get the name of this NIC libary -+ * @param name - This function will return the pointer to this NIC -+ * library name -+ * @param name_size -+ */ -+static void bnx2_get_library_name(char **name, size_t * name_size) -+{ -+ *name = (char *)library_name; -+ *name_size = sizeof(library_name); -+} -+ -+/** -+ * bnx2_get_library_version() - Used to get the version string of this -+ * NIC libary -+ * @param version - This function will return the pointer to this NIC -+ * library version string -+ * @param version_size - This will be set with the version size -+ */ -+static void bnx2_get_library_version(char **version, size_t * version_size) -+{ -+ *version = (char *)library_version; -+ *version_size = sizeof(library_version); -+} -+ -+/** -+ * bnx2_get_build_date() - Used to get the build date string of this library -+ * @param version - This function will return the pointer to this NIC -+ * library build date string -+ * @param version_size - This will be set with the build date string size -+ */ -+static void bnx2_get_build_date(char **build, size_t * build_size) -+{ -+ *build = (char *)build_date; -+ *build_size = sizeof(build_date); -+} -+ -+/** -+ * bnx2_get_transport_name() - Used to get the transport name associated -+ * with this this NIC libary -+ * @param transport_name - This function will return the pointer to this NIC -+ * library's associated transport string -+ * @param transport_name_size - This will be set with the transport name size -+ */ -+static void bnx2_get_transport_name(char **transport_name, -+ size_t * transport_name_size) -+{ -+ *transport_name = (char *)bnx2i_library_transport_name; -+ *transport_name_size = bnx2i_library_transport_name_size; -+} -+ -+/** -+ * bnx2_get_uio_name() - Used to get the uio name associated with this this -+ * NIC libary -+ * @param uio_name - This function will return the pointer to this NIC -+ * library's associated uio string -+ * @param transport_name_size - This will be set with the uio name size -+ */ -+static void bnx2_get_uio_name(char **uio_name, size_t * uio_name_size) -+{ -+ *uio_name = (char *)library_uio_name; -+ *uio_name_size = sizeof(library_uio_name); -+} -+ -+/** -+ * bnx2_get_pci_table() - Used to get the PCI table for this NIC libary -+ * to determine which NIC's based off of PCI ID's -+ * are supported -+ * @param table - This function will return the pointer to the PCI table -+ * @param entries - This function will return the number of entries in the NIC -+ * library's PCI table -+ */ -+static void bnx2_get_pci_table(struct pci_device_id **table, uint32_t * entries) -+{ -+ *table = (struct pci_device_id *)bnx2_pci_tbl; -+ *entries = (uint32_t) (sizeof(bnx2_pci_tbl) / sizeof(bnx2_pci_tbl[0])); -+} -+ -+/** -+ * bnx2_get_ops() - Used to get the NIC library op table -+ * @param op - The op table of this NIC library -+ */ -+struct nic_ops *bnx2_get_ops() -+{ -+ return &bnx2_op; -+} -+ -+/******************************************************************************* -+ * bnx2 Utility Functions -+ ******************************************************************************/ -+/******************************************************************************* -+ * Utility Functions Used to read register from the bnx2 device -+ ******************************************************************************/ -+static void bnx2_wr32(bnx2_t * bp, __u32 off, __u32 val) -+{ -+ *((volatile __u32 *)(bp->reg + off)) = val; -+} -+ -+static void bnx2_wr16(bnx2_t * bp, __u32 off, __u16 val) -+{ -+ *((volatile __u16 *)(bp->reg + off)) = val; -+} -+ -+static __u32 bnx2_rd32(bnx2_t * bp, __u32 off) -+{ -+ return *((volatile __u32 *)(bp->reg + off)); -+} -+ -+static int bnx2_reg_sync(bnx2_t * bp, __u32 off, __u16 length) -+{ -+ return msync(bp->reg + off, length, MS_SYNC); -+} -+ -+/** -+ * bnx2_get_chip_id() - Used to retrive the chip ID from the nic -+ * @param dev - Device used to determin NIC type -+ * @return Chip ID read from the MISC ID register -+ */ -+static int bnx2_get_chip_id(bnx2_t * bp) -+{ -+ return bnx2_rd32(bp, BNX2_MISC_ID); -+} -+ -+/** -+ * bnx2_uio_verify() -+ * -+ */ -+static int bnx2_uio_verify(nic_t * nic) -+{ -+ char *raw = NULL, *raw_tmp; -+ uint32_t raw_size = 0; -+ char temp_path[sizeof(cnic_uio_sysfs_name_tempate) + 8]; -+ int rc = 0; -+ -+ /* Build the path to determine uio name */ -+ snprintf(temp_path, sizeof(temp_path), -+ cnic_uio_sysfs_name_tempate, nic->uio_minor); -+ -+ rc = capture_file(&raw, &raw_size, temp_path); -+ if (rc != 0) { -+ goto error; -+ } -+ -+ /* sanitize name string by replacing newline with null termination */ -+ raw_tmp = raw; -+ while (*raw_tmp != '\n') -+ raw_tmp++; -+ *raw_tmp = '\0'; -+ -+ if (strncmp(raw, cnic_uio_sysfs_name, sizeof(cnic_uio_sysfs_name)) != 0) { -+ LOG_ERR(PFX "%s: uio names not equal: " -+ "expecting %s got %s from %s", -+ nic->log_name, cnic_uio_sysfs_name, raw, temp_path); -+ rc = -EIO; -+ } -+ -+ free(raw); -+ -+ LOG_INFO(PFX "%s: Verified is a cnic_uio device", nic->log_name); -+ -+ error: -+ return rc; -+} -+ -+/******************************************************************************* -+ * bnx2 Utility Functions to get to the hardware consumer indexes -+ ******************************************************************************/ -+static __u16 bnx2_get_rx_msix(bnx2_t * bp) -+{ -+ struct status_block_msix *sblk = bp->status_blk.msix; -+ __u16 rx_cons; -+ -+ msync(sblk, sizeof(*sblk), MS_SYNC); -+ rx_cons = sblk->status_rx_quick_consumer_index; -+ barrier(); -+ if ((rx_cons & (MAX_RX_DESC_CNT)) == (MAX_RX_DESC_CNT)) -+ rx_cons++; -+ -+ return rx_cons; -+} -+ -+static __u16 bnx2_get_rx_msi(bnx2_t * bp) -+{ -+ struct status_block *sblk = bp->status_blk.msi; -+ __u16 rx_cons; -+ -+ msync(sblk, sizeof(*sblk), MS_SYNC); -+ rx_cons = BNX2_SBLK_EVEN_IDX(sblk->rx2); -+ barrier(); -+ if ((rx_cons & (MAX_RX_DESC_CNT)) == (MAX_RX_DESC_CNT)) -+ rx_cons++; -+ -+ return rx_cons; -+} -+ -+static __u16 bnx2_get_tx_msix(bnx2_t * bp) -+{ -+ struct status_block_msix *sblk = bp->status_blk.msix; -+ __u16 tx_cons; -+ -+ msync(sblk, sizeof(*sblk), MS_SYNC); -+ tx_cons = sblk->status_tx_quick_consumer_index; -+ barrier(); -+ if ((tx_cons & (MAX_TX_DESC_CNT)) == (MAX_TX_DESC_CNT)) -+ tx_cons++; -+ -+ return tx_cons; -+} -+ -+static __u16 bnx2_get_tx_msi(bnx2_t * bp) -+{ -+ struct status_block *sblk = bp->status_blk.msi; -+ __u16 tx_cons; -+ -+ msync(sblk, sizeof(*sblk), MS_SYNC); -+ tx_cons = BNX2_SBLK_EVEN_IDX(sblk->tx2); -+ barrier(); -+ if ((tx_cons & (MAX_TX_DESC_CNT)) == (MAX_TX_DESC_CNT)) -+ tx_cons++; -+ -+ return tx_cons; -+} -+ -+typedef enum { -+ CNIC_VLAN_STRIPPING_ENABLED = 1, -+ CNIC_VLAN_STRIPPING_DISABLED = 2, -+} CNIC_VLAN_STRIPPING_MODE; -+ -+/** -+ * bnx2_strip_vlan_enabled() - This will query the device to determine whether -+ * VLAN tag stripping is enabled or not -+ * @param dev - device to check stripping or not -+ * @ return CNIC_VLAN_STRIPPING_ENABLED stripping is enabled -+ * CNIC_VLAN_STRIPPING_DISABLED stripping is not enabled -+ */ -+static CNIC_VLAN_STRIPPING_MODE bnx2_strip_vlan_enabled(bnx2_t * bp) -+{ -+ uint32_t val; -+ -+ val = bnx2_rd32(bp, BNX2_EMAC_RX_MODE); -+ -+ if (val & BNX2_EMAC_RX_MODE_KEEP_VLAN_TAG) -+ return CNIC_VLAN_STRIPPING_DISABLED; -+ else -+ return CNIC_VLAN_STRIPPING_ENABLED; -+} -+ -+/** -+ * bnx2_alloc() - Used to allocate a bnx2 structure -+ */ -+static bnx2_t *bnx2_alloc(nic_t * nic) -+{ -+ bnx2_t *bp = malloc(sizeof(*bp)); -+ if (bp == NULL) { -+ LOG_ERR(PFX "%s: Could not allocate bnx2 space", nic->log_name); -+ return NULL; -+ } -+ -+ /* Clear out the bnx2 contents */ -+ memset(bp, 0, sizeof(*bp)); -+ -+ bp->flags = BNX2_UIO_TX_HAS_SENT; -+ -+ bp->parent = nic; -+ nic->priv = (void *)bp; -+ -+ return bp; -+} -+ -+/** -+ * bnx2_open() - This will initialize all the hardware resources -+ * @param dev - The struct nic device to open -+ * @return 0 on success, on failure a errno will be returned -+ */ -+static int bnx2_open(nic_t * nic) -+{ -+ bnx2_t *bp; -+ struct stat uio_stat; -+ int i, rc; -+ __u32 val; -+ uint32_t tx_cid; -+ __u32 msix_vector = 0; -+ -+ /* Sanity Check: validate the parameters */ -+ if (nic == NULL) { -+ LOG_ERR(PFX "bnx2_open(): nic == NULL"); -+ return -EINVAL; -+ } -+ -+ if ((nic->priv) != NULL && -+ (((bnx2_t *) (nic->priv))->flags & BNX2_OPENED)) { -+ return 0; -+ } -+ -+ bp = bnx2_alloc(nic); -+ if (bp == NULL) { -+ LOG_ERR(PFX "bnx2_open(): Couldn't allocate bp priv struct", -+ nic->log_name); -+ return -ENOMEM; -+ } -+ -+ while (nic->fd < 0) { -+ nic->fd = open(nic->uio_device_name, O_RDWR | O_NONBLOCK); -+ if (nic->fd != INVALID_FD) { -+ LOG_ERR(PFX -+ "%s: uio device has been brought up via pid: " -+ "%d on fd: %d", -+ nic->uio_device_name, getpid(), nic->fd); -+ -+ rc = bnx2_uio_verify(nic); -+ if (rc != 0) -+ continue; -+ -+ break; -+ } else { -+ LOG_WARN(PFX "%s: Could not open device: %s, [%s]", -+ nic->log_name, nic->uio_device_name, -+ strerror(errno)); -+ manually_trigger_uio_event(nic, nic->uio_minor); -+ -+ /* udev might not have created the file yet */ -+ sleep(1); -+ } -+ } -+ if (fstat(nic->fd, &uio_stat) < 0) { -+ LOG_ERR(PFX "%s: Could not fstat device", nic->log_name); -+ return -ENODEV; -+ } -+ nic->uio_minor = minor(uio_stat.st_rdev); -+ -+ /* TODO: hardcoded with the cnic driver */ -+ bp->rx_ring_size = 3; -+ bp->rx_buffer_size = 0x400; -+ -+ LOG_DEBUG(PFX "%s: using rx ring size: %d, rx buffer size: %d", -+ nic->log_name, bp->rx_ring_size, bp->rx_buffer_size); -+ -+ /* Determine the number of UIO events that have already occured */ -+ rc = detemine_initial_uio_events(nic, &nic->intr_count); -+ if (rc != 0) { -+ LOG_ERR("Could not determine the number ofinitial UIO events"); -+ nic->intr_count = 0; -+ } -+ -+ /* Allocate space for rx ring pointer */ -+ bp->rx_ring = malloc(sizeof(struct l2_fhdr *) * bp->rx_ring_size); -+ if (bp->rx_ring == NULL) { -+ LOG_ERR(PFX "%s: Could not allocate space for rx_ring", -+ nic->log_name); -+ goto error_alloc_rx_ring; -+ } -+ mlock(bp->rx_ring, sizeof(struct l2_fhdr *) * bp->rx_ring_size); -+ -+ /* Allocate space for rx pkt ring */ -+ bp->rx_pkt_ring = malloc(sizeof(void *) * bp->rx_ring_size); -+ if (bp->rx_pkt_ring == NULL) { -+ LOG_ERR(PFX "%s: Could not allocate space for rx_pkt_ring", -+ nic->log_name); -+ goto error_alloc_rx_pkt_ring; -+ } -+ mlock(bp->rx_pkt_ring, sizeof(void *) * bp->rx_ring_size); -+ -+ bp->reg = mmap(NULL, 0x12800, PROT_READ | PROT_WRITE, MAP_SHARED, -+ nic->fd, (off_t) 0); -+ if (bp->reg == MAP_FAILED) { -+ LOG_INFO(PFX "%s: Couldn't mmap registers: %s", -+ nic->log_name, strerror(errno)); -+ bp->reg = NULL; -+ goto error_regs; -+ } -+ -+ msync(bp->reg, 0x12800, MS_SYNC); -+ LOG_DEBUG(PFX "Chip ID: %x", bnx2_get_chip_id(bp)); -+ -+ /* on a 5709 when using MSI-X the status block is at an offset */ -+ if (CHIP_NUM(bnx2_get_chip_id(bp)) == CHIP_NUM_5709) { -+ /* determine if we are using MSI-X */ -+ val = bnx2_rd32(bp, BNX2_TSCH_TSS_CFG); -+ if (val) { -+ /* We are in MSI-X mode */ -+ uint32_t base_cid = ((val >> 10) & 0x7ff) << 3; -+ msix_vector = (val >> 24) & 0xf; -+ -+ bp->status_blk_size = (128 * 9); -+ -+ tx_cid = base_cid + msix_vector - 1; -+ bp->flags |= BNX2_UIO_MSIX_ENABLED; -+ -+ bp->get_tx_cons = bnx2_get_tx_msix; -+ bp->get_rx_cons = bnx2_get_rx_msix; -+ -+ LOG_DEBUG(PFX "%s: tss_cfg: 0x%x tx cid: %d", -+ nic->log_name, val, tx_cid); -+ -+ LOG_INFO(PFX "%s: detected using MSI-X vector: %d", -+ nic->log_name, msix_vector); -+ } else { -+ /* We are not in MSI-X mode */ -+ bp->status_blk_size = 64; -+ tx_cid = 20; -+ -+ bp->get_tx_cons = bnx2_get_tx_msi; -+ bp->get_rx_cons = bnx2_get_rx_msi; -+ } -+ } else { -+ bp->status_blk_size = 64; -+ tx_cid = 20; -+ -+ bp->get_tx_cons = bnx2_get_tx_msi; -+ bp->get_rx_cons = bnx2_get_rx_msi; -+ } -+ -+ bp->sblk_map = mmap(NULL, bp->status_blk_size, -+ PROT_READ | PROT_WRITE, MAP_SHARED, -+ nic->fd, (off_t) getpagesize()); -+ if (bp->sblk_map == MAP_FAILED) { -+ LOG_INFO(PFX "%s: Could not mmap status block: %s", -+ nic->log_name, strerror(errno)); -+ goto error_sblk; -+ } -+ -+ if (bp->flags & BNX2_UIO_MSIX_ENABLED) { -+ uint8_t *status_blk = (uint8_t *) bp->sblk_map; -+ status_blk += (msix_vector * 128); -+ -+ bp->status_blk.msix = (struct status_block_msix *)status_blk; -+ -+ LOG_DEBUG(PFX "%s: msix initial cons: tx:%d rx:%d", -+ nic->log_name, -+ bp->status_blk.msix->status_tx_quick_consumer_index, -+ bp->status_blk.msix->status_rx_quick_consumer_index); -+ } else { -+ bp->status_blk.msi = (struct status_block *)bp->sblk_map; -+ -+ LOG_DEBUG(PFX "%s: msi initial tx:%d rx:%d", -+ nic->log_name, -+ BNX2_SBLK_EVEN_IDX(bp->status_blk.msi->tx2), -+ BNX2_SBLK_EVEN_IDX(bp->status_blk.msi->rx2)); -+ } -+ -+ bp->tx_ring = mmap(NULL, 2 * getpagesize(), -+ PROT_READ | PROT_WRITE, MAP_SHARED, nic->fd, -+ (off_t) 2 * getpagesize()); -+ if (bp->tx_ring == MAP_FAILED) { -+ LOG_INFO(PFX "%s: Could not mmap tx ring: %s", -+ nic->log_name, strerror(errno)); -+ bp->tx_ring = NULL; -+ goto error_tx_ring; -+ } -+ -+ bp->bufs = mmap(NULL, (bp->rx_ring_size + 1) * bp->rx_buffer_size, -+ PROT_READ | PROT_WRITE, -+ MAP_SHARED, nic->fd, (off_t) 3 * getpagesize()); -+ if (bp->bufs == MAP_FAILED) { -+ LOG_INFO(PFX "%s: Could not mmap buffers: %s", -+ nic->log_name, strerror(errno)); -+ bp->bufs = NULL; -+ goto error_bufs; -+ } -+ -+ bp->tx_bidx_io = MB_GET_CID_ADDR(tx_cid) + BNX2_L2CTX_TX_HOST_BIDX; -+ bp->tx_bseq_io = MB_GET_CID_ADDR(tx_cid) + BNX2_L2CTX_TX_HOST_BSEQ; -+ LOG_INFO(PFX "%s: tx_bidx_io: 0x%x tx_bseq_io: 0x%x", -+ nic->log_name, bp->tx_bidx_io, bp->tx_bseq_io); -+ -+ bp->rx_bidx_io = MB_GET_CID_ADDR(2) + BNX2_L2CTX_HOST_BDIDX; -+ bp->rx_bseq_io = MB_GET_CID_ADDR(2) + BNX2_L2CTX_HOST_BSEQ; -+ -+ bp->tx_cons = 0; -+ bp->tx_prod = 0; -+ bp->tx_pkt = bp->bufs; -+ -+ bp->rx_index = 0; -+ bp->rx_cons = 0; -+ bp->rx_prod = bp->rx_ring_size; -+ bp->rx_bseq = bp->rx_prod * bp->rx_buffer_size; -+ bnx2_wr16(bp, bp->rx_bidx_io, bp->rx_prod); -+ bnx2_wr32(bp, bp->rx_bseq_io, bp->rx_bseq); -+ -+ bnx2_reg_sync(bp, bp->rx_bidx_io, sizeof(__u16)); -+ bnx2_reg_sync(bp, bp->rx_bseq_io, sizeof(__u32)); -+ -+ for (i = 0; i < bp->rx_ring_size; i++) { -+ void *ptr = bp->bufs + (bp->rx_buffer_size * (i + 1)); -+ -+ bp->rx_ring[i] = (struct l2_fhdr *)ptr; -+ bp->rx_pkt_ring[i] = ptr + sizeof(struct l2_fhdr) + 2; -+ } -+ -+ /* Read the MAC address used for the iSCSI interface */ -+ val = bnx2_rd32(bp, BNX2_EMAC_MAC_MATCH4); -+ nic->mac_addr[0] = (__u8) (val >> 8); -+ nic->mac_addr[1] = (__u8) val; -+ -+ val = bnx2_rd32(bp, BNX2_EMAC_MAC_MATCH5); -+ nic->mac_addr[2] = (__u8) (val >> 24); -+ nic->mac_addr[3] = (__u8) (val >> 16); -+ nic->mac_addr[4] = (__u8) (val >> 8); -+ nic->mac_addr[5] = (__u8) val; -+ -+ LOG_INFO(PFX "%s: Using mac address: %2x:%2x:%2x:%2x:%2x:%2x", -+ nic->log_name, -+ nic->mac_addr[0], nic->mac_addr[1], nic->mac_addr[2], -+ nic->mac_addr[3], nic->mac_addr[4], nic->mac_addr[5]); -+ -+ /* Determine if Hardware VLAN tag stripping is enabled or not */ -+ if (CNIC_VLAN_STRIPPING_ENABLED == bnx2_strip_vlan_enabled(bp)) { -+ nic->flags |= NIC_VLAN_STRIP_ENABLED; -+ } -+ -+ /* Prepare the multicast addresses */ -+ val = 4 | BNX2_RPM_SORT_USER2_BC_EN | BNX2_RPM_SORT_USER2_MC_EN; -+ if (CHIP_NUM(bnx2_get_chip_id(bp)) != CHIP_NUM_5709) -+ val |= BNX2_RPM_SORT_USER2_PROM_VLAN; -+ -+ bnx2_wr32(bp, BNX2_RPM_SORT_USER2, 0x0); -+ bnx2_wr32(bp, BNX2_RPM_SORT_USER2, val); -+ bnx2_wr32(bp, BNX2_RPM_SORT_USER2, val | BNX2_RPM_SORT_USER2_ENA); -+ -+ rc = enable_multicast(nic); -+ if (rc != 0) -+ goto error_bufs; -+ -+ msync(bp->reg, 0x12800, MS_SYNC); -+ LOG_INFO("%s: bnx2 uio initialized", nic->log_name); -+ -+ bp->flags |= BNX2_OPENED; -+ -+ return 0; -+ -+error_bufs: -+ munmap(bp->tx_ring, 2 * getpagesize()); -+ -+error_tx_ring: -+ munmap(bp->status_blk.msi, bp->status_blk_size); -+ -+error_sblk: -+ munmap(bp->reg, 0x12800); -+ -+error_regs: -+ munlock(bp->rx_pkt_ring, sizeof(void *) * bp->rx_ring_size); -+ free(bp->rx_pkt_ring); -+ bp->rx_pkt_ring = NULL; -+ -+error_alloc_rx_pkt_ring: -+ munlock(bp->rx_ring, sizeof(struct l2_fhdr *) * bp->rx_ring_size); -+ free(bp->rx_ring); -+ bp->rx_ring = NULL; -+ -+error_alloc_rx_ring: -+ -+ return errno; -+} -+ -+/** -+ * bnx2_uio_close_resources() - Used to free resource for the bnx2 NIC -+ * @param nic - NIC device to free resource -+ * @param graceful - whether to wait to close gracefully -+ * @return 0 on success, <0 on failure -+ */ -+static int bnx2_uio_close_resources(nic_t * nic, NIC_SHUTDOWN_T graceful) -+{ -+ bnx2_t *bp = (bnx2_t *) nic->priv; -+ int rc = 0; -+ -+ /* Remove the multicast addresses if added */ -+ if ((nic->flags & NIC_ADDED_MULICAST) && -+ (graceful == ALLOW_GRACEFUL_SHUTDOWN)) -+ disable_multicast(nic); -+ -+ /* Check if there is an assoicated bnx2 device */ -+ if (bp == NULL) { -+ LOG_WARN(PFX "%s: when closing resources there is " -+ "no assoicated bnx2", nic->log_name); -+ return -EIO; -+ } -+ -+ /* Clean up allocated memory */ -+ if (bp->rx_ring != NULL) { -+ free(bp->rx_ring); -+ bp->rx_ring = NULL; -+ } -+ -+ if (bp->rx_pkt_ring != NULL) { -+ free(bp->rx_pkt_ring); -+ bp->rx_pkt_ring = NULL; -+ } -+ -+ /* Clean up mapped registers */ -+ if (bp->bufs != NULL) { -+ rc = munmap(bp->bufs, -+ (bp->rx_ring_size + 1) * bp->rx_buffer_size); -+ if (rc != 0) -+ LOG_WARN(PFX "%s: Couldn't unmap bufs", nic->log_name); -+ bp->bufs = NULL; -+ } -+ -+ if (bp->tx_ring != NULL) { -+ rc = munmap(bp->tx_ring, 2 * getpagesize()); -+ if (rc != 0) -+ LOG_WARN(PFX "%s: Couldn't unmap tx_rings", -+ nic->log_name); -+ bp->tx_ring = NULL; -+ } -+ -+ if (bp->status_blk.msix != NULL || bp->status_blk.msi != NULL) { -+ rc = munmap(bp->sblk_map, bp->status_blk_size); -+ if (rc != 0) -+ LOG_WARN(PFX "%s: Couldn't unmap status block", -+ nic->log_name); -+ bp->sblk_map = NULL; -+ -+ bp->status_blk.msix = NULL; -+ bp->status_blk.msi = NULL; -+ } -+ -+ if (bp->reg != NULL) { -+ rc = munmap(bp->reg, 0x12800); -+ if (rc != 0) -+ LOG_WARN(PFX "%s: Couldn't unmap regs", nic->log_name); -+ bp->reg = NULL; -+ } -+ -+ if (nic->fd != INVALID_FD) { -+ rc = close(nic->fd); -+ if (rc != 0) { -+ LOG_WARN(PFX -+ "%s: Couldn't close uio file descriptor: %d", -+ nic->log_name, nic->fd); -+ } else { -+ LOG_DEBUG(PFX "%s: Closed uio file descriptor: %d", -+ nic->log_name, nic->fd); -+ } -+ -+ nic->fd = INVALID_FD; -+ } else { -+ LOG_WARN(PFX "%s: Invalid uio file descriptor: %d", -+ nic->log_name, nic->fd); -+ } -+ -+ LOG_INFO(PFX "%s: Closed all resources", nic->log_name); -+ -+ return 0; -+} -+ -+/** -+ * bnx2_close() - Used to close the NIC device -+ * @param nic - NIC device to close -+ * @param graceful - whether to wait to close gracefully -+ * @return 0 if successful, <0 if there is an error -+ */ -+static int bnx2_close(nic_t * nic, NIC_SHUTDOWN_T graceful) -+{ -+ bnx2_t *bp = (bnx2_t *) nic->priv; -+ -+ /* Sanity Check: validate the parameters */ -+ if (nic == NULL) { -+ LOG_ERR(PFX "bnx2_close(): nic == NULL"); -+ return -EINVAL; -+ } -+ -+ LOG_INFO(PFX "Closing NIC device: %s", nic->log_name); -+ -+ bnx2_uio_close_resources(nic, graceful); -+ bp->flags &= ~BNX2_OPENED; -+ -+ return 0; -+} -+ -+static void bnx2_prepare_xmit_packet(nic_t * nic, -+ nic_interface_t * nic_iface, -+ struct packet *pkt) -+{ -+ bnx2_t *bp = (bnx2_t *) nic->priv; -+ struct uip_vlan_eth_hdr *eth_vlan = (struct uip_vlan_eth_hdr *)pkt->buf; -+ struct uip_eth_hdr *eth = (struct uip_eth_hdr *)bp->tx_pkt; -+ -+ if (eth_vlan->tpid == htons(UIP_ETHTYPE_8021Q)) { -+ memcpy(bp->tx_pkt, pkt->buf, sizeof(struct uip_eth_hdr)); -+ eth->type = eth_vlan->type; -+ pkt->buf_size -= (sizeof(struct uip_vlan_eth_hdr) - -+ sizeof(struct uip_eth_hdr)); -+ memcpy(bp->tx_pkt + sizeof(struct uip_eth_hdr), -+ pkt->buf + sizeof(struct uip_vlan_eth_hdr), -+ pkt->buf_size - sizeof(struct uip_eth_hdr)); -+ } else -+ memcpy(bp->tx_pkt, pkt->buf, pkt->buf_size); -+ -+ msync(bp->tx_pkt, pkt->buf_size, MS_SYNC); -+} -+ -+/** -+ * bnx2_get_tx_pkt() - This function is used to a TX packet from the NIC -+ * @param nic - The NIC device to send the packet -+ * -+ */ -+void *bnx2_get_tx_pkt(nic_t * nic) -+{ -+ bnx2_t *bp = (bnx2_t *) nic->priv; -+ return bp->tx_pkt; -+} -+ -+/** -+ * bnx2_start_xmit() - This function is used to send a packet of data -+ * @param nic - The NIC device to send the packet -+ * @param len - the length of the TX packet -+ * -+ */ -+void bnx2_start_xmit(nic_t * nic, size_t len, u16_t vlan_id) -+{ -+ bnx2_t *bp = (bnx2_t *) nic->priv; -+ uint16_t ring_prod; -+ struct tx_bd *txbd; -+ struct rx_bd *rxbd; -+ rxbd = (struct rx_bd *)(((__u8 *) bp->tx_ring) + getpagesize()); -+ -+ if ((rxbd->rx_bd_haddr_hi == 0) && (rxbd->rx_bd_haddr_lo == 0)) { -+ LOG_DEBUG(PFX "%s: trying to transmit when device is closed", -+ nic->log_name); -+ pthread_mutex_unlock(&nic->xmit_mutex); -+ return; -+ } -+ -+ ring_prod = TX_RING_IDX(bp->tx_prod); -+ txbd = &bp->tx_ring[ring_prod]; -+ -+ txbd->tx_bd_mss_nbytes = len; -+ -+ if (vlan_id) { -+ txbd->tx_bd_vlan_tag_flags = (vlan_id << 16) | -+ TX_BD_FLAGS_VLAN_TAG | TX_BD_FLAGS_END | TX_BD_FLAGS_START; -+ } else -+ txbd->tx_bd_vlan_tag_flags = TX_BD_FLAGS_END | -+ TX_BD_FLAGS_START; -+ -+ bp->tx_bseq += len; -+ bp->tx_prod = NEXT_TX_BD(bp->tx_prod); -+ -+ bnx2_wr16(bp, bp->tx_bidx_io, bp->tx_prod); -+ bnx2_wr32(bp, bp->tx_bseq_io, bp->tx_bseq); -+ -+ bnx2_reg_sync(bp, bp->tx_bidx_io, sizeof(__u16)); -+ bnx2_reg_sync(bp, bp->tx_bseq_io, sizeof(__u32)); -+ -+ LOG_DEBUG(PFX "%s: sent %d bytes using dev->tx_prod: %d", -+ nic->log_name, len, bp->tx_prod); -+} -+ -+/** -+ * bnx2_write() - Used to write the data to the hardware -+ * @param nic - NIC hardware to read from -+ * @param pkt - The packet which will hold the data to be sent on the wire -+ * @return 0 if successful, <0 if failed -+ */ -+int bnx2_write(nic_t * nic, nic_interface_t * nic_iface, packet_t * pkt) -+{ -+ bnx2_t *bp = (bnx2_t *) nic->priv; -+ struct uip_stack *uip = &nic_iface->ustack; -+ -+ /* Sanity Check: validate the parameters */ -+ if (nic == NULL || nic_iface == NULL || pkt == NULL) { -+ LOG_ERR(PFX "%s: bnx2_write() nic == 0x%p || " -+ " nic_iface == 0x%p || " -+ " pkt == 0x%x", nic, nic_iface, pkt); -+ return -EINVAL; -+ } -+ -+ if (pkt->buf_size == 0) { -+ LOG_ERR(PFX "%s: Trying to transmitted 0 sized packet", -+ nic->log_name); -+ return -EINVAL; -+ } -+ -+ if (pthread_mutex_trylock(&nic->xmit_mutex) != 0) { -+ LOG_DEBUG(PFX "%s: Dropped previous transmitted packet", -+ nic->log_name); -+ return -EINVAL; -+ } -+ -+ bnx2_prepare_xmit_packet(nic, nic_iface, pkt); -+ bnx2_start_xmit(nic, pkt->buf_size, nic_iface->vlan_id); -+ -+ /* bump the bnx2 dev send statistics */ -+ nic->stats.tx.packets++; -+ nic->stats.tx.bytes += uip->uip_len; -+ -+ LOG_DEBUG(PFX "%s: transmitted %d bytes " -+ "dev->tx_cons: %d, dev->tx_prod: %d, dev->tx_bseq:%d", -+ nic->log_name, pkt->buf_size, -+ bp->tx_cons, bp->tx_prod, bp->tx_bseq); -+ -+ return 0; -+} -+ -+/** -+ * bnx2_read() - Used to read the data from the hardware -+ * @param nic - NIC hardware to read from -+ * @param pkt - The packet which will hold the data -+ * @return 0 if successful, <0 if failed -+ */ -+static int bnx2_read(nic_t * nic, packet_t * pkt) -+{ -+ bnx2_t *bp = (bnx2_t *) nic->priv; -+ int rc = 0; -+ uint16_t hw_cons, sw_cons; -+ -+ /* Sanity Check: validate the parameters */ -+ if (unlikely(nic == NULL || pkt == NULL)) { -+ LOG_ERR(PFX "%s: bnx2_write() nic == 0x%p || " -+ " pkt == 0x%x", nic, pkt); -+ return -EINVAL; -+ } -+ -+ hw_cons = bp->get_rx_cons(bp); -+ sw_cons = bp->rx_cons; -+ -+ if (sw_cons != hw_cons) { -+ uint8_t rx_index = bp->rx_index % 3; -+ struct l2_fhdr *rx_hdr = bp->rx_ring[rx_index]; -+ void *rx_pkt = bp->rx_pkt_ring[rx_index]; -+ int len; -+ uint16_t errors; -+ -+ LOG_DEBUG(PFX "%s: clearing rx interrupt: %d %d %d", -+ nic->log_name, sw_cons, hw_cons, rx_index); -+ -+ msync(rx_hdr, sizeof(struct l2_fhdr), MS_SYNC); -+ errors = ((rx_hdr->l2_fhdr_status & 0xffff0000) >> 16); -+ len = ((rx_hdr->l2_fhdr_vtag_len & 0xffff0000) >> 16) - 4; -+ -+ if (unlikely((errors & (L2_FHDR_ERRORS_BAD_CRC | -+ L2_FHDR_ERRORS_PHY_DECODE | -+ L2_FHDR_ERRORS_ALIGNMENT | -+ L2_FHDR_ERRORS_TOO_SHORT | -+ L2_FHDR_ERRORS_GIANT_FRAME)) || -+ (len <= 0) || -+ (len > (bp->rx_buffer_size - -+ (sizeof(struct l2_fhdr) + 2))) || -+ (len > pkt->max_buf_size))) { -+ /* One of the fields in the BD is bad */ -+ uint16_t status = ((rx_hdr->l2_fhdr_status & -+ 0x0000ffff)); -+ -+ LOG_ERR(PFX "%s: Recv error: 0x%x status: 0x%x " -+ "len: %d", nic->log_name, errors, status, len); -+ -+ if ((len < (bp->rx_buffer_size - -+ (sizeof(struct l2_fhdr) + 2))) && -+ (len < pkt->max_buf_size)) -+ dump_packet_to_log(pkt->nic_iface, rx_pkt, len); -+ } else { -+ if (len < (bp->rx_buffer_size - -+ (sizeof(struct l2_fhdr) + 2))) { -+ msync(rx_pkt, len, MS_SYNC); -+ /* Copy the data */ -+ memcpy(pkt->buf, rx_pkt, len); -+ pkt->buf_size = len; -+ -+ /* Properly set the packet flags */ -+ /* check if there is VLAN tagging on the -+ * packet */ -+ if (rx_hdr->l2_fhdr_status & -+ L2_FHDR_STATUS_VLAN_TAG) { -+ pkt->vlan_tag = -+ rx_hdr->l2_fhdr_vtag_len & 0x0FFF; -+ pkt->flags |= VLAN_TAGGED; -+ } else { -+ pkt->vlan_tag = 0; -+ } -+ -+ rc = 1; -+ -+ LOG_DEBUG(PFX "%s: processing packet " -+ "length: %d", nic->log_name, len); -+ } else { -+ /* If the NIC passes up a packet bigger -+ * then the RX buffer, flag it */ -+ LOG_ERR(PFX "%s: invalid packet length %d " -+ "recieve ", nic->log_name, len); -+ } -+ } -+ -+ bp->rx_index++; -+ sw_cons = NEXT_RX_BD(sw_cons); -+ bp->rx_prod = NEXT_RX_BD(bp->rx_prod); -+ bp->rx_bseq += 0x400; -+ -+ bp->rx_cons = sw_cons; -+ bnx2_wr16(bp, bp->rx_bidx_io, bp->rx_prod); -+ bnx2_wr32(bp, bp->rx_bseq_io, bp->rx_bseq); -+ -+ bnx2_reg_sync(bp, bp->rx_bidx_io, sizeof(__u16)); -+ bnx2_reg_sync(bp, bp->rx_bseq_io, sizeof(__u32)); -+ -+ /* bump the bnx2 dev recv statistics */ -+ nic->stats.rx.packets++; -+ nic->stats.rx.bytes += pkt->buf_size; -+ } -+ -+ return rc; -+} -+ -+/******************************************************************************* -+ * Clearing TX interrupts -+ ******************************************************************************/ -+/** -+ * bnx2_clear_tx_intr() - This routine is called when a TX interrupt occurs -+ * @param nic - the nic the interrupt occured on -+ * @return 0 on success -+ */ -+static int bnx2_clear_tx_intr(nic_t * nic) -+{ -+ bnx2_t *bp = (bnx2_t *) nic->priv; -+ uint16_t hw_cons = bp->get_tx_cons(bp); -+ -+ /* Sanity check: ensure the parameters passed in are valid */ -+ if (unlikely(nic == NULL)) { -+ LOG_ERR(PFX "bnx2_read() nic == NULL"); -+ return -EINVAL; -+ } -+ -+ if (bp->flags & BNX2_UIO_TX_HAS_SENT) { -+ bp->flags &= ~BNX2_UIO_TX_HAS_SENT; -+ } -+ -+ LOG_DEBUG(PFX "%s: clearing tx interrupt [%d %d]", -+ nic->log_name, bp->tx_cons, hw_cons); -+ -+ bp->tx_cons = hw_cons; -+ -+ /* There is a queued TX packet that needs to be sent out. The usual -+ * case is when stack will send an ARP packet out before sending the -+ * intended packet */ -+ if (nic->tx_packet_queue != NULL) { -+ packet_t *pkt; -+ -+ LOG_DEBUG(PFX "%s: sending queued tx packet", nic->log_name); -+ pkt = nic_dequeue_tx_packet(nic); -+ -+ /* Got a TX packet buffer of the TX queue and put it onto -+ * the hardware */ -+ if (pkt != NULL) { -+ bnx2_prepare_xmit_packet(nic, pkt->nic_iface, pkt); -+ -+ bnx2_start_xmit(nic, pkt->buf_size, -+ pkt->nic_iface->vlan_id); -+ -+ LOG_DEBUG(PFX "%s: transmitted queued packet %d bytes " -+ "dev->tx_cons: %d, dev->tx_prod: %d, " -+ "dev->tx_bseq:%d", -+ nic->log_name, pkt->buf_size, -+ bp->tx_cons, bp->tx_prod, bp->tx_bseq); -+ -+ return -EAGAIN; -+ } -+ } -+ -+ pthread_mutex_unlock(&nic->xmit_mutex); -+ -+ return 0; -+} -+ -+/******************************************************************************* -+ * bnx2 NIC op's table -+ ******************************************************************************/ -+struct nic_ops bnx2_op = { -+ .description = "bnx2", -+ .open = bnx2_open, -+ .close = bnx2_close, -+ .write = bnx2_write, -+ .get_tx_pkt = bnx2_get_tx_pkt, -+ .start_xmit = bnx2_start_xmit, -+ .read = bnx2_read, -+ .clear_tx_intr = bnx2_clear_tx_intr, -+ .handle_iscsi_path_req = cnic_handle_iscsi_path_req, -+ -+ .lib_ops = { -+ .get_library_name = bnx2_get_library_name, -+ .get_pci_table = bnx2_get_pci_table, -+ .get_library_version = bnx2_get_library_version, -+ .get_build_date = bnx2_get_build_date, -+ .get_transport_name = bnx2_get_transport_name, -+ .get_uio_name = bnx2_get_uio_name, -+ }, -+}; -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/libs/bnx2.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/libs/bnx2.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/libs/bnx2.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/libs/bnx2.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,302 @@ -+/* -+ * Copyright (c) 2009-2011, Broadcom Corporation -+ * -+ * Written by: Benjamin Li (benli@broadcom.com) -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * bnx2.h - bnx2 user space driver -+ * -+ */ -+#ifndef __BNX2_H__ -+#define __BNX2_H__ -+ -+#include "nic.h" -+ -+/****************************************************************************** -+ * Default BNX2 values -+ ******************************************************************************/ -+#define DEFAULT_NUM_RXBD 3 -+#define DEFAULT_RX_LEN 0x400 -+ -+/****************************************************************************** -+ * BNX2 Hardware structures -+ ******************************************************************************/ -+/* status_block definition for MSI */ -+struct status_block { -+ volatile __u32 status_attn_bits; -+ volatile __u32 status_attn_bits_ack; -+ volatile __u32 tx0; -+ volatile __u32 tx2; -+ volatile __u32 rx0; -+ volatile __u32 rx2; -+ volatile __u32 rx4; -+ volatile __u32 rx6; -+ volatile __u32 rx8; -+ volatile __u32 rx10; -+ volatile __u32 rx12; -+ volatile __u32 rx14; -+ volatile __u32 cmd; -+ volatile __u32 idx; -+}; -+ -+/* status_block definition for MSI-X */ -+struct status_block_msix { -+#if 0 -+#if defined(__BIG_ENDIAN) -+ __u16 status_tx_quick_consumer_index; -+ __u16 status_rx_quick_consumer_index; -+ __u16 status_completion_producer_index; -+ __u16 status_cmd_consumer_index; -+ __u32 status_unused; -+ __u16 status_idx; -+ __u8 status_unused2; -+ __u8 status_blk_num; -+#elif defined(__LITTLE_ENDIAN) -+ __u16 status_rx_quick_consumer_index; -+ __u16 status_tx_quick_consumer_index; -+ __u16 status_cmd_consumer_index; -+ __u16 status_completion_producer_index; -+ __u32 status_unused; -+ __u8 status_blk_num; -+ __u8 status_unused2; -+ __u16 status_idx; -+#endif -+#endif -+ __u16 status_rx_quick_consumer_index; -+ __u16 status_tx_quick_consumer_index; -+ __u16 status_cmd_consumer_index; -+ __u16 status_completion_producer_index; -+ __u32 status_unused; -+ __u8 status_blk_num; -+ __u8 status_unused2; -+ __u16 status_idx; -+}; -+ -+/* TX Buffer descriptor */ -+struct tx_bd { -+ __u32 tx_bd_haddr_hi; -+ __u32 tx_bd_haddr_lo; -+ __u32 tx_bd_mss_nbytes; -+ __u32 tx_bd_vlan_tag_flags; -+#define TX_BD_FLAGS_VLAN_TAG (1<<3) -+#define TX_BD_FLAGS_END (1<<6) -+#define TX_BD_FLAGS_START (1<<7) -+}; -+ -+/* RX Buffer descriptor */ -+struct rx_bd { -+ __u32 rx_bd_haddr_hi; -+ __u32 rx_bd_haddr_lo; -+ -+ __u32 rx_bd_len; -+ __u32 rx_bd_flags; -+#define RX_BD_FLAGS_END (1<<2) -+#define RX_BD_FLAGS_START (1<<3) -+ -+}; -+ -+/* This is the RX L2 Frame header */ -+struct l2_fhdr { -+ __u32 l2_fhdr_status; -+#define L2_FHDR_ERRORS_BAD_CRC (1<<17) -+#define L2_FHDR_ERRORS_PHY_DECODE (1<<18) -+#define L2_FHDR_ERRORS_ALIGNMENT (1<<19) -+#define L2_FHDR_ERRORS_TOO_SHORT (1<<20) -+#define L2_FHDR_ERRORS_GIANT_FRAME (1<<21) -+#define L2_FHDR_ERRORS_TCP_XSUM (1<<28) -+#define L2_FHDR_ERRORS_UDP_XSUM (1<<31) -+ -+#define L2_FHDR_STATUS_UDP_DATAGRAM (1<<15) -+#define L2_FHDR_STATUS_TCP_DATAGRAM (1<<14) -+#define L2_FHDR_STATUS_IP_DATAGRAM (1<<13) -+#define L2_FHDR_STATUS_LLC_SNAP (1<<7) -+#define L2_FHDR_STATUS_VLAN_TAG (1<<6) -+ -+ __u32 l2_fhdr_hash; -+ -+ __u32 l2_fhdr_vtag_len; -+ __u32 l2_fhdr_xsum; -+}; -+ -+/****************************************************************************** -+ * BNX2 Registers Defitions/Values -+ ******************************************************************************/ -+#define BNX2_MISC_ID 0x00000808 -+#define BNX2_EMAC_MAC_MATCH4 0x00001420 -+#define BNX2_EMAC_MAC_MATCH5 0x00001424 -+ -+#define BNX2_EMAC_RX_MODE 0x000014c8 -+#define BNX2_EMAC_RX_MODE_RESET (1L<<0) -+#define BNX2_EMAC_RX_MODE_FLOW_EN (1L<<2) -+#define BNX2_EMAC_RX_MODE_KEEP_MAC_CONTROL (1L<<3) -+#define BNX2_EMAC_RX_MODE_KEEP_PAUSE (1L<<4) -+#define BNX2_EMAC_RX_MODE_ACCEPT_OVERSIZE (1L<<5) -+#define BNX2_EMAC_RX_MODE_ACCEPT_RUNTS (1L<<6) -+#define BNX2_EMAC_RX_MODE_LLC_CHK (1L<<7) -+#define BNX2_EMAC_RX_MODE_PROMISCUOUS (1L<<8) -+#define BNX2_EMAC_RX_MODE_NO_CRC_CHK (1L<<9) -+#define BNX2_EMAC_RX_MODE_KEEP_VLAN_TAG (1L<<10) -+#define BNX2_EMAC_RX_MODE_FILT_BROADCAST (1L<<11) -+#define BNX2_EMAC_RX_MODE_SORT_MODE (1L<<12) -+ -+#define BNX2_RPM_SORT_USER2 0x00001828 -+#define BNX2_RPM_SORT_USER2_PM_EN (0xffffL<<0) -+#define BNX2_RPM_SORT_USER2_BC_EN (1L<<16) -+#define BNX2_RPM_SORT_USER2_MC_EN (1L<<17) -+#define BNX2_RPM_SORT_USER2_MC_HSH_EN (1L<<18) -+#define BNX2_RPM_SORT_USER2_PROM_EN (1L<<19) -+#define BNX2_RPM_SORT_USER2_VLAN_EN (0xfL<<20) -+#define BNX2_RPM_SORT_USER2_PROM_VLAN (1L<<24) -+#define BNX2_RPM_SORT_USER2_ENA (1L<<31) -+ -+/* -+ * tsch_reg definition -+ * offset: 0x4c00 -+ */ -+#define BNX2_TSCH_TSS_CFG 0x00004c1c -+#define BNX2_TSCH_TSS_CFG_TSS_START_CID (0x7ffL<<8) -+#define BNX2_TSCH_TSS_CFG_NUM_OF_TSS_CON (0xfL<<24) -+#define CNIC_UIO_INVALID_FD -1 -+ -+#define BNX2_L2CTX_TX_HOST_BIDX 0x00000088 -+#define BNX2_L2CTX_TX_HOST_BSEQ 0x00000090 -+ -+#define BNX2_L2CTX_HOST_BDIDX 0x00000004 -+#define BNX2_L2CTX_HOST_BSEQ 0x00000008 -+ -+/* Used to determin the CHIP ID */ -+/* chip num:16-31, rev:12-15, metal:4-11, bond_id:0-3 */ -+#define CHIP_NUM(bp) ((bp) & 0xffff0000) -+#define CHIP_NUM_5706 0x57060000 -+#define CHIP_NUM_5708 0x57080000 -+#define CHIP_NUM_5709 0x57090000 -+ -+#define CHIP_REV(bp) ((bp) & 0x0000f000) -+#define CHIP_REV_Ax 0x00000000 -+#define CHIP_REV_Bx 0x00001000 -+#define CHIP_REV_Cx 0x00002000 -+ -+#define CHIP_METAL(bp) ((bp) & 0x00000ff0) -+#define CHIP_BONDING(bp) ((bp) & 0x0000000f) -+ -+#define CHIP_ID(bp) ((bp) & 0xfffffff0) -+#define CHIP_ID_5706_A0 0x57060000 -+#define CHIP_ID_5706_A1 0x57060010 -+#define CHIP_ID_5706_A2 0x57060020 -+#define CHIP_ID_5708_A0 0x57080000 -+#define CHIP_ID_5708_B0 0x57081000 -+#define CHIP_ID_5708_B1 0x57081010 -+#define CHIP_ID_5709_A0 0x57090000 -+#define CHIP_ID_5709_A1 0x57090010 -+ -+#define CHIP_BOND_ID(bp) ((bp) & 0xf) -+ -+#define BNX2_SBLK_EVEN_IDX(x) (((x) & 0xffff0000) >> 16) -+ -+#define TX_DESC_CNT (4096 / sizeof(struct tx_bd)) -+#define MAX_TX_DESC_CNT (TX_DESC_CNT - 1) -+ -+#define NEXT_TX_BD(x) (((x) & (MAX_TX_DESC_CNT - 1)) == \ -+ (MAX_TX_DESC_CNT - 1)) ? \ -+ (x) + 2 : (x) + 1 -+ -+#define TX_RING_IDX(x) ((x) & MAX_TX_DESC_CNT) -+ -+#define RX_DESC_CNT (4096 / sizeof(struct rx_bd)) -+#define MAX_RX_DESC_CNT (RX_DESC_CNT - 1) -+ -+#define NEXT_RX_BD(x) (((x) & (MAX_RX_DESC_CNT - 1)) == \ -+ (MAX_RX_DESC_CNT - 1)) ? \ -+ (x) + 2 : (x) + 1 -+ -+#define MB_KERNEL_CTX_SHIFT 8 -+#define MB_KERNEL_CTX_SIZE (1 << MB_KERNEL_CTX_SHIFT) -+#define MB_KERNEL_CTX_MASK (MB_KERNEL_CTX_SIZE - 1) -+#define MB_GET_CID_ADDR(_cid) (0x10000 + ((_cid) << MB_KERNEL_CTX_SHIFT)) -+ -+typedef struct bnx2 { -+ nic_t *parent; -+ -+ uint16_t flags; -+#define BNX2_UIO_MSIX_ENABLED 0x0001 -+#define BNX2_UIO_TX_HAS_SENT 0x0002 -+#define BNX2_OPENED 0x0004 -+ -+ void *reg; /* Pointer to the mapped registers */ -+ -+ __u32 tx_bidx_io; -+ __u32 tx_bseq_io; -+ -+ __u16 tx_prod; -+ __u16 tx_cons; -+ __u32 tx_bseq; -+ -+ __u32 rx_bidx_io; -+ __u32 rx_bseq_io; -+ -+ __u16 rx_prod; -+ __u16 rx_cons; -+ __u32 rx_bseq; -+ -+ /* RX ring parameters */ -+ uint32_t rx_ring_size; -+ uint32_t rx_buffer_size; -+ -+ void *bufs; /* Pointer to the mapped buffer space */ -+ -+ /* Hardware Status Block locations */ -+ void *sblk_map; -+ union { -+ struct status_block *msi; -+ struct status_block_msix *msix; -+ } status_blk; -+ size_t status_blk_size; -+ -+ __u16(*get_rx_cons) (struct bnx2 *); -+ __u16(*get_tx_cons) (struct bnx2 *); -+ -+ uint16_t rx_index; -+ struct l2_fhdr **rx_ring; -+ void **rx_pkt_ring; -+ -+ struct tx_bd *tx_ring; -+ void *tx_pkt; -+ -+ struct l2_fhdr rcv_l2_fhdr; -+ __u8 rcv_buf[1500 + 2]; -+ __u32 rcv_size; -+} bnx2_t; -+ -+/****************************************************************************** -+ * bnx2 Function Declarations -+ ******************************************************************************/ -+struct nic_ops *bnx2_get_ops(); -+#endif /* __BNX2_H__ */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/libs/bnx2x.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/libs/bnx2x.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/libs/bnx2x.c 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/libs/bnx2x.c 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,1536 @@ -+/* -+ * Copyright (c) 2009-2011, Broadcom Corporation -+ * -+ * Written by: Benjamin Li (benli@broadcom.com) -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * bnx2x.c - bnx2x user space driver -+ * -+ */ -+#include -+#include -+#include -+#include -+#include /* Needed for linux/ethtool.h on RHEL 5.x */ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "config.h" -+ -+#include "build_date.h" -+#include "bnx2x.h" -+#include "cnic.h" -+#include "logger.h" -+#include "nic.h" -+#include "nic_id.h" -+#include "nic_utils.h" -+#include "options.h" -+ -+#define PFX "bnx2x " -+ -+/* Foward struct declarations */ -+struct nic_ops bnx2x_op; -+ -+/******************************************************************************* -+ * NIC Library Strings -+ ******************************************************************************/ -+static const char library_name[] = "bnx2x"; -+static const char library_version[] = PACKAGE_VERSION; -+static const char library_uio_name[] = "bnx2x_cnic"; -+ -+/* The name that should be returned from /sys/class/uio/uio0/name */ -+static const char cnic_uio_sysfs_name_tempate[] = "/sys/class/uio/uio%i/name"; -+static const char bnx2x_uio_sysfs_name[] = "bnx2x_cnic"; -+ -+static const char cnic_uio_sysfs_resc_tempate[] = -+ "/sys/class/uio/uio%i/device/resource"; -+ -+/******************************************************************************* -+ * String constants used to display human readable adapter name -+ ******************************************************************************/ -+static const char brcm_57710[] = "Broadcom NetXtreme II BCM57710 10-Gigabit"; -+static const char brcm_57711[] = "Broadcom NetXtreme II BCM57711 10-Gigabit"; -+static const char brcm_57711e[] = "Broadcom NetXtreme II BCM57711E 10-Gigabit"; -+static const char brcm_57712[] = "Broadcom NetXtreme II BCM57712 10-Gigabit"; -+static const char brcm_57712_MF[] = "Broadcom NetXtreme II BCM57712 MF " -+ "10-Gigabit"; -+static const char brcm_57712_VF[] = "Broadcom NetXtreme II BCM57712 VF " -+ "10-Gigabit"; -+static const char brcm_57800[] = "Broadcom NetXtreme II BCM57800 10-Gigabit"; -+static const char brcm_57800_MF[] = "Broadcom NetXtreme II BCM57800 MF " -+ "10-Gigabit"; -+static const char brcm_57800_VF[] = "Broadcom NetXtreme II BCM57800 VF " -+ "10-Gigabit"; -+static const char brcm_57810[] = "Broadcom NetXtreme II BCM57810 10-Gigabit"; -+static const char brcm_57810_MF[] = "Broadcom NetXtreme II BCM57810 MF " -+ "10-Gigabit"; -+static const char brcm_57810_VF[] = "Broadcom NetXtreme II BCM57810 VF " -+ "10-Gigabit"; -+static const char brcm_57840[] = "Broadcom NetXtreme II BCM57840 10-Gigabit"; -+static const char brcm_57840_MF[] = "Broadcom NetXtreme II BCM57840 MF " -+ "10-Gigabit"; -+static const char brcm_57840_VF[] = "Broadcom NetXtreme II BCM57840 VF " -+ "10-Gigabit"; -+ -+/******************************************************************************* -+ * PCI ID constants -+ ******************************************************************************/ -+#define PCI_VENDOR_ID_BROADCOM 0x14e4 -+#define PCI_DEVICE_ID_NX2_57710 0x164e -+#define PCI_DEVICE_ID_NX2_57711 0x164f -+#define PCI_DEVICE_ID_NX2_57711E 0x1650 -+#define PCI_DEVICE_ID_NX2_57712 0x1662 -+#define PCI_DEVICE_ID_NX2_57712_MF 0x1663 -+#define PCI_DEVICE_ID_NX2_57712_VF 0x166f -+#define PCI_DEVICE_ID_NX2_57800 0x168a -+#define PCI_DEVICE_ID_NX2_57800_MF 0x16a5 -+#define PCI_DEVICE_ID_NX2_57800_VF 0x16a9 -+#define PCI_DEVICE_ID_NX2_57810 0x168e -+#define PCI_DEVICE_ID_NX2_57810_MF 0x16ae -+#define PCI_DEVICE_ID_NX2_57810_VF 0x16af -+#define PCI_DEVICE_ID_NX2_57840 0x168d -+#define PCI_DEVICE_ID_NX2_57840_MF 0x16ab -+#define PCI_DEVICE_ID_NX2_57840_VF 0x16ad -+#define PCI_ANY_ID (~0) -+ -+/* This is the table used to match PCI vendor and device ID's to the -+ * human readable string names of the devices */ -+static const struct pci_device_id bnx2x_pci_tbl[] = { -+ {PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_57710, -+ PCI_ANY_ID, PCI_ANY_ID, brcm_57710}, -+ {PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_57711, -+ PCI_ANY_ID, PCI_ANY_ID, brcm_57711}, -+ {PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_57711E, -+ PCI_ANY_ID, PCI_ANY_ID, brcm_57711e}, -+ {PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_57712, -+ PCI_ANY_ID, PCI_ANY_ID, brcm_57712}, -+ {PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_57712_MF, -+ PCI_ANY_ID, PCI_ANY_ID, brcm_57712_MF}, -+ {PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_57712_VF, -+ PCI_ANY_ID, PCI_ANY_ID, brcm_57712_VF}, -+ {PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_57800, -+ PCI_ANY_ID, PCI_ANY_ID, brcm_57800}, -+ {PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_57800_MF, -+ PCI_ANY_ID, PCI_ANY_ID, brcm_57800_MF}, -+ {PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_57800_VF, -+ PCI_ANY_ID, PCI_ANY_ID, brcm_57800_VF}, -+ {PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_57810, -+ PCI_ANY_ID, PCI_ANY_ID, brcm_57810}, -+ {PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_57810_MF, -+ PCI_ANY_ID, PCI_ANY_ID, brcm_57810_MF}, -+ {PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_57810_VF, -+ PCI_ANY_ID, PCI_ANY_ID, brcm_57810_VF}, -+ {PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_57840, -+ PCI_ANY_ID, PCI_ANY_ID, brcm_57840}, -+ {PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_57840_MF, -+ PCI_ANY_ID, PCI_ANY_ID, brcm_57840_MF}, -+ {PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_NX2_57840_VF, -+ PCI_ANY_ID, PCI_ANY_ID, brcm_57840_VF}, -+}; -+ -+static struct iro e1_iro[2] = { -+ {0x45a0, 0x90, 0x8, 0x0, 0x8}, /* T6.0 */ -+ {0x50c8, 0x90, 0x8, 0x0, 0x8}, /* T6.4 */ -+}; -+ -+static struct iro e1h_iro[2] = { -+ {0x1c40, 0xe0, 0x8, 0x0, 0x8}, /* T6.0 */ -+ {0x1e00, 0xe0, 0x8, 0x0, 0x8}, /* T6.4 */ -+}; -+ -+static struct iro e2_iro[2] = { -+ {0x6000, 0x20, 0x0, 0x0, 0x8}, /* T6.0 */ -+ {0x6000, 0x20, 0x0, 0x0, 0x8}, /* T6.4 */ -+}; -+ -+struct bnx2x_driver_version bnx2x_version = { -+ BNX2X_UNKNOWN_MAJOR_VERSION, -+ BNX2X_UNKNOWN_MINOR_VERSION, -+ BNX2X_UNKNOWN_SUB_MINOR_VERSION, -+}; -+ -+static int bnx2x_clear_tx_intr(nic_t * nic); -+ -+/******************************************************************************* -+ * BNX2X Library Functions -+ ******************************************************************************/ -+/** -+ * bnx2x_get_library_name() - Used to get the name of this NIC libary -+ * @param name - This function will return the pointer to this NIC -+ * library name -+ * @param name_size -+ */ -+static void bnx2x_get_library_name(char **name, size_t * name_size) -+{ -+ *name = (char *)library_name; -+ *name_size = sizeof(library_name); -+} -+ -+/** -+ * bnx2x_get_library_version() - Used to get the version string of this -+ * NIC libary -+ * @param version - This function will return the pointer to this NIC -+ * library version string -+ * @param version_size - This will be set with the version size -+ */ -+static void bnx2x_get_library_version(char **version, size_t * version_size) -+{ -+ *version = (char *)library_version; -+ *version_size = sizeof(library_version); -+} -+ -+/** -+ * bnx2x_get_build_date() - Used to get the build date string of this library -+ * @param version - This function will return the pointer to this NIC -+ * library build date string -+ * @param version_size - This will be set with the build date string size -+ */ -+static void bnx2x_get_build_date(char **build, size_t * build_size) -+{ -+ *build = (char *)build_date; -+ *build_size = sizeof(build_date); -+} -+ -+/** -+ * bnx2x_get_transport_name() - Used to get the transport name associated -+ * with this this NIC libary -+ * @param transport_name - This function will return the pointer to this NIC -+ * library's associated transport string -+ * @param transport_name_size - This will be set with the transport name size -+ */ -+static void bnx2x_get_transport_name(char **transport_name, -+ size_t * transport_name_size) -+{ -+ *transport_name = (char *)bnx2i_library_transport_name; -+ *transport_name_size = bnx2i_library_transport_name_size; -+} -+ -+/** -+ * bnx2x_get_uio_name() - Used to get the uio name associated with this this -+ * NIC libary -+ * @param uio_name - This function will return the pointer to this NIC -+ * library's associated uio string -+ * @param transport_name_size - This will be set with the uio name size -+ */ -+static void bnx2x_get_uio_name(char **uio_name, size_t * uio_name_size) -+{ -+ *uio_name = (char *)library_uio_name; -+ *uio_name_size = sizeof(library_uio_name); -+} -+ -+/** -+ * bnx2x_get_pci_table() - Used to get the PCI table for this NIC libary to -+ * determine which NIC's based off of PCI ID's are -+ * supported -+ * @param table - This function will return the pointer to the PCI table -+ * @param entries - This function will return the number of entries in the NIC -+ * library's PCI table -+ */ -+static void bnx2x_get_pci_table(struct pci_device_id **table, -+ uint32_t * entries) -+{ -+ *table = (struct pci_device_id *)bnx2x_pci_tbl; -+ *entries = -+ (uint32_t) (sizeof(bnx2x_pci_tbl) / sizeof(bnx2x_pci_tbl[0])); -+} -+ -+/** -+ * bnx2x_get_ops() - Used to get the NIC library op table -+ * @param op - The op table of this NIC library -+ */ -+struct nic_ops *bnx2x_get_ops() -+{ -+ return &bnx2x_op; -+} -+ -+/******************************************************************************* -+ * bnx2x Utility Functions -+ ******************************************************************************/ -+/******************************************************************************* -+ * Utility Functions Used to read register from the bnx2x device -+ ******************************************************************************/ -+static void bnx2x_set_drv_version_unknown(bnx2x_t * bp) -+{ -+ bp->version.major = BNX2X_UNKNOWN_MAJOR_VERSION; -+ bp->version.minor = BNX2X_UNKNOWN_MINOR_VERSION; -+ bp->version.sub_minor = BNX2X_UNKNOWN_SUB_MINOR_VERSION; -+} -+ -+static int bnx2x_is_drv_version_unknown(struct bnx2x_driver_version *version) -+{ -+ if ((version->major == BNX2X_UNKNOWN_MAJOR_VERSION) && -+ (version->minor == BNX2X_UNKNOWN_MINOR_VERSION) && -+ (version->sub_minor == BNX2X_UNKNOWN_SUB_MINOR_VERSION)) { -+ return 1; -+ } -+ -+ return 0; -+} -+ -+/** -+ * bnx2x_get_drv_version() - Used to determine the driver version -+ * @param bp - Device used to determine bnx2x driver version -+ */ -+static int bnx2x_get_drv_version(bnx2x_t * bp) -+{ -+ nic_t *nic = bp->parent; -+ int fd, rc; -+ struct ifreq ifr; -+ struct ethtool_drvinfo drvinfo; -+ char *tok, *save_ptr = NULL; -+ -+ /* Setup our control structures. */ -+ memset(&ifr, 0, sizeof(ifr)); -+ strcpy(ifr.ifr_name, nic->eth_device_name); -+ -+ /* Open control socket. */ -+ fd = socket(AF_INET, SOCK_DGRAM, 0); -+ if (fd < 0) { -+ LOG_ERR(PFX "%s: Cannot get socket to determine version " -+ "[0x%x %s]", nic->log_name, errno, strerror(errno)); -+ return -EIO; -+ } -+ -+ drvinfo.cmd = ETHTOOL_GDRVINFO; -+ ifr.ifr_data = (caddr_t) & drvinfo; -+ rc = ioctl(fd, SIOCETHTOOL, &ifr); -+ if (rc < 0) { -+ LOG_ERR(PFX "%s: call to ethool IOCTL failed [0x%x %s]", -+ nic->log_name, errno, strerror(errno)); -+ goto error; -+ } -+ -+ tok = strtok_r(drvinfo.version, ".", &save_ptr); -+ if (tok == NULL) { -+ rc = -EIO; -+ goto error; -+ } -+ bp->version.major = atoi(tok); -+ -+ tok = strtok_r(NULL, ".", &save_ptr); -+ if (tok == NULL) { -+ rc = -EIO; -+ goto error; -+ } -+ bp->version.minor = atoi(tok); -+ -+ tok = strtok_r(NULL, ".", &save_ptr); -+ if (tok == NULL) { -+ rc = -EIO; -+ goto error; -+ } -+ bp->version.sub_minor = atoi(tok); -+ -+ LOG_INFO(PFX "%s: bnx2x driver using version %d.%d.%d", -+ nic->log_name, -+ bp->version.major, bp->version.minor, bp->version.sub_minor); -+ -+ close(fd); -+ -+ return 0; -+ -+error: -+ close(fd); -+ bnx2x_set_drv_version_unknown(bp); -+ -+ LOG_ERR(PFX "%s: error parsing driver string: '%s'", -+ nic->log_name, drvinfo.version); -+ -+ return rc; -+ -+} -+ -+static inline int bnx2x_is_ver70(bnx2x_t *bp) -+{ -+ return (bp->version.major == 1 && bp->version.minor == 70); -+} -+ -+static inline int bnx2x_is_ver60(bnx2x_t * bp) -+{ -+ return (bp->version.major == 1 && (bp->version.minor == 60 || -+ bp->version.minor == 62 || -+ bp->version.minor == 64)); -+} -+ -+static inline int bnx2x_is_ver60_plus(bnx2x_t *bp) -+{ -+ return bnx2x_is_ver60(bp) || bnx2x_is_ver70(bp); -+} -+ -+static inline int bnx2x_is_ver52(bnx2x_t * bp) -+{ -+ return (bp->version.major == 1 && bp->version.minor == 52); -+} -+ -+static void bnx2x_wr32(bnx2x_t * bp, __u32 off, __u32 val) -+{ -+ *((volatile __u32 *)(bp->reg + off)) = val; -+} -+ -+static void bnx2x_doorbell(bnx2x_t * bp, __u32 off, __u32 val) -+{ -+ *((volatile __u32 *)(bp->reg2 + off)) = val; -+} -+ -+static void bnx2x_flush_doorbell(bnx2x_t * bp, __u32 off) -+{ -+ volatile __u32 tmp; -+ -+ barrier(); -+ tmp = *((volatile __u32 *)(bp->reg2 + off)); -+} -+ -+static __u32 bnx2x_rd32(bnx2x_t * bp, __u32 off) -+{ -+ return *((volatile __u32 *)(bp->reg + off)); -+} -+ -+static int bnx2x_reg_sync(bnx2x_t * bp, __u32 off, __u16 length) -+{ -+ return msync(bp->reg + off, length, MS_SYNC); -+} -+ -+static void bnx2x_update_rx_prod(bnx2x_t * bp) -+{ -+ struct ustorm_eth_rx_producers rx_prods = { 0 }; -+ int i; -+ -+ rx_prods.bd_prod = bp->rx_bd_prod; -+ rx_prods.cqe_prod = bp->rx_prod; -+ -+ barrier(); -+ -+ for (i = 0; i < sizeof(struct ustorm_eth_rx_producers) / 4; i++) -+ bnx2x_wr32(bp, bp->rx_prod_io + i * 4, -+ ((__u32 *)&rx_prods)[i]); -+ -+ barrier(); -+ -+ bnx2x_reg_sync(bp, bp->rx_prod_io, -+ sizeof(struct ustorm_eth_rx_producers)); -+} -+ -+/** -+ * bnx2x_get_chip_id() - Used to retrive the chip ID from the nic -+ * @param dev - Device used to determin NIC type -+ * @return Chip ID read from the MISC ID register -+ */ -+static int bnx2x_get_chip_id(bnx2x_t * bp) -+{ -+ int val, id; -+ -+ /* Get the chip revision id and number. */ -+ /* chip num:16-31, rev:12-15, metal:4-11, bond_id:0-3 */ -+ val = bnx2x_rd32(bp, BNX2X_MISC_REG_CHIP_NUM); -+ id = ((val & 0xffff) << 16); -+ val = bnx2x_rd32(bp, BNX2X_MISC_REG_CHIP_REV); -+ id |= ((val & 0xf) << 12); -+ val = bnx2x_rd32(bp, BNX2X_MISC_REG_CHIP_METAL); -+ id |= ((val & 0xff) << 4); -+ val = bnx2x_rd32(bp, BNX2X_MISC_REG_BOND_ID); -+ id |= (val & 0xf); -+ -+ return id; -+} -+ -+/** -+ * bnx2x_uio_verify() -+ * -+ */ -+static int bnx2x_uio_verify(nic_t * nic) -+{ -+ char *raw = NULL, *raw_tmp; -+ uint32_t raw_size = 0; -+ char temp_path[sizeof(cnic_uio_sysfs_name_tempate) + 8]; -+ int rc = 0; -+ -+ /* Build the path to determine uio name */ -+ snprintf(temp_path, sizeof(temp_path), -+ cnic_uio_sysfs_name_tempate, nic->uio_minor); -+ -+ rc = capture_file(&raw, &raw_size, temp_path); -+ if (rc != 0) { -+ goto error; -+ } -+ -+ /* sanitize name string by replacing newline with null termination */ -+ raw_tmp = raw; -+ while (*raw_tmp != '\n') -+ raw_tmp++; -+ *raw_tmp = '\0'; -+ -+ if (strncmp(raw, bnx2x_uio_sysfs_name, -+ sizeof(bnx2x_uio_sysfs_name)) != 0) { -+ LOG_ERR(PFX "%s: uio names not equal: " -+ "expecting %s got %s from %s", -+ nic->log_name, bnx2x_uio_sysfs_name, raw, temp_path); -+ rc = -EIO; -+ } -+ -+ free(raw); -+ -+ LOG_INFO(PFX "%s: Verified is a cnic_uio device", nic->log_name); -+ -+ error: -+ return rc; -+} -+ -+static unsigned long cnic_get_bar2(nic_t * nic) -+{ -+ char *raw = NULL, *raw_tmp; -+ uint32_t raw_size = 0; -+ char temp_path[sizeof(cnic_uio_sysfs_resc_tempate) + 8]; -+ int rc = 0, i, new_line; -+ unsigned long bar = 0; -+ -+ /* Build the path to determine uio name */ -+ snprintf(temp_path, sizeof(temp_path), -+ cnic_uio_sysfs_resc_tempate, nic->uio_minor); -+ -+ rc = capture_file(&raw, &raw_size, temp_path); -+ if (rc != 0) -+ return 0; -+ -+ /* Skip 2 lines to get to BAR2 */ -+ raw_tmp = raw; -+ i = 0; -+ new_line = 0; -+ while (i++ < raw_size && new_line < 2) { -+ if (*raw_tmp == '\n') -+ new_line++; -+ raw_tmp++; -+ } -+ -+ if (new_line == 2) -+ sscanf(raw_tmp, "%lx ", &bar); -+ -+ free(raw); -+ -+ return bar; -+} -+ -+/******************************************************************************* -+ * bnx2x Utility Functions to get to the hardware consumer indexes -+ ******************************************************************************/ -+static __u16 bnx2x_get_rx(bnx2x_t * bp) -+{ -+ struct host_def_status_block *sblk = bp->status_blk.def; -+ __u16 rx_comp_cons; -+ -+ msync(sblk, sizeof(*sblk), MS_SYNC); -+ rx_comp_cons = -+ sblk->u_def_status_block. -+ index_values[HC_INDEX_DEF_U_ETH_ISCSI_RX_CQ_CONS]; -+ if ((rx_comp_cons & BNX2X_MAX_RCQ_DESC_CNT(bp)) == -+ BNX2X_MAX_RCQ_DESC_CNT(bp)) -+ rx_comp_cons++; -+ -+ return rx_comp_cons; -+} -+ -+static __u16 bnx2x_get_rx_60(bnx2x_t * bp) -+{ -+ struct host_sp_status_block *sblk = bp->status_blk.sp; -+ __u16 rx_comp_cons; -+ -+ msync(sblk, sizeof(*sblk), MS_SYNC); -+ rx_comp_cons = -+ sblk->sp_sb.index_values[HC_SP_INDEX_ETH_ISCSI_RX_CQ_CONS]; -+ if ((rx_comp_cons & BNX2X_MAX_RCQ_DESC_CNT(bp)) == -+ BNX2X_MAX_RCQ_DESC_CNT(bp)) -+ rx_comp_cons++; -+ -+ return rx_comp_cons; -+} -+ -+static __u16 bnx2x_get_tx(bnx2x_t * bp) -+{ -+ struct host_def_status_block *sblk = bp->status_blk.def; -+ __u16 tx_cons; -+ -+ msync(sblk, sizeof(*sblk), MS_SYNC); -+ tx_cons = -+ sblk->c_def_status_block. -+ index_values[HC_INDEX_DEF_C_ETH_ISCSI_CQ_CONS]; -+ -+ return tx_cons; -+} -+ -+static __u16 bnx2x_get_tx_60(bnx2x_t * bp) -+{ -+ struct host_sp_status_block *sblk = bp->status_blk.sp; -+ __u16 tx_cons; -+ -+ msync(sblk, sizeof(*sblk), MS_SYNC); -+ tx_cons = sblk->sp_sb.index_values[HC_SP_INDEX_ETH_ISCSI_CQ_CONS]; -+ -+ return tx_cons; -+} -+ -+typedef enum { -+ CNIC_VLAN_STRIPPING_ENABLED = 1, -+ CNIC_VLAN_STRIPPING_DISABLED = 2, -+} CNIC_VLAN_STRIPPING_MODE; -+ -+/** -+ * bnx2x_strip_vlan_enabled() - This will query the device to determine whether -+ * VLAN tag stripping is enabled or not -+ * @param dev - device to check stripping or not -+ * @ return CNIC_VLAN_STRIPPING_ENABLED stripping is enabled -+ * CNIC_VLAN_STRIPPING_DISABLED stripping is not enabled -+ */ -+static CNIC_VLAN_STRIPPING_MODE bnx2x_strip_vlan_enabled(bnx2x_t * bp) -+{ -+ return CNIC_VLAN_STRIPPING_DISABLED; -+} -+ -+/** -+ * bnx2x_alloc() - Used to allocate a CNIC structure -+ */ -+static bnx2x_t *bnx2x_alloc(nic_t * nic) -+{ -+ bnx2x_t *bp = malloc(sizeof(*bp)); -+ -+ if (bp == NULL) { -+ LOG_ERR(PFX "%s: Could not allocate BNX2X space", -+ nic->log_name); -+ return NULL; -+ } -+ -+ /* Clear out the CNIC contents */ -+ memset(bp, 0, sizeof(*bp)); -+ -+ bp->mem_fd = INVALID_FD; -+ -+ bp->parent = nic; -+ nic->priv = (void *)bp; -+ -+ bnx2x_set_drv_version_unknown(bp); -+ -+ return bp; -+} -+ -+/** -+ * bnx2x_open() - This will initialize all the hardware resources underneath -+ * a struct cnic_uio device -+ * @param dev - The struct cnic_uio device to attach the hardware with -+ * @return 0 on success, on failure a errno will be returned -+ */ -+static int bnx2x_open(nic_t * nic) -+{ -+ bnx2x_t *bp; -+ struct stat uio_stat; -+ int i, rc; -+ __u32 val; -+ unsigned long bar2; -+ int count; -+ -+ uint32_t bus; -+ uint32_t slot; -+ uint32_t func; -+ -+ /* Sanity Check: validate the parameters */ -+ if (nic == NULL) { -+ LOG_ERR(PFX "nic == NULL"); -+ return -EINVAL; -+ } -+ -+ if ((nic->priv) != NULL && -+ (((bnx2x_t *) (nic->priv))->flags & BNX2X_OPENED)) { -+ return 0; -+ } -+ -+ bp = bnx2x_alloc(nic); -+ if (bp == NULL) -+ return -ENOMEM; -+ -+ if (!bnx2x_is_drv_version_unknown(&bnx2x_version)) -+ bnx2x_get_drv_version(bp); -+ else { -+ bnx2x_version.major = bp->version.major; -+ bnx2x_version.minor = bp->version.minor; -+ bnx2x_version.sub_minor = bp->version.sub_minor; -+ } -+ -+ count = 0; -+ while ((nic->fd < 0) && count < 15) { -+ /* udev might not have created the file yet */ -+ sleep(1); -+ -+ nic->fd = open(nic->uio_device_name, O_RDWR | O_NONBLOCK); -+ if (nic->fd != INVALID_FD) { -+ LOG_ERR(PFX "%s: uio device has been brought up " -+ "via pid: %d on fd: %d", -+ nic->uio_device_name, getpid(), nic->fd); -+ -+ rc = bnx2x_uio_verify(nic); -+ if (rc != 0) -+ continue; -+ -+ break; -+ } else { -+ LOG_WARN(PFX "%s: Could not open device: %s, [%s]", -+ nic->log_name, nic->uio_device_name, -+ strerror(errno)); -+ -+ manually_trigger_uio_event(nic, nic->uio_minor); -+ -+ /* udev might not have created the file yet */ -+ sleep(1); -+ -+ count++; -+ } -+ } -+ if (fstat(nic->fd, &uio_stat) < 0) { -+ LOG_ERR(PFX "%s: Could not fstat device", nic->log_name); -+ return -ENODEV; -+ } -+ nic->uio_minor = minor(uio_stat.st_rdev); -+ -+ bar2 = cnic_get_bar2(nic); -+ if (bar2 == 0) { -+ LOG_ERR(PFX "%s: Could not read BAR2", nic->log_name); -+ return -ENODEV; -+ } -+ -+ bp->mem_fd = open("/dev/mem", O_RDWR | O_SYNC); -+ if (bp->mem_fd < 0) { -+ LOG_ERR(PFX "%s: Could not open /dev/mem", nic->log_name); -+ return -ENODEV; -+ } -+ -+ bp->reg2 = mmap(NULL, BNX2X_BAR2_SIZE, PROT_READ | PROT_WRITE, -+ MAP_SHARED, bp->mem_fd, (off_t) bar2); -+ -+ if (bp->reg2 == MAP_FAILED) { -+ LOG_INFO(PFX "%s: Couldn't mmap BAR2 registers: %s", -+ nic->log_name, strerror(errno)); -+ bp->reg2 = NULL; -+ rc = errno; -+ goto open_error; -+ } -+ -+ /* TODO: hardcoded with the cnic driver */ -+ bp->rx_ring_size = 15; -+ bp->rx_buffer_size = 0x400; -+ -+ LOG_DEBUG(PFX "%s: using rx ring size: %d, rx buffer size: %d", -+ nic->log_name, bp->rx_ring_size, bp->rx_buffer_size); -+ -+ /* Determine the number of UIO events that have already occured */ -+ rc = detemine_initial_uio_events(nic, &nic->intr_count); -+ if (rc != 0) { -+ LOG_ERR("Could not determine the number ofinitial UIO events"); -+ nic->intr_count = 0; -+ } -+ -+ /* Allocate space for rx pkt ring */ -+ bp->rx_pkt_ring = malloc(sizeof(void *) * bp->rx_ring_size); -+ if (bp->rx_pkt_ring == NULL) { -+ LOG_ERR(PFX "%s: Could not allocate space for rx_pkt_ring", -+ nic->log_name); -+ rc = errno; -+ goto open_error; -+ } -+ -+ bp->reg = mmap(NULL, BNX2X_BAR_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, -+ nic->fd, (off_t) 0); -+ if (bp->reg == MAP_FAILED) { -+ LOG_INFO(PFX "%s: Couldn't mmap registers: %s", -+ nic->log_name, strerror(errno)); -+ bp->reg = NULL; -+ rc = errno; -+ goto open_error; -+ } -+ -+ msync(bp->reg, BNX2X_BAR_SIZE, MS_SYNC); -+ -+ if (bnx2x_is_ver60_plus(bp)) -+ bp->status_blk_size = sizeof(struct host_sp_status_block); -+ else if (bnx2x_is_ver52(bp)) -+ bp->status_blk_size = sizeof(struct host_def_status_block); -+ else { -+ LOG_INFO(PFX "%s: Unsupported bnx2x driver [%d.%d]", -+ nic->log_name, bp->version.major, bp->version.minor); -+ -+ rc = -ENOTSUP; -+ goto open_error; -+ } -+ -+ bp->status_blk.def = mmap(NULL, bp->status_blk_size, -+ PROT_READ | PROT_WRITE, MAP_SHARED, -+ nic->fd, (off_t) getpagesize()); -+ if (bp->status_blk.def == MAP_FAILED) { -+ LOG_INFO(PFX "%s: Could not mmap status block: %s", -+ nic->log_name, strerror(errno)); -+ bp->status_blk.def = NULL; -+ rc = errno; -+ goto open_error; -+ } -+ -+ bp->tx_ring = mmap(NULL, 4 * getpagesize(), -+ PROT_READ | PROT_WRITE, -+ MAP_SHARED | MAP_LOCKED, -+ nic->fd, (off_t) 2 * getpagesize()); -+ if (bp->tx_ring == MAP_FAILED) { -+ LOG_INFO(PFX "%s: Could not mmap tx ring: %s", -+ nic->log_name, strerror(errno)); -+ bp->tx_ring = NULL; -+ rc = errno; -+ goto open_error; -+ } -+ -+ bp->rx_comp_ring.cqe = (union eth_rx_cqe *) -+ (((__u8 *) bp->tx_ring) + 2 * getpagesize()); -+ -+ bp->bufs = mmap(NULL, (bp->rx_ring_size + 1) * bp->rx_buffer_size, -+ PROT_READ | PROT_WRITE, -+ MAP_SHARED | MAP_LOCKED, -+ nic->fd, (off_t) 3 * getpagesize()); -+ if (bp->bufs == MAP_FAILED) { -+ LOG_INFO(PFX "%s: Could not mmap buffers: %s", -+ nic->log_name, strerror(errno)); -+ bp->bufs = NULL; -+ rc = errno; -+ goto open_error; -+ } -+ -+ bp->chip_id = bnx2x_get_chip_id(bp); -+ LOG_DEBUG(PFX "Chip ID: %x", bp->chip_id); -+ -+ rc = get_bus_slot_func_num(nic, &bus, &slot, &func); -+ if (rc != 0) { -+ LOG_INFO(PFX "%s: Couldn't determine bus:slot.func", -+ nic->log_name); -+ goto open_error; -+ } -+ -+ bp->func = func; -+ bp->port = bp->func % PORT_MAX; -+ -+ if (CHIP_IS_E2_PLUS(bp)) { -+ __u32 val = bnx2x_rd32(bp, MISC_REG_PORT4MODE_EN_OVWR); -+ if (!(val & 1)) -+ val = bnx2x_rd32(bp, MISC_REG_PORT4MODE_EN); -+ else -+ val = (val >> 1) & 1; -+ -+ if (val) -+ bp->pfid = func >> 1; -+ else -+ bp->pfid = func & 0x6; -+ } else { -+ bp->pfid = func; -+ } -+ -+ if (bnx2x_is_ver60_plus(bp)) -+ bp->port = bp->pfid & 1; -+ -+ bp->cid = 17; -+ bp->client_id = 17; -+ -+ if (bnx2x_is_ver60_plus(bp)) { -+ struct client_init_general_data *data = bp->bufs; -+ -+ bp->client_id = data->client_id; -+ if (data->reserved0) -+ bp->cid = data->reserved0; -+ } -+ -+ LOG_INFO(PFX "%s: func 0x%x, pfid 0x%x, client_id 0x%x, cid 0x%x", -+ nic->log_name, bp->func, bp->pfid, bp->client_id, bp->cid); -+ -+ if (CHIP_IS_E1(bp)) -+ bp->iro = e1_iro; -+ else if (CHIP_IS_E1H(bp)) -+ bp->iro = e1h_iro; -+ else if (CHIP_IS_E2_PLUS(bp)) -+ bp->iro = e2_iro; -+ -+ if (bnx2x_is_ver60_plus(bp)) { -+ __u32 cl_qzone_id = BNX2X_CL_QZONE_ID(bp, bp->client_id); -+ -+ bp->iro_idx = 0; -+ if (bp->version.minor >= 64) { -+ bp->iro_idx = 1; -+ cl_qzone_id = BNX2X_CL_QZONE_ID_64(bp, bp->client_id); -+ } -+ -+ bp->rx_prod_io = BAR_USTRORM_INTMEM + -+ (CHIP_IS_E2_PLUS(bp) ? -+ USTORM_RX_PRODS_E2_OFFSET(cl_qzone_id) : -+ USTORM_RX_PRODS_E1X_OFFSET(bp->port, bp->client_id)); -+ -+ bp->tx_doorbell = bp->cid * 0x80 + 0x40; -+ -+ bp->get_rx_cons = bnx2x_get_rx_60; -+ bp->get_tx_cons = bnx2x_get_tx_60; -+ bp->tx_vlan_tag_bit = ETH_TX_BD_FLAGS_VLAN_TAG_T6X; -+ } else { -+ bp->rx_prod_io = BAR_USTRORM_INTMEM + -+ USTORM_RX_PRODS_OFFSET(bp->port, bp->client_id); -+ -+ bp->tx_doorbell = bp->cid * getpagesize() + 0x40; -+ -+ bp->get_rx_cons = bnx2x_get_rx; -+ bp->get_tx_cons = bnx2x_get_tx; -+ bp->tx_vlan_tag_bit = ETH_TX_BD_FLAGS_VLAN_TAG_T5X; -+ } -+ -+ bp->tx_cons = 0; -+ bp->tx_prod = 0; -+ bp->tx_bd_prod = 0; -+ bp->tx_pkt = bp->bufs; -+ -+ bp->rx_index = 0; -+ bp->rx_cons = 0; -+ bp->rx_bd_cons = 0; -+ bp->rx_prod = 127; -+ bp->rx_bd_prod = bp->rx_ring_size; -+ -+ for (i = 0; i < bp->rx_ring_size; i++) { -+ void *ptr = bp->bufs + (bp->rx_buffer_size * (i + 1)); -+ -+ bp->rx_pkt_ring[i] = ptr; -+ } -+ -+ val = bnx2x_rd32(bp, MISC_REG_SHARED_MEM_ADDR); -+ -+ bp->shmem_base = val; -+ val = bnx2x_rd32(bp, bp->shmem_base + SHMEM_ISCSI_MAC_UPPER(bp)); -+ nic->mac_addr[0] = (__u8) (val >> 8); -+ nic->mac_addr[1] = (__u8) val; -+ val = bnx2x_rd32(bp, bp->shmem_base + SHMEM_ISCSI_MAC_LOWER(bp)); -+ nic->mac_addr[2] = (__u8) (val >> 24); -+ nic->mac_addr[3] = (__u8) (val >> 16); -+ nic->mac_addr[4] = (__u8) (val >> 8); -+ nic->mac_addr[5] = (__u8) val; -+ -+ if (bnx2x_is_ver60_plus(bp) && CHIP_IS_E2_PLUS(bp)) { -+ __u32 mf_cfg_addr = 0; -+ -+ val = bnx2x_rd32(bp, (BNX2X_PATH(bp) ? MISC_REG_GENERIC_CR_1 : -+ MISC_REG_GENERIC_CR_0)); -+ bp->shmem_base2 = val; -+ if (bp->shmem_base2) { -+ /* size */ -+ val = bnx2x_rd32(bp, bp->shmem_base2); -+ -+ if (val > 0x10) -+ mf_cfg_addr = -+ bnx2x_rd32(bp, bp->shmem_base2 + 0x10); -+ } -+ -+ if (!mf_cfg_addr) -+ mf_cfg_addr = bp->shmem_base + 0x7e4; -+ -+ /* shared_feat_cfg.config */ -+ val = bnx2x_rd32(bp, bp->shmem_base + 0x354); -+ /* SI mode */ -+ if ((val & 0x700) == 0x300) { -+ __u32 mac_offset; -+ __u8 mac[6]; -+ -+ mac_offset = 0xe4 + (bp->func * 0x28) + 4; -+ val = bnx2x_rd32(bp, mf_cfg_addr + mac_offset); -+ mac[0] = (__u8) (val >> 8); -+ mac[1] = (__u8) val; -+ mac_offset += 4; -+ val = bnx2x_rd32(bp, mf_cfg_addr + mac_offset); -+ mac[2] = (__u8) (val >> 24); -+ mac[3] = (__u8) (val >> 16); -+ mac[4] = (__u8) (val >> 8); -+ mac[5] = (__u8) val; -+ -+ if (mac[0] != 0xff) { -+ memcpy(nic->mac_addr, mac, 6); -+ } else if (bp->func > 1) { -+ LOG_INFO(PFX "%s: Invalid mac address: " -+ "%02x:%02x:%02x:%02x:%02x:%02x, abort", -+ nic->log_name, -+ mac[0], mac[1], mac[2], -+ mac[3], mac[4], mac[5]); -+ rc = -ENOTSUP; -+ goto open_error; -+ } -+ } -+ } -+ -+ LOG_INFO(PFX "%s: Using mac address: %02x:%02x:%02x:%02x:%02x:%02x", -+ nic->log_name, -+ nic->mac_addr[0], nic->mac_addr[1], nic->mac_addr[2], -+ nic->mac_addr[3], nic->mac_addr[4], nic->mac_addr[5]); -+ -+ /* Determine if Hardware VLAN tag stripping is enabled or not */ -+ if (CNIC_VLAN_STRIPPING_ENABLED == bnx2x_strip_vlan_enabled(bp)) { -+ nic->flags |= NIC_VLAN_STRIP_ENABLED; -+ } -+ -+ msync(bp->reg, BNX2X_BAR_SIZE, MS_SYNC); -+ -+ LOG_INFO("%s: bnx2x initialized", nic->log_name); -+ -+ bnx2x_update_rx_prod(bp); -+ bp->flags |= BNX2X_OPENED; -+ -+ return 0; -+ -+open_error: -+ if (bp->tx_ring) { -+ munmap(bp->tx_ring, 4 * getpagesize()); -+ bp->tx_ring = NULL; -+ } -+ -+ if (bp->status_blk.def) { -+ munmap(bp->status_blk.def, bp->status_blk_size); -+ bp->status_blk.def = NULL; -+ } -+ -+ if (bp->reg) { -+ munmap(bp->reg, BNX2X_BAR_SIZE); -+ bp->reg = NULL; -+ } -+ -+ if (bp->reg2) { -+ munmap(bp->reg2, BNX2X_BAR2_SIZE); -+ bp->reg2 = NULL; -+ } -+ -+ if (bp->rx_pkt_ring) { -+ free(bp->rx_pkt_ring); -+ bp->rx_pkt_ring = NULL; -+ } -+ -+ if (bp->mem_fd != INVALID_FD) { -+ close(bp->mem_fd); -+ bp->mem_fd = INVALID_FD; -+ } -+ -+ return rc; -+} -+ -+/** -+ * bnx2x_uio_close_resources() - Used to free resource for the NIC/CNIC -+ * @param nic - NIC device to free resource -+ * @param graceful - whether to wait to close gracefully -+ * @return 0 on success, <0 on failure -+ */ -+static int bnx2x_uio_close_resources(nic_t * nic, NIC_SHUTDOWN_T graceful) -+{ -+ bnx2x_t *bp = (bnx2x_t *) nic->priv; -+ int rc = 0; -+ -+ /* Check if there is an assoicated bnx2x device */ -+ if (bp == NULL) { -+ LOG_WARN(PFX "%s: when closing resources there is " -+ "no assoicated bnx2x", nic->log_name); -+ return -EIO; -+ } -+ -+ /* Clean up allocated memory */ -+ -+ if (bp->rx_pkt_ring != NULL) { -+ free(bp->rx_pkt_ring); -+ bp->rx_pkt_ring = NULL; -+ } -+ -+ /* Clean up mapped registers */ -+ if (bp->bufs != NULL) { -+ rc = munmap(bp->bufs, -+ (bp->rx_ring_size + 1) * bp->rx_buffer_size); -+ if (rc != 0) -+ LOG_WARN(PFX "%s: Couldn't unmap bufs", nic->log_name); -+ bp->bufs = NULL; -+ } -+ -+ if (bp->tx_ring != NULL) { -+ rc = munmap(bp->tx_ring, 4 * getpagesize()); -+ if (rc != 0) -+ LOG_WARN(PFX "%s: Couldn't unmap tx_rings", -+ nic->log_name); -+ bp->tx_ring = NULL; -+ } -+ -+ if (bp->status_blk.def != NULL) { -+ rc = munmap(bp->status_blk.def, bp->status_blk_size); -+ if (rc != 0) -+ LOG_WARN(PFX "%s: Couldn't unmap status block", -+ nic->log_name); -+ bp->status_blk.def = NULL; -+ } -+ -+ if (bp->reg != NULL) { -+ rc = munmap(bp->reg, BNX2X_BAR_SIZE); -+ if (rc != 0) -+ LOG_WARN(PFX "%s: Couldn't unmap regs", nic->log_name); -+ bp->reg = NULL; -+ } -+ -+ if (bp->reg2 != NULL) { -+ rc = munmap(bp->reg2, BNX2X_BAR2_SIZE); -+ if (rc != 0) -+ LOG_WARN(PFX "%s: Couldn't unmap regs", nic->log_name); -+ bp->reg2 = NULL; -+ } -+ -+ if (bp->mem_fd != INVALID_FD) { -+ close(bp->mem_fd); -+ bp->mem_fd = INVALID_FD; -+ } -+ -+ if (nic->fd != INVALID_FD) { -+ rc = close(nic->fd); -+ if (rc != 0) { -+ LOG_WARN(PFX -+ "%s: Couldn't close uio file descriptor: %d", -+ nic->log_name, nic->fd); -+ } else { -+ LOG_DEBUG(PFX "%s: Closed uio file descriptor: %d", -+ nic->log_name, nic->fd); -+ } -+ -+ nic->fd = INVALID_FD; -+ } else { -+ LOG_WARN(PFX "%s: Invalid uio file descriptor: %d", -+ nic->log_name, nic->fd); -+ } -+ -+ bnx2x_set_drv_version_unknown(bp); -+ -+ LOG_INFO(PFX "%s: Closed all resources", nic->log_name); -+ -+ return 0; -+} -+ -+/** -+ * cnic_close() - Used to close the NIC device -+ * @param nic - NIC device to close -+ * @param graceful - whether to wait to close gracefully -+ * @return 0 if successful, <0 if there is an error -+ */ -+static int bnx2x_close(nic_t * nic, NIC_SHUTDOWN_T graceful) -+{ -+ bnx2x_t *bp = (bnx2x_t *) nic->priv; -+ -+ /* Sanity Check: validate the parameters */ -+ if (nic == NULL || bp == NULL) { -+ LOG_ERR(PFX "bnx2x_close(): nic == %p, bp == %p", nic, bp); -+ return -EINVAL; -+ } -+ -+ LOG_INFO(PFX "Closing NIC device: %s", nic->log_name); -+ -+ bnx2x_uio_close_resources(nic, graceful); -+ bp->flags &= ~BNX2X_OPENED; -+ -+ return 0; -+} -+ -+static void bnx2x_prepare_xmit_packet(nic_t * nic, -+ nic_interface_t * nic_iface, -+ struct packet *pkt) -+{ -+ bnx2x_t *bp = (bnx2x_t *) nic->priv; -+ struct uip_vlan_eth_hdr *eth_vlan = (struct uip_vlan_eth_hdr *)pkt->buf; -+ struct uip_eth_hdr *eth = (struct uip_eth_hdr *)bp->tx_pkt; -+ -+ if (eth_vlan->tpid == htons(UIP_ETHTYPE_8021Q)) { -+ memcpy(bp->tx_pkt, pkt->buf, sizeof(struct uip_eth_hdr)); -+ eth->type = eth_vlan->type; -+ pkt->buf_size -= (sizeof(struct uip_vlan_eth_hdr) - -+ sizeof(struct uip_eth_hdr)); -+ memcpy(bp->tx_pkt + sizeof(struct uip_eth_hdr), -+ pkt->buf + sizeof(struct uip_vlan_eth_hdr), -+ pkt->buf_size - sizeof(struct uip_eth_hdr)); -+ } else -+ memcpy(bp->tx_pkt, pkt->buf, pkt->buf_size); -+ -+ msync(bp->tx_pkt, pkt->buf_size, MS_SYNC); -+} -+ -+/** -+ * bnx2x_get_tx_pkt() - This function is used to a TX packet from the NIC -+ * @param nic - The NIC device to send the packet -+ */ -+void *bnx2x_get_tx_pkt(nic_t * nic) -+{ -+ bnx2x_t *bp = (bnx2x_t *) nic->priv; -+ return bp->tx_pkt; -+} -+ -+/** -+ * bnx2x_start_xmit() - This function is used to send a packet of data -+ * @param nic - The NIC device to send the packet -+ * @param len - the length of the TX packet -+ * -+ */ -+void bnx2x_start_xmit(nic_t * nic, size_t len, u16_t vlan_id) -+{ -+ bnx2x_t *bp = (bnx2x_t *) nic->priv; -+ uint16_t ring_prod; -+ struct eth_tx_start_bd *txbd; -+ struct eth_tx_bd *txbd2; -+ struct eth_rx_bd *rx_bd; -+ rx_bd = (struct eth_rx_bd *)(((__u8 *) bp->tx_ring) + getpagesize()); -+ -+ if ((rx_bd->addr_hi == 0) && (rx_bd->addr_lo == 0)) { -+ LOG_DEBUG(PFX "%s: trying to transmit when device is closed", -+ nic->log_name); -+ pthread_mutex_unlock(&nic->xmit_mutex); -+ return; -+ } -+ -+ ring_prod = BNX2X_TX_RING_IDX(bp->tx_bd_prod); -+ txbd = &bp->tx_ring[ring_prod]; -+ -+ BNX2X_SET_TX_VLAN(bp, txbd, vlan_id); -+ -+ bp->tx_prod++; -+ bp->tx_bd_prod = BNX2X_NEXT_TX_BD(bp->tx_bd_prod); -+ bp->tx_bd_prod = BNX2X_NEXT_TX_BD(bp->tx_bd_prod); -+ -+ ring_prod = BNX2X_TX_RING_IDX(bp->tx_bd_prod); -+ txbd2 = (struct eth_tx_bd *)&bp->tx_ring[ring_prod]; -+ -+ txbd2->nbytes = len - 0x10; -+ txbd2->total_pkt_bytes = len; -+ -+ bp->tx_bd_prod = BNX2X_NEXT_TX_BD(bp->tx_bd_prod); -+ -+ barrier(); -+ if (nl_process_if_down == 0) { -+ bnx2x_doorbell(bp, bp->tx_doorbell, 0x02 | -+ (bp->tx_bd_prod << 16)); -+ bnx2x_flush_doorbell(bp, bp->tx_doorbell); -+ } else { -+ /* If the doorbell is not rung, the packet will not -+ get sent. Hence, the xmit_mutex lock will not -+ get freed. -+ */ -+ pthread_mutex_unlock(&nic->xmit_mutex); -+ } -+ LOG_DEBUG(PFX "%s: sent %d bytes using bp->tx_prod: %d", -+ nic->log_name, len, bp->tx_prod); -+} -+ -+/** -+ * bnx2x_write() - Used to write the data to the hardware -+ * @param nic - NIC hardware to read from -+ * @param pkt - The packet which will hold the data to be sent on the wire -+ * @return 0 if successful, <0 if failed -+ */ -+int bnx2x_write(nic_t * nic, nic_interface_t * nic_iface, packet_t * pkt) -+{ -+ bnx2x_t *bp = (bnx2x_t *) nic->priv; -+ struct uip_stack *uip = &nic_iface->ustack; -+ int i = 0; -+ -+ /* Sanity Check: validate the parameters */ -+ if (nic == NULL || nic_iface == NULL || pkt == NULL) { -+ LOG_ERR(PFX "%s: bnx2x_write() nic == 0x%p || " -+ " nic_iface == 0x%p || " -+ " pkt == 0x%x", nic, nic_iface, pkt); -+ return -EINVAL; -+ } -+ -+ if (pkt->buf_size == 0) { -+ LOG_ERR(PFX "%s: Trying to transmitted 0 sized packet", -+ nic->log_name); -+ return -EINVAL; -+ } -+ -+ /* Try to wait for a TX completion */ -+ for (i = 0; i < 15; i++) { -+ struct timespec sleep_req = {.tv_sec = 0,.tv_nsec = 5000000 }, -+ sleep_rem; -+ -+ if (bnx2x_clear_tx_intr(nic) == 0) -+ break; -+ -+ nanosleep(&sleep_req, &sleep_rem); -+ } -+ -+ if (pthread_mutex_trylock(&nic->xmit_mutex) != 0) { -+ LOG_DEBUG(PFX "%s: Dropped previous transmitted packet", -+ nic->log_name); -+ return -EINVAL; -+ } -+ -+ bnx2x_prepare_xmit_packet(nic, nic_iface, pkt); -+ bnx2x_start_xmit(nic, pkt->buf_size, nic_iface->vlan_id); -+ -+ /* bump the cnic dev send statistics */ -+ nic->stats.tx.packets++; -+ nic->stats.tx.bytes += uip->uip_len; -+ -+ LOG_DEBUG(PFX "%s: transmitted %d bytes " -+ "dev->tx_cons: %d, dev->tx_prod: %d, dev->tx_bd_prod:%d", -+ nic->log_name, pkt->buf_size, -+ bp->tx_cons, bp->tx_prod, bp->tx_bd_prod); -+ -+ return 0; -+} -+ -+static inline int bnx2x_get_rx_pad(bnx2x_t * bp, union eth_rx_cqe *cqe) -+{ -+ int pad = 0; -+ -+ if (bnx2x_is_ver70(bp)) -+ pad = ((union eth_rx_cqe_70 *)cqe)->fast_path_cqe_70. \ -+ placement_offset; -+ else if (bnx2x_is_ver60(bp)) { -+ if (bp->version.minor >= 64) -+ pad = cqe->fast_path_cqe_64.placement_offset; -+ else -+ pad = cqe->fast_path_cqe.placement_offset; -+ } -+ return pad; -+} -+ -+/** -+ * bnx2x_read() - Used to read the data from the hardware -+ * @param nic - NIC hardware to read from -+ * @param pkt - The packet which will hold the data -+ * @return 0 if successful, <0 if failed -+ */ -+static int bnx2x_read(nic_t * nic, packet_t * pkt) -+{ -+ bnx2x_t *bp = (bnx2x_t *) nic->priv; -+ int rc = 0; -+ uint16_t hw_cons, sw_cons, bd_cons, bd_prod; -+ -+ /* Sanity Check: validate the parameters */ -+ if (nic == NULL || pkt == NULL) { -+ LOG_ERR(PFX "%s: bnx2x_read() nic == 0x%p || " -+ " pkt == 0x%x", nic, pkt); -+ return -EINVAL; -+ } -+ -+ hw_cons = bp->get_rx_cons(bp); -+ sw_cons = bp->rx_cons; -+ bd_cons = BNX2X_RX_BD(bp->rx_bd_cons); -+ bd_prod = BNX2X_RX_BD(bp->rx_bd_prod); -+ -+ if (sw_cons != hw_cons) { -+ uint16_t comp_ring_index = sw_cons & BNX2X_MAX_RCQ_DESC_CNT(bp); -+ uint8_t ring_index; -+ union eth_rx_cqe *cqe; -+ __u8 cqe_fp_flags; -+ void *rx_pkt; -+ int len, pad, cqe_size; -+ rc = 1; -+ -+ if (bnx2x_is_ver70(bp)) { -+ cqe = (union eth_rx_cqe *) -+ &bp->rx_comp_ring.cqe70[comp_ring_index]; -+ cqe_size = sizeof(union eth_rx_cqe_70); -+ } else { -+ cqe = &bp->rx_comp_ring.cqe[comp_ring_index]; -+ cqe_size = sizeof(union eth_rx_cqe); -+ } -+ cqe_fp_flags = cqe->fast_path_cqe.type_error_flags; -+ -+ LOG_DEBUG(PFX "%s: clearing rx interrupt: %d %d", -+ nic->log_name, sw_cons, hw_cons); -+ -+ msync(cqe, cqe_size, MS_SYNC); -+ -+ if (!(cqe_fp_flags & ETH_FAST_PATH_RX_CQE_TYPE)) { -+ ring_index = bd_cons % 15; -+ len = cqe->fast_path_cqe.pkt_len; -+ pad = bnx2x_get_rx_pad(bp, cqe); -+ rx_pkt = bp->rx_pkt_ring[ring_index] + pad; -+ -+ /* Doto query MTU size of physical device */ -+ /* Ensure len is valid */ -+ if (len > pkt->max_buf_size) -+ LOG_DEBUG(PFX "%s: bad BD length: %d", -+ nic->log_name, len); -+ -+ if (len > 0) { -+ msync(rx_pkt, len, MS_SYNC); -+ /* Copy the data */ -+ memcpy(pkt->buf, rx_pkt, len); -+ pkt->buf_size = len; -+ -+ /* Properly set the packet flags */ -+ /* check if there is VLAN tagging */ -+ if (cqe->fast_path_cqe.vlan_tag != 0) { -+ pkt->vlan_tag = -+ cqe->fast_path_cqe.vlan_tag; -+ pkt->flags |= VLAN_TAGGED; -+ } else { -+ pkt->vlan_tag = 0; -+ } -+ -+ LOG_DEBUG(PFX -+ "%s: processing packet length: %d", -+ nic->log_name, len); -+ -+ /* bump the cnic dev recv statistics */ -+ nic->stats.rx.packets++; -+ nic->stats.rx.bytes += pkt->buf_size; -+ } -+ -+ bd_cons = BNX2X_NEXT_RX_IDX(bd_cons); -+ bd_prod = BNX2X_NEXT_RX_IDX(bd_prod); -+ -+ } -+ sw_cons = BNX2X_NEXT_RCQ_IDX(bp, sw_cons); -+ bp->rx_prod = BNX2X_NEXT_RCQ_IDX(bp, bp->rx_prod); -+ } -+ bp->rx_cons = sw_cons; -+ bp->rx_bd_cons = bd_cons; -+ bp->rx_bd_prod = bd_prod; -+ bp->rx_hw_prod = hw_cons; -+ -+ if (rc) -+ bnx2x_update_rx_prod(bp); -+ -+ return rc; -+} -+ -+/******************************************************************************* -+ * Clearing TX interrupts -+ ******************************************************************************/ -+/** -+ * bnx2x_clear_tx_intr() - This routine is called when a TX interrupt occurs -+ * @param nic - the nic the interrupt occured on -+ * @return 0 on success -+ */ -+static int bnx2x_clear_tx_intr(nic_t * nic) -+{ -+ bnx2x_t *bp = (bnx2x_t *) nic->priv; -+ uint16_t hw_cons = bp->get_tx_cons(bp); -+ -+ /* Sanity check: ensure the parameters passed in are valid */ -+ if (unlikely(nic == NULL)) { -+ LOG_ERR(PFX "bnx2x_read() nic == NULL"); -+ return -EINVAL; -+ } -+ -+ if (bp->tx_cons == hw_cons) { -+ if (bp->tx_cons == bp->tx_prod) { -+ /* Make sure the xmit_mutex lock is unlock */ -+ if (pthread_mutex_trylock(&nic->xmit_mutex)) -+ LOG_ERR(PFX "bnx2x tx lock with prod == cons"); -+ -+ pthread_mutex_unlock(&nic->xmit_mutex); -+ } -+ return -EAGAIN; -+ } -+ -+ LOG_DEBUG(PFX "%s: clearing tx interrupt [%d %d]", -+ nic->log_name, bp->tx_cons, hw_cons); -+ bp->tx_cons = hw_cons; -+ -+ /* There is a queued TX packet that needs to be sent out. The usual -+ * case is when stack will send an ARP packet out before sending the -+ * intended packet */ -+ if (nic->tx_packet_queue != NULL) { -+ packet_t *pkt; -+ int i; -+ -+ LOG_DEBUG(PFX "%s: sending queued tx packet", nic->log_name); -+ pkt = nic_dequeue_tx_packet(nic); -+ -+ /* Got a TX packet buffer of the TX queue and put it onto -+ * the hardware */ -+ if (pkt != NULL) { -+ bnx2x_prepare_xmit_packet(nic, pkt->nic_iface, pkt); -+ -+ bnx2x_start_xmit(nic, pkt->buf_size, -+ pkt->nic_iface->vlan_id); -+ -+ LOG_DEBUG(PFX "%s: transmitted queued packet %d bytes " -+ "dev->tx_cons: %d, dev->tx_prod: %d, " -+ "dev->tx_bd_prod:%d", -+ nic->log_name, pkt->buf_size, -+ bp->tx_cons, bp->tx_prod, bp->tx_bd_prod); -+ -+ return 0; -+ } -+ -+ /* Try to wait for a TX completion */ -+ for (i = 0; i < 15; i++) { -+ struct timespec sleep_req = {.tv_sec = 0, -+ .tv_nsec = 5000000 -+ }, sleep_rem; -+ -+ hw_cons = bp->get_tx_cons(bp); -+ if (bp->tx_cons != hw_cons) { -+ LOG_DEBUG(PFX -+ "%s: clearing tx interrupt [%d %d]", -+ nic->log_name, bp->tx_cons, hw_cons); -+ bp->tx_cons = hw_cons; -+ -+ break; -+ } -+ -+ nanosleep(&sleep_req, &sleep_rem); -+ } -+ } -+ -+ pthread_mutex_unlock(&nic->xmit_mutex); -+ -+ return 0; -+} -+ -+/******************************************************************************* -+ * bnx2x NIC op's table -+ ******************************************************************************/ -+struct nic_ops bnx2x_op = { -+ .description = "bnx2x", -+ .open = bnx2x_open, -+ .close = bnx2x_close, -+ .write = bnx2x_write, -+ .get_tx_pkt = bnx2x_get_tx_pkt, -+ .start_xmit = bnx2x_start_xmit, -+ .read = bnx2x_read, -+ .clear_tx_intr = bnx2x_clear_tx_intr, -+ .handle_iscsi_path_req = cnic_handle_iscsi_path_req, -+ -+ .lib_ops = { -+ .get_library_name = bnx2x_get_library_name, -+ .get_pci_table = bnx2x_get_pci_table, -+ .get_library_version = bnx2x_get_library_version, -+ .get_build_date = bnx2x_get_build_date, -+ .get_transport_name = bnx2x_get_transport_name, -+ .get_uio_name = bnx2x_get_uio_name, -+ }, -+}; -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/libs/bnx2x.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/libs/bnx2x.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/libs/bnx2x.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/libs/bnx2x.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,645 @@ -+/* -+ * Copyright (c) 2009-2011, Broadcom Corporation -+ * -+ * Written by: Benjamin Li (benli@broadcom.com) -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * bnx2x.h - bnx2x user space driver -+ * -+ */ -+#ifndef __BNX2X_H__ -+#define __BNX2X_H__ -+ -+#include "nic.h" -+ -+/****************************************************************************** -+ * Default CNIC values -+ ******************************************************************************/ -+#define DEFAULT_BNX2X_NUM_RXBD 15 -+#define DEFAULT_BNX2X_RX_LEN 0x400 -+ -+/****************************************************************************** -+ * BNX2X Hardware structures -+ ******************************************************************************/ -+#define HC_USTORM_DEF_SB_NUM_INDICES 8 -+#define HC_CSTORM_DEF_SB_NUM_INDICES 8 -+#define HC_XSTORM_DEF_SB_NUM_INDICES 4 -+#define HC_TSTORM_DEF_SB_NUM_INDICES 4 -+ -+struct atten_def_status_block { -+ volatile __u32 attn_bits; -+ volatile __u32 attn_bits_ack; -+ volatile __u8 status_block_id; -+ volatile __u8 reserved0; -+ volatile __u16 attn_bits_index; -+ volatile __u32 reserved1; -+}; -+ -+struct cstorm_def_status_block_u { -+ volatile __u16 index_values[HC_USTORM_DEF_SB_NUM_INDICES]; -+ volatile __u16 status_block_index; -+ volatile __u8 func; -+ volatile __u8 status_block_id; -+ volatile __u32 __flags; -+}; -+ -+struct cstorm_def_status_block_c { -+ volatile __u16 index_values[HC_CSTORM_DEF_SB_NUM_INDICES]; -+ volatile __u16 status_block_index; -+ volatile __u8 func; -+ volatile __u8 status_block_id; -+ volatile __u32 __flags; -+}; -+ -+struct xstorm_def_status_block { -+ volatile __u16 index_values[HC_XSTORM_DEF_SB_NUM_INDICES]; -+ volatile __u16 status_block_index; -+ volatile __u8 func; -+ volatile __u8 status_block_id; -+ volatile __u32 __flags; -+}; -+ -+struct tstorm_def_status_block { -+ volatile __u16 index_values[HC_TSTORM_DEF_SB_NUM_INDICES]; -+ volatile __u16 status_block_index; -+ volatile __u8 func; -+ volatile __u8 status_block_id; -+ volatile __u32 __flags; -+}; -+ -+struct host_def_status_block { -+ struct atten_def_status_block atten_status_block; -+ struct cstorm_def_status_block_u u_def_status_block; -+ struct cstorm_def_status_block_c c_def_status_block; -+ struct xstorm_def_status_block x_def_status_block; -+ struct tstorm_def_status_block t_def_status_block; -+}; -+ -+#define HC_INDEX_DEF_U_ETH_ISCSI_RX_CQ_CONS 1 -+#define HC_INDEX_DEF_U_ETH_ISCSI_RX_BD_CONS 3 -+#define HC_INDEX_DEF_C_ETH_ISCSI_CQ_CONS 5 -+ -+struct atten_sp_status_block { -+ __u32 attn_bits; -+ __u32 attn_bits_ack; -+ __u8 status_block_id; -+ __u8 reserved0; -+ __u16 attn_bits_index; -+ __u32 reserved1; -+}; -+ -+#define HC_SP_SB_MAX_INDICES 16 -+ -+struct hc_sp_status_block { -+ __u16 index_values[HC_SP_SB_MAX_INDICES]; -+ __u16 running_index; -+ __u16 rsrv; -+ __u32 rsrv1; -+}; -+ -+struct host_sp_status_block { -+ struct atten_sp_status_block atten_status_block; -+ struct hc_sp_status_block sp_sb; -+}; -+ -+#define HC_SP_INDEX_ETH_ISCSI_CQ_CONS 5 -+#define HC_SP_INDEX_ETH_ISCSI_RX_CQ_CONS 1 -+ -+/* -+ * VLAN mode on TX BDs -+ */ -+enum eth_tx_vlan_type { -+ X_ETH_NO_VLAN = 0, -+ X_ETH_OUTBAND_VLAN = 1, -+ X_ETH_INBAND_VLAN = 2, -+ X_ETH_FW_ADDED_VLAN = 3, -+ MAX_ETH_TX_VLAN_TYPE -+}; -+ -+/* TX Buffer descriptor */ -+struct eth_tx_bd_flags { -+ __u8 as_bitfield; -+/* t6.X HSI */ -+#define ETH_TX_BD_FLAGS_IP_CSUM_T6X (0x1<<0) -+#define ETH_TX_BD_FLAGS_IP_CSUM_SHIFT_T6X 0 -+#define ETH_TX_BD_FLAGS_L4_CSUM_T6X (0x1<<1) -+#define ETH_TX_BD_FLAGS_L4_CSUM_SHIFT_T6X 1 -+#define ETH_TX_BD_FLAGS_VLAN_MODE_T6X (0x3<<2) -+#define ETH_TX_BD_FLAGS_VLAN_MODE_SHIFT_T6X 2 -+#define ETH_TX_BD_FLAGS_START_BD_T6X (0x1<<4) -+#define ETH_TX_BD_FLAGS_START_BD_SHIFT_T6X 4 -+#define ETH_TX_BD_FLAGS_IS_UDP_T6X (0x1<<5) -+#define ETH_TX_BD_FLAGS_IS_UDP_SHIFT_T6X 5 -+#define ETH_TX_BD_FLAGS_SW_LSO_T6X (0x1<<6) -+#define ETH_TX_BD_FLAGS_SW_LSO_SHIFT_T6X 6 -+#define ETH_TX_BD_FLAGS_IPV6_T6X (0x1<<7) -+#define ETH_TX_BD_FLAGS_IPV6_SHIFT_T6X 7 -+ -+/* Legacy t5.2 HSI defines */ -+#define ETH_TX_BD_FLAGS_VLAN_TAG_T5X (0x1<<0) -+#define ETH_TX_BD_FLAGS_VLAN_TAG_SHIFT_T5X 0 -+#define ETH_TX_BD_FLAGS_IP_CSUM_T5X (0x1<<1) -+#define ETH_TX_BD_FLAGS_IP_CSUM_SHIFT_T5X 1 -+#define ETH_TX_BD_FLAGS_L4_CSUM_T5X (0x1<<2) -+#define ETH_TX_BD_FLAGS_L4_CSUM_SHIFT_T5X 2 -+#define ETH_TX_BD_FLAGS_END_BD_T5X (0x1<<3) -+#define ETH_TX_BD_FLAGS_END_BD_SHIFT_T5X 3 -+#define ETH_TX_BD_FLAGS_START_BD_T5X (0x1<<4) -+#define ETH_TX_BD_FLAGS_START_BD_SHIFT_T5X 4 -+#define ETH_TX_BD_FLAGS_HDR_POOL_T5X (0x1<<5) -+#define ETH_TX_BD_FLAGS_HDR_POOL_SHIFT_T5X 5 -+#define ETH_TX_BD_FLAGS_SW_LSO_T5X (0x1<<6) -+#define ETH_TX_BD_FLAGS_SW_LSO_SHIFT_T5X 6 -+#define ETH_TX_BD_FLAGS_IPV6_T5X (0x1<<7) -+#define ETH_TX_BD_FLAGS_IPV6_SHIFT_T5X 7 -+}; -+ -+#define ETH_TX_BD_FLAGS_VLAN_TAG_T6X \ -+ (X_ETH_OUTBAND_VLAN << ETH_TX_BD_FLAGS_VLAN_MODE_SHIFT_T6X) -+ -+#define BNX2X_SET_TX_VLAN(bp, txbd, vlan_id) \ -+ do { \ -+ if (vlan_id) { \ -+ (txbd)->vlan = vlan_id; \ -+ (txbd)->bd_flags.as_bitfield |= \ -+ (bp)->tx_vlan_tag_bit; \ -+ } else { \ -+ (txbd)->vlan = (bp)->tx_prod; \ -+ (txbd)->bd_flags.as_bitfield &= \ -+ ~(bp)->tx_vlan_tag_bit; \ -+ } \ -+ } while (0) -+ -+struct eth_tx_start_bd { -+ __u32 addr_lo; -+ __u32 addr_hi; -+ __u16 nbd; -+ __u16 nbytes; -+ __u16 vlan; -+ struct eth_tx_bd_flags bd_flags; -+ __u8 general_data; -+#define ETH_TX_START_BD_HDR_NBDS (0x3F<<0) -+#define ETH_TX_START_BD_HDR_NBDS_SHIFT 0 -+#define ETH_TX_START_BD_ETH_ADDR_TYPE (0x3<<6) -+#define ETH_TX_START_BD_ETH_ADDR_TYPE_SHIFT 6 -+}; -+ -+struct eth_tx_bd { -+ __u32 addr_lo; -+ __u32 addr_hi; -+ __u16 total_pkt_bytes; -+ __u16 nbytes; -+ __u8 reserved[4]; -+}; -+ -+/* RX Buffer descriptor */ -+struct eth_rx_bd { -+ __u32 addr_lo; -+ __u32 addr_hi; -+}; -+ -+struct ramrod_data { -+ volatile __u32 data_lo; -+ volatile __u32 data_hi; -+}; -+ -+struct common_ramrod_eth_rx_cqe { -+ volatile __u8 ramrod_type; -+#define COMMON_RAMROD_ETH_RX_CQE_TYPE (0x1<<0) -+#define COMMON_RAMROD_ETH_RX_CQE_TYPE_SHIFT 0 -+#define COMMON_RAMROD_ETH_RX_CQE_RESERVED0 (0x7F<<1) -+#define COMMON_RAMROD_ETH_RX_CQE_RESERVED0_SHIFT 1 -+ volatile __u8 conn_type; -+ volatile __u16 reserved1; -+ volatile __u32 conn_and_cmd_data; -+#define COMMON_RAMROD_ETH_RX_CQE_CID (0xFFFFFF<<0) -+#define COMMON_RAMROD_ETH_RX_CQE_CID_SHIFT 0 -+#define COMMON_RAMROD_ETH_RX_CQE_CMD_ID (0xFF<<24) -+#define COMMON_RAMROD_ETH_RX_CQE_CMD_ID_SHIFT 24 -+ struct ramrod_data protocol_data; -+ __u32 reserved2[4]; -+}; -+ -+struct common_ramrod_eth_rx_cqe_70 { -+ volatile __u8 ramrod_type; -+ volatile __u8 conn_type; -+ volatile __u16 reserved1; -+ volatile __u32 conn_and_cmd_data; -+ struct ramrod_data protocol_data; -+ __u32 echo; -+ __u32 reserved2[11]; -+}; -+ -+struct parsing_flags { -+ volatile __u16 flags; -+}; -+ -+struct eth_fast_path_rx_cqe { -+ volatile __u8 type_error_flags; -+#define ETH_FAST_PATH_RX_CQE_TYPE (0x1<<0) -+#define ETH_FAST_PATH_RX_CQE_TYPE_SHIFT 0 -+#define ETH_FAST_PATH_RX_CQE_PHY_DECODE_ERR_FLG (0x1<<1) -+#define ETH_FAST_PATH_RX_CQE_PHY_DECODE_ERR_FLG_SHIFT 1 -+#define ETH_FAST_PATH_RX_CQE_IP_BAD_XSUM_FLG (0x1<<2) -+#define ETH_FAST_PATH_RX_CQE_IP_BAD_XSUM_FLG_SHIFT 2 -+#define ETH_FAST_PATH_RX_CQE_L4_BAD_XSUM_FLG (0x1<<3) -+#define ETH_FAST_PATH_RX_CQE_L4_BAD_XSUM_FLG_SHIFT 3 -+#define ETH_FAST_PATH_RX_CQE_START_FLG (0x1<<4) -+#define ETH_FAST_PATH_RX_CQE_START_FLG_SHIFT 4 -+#define ETH_FAST_PATH_RX_CQE_END_FLG (0x1<<5) -+#define ETH_FAST_PATH_RX_CQE_END_FLG_SHIFT 5 -+#define ETH_FAST_PATH_RX_CQE_RESERVED0 (0x3<<6) -+#define ETH_FAST_PATH_RX_CQE_RESERVED0_SHIFT 6 -+ volatile __u8 status_flags; -+#define ETH_FAST_PATH_RX_CQE_RSS_HASH_TYPE (0x7<<0) -+#define ETH_FAST_PATH_RX_CQE_RSS_HASH_TYPE_SHIFT 0 -+#define ETH_FAST_PATH_RX_CQE_RSS_HASH_FLG (0x1<<3) -+#define ETH_FAST_PATH_RX_CQE_RSS_HASH_FLG_SHIFT 3 -+#define ETH_FAST_PATH_RX_CQE_BROADCAST_FLG (0x1<<4) -+#define ETH_FAST_PATH_RX_CQE_BROADCAST_FLG_SHIFT 4 -+#define ETH_FAST_PATH_RX_CQE_MAC_MATCH_FLG (0x1<<5) -+#define ETH_FAST_PATH_RX_CQE_MAC_MATCH_FLG_SHIFT 5 -+#define ETH_FAST_PATH_RX_CQE_IP_XSUM_NO_VALIDATION_FLG (0x1<<6) -+#define ETH_FAST_PATH_RX_CQE_IP_XSUM_NO_VALIDATION_FLG_SHIFT 6 -+#define ETH_FAST_PATH_RX_CQE_L4_XSUM_NO_VALIDATION_FLG (0x1<<7) -+#define ETH_FAST_PATH_RX_CQE_L4_XSUM_NO_VALIDATION_FLG_SHIFT 7 -+ volatile __u8 placement_offset; -+ volatile __u8 queue_index; -+ volatile __u32 rss_hash_result; -+ volatile __u16 vlan_tag; -+ volatile __u16 pkt_len; -+ volatile __u16 len_on_bd; -+ struct parsing_flags pars_flags; -+ volatile __u16 sgl[8]; -+}; -+ -+union eth_sgl_or_raw_data { -+ volatile __u16 sgl[8]; -+ volatile __u32 raw_data[4]; -+}; -+ -+struct eth_fast_path_rx_cqe_64 { -+ volatile __u8 type_error_flags; -+#define ETH_FAST_PATH_RX_CQE_TYPE_64 (0x3<<0) -+#define ETH_FAST_PATH_RX_CQE_TYPE_SHIFT_64 0 -+#define ETH_FAST_PATH_RX_CQE_SGL_RAW_SEL (0x1<<2) -+#define ETH_FAST_PATH_RX_CQE_SGL_RAW_SEL_SHIFT 2 -+#define ETH_FAST_PATH_RX_CQE_PHY_DECODE_ERR_FLG_64 (0x1<<3) -+#define ETH_FAST_PATH_RX_CQE_PHY_DECODE_ERR_FLG_SHIFT_64 3 -+#define ETH_FAST_PATH_RX_CQE_IP_BAD_XSUM_FLG_64 (0x1<<4) -+#define ETH_FAST_PATH_RX_CQE_IP_BAD_XSUM_FLG_SHIFT_64 4 -+#define ETH_FAST_PATH_RX_CQE_L4_BAD_XSUM_FLG_64 (0x1<<5) -+#define ETH_FAST_PATH_RX_CQE_L4_BAD_XSUM_FLG_SHIFT_64 5 -+#define ETH_FAST_PATH_RX_CQE_RESERVED0_64 (0x3<<6) -+#define ETH_FAST_PATH_RX_CQE_RESERVED0_SHIFT_64 6 -+ volatile __u8 status_flags; -+#define ETH_FAST_PATH_RX_CQE_RSS_HASH_TYPE (0x7<<0) -+#define ETH_FAST_PATH_RX_CQE_RSS_HASH_TYPE_SHIFT 0 -+#define ETH_FAST_PATH_RX_CQE_RSS_HASH_FLG (0x1<<3) -+#define ETH_FAST_PATH_RX_CQE_RSS_HASH_FLG_SHIFT 3 -+#define ETH_FAST_PATH_RX_CQE_BROADCAST_FLG (0x1<<4) -+#define ETH_FAST_PATH_RX_CQE_BROADCAST_FLG_SHIFT 4 -+#define ETH_FAST_PATH_RX_CQE_MAC_MATCH_FLG (0x1<<5) -+#define ETH_FAST_PATH_RX_CQE_MAC_MATCH_FLG_SHIFT 5 -+#define ETH_FAST_PATH_RX_CQE_IP_XSUM_NO_VALIDATION_FLG (0x1<<6) -+#define ETH_FAST_PATH_RX_CQE_IP_XSUM_NO_VALIDATION_FLG_SHIFT 6 -+#define ETH_FAST_PATH_RX_CQE_L4_XSUM_NO_VALIDATION_FLG (0x1<<7) -+#define ETH_FAST_PATH_RX_CQE_L4_XSUM_NO_VALIDATION_FLG_SHIFT 7 -+ volatile __u8 queue_index; -+ volatile __u8 placement_offset; -+ volatile __u32 rss_hash_result; -+ volatile __u16 vlan_tag; -+ volatile __u16 pkt_len; -+ volatile __u16 len_on_bd; -+ struct parsing_flags pars_flags; -+ union eth_sgl_or_raw_data sgl_or_raw_data; -+}; -+ -+struct eth_fast_path_rx_cqe_70 { -+ volatile __u8 type_error_flags; -+ volatile __u8 status_flags; -+ volatile __u8 queue_index; -+ volatile __u8 placement_offset; -+ volatile __u32 rss_hash_result; -+ volatile __u16 vlan_tag; -+ volatile __u16 pkt_len; -+ volatile __u16 len_on_bd; -+ struct parsing_flags pars_flags; -+ union eth_sgl_or_raw_data sgl_or_raw_data; -+ __u32 reserved1[8]; -+}; -+ -+struct eth_rx_cqe_next_page { -+ __u32 addr_lo; -+ __u32 addr_hi; -+ __u32 reserved[6]; -+}; -+ -+struct eth_rx_cqe_next_page_70 { -+ __u32 addr_lo; -+ __u32 addr_hi; -+ __u32 reserved[14]; -+}; -+ -+union eth_rx_cqe { -+ struct eth_fast_path_rx_cqe fast_path_cqe; -+ struct eth_fast_path_rx_cqe_64 fast_path_cqe_64; -+ struct common_ramrod_eth_rx_cqe ramrod_cqe; -+ struct eth_rx_cqe_next_page next_page_cqe; -+}; -+ -+union eth_rx_cqe_70 { -+ struct eth_fast_path_rx_cqe_70 fast_path_cqe_70; -+ struct common_ramrod_eth_rx_cqe_70 ramrod_cqe_70; -+ struct eth_rx_cqe_next_page_70 next_page_cqe_70; -+}; -+ -+struct client_init_general_data { -+ __u8 client_id; -+ __u8 statistics_counter_id; -+ __u8 statistics_en_flg; -+ __u8 is_fcoe_flg; -+ __u8 activate_flg; -+ __u8 sp_client_id; -+ __u16 mtu; -+ __u8 statistics_zero_flg; -+ __u8 func_id; -+ __u8 cos; -+ __u8 traffic_type; -+ __u32 reserved0; -+}; -+ -+/****************************************************************************** -+ * BNX2X Registers and HSI -+ ******************************************************************************/ -+#define BNX2X_BAR_SIZE 0x500000 -+#define BNX2X_BAR2_SIZE 0x12000 -+ -+#define BNX2X_CHIP_ID(bp) (bp->chip_id & 0xfffffff0) -+ -+#define PORT_MAX 2 -+ -+/* [R 4] This field indicates the type of the device. '0' - 2 Ports; '1' - 1 -+ * Port. */ -+#define BNX2X_MISC_REG_BOND_ID 0xa400 -+/* [R 8] These bits indicate the metal revision of the chip. This value -+ * starts at 0x00 for each all-layer tape-out and increments by one for each -+ * tape-out. */ -+#define BNX2X_MISC_REG_CHIP_METAL 0xa404 -+/* [R 16] These bits indicate the part number for the chip. */ -+#define BNX2X_MISC_REG_CHIP_NUM 0xa408 -+/* [R 4] These bits indicate the base revision of the chip. This value -+ * starts at 0x0 for the A0 tape-out and increments by one for each -+ * all-layer tape-out. */ -+#define BNX2X_MISC_REG_CHIP_REV 0xa40c -+ -+#define BNX2X_CHIP_NUM(bp) (bp->chip_id >> 16) -+#define CHIP_NUM_57710 0x164e -+#define CHIP_NUM_57711 0x164f -+#define CHIP_NUM_57711E 0x1650 -+#define CHIP_NUM_57712 0x1662 -+#define CHIP_NUM_57712E 0x1663 -+#define CHIP_NUM_57800 0x168a -+#define CHIP_NUM_57810 0x168e -+#define CHIP_NUM_57840 0x168d -+ -+#define CHIP_IS_E1(bp) (BNX2X_CHIP_NUM(bp) == CHIP_NUM_57710) -+#define CHIP_IS_57711(bp) (BNX2X_CHIP_NUM(bp) == CHIP_NUM_57711) -+#define CHIP_IS_57711E(bp) (BNX2X_CHIP_NUM(bp) == CHIP_NUM_57711E) -+#define CHIP_IS_57712(bp) (BNX2X_CHIP_NUM(bp) == CHIP_NUM_57712) -+#define CHIP_IS_57712E(bp) (BNX2X_CHIP_NUM(bp) == CHIP_NUM_57712E) -+#define CHIP_IS_57800(bp) (BNX2X_CHIP_NUM(bp) == CHIP_NUM_57800) -+#define CHIP_IS_57810(bp) (BNX2X_CHIP_NUM(bp) == CHIP_NUM_57810) -+#define CHIP_IS_57840(bp) (BNX2X_CHIP_NUM(bp) == CHIP_NUM_57840) -+#define CHIP_IS_E1H(bp) (CHIP_IS_57711(bp) || \ -+ CHIP_IS_57711E(bp)) -+#define CHIP_IS_E2(bp) (CHIP_IS_57712(bp) || \ -+ CHIP_IS_57712E(bp)) -+#define CHIP_IS_E3(bp) (CHIP_IS_57800(bp) || \ -+ CHIP_IS_57810(bp) || \ -+ CHIP_IS_57840(bp)) -+#define CHIP_IS_E2_PLUS(bp) (CHIP_IS_E2(bp) || CHIP_IS_E3(bp)) -+#define IS_E1H_OFFSET CHIP_IS_E1H(bp) -+ -+#define MISC_REG_SHARED_MEM_ADDR 0xa2b4 -+ -+#define MISC_REG_BOND_ID 0xa400 -+#define MISC_REG_CHIP_METAL 0xa404 -+#define MISC_REG_CHIP_NUM 0xa408 -+#define MISC_REG_CHIP_REV 0xa40c -+ -+#define MISC_REG_PORT4MODE_EN 0xa750 -+#define MISC_REG_PORT4MODE_EN_OVWR 0xa720 -+ -+#define MISC_REG_GENERIC_CR_0 0xa460 -+#define MISC_REG_GENERIC_CR_1 0xa464 -+ -+#define BAR_USTRORM_INTMEM 0x400000 -+#define BAR_CSTRORM_INTMEM 0x410000 -+#define BAR_XSTRORM_INTMEM 0x420000 -+#define BAR_TSTRORM_INTMEM 0x430000 -+ -+#define USTORM_RX_PRODS_OFFSET(port, client_id) \ -+ (IS_E1H_OFFSET ? (0x1000 + (port * 0x680) + (client_id * 0x40)) \ -+ : (0x4000 + (port * 0x360) + (client_id * 0x30))) -+ -+struct iro { -+ __u32 base; -+ __u16 m1; -+ __u16 m2; -+ __u16 m3; -+ __u16 size; -+}; -+ -+#define IRO_ENT bp->iro[bp->iro_idx] -+ -+#define USTORM_RX_PRODS_E1X_OFFSET(port, client_id) \ -+ (IRO_ENT.base + ((port) * IRO_ENT.m1) + ((client_id) * IRO_ENT.m2)) -+ -+#define USTORM_RX_PRODS_E2_OFFSET(qzone_id) \ -+ (IRO_ENT.base + ((qzone_id) * IRO_ENT.m1)) -+ -+#define ETH_MAX_RX_CLIENTS_E1H 28 -+#define ETH_MAX_RX_CLIENTS_E2 28 -+ -+#define BNX2X_CL_QZONE_ID(bp, cli) \ -+ cli + (bp->port * (CHIP_IS_E2(bp) ? \ -+ ETH_MAX_RX_CLIENTS_E2 : \ -+ ETH_MAX_RX_CLIENTS_E1H)) -+ -+#define BNX2X_CL_QZONE_ID_64(bp, cli) \ -+ (CHIP_IS_E2_PLUS(bp) ? (cli) : \ -+ (cli + (bp->port * ETH_MAX_RX_CLIENTS_E1H))) -+ -+#define BNX2X_PATH(bp) (!CHIP_IS_E2_PLUS(bp) ? 0 : (bp)->func & 1) -+ -+#define SHMEM_P0_ISCSI_MAC_UPPER 0x4c -+#define SHMEM_P0_ISCSI_MAC_LOWER 0x50 -+#define SHMEM_P1_ISCSI_MAC_UPPER 0x1dc -+#define SHMEM_P1_ISCSI_MAC_LOWER 0x1e0 -+ -+#define SHMEM_ISCSI_MAC_UPPER(bp) \ -+ (((bp)->port == 0) ? SHMEM_P0_ISCSI_MAC_UPPER : SHMEM_P1_ISCSI_MAC_UPPER) -+ -+#define SHMEM_ISCSI_MAC_LOWER(bp) \ -+ (((bp)->port == 0) ? SHMEM_P0_ISCSI_MAC_LOWER : SHMEM_P1_ISCSI_MAC_LOWER) -+ -+#define BNX2X_RCQ_DESC_CNT (4096 / sizeof(union eth_rx_cqe)) -+#define BNX2X_RCQ_DESC_CNT_70 (4096 / sizeof(union eth_rx_cqe_70)) -+#define BNX2X_MAX_RCQ_DESC_CNT(bp) \ -+ ((bnx2x_is_ver70(bp) ? BNX2X_RCQ_DESC_CNT_70 : BNX2X_RCQ_DESC_CNT) - 1) -+ -+#define BNX2X_RX_DESC_CNT (4096 / sizeof(struct eth_rx_bd)) -+#define BNX2X_MAX_RX_DESC_CNT (BNX2X_RX_DESC_CNT - 2) -+#define BNX2X_NUM_RX_BD (BNX2X_RX_DESC_CNT * 1) -+#define BNX2X_MAX_RX_BD (BNX2X_NUM_RX_BD - 1) -+ -+#define BNX2X_TX_DESC_CNT (4096 / sizeof(struct eth_tx_start_bd)) -+#define BNX2X_MAX_TX_DESC_CNT (BNX2X_TX_DESC_CNT - 1) -+ -+#define BNX2X_NEXT_RX_IDX(x) ((((x) & (BNX2X_RX_DESC_CNT - 1)) == \ -+ (BNX2X_MAX_RX_DESC_CNT - 1)) ? (x) + 3 : (x) + 1) -+ -+#define BNX2X_NEXT_RCQ_IDX(bp, x) \ -+ ((((x) & BNX2X_MAX_RCQ_DESC_CNT(bp)) == \ -+ (BNX2X_MAX_RCQ_DESC_CNT(bp) - 1)) ? (x) + 2 : (x) + 1) -+#define BNX2X_RX_BD(x) ((x) & BNX2X_MAX_RX_BD) -+ -+#define BNX2X_NEXT_TX_BD(x) (((x) & (BNX2X_MAX_TX_DESC_CNT - 1)) == \ -+ (BNX2X_MAX_TX_DESC_CNT - 1)) ? \ -+ (x) + 2 : (x) + 1 -+ -+#define BNX2X_TX_RING_IDX(x) ((x) & BNX2X_MAX_TX_DESC_CNT) -+ -+struct ustorm_eth_rx_producers { -+ __u16 cqe_prod; -+ __u16 bd_prod; -+ __u16 sge_prod; -+ __u16 reserved; -+}; -+ -+#define BNX2X_UNKNOWN_MAJOR_VERSION -1 -+#define BNX2X_UNKNOWN_MINOR_VERSION -1 -+#define BNX2X_UNKNOWN_SUB_MINOR_VERSION -1 -+struct bnx2x_driver_version { -+ uint16_t major; -+ uint16_t minor; -+ uint16_t sub_minor; -+}; -+ -+typedef struct bnx2x { -+ nic_t *parent; -+ -+ struct bnx2x_driver_version version; -+ -+ uint16_t flags; -+#define CNIC_UIO_UNITIALIZED 0x0001 -+#define CNIC_UIO_INITIALIZED 0x0002 -+#define CNIC_UIO_ENABLED 0x0004 -+#define CNIC_UIO_DISABLED 0x0008 -+#define CNIC_UIO_IPv6_ENABLED 0x0010 -+#define CNIC_UIO_ADDED_MULICAST 0x0020 -+#define CNIC_UIO_MSIX_ENABLED 0x0200 -+#define CNIC_UIO_TX_HAS_SENT 0x0400 -+#define BNX2X_OPENED 0x0800 -+ -+ void *reg; /* Pointer to the BAR1 mapped registers */ -+ void *reg2; /* Pointer to the BAR2 mapped registers */ -+ -+ int mem_fd; -+ -+ __u32 chip_id; -+ __u32 shmem_base; -+ __u32 shmem_base2; -+ int func; -+ int port; -+ int pfid; -+ __u32 cid; -+ __u32 client_id; -+ -+ struct iro *iro; -+ int iro_idx; -+ -+ __u32 tx_doorbell; -+ -+ __u16 tx_prod; -+ __u16 tx_bd_prod; -+ __u16 tx_cons; -+ __u8 tx_vlan_tag_bit; -+ -+ __u32 rx_prod_io; -+ -+ __u16 rx_prod; -+ __u16 rx_bd_prod; -+ __u16 rx_cons; -+ __u16 rx_bd_cons; -+ __u16 rx_hw_prod; -+ -+ __u16(*get_rx_cons) (struct bnx2x *); -+ __u16(*get_tx_cons) (struct bnx2x *); -+ -+ /* RX ring parameters */ -+ uint32_t rx_ring_size; -+ uint32_t rx_buffer_size; -+ -+ void *bufs; /* Pointer to the mapped buffer space */ -+ -+ /* Hardware Status Block locations */ -+ void *sblk_map; -+ union { -+ struct host_def_status_block *def; -+ struct host_sp_status_block *sp; -+ } status_blk; -+ -+ int status_blk_size; -+ -+ uint16_t rx_index; -+ union { -+ union eth_rx_cqe *cqe; -+ union eth_rx_cqe_70 *cqe70; -+ } rx_comp_ring; -+ void **rx_pkt_ring; -+ -+ struct eth_tx_start_bd *tx_ring; -+ void *tx_pkt; -+ -+} bnx2x_t; -+ -+/****************************************************************************** -+ * bnx2x Function Declarations -+ ******************************************************************************/ -+void bnx2x_start_xmit(nic_t * nic, size_t len, u16_t vlan_id); -+ -+//struct nic_interface * bnx2x_find_nic_iface(nic_t * nic, -+// uint16_t vlan_id); -+ -+struct nic_ops *bnx2x_get_ops(); -+#endif /* __BNX2X_H__ */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/libs/cnic.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/libs/cnic.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/libs/cnic.c 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/libs/cnic.c 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,721 @@ -+/* -+ * Copyright (c) 2009-2011, Broadcom Corporation -+ * -+ * Written by: Benjamin Li (benli@broadcom.com) -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * cnic.c - CNIC UIO uIP user space stack -+ * -+ */ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "uip_arp.h" -+#include "nic.h" -+#include "nic_utils.h" -+#include "logger.h" -+#include "options.h" -+ -+#include "cnic.h" -+#include "iscsi_if.h" -+#include "ipv6_ndpc.h" -+ -+/******************************************************************************* -+ * Constants -+ ******************************************************************************/ -+#define PFX "CNIC " -+ -+static const uip_ip6addr_t all_ones_addr6 = -+ { 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff }; -+ -+/******************************************************************************* -+ * Constants shared between the bnx2 and bnx2x modules -+ ******************************************************************************/ -+const char bnx2i_library_transport_name[] = "bnx2i"; -+const size_t bnx2i_library_transport_name_size = -+ sizeof(bnx2i_library_transport_name); -+ -+/****************************************************************************** -+ * Netlink Functions -+ ******************************************************************************/ -+ -+static int cnic_arp_send(nic_t * nic, nic_interface_t * nic_iface, int fd, -+ __u8 * mac_addr, __u32 ip_addr, char *addr_str) -+{ -+ struct ether_header *eth; -+ struct ether_arp *arp; -+ __u32 dst_ip = ip_addr; -+ int pkt_size = sizeof(*eth) + sizeof(*arp); -+ int rc; -+ struct in_addr addr; -+ static const uint8_t multicast_mac[] = -+ { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; -+ -+ rc = pthread_mutex_trylock(&nic->xmit_mutex); -+ if (rc != 0) { -+ LOG_DEBUG(PFX "%s: could not get xmit_mutex", nic->log_name); -+ return -EAGAIN; -+ } -+ -+ eth = (*nic->ops->get_tx_pkt) (nic); -+ if (eth == NULL) { -+ LOG_WARN(PFX "%s: couldn't get tx packet", nic->log_name); -+ return -EAGAIN; -+ } -+ -+ nic_fill_ethernet_header(nic_iface, eth, -+ nic->mac_addr, (void *)multicast_mac, -+ &pkt_size, (void *)&arp, ETHERTYPE_ARP); -+ -+ arp->arp_hrd = htons(ARPHRD_ETHER); -+ arp->arp_pro = htons(ETHERTYPE_IP); -+ arp->arp_hln = ETH_ALEN; -+ arp->arp_pln = 4; -+ arp->arp_op = htons(ARPOP_REQUEST); -+ memcpy(arp->arp_sha, nic->mac_addr, ETH_ALEN); -+ memset(arp->arp_tha, 0, ETH_ALEN); -+ -+ /* Copy the IP address's into the ARP response */ -+ memcpy(arp->arp_spa, nic_iface->ustack.hostaddr, 4); -+ memcpy(arp->arp_tpa, &dst_ip, 4); -+ -+ (*nic->nic_library->ops->start_xmit) (nic, pkt_size, -+ nic_iface->vlan_id); -+ -+ memcpy(&addr.s_addr, &dst_ip, sizeof(addr.s_addr)); -+ LOG_DEBUG(PFX "%s: Sent cnic arp request for IP: %s", -+ nic->log_name, addr_str); -+ -+ return 0; -+} -+ -+static int cnic_neigh_soliciation_send(nic_t * nic, -+ nic_interface_t * nic_iface, int fd, -+ __u8 * mac_addr, -+ struct in6_addr *addr6_dst, -+ char *addr_str) -+{ -+ struct ether_header *eth; -+ struct ip6_hdr *ipv6_hdr; -+ int rc, pkt_size; -+ char buf[INET6_ADDRSTRLEN]; -+ NDPC_REQPTR req_ptr; -+ -+ rc = pthread_mutex_trylock(&nic->xmit_mutex); -+ if (rc != 0) { -+ LOG_WARN(PFX "%s: could not get xmit_mutex", nic->log_name); -+ return -EAGAIN; -+ } -+ -+ /* Build the ethernet header */ -+ eth = (*nic->ops->get_tx_pkt) (nic); -+ if (eth == NULL) { -+ LOG_WARN(PFX "%s: couldn't get tx packet", nic->log_name); -+ return -EAGAIN; -+ } -+ -+ /* Copy the requested target address to the ipv6.dst */ -+ ipv6_hdr = -+ (struct ip6_hdr *)((u8_t *) eth + sizeof(struct ether_header)); -+ -+ memcpy(ipv6_hdr->ip6_dst.s6_addr, addr6_dst->s6_addr, -+ sizeof(struct in6_addr)); -+ -+ LOG_DEBUG(PFX "dst ip addr %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x", -+ ipv6_hdr->ip6_dst.s6_addr16[0], -+ ipv6_hdr->ip6_dst.s6_addr16[1], -+ ipv6_hdr->ip6_dst.s6_addr16[2], -+ ipv6_hdr->ip6_dst.s6_addr16[3], -+ ipv6_hdr->ip6_dst.s6_addr16[4], -+ ipv6_hdr->ip6_dst.s6_addr16[5], -+ ipv6_hdr->ip6_dst.s6_addr16[6], -+ ipv6_hdr->ip6_dst.s6_addr16[7]); -+ nic_fill_ethernet_header(nic_iface, eth, nic->mac_addr, nic->mac_addr, -+ &pkt_size, (void *)&ipv6_hdr, ETHERTYPE_IPV6); -+ req_ptr.eth = (void *)eth; -+ req_ptr.ipv6 = (void *)ipv6_hdr; -+ if (ndpc_request(&nic_iface->ustack, &req_ptr, &pkt_size, -+ NEIGHBOR_SOLICIT)) -+ return -EAGAIN; -+ -+ /* Debug to print out the pkt context */ -+ inet_ntop(AF_INET6, ipv6_hdr->ip6_dst.s6_addr, buf, sizeof(buf)); -+ LOG_DEBUG(PFX "%s: ipv6 dst addr: %s", nic->log_name, buf); -+ LOG_DEBUG(PFX "neighbor sol content " -+ "dst mac %02x:%02x:%02x:%02x:%02x:%02x", -+ eth->ether_dhost[0], eth->ether_dhost[1], -+ eth->ether_dhost[2], eth->ether_dhost[3], -+ eth->ether_dhost[4], eth->ether_dhost[5]); -+ LOG_DEBUG(PFX "src mac %02x:%02x:%02x:%02x:%02x:%02x", -+ eth->ether_shost[0], eth->ether_shost[1], -+ eth->ether_shost[2], eth->ether_shost[3], -+ eth->ether_shost[4], eth->ether_shost[5]); -+ (*nic->nic_library->ops->start_xmit) (nic, pkt_size, -+ nic_iface->vlan_id); -+ -+ LOG_DEBUG(PFX "%s: Sent cnic ICMPv6 neighbor request %s", -+ nic->log_name, addr_str); -+ -+ return 0; -+} -+ -+static int cnic_nl_neigh_rsp(nic_t * nic, int fd, -+ struct iscsi_uevent *ev, -+ struct iscsi_path *path_req, -+ __u8 * mac_addr, -+ nic_interface_t * nic_iface, int status, int type) -+{ -+ int rc; -+ uint8_t *ret_buf; -+ struct iscsi_uevent *ret_ev; -+ struct iscsi_path *path_rsp; -+ struct sockaddr_nl dest_addr; -+ char addr_dst_str[INET6_ADDRSTRLEN]; -+ -+ memset(&dest_addr, 0, sizeof(dest_addr)); -+ dest_addr.nl_family = AF_NETLINK; -+ dest_addr.nl_pid = 0; -+ dest_addr.nl_groups = 0; /* unicast */ -+ -+ ret_buf = calloc(1, NLMSG_SPACE(sizeof(struct iscsi_uevent) + 256)); -+ if (ret_buf == NULL) { -+ LOG_ERR(PFX "Could not allocate memory for path req resposne"); -+ return -ENOMEM; -+ } -+ -+ memset(ret_buf, 0, NLMSG_SPACE(sizeof(struct iscsi_uevent) + 256)); -+ -+ /* prepare the iscsi_uevent buffer */ -+ ret_ev = (struct iscsi_uevent *)ret_buf; -+ ret_ev->type = ISCSI_UEVENT_PATH_UPDATE; -+ ret_ev->transport_handle = ev->transport_handle; -+ ret_ev->u.set_path.host_no = ev->r.req_path.host_no; -+ -+ /* Prepare the iscsi_path buffer */ -+ path_rsp = (struct iscsi_path *)(ret_buf + sizeof(*ret_ev)); -+ path_rsp->handle = path_req->handle; -+ if (type == AF_INET) { -+ path_rsp->ip_addr_len = 4; -+ memcpy(&path_rsp->src.v4_addr, nic_iface->ustack.hostaddr, -+ sizeof(nic_iface->ustack.hostaddr)); -+ -+ inet_ntop(AF_INET, &path_rsp->src.v4_addr, -+ addr_dst_str, sizeof(addr_dst_str)); -+ } else { -+ u8_t *src_ipv6; -+ int ret; -+ -+ /* Depending on the IPv6 address of the target we will need to -+ * determine whether we use the assigned IPv6 address or the -+ * link local IPv6 address */ -+ if (ndpc_request(&nic_iface->ustack, &path_req->dst.v6_addr, -+ &ret, CHECK_LINK_LOCAL_ADDR)) { -+ src_ipv6 = (u8_t *)all_zeroes_addr6; -+ LOG_DEBUG(PFX "RSP Check LL failed"); -+ goto src_done; -+ } -+ if (ret) { -+ /* Get link local IPv6 address */ -+ if (ndpc_request(&nic_iface->ustack, NULL, -+ &src_ipv6, GET_LINK_LOCAL_ADDR)) { -+ src_ipv6 = (u8_t *)all_zeroes_addr6; -+ LOG_DEBUG(PFX "RSP Get LL failed"); -+ goto src_done; -+ } -+ } else { -+ if (ndpc_request(&nic_iface->ustack, -+ &path_req->dst.v6_addr, -+ &src_ipv6, GET_HOST_ADDR)) { -+ src_ipv6 = (u8_t *)all_zeroes_addr6; -+ LOG_DEBUG(PFX "RSP Get host addr failed"); -+ } -+ if (src_ipv6 == NULL) { -+ src_ipv6 = (u8_t *)all_zeroes_addr6; -+ LOG_DEBUG(PFX "RSP no Best matched addr found"); -+ } -+ } -+src_done: -+ path_rsp->ip_addr_len = 16; -+ memcpy(&path_rsp->src.v6_addr, src_ipv6, -+ sizeof(nic_iface->ustack.hostaddr6)); -+ -+ inet_ntop(AF_INET6, &path_rsp->src.v6_addr, -+ addr_dst_str, sizeof(addr_dst_str)); -+ } -+ memcpy(path_rsp->mac_addr, mac_addr, 6); -+ path_rsp->vlan_id = path_req->vlan_id; -+ path_rsp->pmtu = path_req->pmtu; -+ -+ rc = __kipc_call(fd, ret_ev, sizeof(*ret_ev) + sizeof(*path_rsp)); -+ if (rc > 0) { -+ LOG_DEBUG(PFX "neighbor reply sent back to kernel " -+ "%s at %02x:%02x:%02x:%02x:%02x:%02x", -+ addr_dst_str, -+ mac_addr[0], mac_addr[1], -+ mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5]); -+ -+ } else { -+ LOG_ERR(PFX "send neighbor reply failed: %d", rc); -+ } -+ -+ free(ret_buf); -+ -+ return rc; -+} -+ -+const static struct timeval tp_wait = { -+ .tv_sec = 0, -+ .tv_usec = 250000, -+}; -+ -+/** -+ * cnic_handle_ipv4_iscsi_path_req() - This function will handle the IPv4 -+ * path req calls the bnx2i kernel module -+ * @param nic - The nic the message is directed towards -+ * @param fd - The file descriptor to be used to extract the private data -+ * @param ev - The iscsi_uevent -+ * @param buf - The private message buffer -+ */ -+int cnic_handle_ipv4_iscsi_path_req(nic_t * nic, int fd, -+ struct iscsi_uevent *ev, -+ struct iscsi_path *path) -+{ -+ nic_interface_t *nic_iface; -+ struct in_addr src_addr, dst_addr, -+ src_matching_addr, dst_matching_addr, netmask; -+ __u8 mac_addr[6]; -+ int rc; -+ uint16_t arp_retry; -+ int status = 0; -+ -+ memset(mac_addr, 0, sizeof(mac_addr)); -+ -+ pthread_mutex_lock(&nic_list_mutex); -+ -+ /* Find the proper interface via VLAN id */ -+ nic_iface = nic_find_nic_iface_protocol(nic, path->vlan_id, AF_INET); -+ if (nic_iface == NULL) { -+ nic_iface = nic_find_nic_iface_protocol(nic, 0, AF_INET); -+ if (nic_iface == NULL) { -+ pthread_mutex_unlock(&nic_list_mutex); -+ LOG_ERR(PFX "%s: Couldn't find net_iface vlan_id: %d", -+ nic->log_name, path->vlan_id); -+ return -EINVAL; -+ } -+ -+ nic_iface->vlan_id = path->vlan_id; -+ } -+#define MAX_ARP_RETRY 4 -+ -+ memcpy(&dst_addr, &path->dst.v4_addr, sizeof(dst_addr)); -+ memcpy(&src_addr, nic_iface->ustack.hostaddr, sizeof(src_addr)); -+ -+ if (nic_iface->ustack.netmask[0] | nic_iface->ustack.netmask[1]) -+ memcpy(&netmask.s_addr, nic_iface->ustack.netmask, -+ sizeof(src_addr)); -+ else -+ netmask.s_addr = calculate_default_netmask(dst_addr.s_addr); -+ -+ src_matching_addr.s_addr = src_addr.s_addr & netmask.s_addr; -+ dst_matching_addr.s_addr = dst_addr.s_addr & netmask.s_addr; -+ -+ if (src_matching_addr.s_addr != dst_matching_addr.s_addr) { -+ /* If there is an assigned gateway address then use it -+ * if the source address doesn't match */ -+ if (nic_iface->ustack.default_route_addr[0] | -+ nic_iface->ustack.default_route_addr[1]) { -+ memcpy(&dst_addr, -+ &nic_iface->ustack.default_route_addr, -+ sizeof(dst_addr)); -+ } else { -+ arp_retry = MAX_ARP_RETRY; -+ goto done; -+ } -+ } -+ arp_retry = 0; -+ -+ rc = uip_lookup_arp_entry(dst_addr.s_addr, mac_addr); -+ if (rc != 0) { -+ while ((arp_retry < MAX_ARP_RETRY) && (event_loop_stop == 0)) { -+ char *dst_addr_str; -+ int count; -+ struct timespec ts; -+ struct timeval tp; -+ struct timeval tp_abs; -+ -+ dst_addr_str = inet_ntoa(dst_addr); -+ -+ LOG_INFO(PFX "%s: Didn't find IPv4: '%s' in ARP table", -+ nic->log_name, dst_addr_str); -+ rc = cnic_arp_send(nic, nic_iface, fd, -+ mac_addr, -+ dst_addr.s_addr, dst_addr_str); -+ if (rc != 0) { -+ status = -EIO; -+ goto done; -+ } -+ -+ for (count = 0; count < 8; count++) { -+ /* Convert from timeval to timespec */ -+ rc = gettimeofday(&tp, NULL); -+ -+ timeradd(&tp, &tp_wait, &tp_abs); -+ -+ ts.tv_sec = tp_abs.tv_sec; -+ ts.tv_nsec = tp_abs.tv_usec * 1000; -+ -+ pthread_mutex_unlock(&nic_list_mutex); -+ rc = pthread_cond_timedwait -+ (&nl_process_if_down_cond, -+ &nl_process_mutex, &ts); -+ -+ if (rc == ETIMEDOUT) { -+ pthread_mutex_unlock(&nl_process_mutex); -+ -+ if (pthread_mutex_trylock -+ (&nic_list_mutex) != 0) { -+ arp_retry = MAX_ARP_RETRY; -+ goto done; -+ -+ } -+ -+ rc = uip_lookup_arp_entry(dst_addr. -+ s_addr, -+ mac_addr); -+ if (rc == 0) -+ goto done; -+ } else { -+ nl_process_if_down = 0; -+ pthread_mutex_unlock(&nl_process_mutex); -+ -+ arp_retry = MAX_ARP_RETRY; -+ goto done; -+ -+ } -+ } -+ -+ arp_retry++; -+ } -+ } -+ -+done: -+ -+ if (arp_retry >= MAX_ARP_RETRY) { -+ status = -EIO; -+ rc = -EIO; -+ } -+ -+ if (status != 0 || rc != 0) -+ pthread_mutex_unlock(&nic->xmit_mutex); -+ -+ cnic_nl_neigh_rsp(nic, fd, ev, path, mac_addr, -+ nic_iface, status, AF_INET); -+ -+ pthread_mutex_unlock(&nic_list_mutex); -+ -+ return rc; -+} -+ -+/** -+ * cnic_handle_ipv6_iscsi_path_req() - This function will handle the IPv4 -+ * path req calls the bnx2i kernel module -+ * @param nic - The nic the message is directed towards -+ * @param fd - The file descriptor to be used to extract the private data -+ * @param ev - The iscsi_uevent -+ * @param buf - The private message buffer -+ */ -+int cnic_handle_ipv6_iscsi_path_req(nic_t * nic, int fd, -+ struct iscsi_uevent *ev, -+ struct iscsi_path *path) -+{ -+ nic_interface_t *nic_iface; -+ __u8 mac_addr[6]; -+ int rc, i; -+ uint16_t neighbor_retry; -+ int status = 0; -+ char addr_dst_str[INET6_ADDRSTRLEN]; -+ struct in6_addr src_addr, dst_addr, -+ src_matching_addr, dst_matching_addr, netmask; -+ struct in6_addr* addr; -+ NDPC_REQPTR req_ptr; -+ -+ memset(mac_addr, 0, sizeof(mac_addr)); -+ -+ inet_ntop(AF_INET6, &path->dst.v6_addr, -+ addr_dst_str, sizeof(addr_dst_str)); -+ -+ pthread_mutex_lock(&nic_list_mutex); -+ -+ /* Find the proper interface via VLAN id */ -+ nic_iface = nic_find_nic_iface_protocol(nic, path->vlan_id, AF_INET6); -+ if (nic_iface == NULL) { -+ nic_iface = nic_find_nic_iface_protocol(nic, 0, AF_INET6); -+ if (nic_iface == NULL) { -+ pthread_mutex_unlock(&nic_list_mutex); -+ LOG_ERR(PFX "%s: Couldn't find net_iface vlan_id: %d", -+ nic->log_name, path->vlan_id); -+ return -EINVAL; -+ } -+ -+ nic_iface->vlan_id = path->vlan_id; -+ } -+ /* Depending on the IPv6 address of the target we will need to -+ * determine whether we use the assigned IPv6 address or the -+ * link local IPv6 address */ -+ memcpy(&dst_addr, &path->dst.v6_addr, sizeof(struct in6_addr)); -+ if (ndpc_request(&nic_iface->ustack, &dst_addr, -+ &rc, CHECK_LINK_LOCAL_ADDR)) { -+ neighbor_retry = MAX_ARP_RETRY; -+ LOG_DEBUG(PFX "Check LL failed"); -+ goto done; -+ } -+ if (rc) { -+ LOG_DEBUG(PFX "Use LL"); -+ /* Get link local IPv6 address */ -+ if (ndpc_request(&nic_iface->ustack, NULL, -+ &addr, GET_LINK_LOCAL_ADDR)) { -+ neighbor_retry = MAX_ARP_RETRY; -+ LOG_DEBUG(PFX "Use LL failed"); -+ goto done; -+ } -+ } else { -+ LOG_DEBUG(PFX "Use Best matched"); -+ if (ndpc_request(&nic_iface->ustack, -+ &dst_addr, -+ &addr, GET_HOST_ADDR)) { -+ neighbor_retry = MAX_ARP_RETRY; -+ LOG_DEBUG(PFX "Use Best matched failed"); -+ goto done; -+ } -+ if (addr == NULL) { -+ neighbor_retry = MAX_ARP_RETRY; -+ LOG_DEBUG(PFX "No Best matched found"); -+ goto done; -+ } -+ } -+ /* Got the best matched src IP address */ -+ memcpy(&src_addr, addr, sizeof(struct in6_addr)); -+ -+ if (nic_iface->ustack.netmask6[0] | nic_iface->ustack.netmask6[1] | -+ nic_iface->ustack.netmask6[2] | nic_iface->ustack.netmask6[3] | -+ nic_iface->ustack.netmask6[4] | nic_iface->ustack.netmask6[5] | -+ nic_iface->ustack.netmask6[6] | nic_iface->ustack.netmask6[7]) -+ memcpy(&netmask.s6_addr, nic_iface->ustack.netmask6, -+ sizeof(struct in6_addr)); -+ else -+ memcpy(&netmask.s6_addr, all_zeroes_addr6, -+ sizeof(struct in6_addr)); -+ -+ LOG_DEBUG(PFX "src addr %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x", -+ src_addr.s6_addr16[0], src_addr.s6_addr16[1], -+ src_addr.s6_addr16[2], src_addr.s6_addr16[3], -+ src_addr.s6_addr16[4], src_addr.s6_addr16[5], -+ src_addr.s6_addr16[6], src_addr.s6_addr16[7]); -+ LOG_DEBUG(PFX "dst addr %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x", -+ dst_addr.s6_addr16[0], dst_addr.s6_addr16[1], -+ dst_addr.s6_addr16[2], dst_addr.s6_addr16[3], -+ dst_addr.s6_addr16[4], dst_addr.s6_addr16[5], -+ dst_addr.s6_addr16[6], dst_addr.s6_addr16[7]); -+ LOG_DEBUG(PFX "nm addr %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x", -+ netmask.s6_addr16[0], netmask.s6_addr16[1], -+ netmask.s6_addr16[2], netmask.s6_addr16[3], -+ netmask.s6_addr16[4], netmask.s6_addr16[5], -+ netmask.s6_addr16[6], netmask.s6_addr16[7]); -+ -+ for (i = 0; i < 4; i++) { -+ src_matching_addr.s6_addr32[i] = src_addr.s6_addr32[i] & -+ netmask.s6_addr32[i]; -+ dst_matching_addr.s6_addr32[i] = dst_addr.s6_addr32[i] & -+ netmask.s6_addr32[i]; -+ if (src_matching_addr.s6_addr32[i] != -+ dst_matching_addr.s6_addr32[i]) { -+ /* No match with the prefix mask, use default route */ -+ if (ndpc_request(&nic_iface->ustack, NULL, &addr, -+ GET_DEFAULT_ROUTER_ADDR)) { -+ neighbor_retry = MAX_ARP_RETRY; -+ goto done; -+ } -+ if (memcmp(addr, all_zeroes_addr6, sizeof(*addr))) -+ memcpy(&dst_addr, addr, sizeof(dst_addr)); -+ else { -+ neighbor_retry = MAX_ARP_RETRY; -+ goto done; -+ } -+ } -+ } -+ LOG_DEBUG(PFX "dst addr %02x:%02x:%02x:%02x:%02x:%02x:%02x:%02x", -+ dst_addr.s6_addr16[0], dst_addr.s6_addr16[1], -+ dst_addr.s6_addr16[2], dst_addr.s6_addr16[3], -+ dst_addr.s6_addr16[4], dst_addr.s6_addr16[5], -+ dst_addr.s6_addr16[6], dst_addr.s6_addr16[7]); -+ -+#define MAX_ARP_RETRY 4 -+ neighbor_retry = 0; -+ -+ req_ptr.eth = (void *)mac_addr; -+ req_ptr.ipv6 = (void *)&dst_addr; -+ if (ndpc_request(&nic_iface->ustack, &req_ptr, &rc, CHECK_ARP_TABLE)) { -+ /* ndpc request failed, skip neighbor solicit send */ -+ neighbor_retry = MAX_ARP_RETRY; -+ goto done; -+ } -+ if (!rc) { -+ LOG_DEBUG(PFX -+ "%s: Preparing to send IPv6 neighbor solicitation " -+ "to dst: '%s'", nic->log_name, addr_dst_str); -+ while ((neighbor_retry < MAX_ARP_RETRY) -+ && (event_loop_stop == 0)) { -+ int count; -+ struct timespec ts; -+ struct timeval tp; -+ struct timeval tp_abs; -+ -+ LOG_INFO(PFX "%s: Didn't find IPv6: '%s'\n", -+ nic->log_name, addr_dst_str); -+ -+ rc = cnic_neigh_soliciation_send(nic, nic_iface, fd, -+ mac_addr, -+ &dst_addr, -+ addr_dst_str); -+ if (rc != 0) { -+ status = -EIO; -+ goto done; -+ } -+ -+ for (count = 0; count < 8; count++) { -+ /* Convert from timeval to timespec */ -+ rc = gettimeofday(&tp, NULL); -+ -+ timeradd(&tp, &tp_wait, &tp_abs); -+ -+ ts.tv_sec = tp_abs.tv_sec; -+ ts.tv_nsec = tp_abs.tv_usec * 1000; -+ -+ pthread_mutex_unlock(&nic_list_mutex); -+ rc = pthread_cond_timedwait -+ (&nl_process_if_down_cond, -+ &nl_process_mutex, &ts); -+ -+ if (rc == ETIMEDOUT) { -+ pthread_mutex_unlock(&nl_process_mutex); -+ -+ if (pthread_mutex_trylock -+ (&nic_list_mutex) != 0) { -+ neighbor_retry = MAX_ARP_RETRY; -+ goto done; -+ -+ } -+ -+ req_ptr.eth = (void *)mac_addr; -+ req_ptr.ipv6 = (void *)&dst_addr; -+ if (ndpc_request -+ (&nic_iface->ustack, &req_ptr, &rc, -+ CHECK_ARP_TABLE)) { -+ /* ndpc request failed, -+ force retry */ -+ rc = 0; -+ } -+ if (rc) -+ goto done; -+ } else { -+ nl_process_if_down = 0; -+ pthread_mutex_unlock(&nl_process_mutex); -+ -+ neighbor_retry = MAX_ARP_RETRY; -+ goto done; -+ } -+ } -+ neighbor_retry++; -+ } -+ } -+ -+done: -+ if (neighbor_retry >= MAX_ARP_RETRY) { -+ status = -EIO; -+ rc = -EIO; -+ } -+ -+ if (status != 0 || rc != 0) -+ pthread_mutex_unlock(&nic->xmit_mutex); -+ -+ cnic_nl_neigh_rsp(nic, fd, ev, path, mac_addr, -+ nic_iface, status, AF_INET6); -+ -+ pthread_mutex_unlock(&nic_list_mutex); -+ -+ return rc; -+} -+ -+/** -+ * cnic_handle_iscsi_path_req() - This function will handle the path req calls -+ * the bnx2i kernel module -+ * @param nic - The nic the message is directed towards -+ * @param fd - The file descriptor to be used to extract the private data -+ * @param ev - The iscsi_uevent -+ * @param buf - The private message buffer -+ * @param buf_len - The private message buffer length -+ */ -+int cnic_handle_iscsi_path_req(nic_t * nic, int fd, struct iscsi_uevent *ev, -+ struct iscsi_path *path) -+{ -+ -+ LOG_DEBUG(PFX "%s: Netlink message with VLAN ID: %d, path MTU: %d " -+ "minor: %d ip_addr_len: %d", -+ nic->log_name, path->vlan_id, path->pmtu, 0 /* TODO FIX */ , -+ path->ip_addr_len); -+ -+ if (path->ip_addr_len == 4) -+ return cnic_handle_ipv4_iscsi_path_req(nic, fd, ev, path); -+ else if (path->ip_addr_len == 16) -+ return cnic_handle_ipv6_iscsi_path_req(nic, fd, ev, path); -+ else { -+ LOG_DEBUG(PFX "%s: unknown ip_addr_len: %d size dropping ", -+ nic->log_name, path->ip_addr_len); -+ return -EIO; -+ } -+} -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/libs/cnic.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/libs/cnic.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/libs/cnic.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/libs/cnic.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,53 @@ -+/* -+ * Copyright (c) 2009-2011, Broadcom Corporation -+ * -+ * Written by: Benjamin Li (benli@broadcom.com) -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * cnic.h - CNIC UIO uIP user space stack -+ * -+ */ -+#ifndef __CNIC_NL_H__ -+#define __CNIC_NL_H__ -+ -+/******************************************************************************* -+ * Constants shared between the bnx2 and bnx2x modules -+ ******************************************************************************/ -+extern const char bnx2i_library_transport_name[]; -+extern const size_t bnx2i_library_transport_name_size; -+ -+int cnic_nl_open(); -+void cnic_nl_close(); -+ -+int cnic_handle_iscsi_path_req(nic_t * nic, int, struct iscsi_uevent *, -+ struct iscsi_path *path); -+ -+#endif /* __CNIC_NL_H__ */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/libs/Makefile.am open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/libs/Makefile.am ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/libs/Makefile.am 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/libs/Makefile.am 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,12 @@ -+INCLUDES = -I${top_srcdir}/src/uip \ -+ -I${top_srcdir}/src/unix \ -+ -I${top_srcdir}/src/unix/libs \ -+ -I${top_srcdir}/src/apps/dhcpc \ -+ -I${top_srcdir}/include -+ -+noinst_LIBRARIES = lib_iscsiuio_hw_cnic.a -+ -+lib_iscsiuio_hw_cnic_a_SOURCES = ../build_date.c \ -+ cnic.c \ -+ bnx2.c \ -+ bnx2x.c -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/libs/Makefile.in open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/libs/Makefile.in ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/libs/Makefile.in 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/libs/Makefile.in 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,449 @@ -+# Makefile.in generated by automake 1.9.6 from Makefile.am. -+# @configure_input@ -+ -+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -+# 2003, 2004, 2005 Free Software Foundation, Inc. -+# This Makefile.in 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. -+ -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -+# PARTICULAR PURPOSE. -+ -+@SET_MAKE@ -+ -+srcdir = @srcdir@ -+top_srcdir = @top_srcdir@ -+VPATH = @srcdir@ -+pkgdatadir = $(datadir)/@PACKAGE@ -+pkglibdir = $(libdir)/@PACKAGE@ -+pkgincludedir = $(includedir)/@PACKAGE@ -+top_builddir = ../../.. -+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -+INSTALL = @INSTALL@ -+install_sh_DATA = $(install_sh) -c -m 644 -+install_sh_PROGRAM = $(install_sh) -c -+install_sh_SCRIPT = $(install_sh) -c -+INSTALL_HEADER = $(INSTALL_DATA) -+transform = $(program_transform_name) -+NORMAL_INSTALL = : -+PRE_INSTALL = : -+POST_INSTALL = : -+NORMAL_UNINSTALL = : -+PRE_UNINSTALL = : -+POST_UNINSTALL = : -+build_triplet = @build@ -+host_triplet = @host@ -+subdir = src/unix/libs -+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -+am__aclocal_m4_deps = $(top_srcdir)/configure.ac -+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ -+ $(ACLOCAL_M4) -+mkinstalldirs = $(install_sh) -d -+CONFIG_HEADER = $(top_builddir)/config.h -+CONFIG_CLEAN_FILES = -+LIBRARIES = $(noinst_LIBRARIES) -+ARFLAGS = cru -+lib_iscsiuio_hw_cnic_a_AR = $(AR) $(ARFLAGS) -+lib_iscsiuio_hw_cnic_a_LIBADD = -+am_lib_iscsiuio_hw_cnic_a_OBJECTS = build_date.$(OBJEXT) \ -+ cnic.$(OBJEXT) bnx2.$(OBJEXT) bnx2x.$(OBJEXT) -+lib_iscsiuio_hw_cnic_a_OBJECTS = $(am_lib_iscsiuio_hw_cnic_a_OBJECTS) -+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -+depcomp = $(SHELL) $(top_srcdir)/depcomp -+am__depfiles_maybe = depfiles -+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ -+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ -+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ -+ $(AM_CFLAGS) $(CFLAGS) -+CCLD = $(CC) -+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ -+ $(AM_LDFLAGS) $(LDFLAGS) -o $@ -+SOURCES = $(lib_iscsiuio_hw_cnic_a_SOURCES) -+DIST_SOURCES = $(lib_iscsiuio_hw_cnic_a_SOURCES) -+ETAGS = etags -+CTAGS = ctags -+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -+ACLOCAL = @ACLOCAL@ -+AMDEP_FALSE = @AMDEP_FALSE@ -+AMDEP_TRUE = @AMDEP_TRUE@ -+AMTAR = @AMTAR@ -+AR = @AR@ -+AUTOCONF = @AUTOCONF@ -+AUTOHEADER = @AUTOHEADER@ -+AUTOMAKE = @AUTOMAKE@ -+AWK = @AWK@ -+BASH = @BASH@ -+CC = @CC@ -+CCDEPMODE = @CCDEPMODE@ -+CFLAGS = @CFLAGS@ -+CPP = @CPP@ -+CPPFLAGS = @CPPFLAGS@ -+CXX = @CXX@ -+CXXCPP = @CXXCPP@ -+CXXDEPMODE = @CXXDEPMODE@ -+CXXFLAGS = @CXXFLAGS@ -+CYGPATH_W = @CYGPATH_W@ -+DEBUG_FALSE = @DEBUG_FALSE@ -+DEBUG_TRUE = @DEBUG_TRUE@ -+DEFS = @DEFS@ -+DEPDIR = @DEPDIR@ -+ECHO = @ECHO@ -+ECHO_C = @ECHO_C@ -+ECHO_N = @ECHO_N@ -+ECHO_T = @ECHO_T@ -+EGREP = @EGREP@ -+ENDIAN = @ENDIAN@ -+EXEEXT = @EXEEXT@ -+F77 = @F77@ -+FFLAGS = @FFLAGS@ -+INSTALL_DATA = @INSTALL_DATA@ -+INSTALL_PROGRAM = @INSTALL_PROGRAM@ -+INSTALL_SCRIPT = @INSTALL_SCRIPT@ -+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -+LDFLAGS = @LDFLAGS@ -+LIBOBJS = @LIBOBJS@ -+LIBS = @LIBS@ -+LIBTOOL = @LIBTOOL@ -+LN_S = @LN_S@ -+LTLIBOBJS = @LTLIBOBJS@ -+MAKEINFO = @MAKEINFO@ -+OBJEXT = @OBJEXT@ -+PACKAGE = @PACKAGE@ -+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -+PACKAGE_NAME = @PACKAGE_NAME@ -+PACKAGE_STRING = @PACKAGE_STRING@ -+PACKAGE_TARNAME = @PACKAGE_TARNAME@ -+PACKAGE_VERSION = @PACKAGE_VERSION@ -+PATH_SEPARATOR = @PATH_SEPARATOR@ -+RANLIB = @RANLIB@ -+SED = @SED@ -+SET_MAKE = @SET_MAKE@ -+SHELL = @SHELL@ -+STRIP = @STRIP@ -+VERSION = @VERSION@ -+ac_ct_AR = @ac_ct_AR@ -+ac_ct_CC = @ac_ct_CC@ -+ac_ct_CXX = @ac_ct_CXX@ -+ac_ct_F77 = @ac_ct_F77@ -+ac_ct_RANLIB = @ac_ct_RANLIB@ -+ac_ct_STRIP = @ac_ct_STRIP@ -+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ -+am__include = @am__include@ -+am__leading_dot = @am__leading_dot@ -+am__quote = @am__quote@ -+am__tar = @am__tar@ -+am__untar = @am__untar@ -+bindir = @bindir@ -+build = @build@ -+build_alias = @build_alias@ -+build_cpu = @build_cpu@ -+build_os = @build_os@ -+build_vendor = @build_vendor@ -+datadir = @datadir@ -+exec_prefix = @exec_prefix@ -+host = @host@ -+host_alias = @host_alias@ -+host_cpu = @host_cpu@ -+host_os = @host_os@ -+host_vendor = @host_vendor@ -+includedir = @includedir@ -+infodir = @infodir@ -+install_sh = @install_sh@ -+libdir = @libdir@ -+libexecdir = @libexecdir@ -+localstatedir = @localstatedir@ -+mandir = @mandir@ -+mkdir_p = @mkdir_p@ -+oldincludedir = @oldincludedir@ -+prefix = @prefix@ -+program_transform_name = @program_transform_name@ -+sbindir = @sbindir@ -+sharedstatedir = @sharedstatedir@ -+sysconfdir = @sysconfdir@ -+target_alias = @target_alias@ -+INCLUDES = -I${top_srcdir}/src/uip \ -+ -I${top_srcdir}/src/unix \ -+ -I${top_srcdir}/src/unix/libs \ -+ -I${top_srcdir}/src/apps/dhcpc \ -+ -I${top_srcdir}/include -+ -+noinst_LIBRARIES = lib_iscsiuio_hw_cnic.a -+lib_iscsiuio_hw_cnic_a_SOURCES = ../build_date.c \ -+ cnic.c \ -+ bnx2.c \ -+ bnx2x.c -+ -+all: all-am -+ -+.SUFFIXES: -+.SUFFIXES: .c .lo .o .obj -+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) -+ @for dep in $?; do \ -+ case '$(am__configure_deps)' in \ -+ *$$dep*) \ -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ -+ && exit 0; \ -+ exit 1;; \ -+ esac; \ -+ done; \ -+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/unix/libs/Makefile'; \ -+ cd $(top_srcdir) && \ -+ $(AUTOMAKE) --gnu src/unix/libs/Makefile -+.PRECIOUS: Makefile -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ @case '$?' in \ -+ *config.status*) \ -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ -+ *) \ -+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ -+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ -+ esac; -+ -+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+ -+$(top_srcdir)/configure: $(am__configure_deps) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+$(ACLOCAL_M4): $(am__aclocal_m4_deps) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+ -+clean-noinstLIBRARIES: -+ -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) -+lib_iscsiuio_hw_cnic.a: $(lib_iscsiuio_hw_cnic_a_OBJECTS) $(lib_iscsiuio_hw_cnic_a_DEPENDENCIES) -+ -rm -f lib_iscsiuio_hw_cnic.a -+ $(lib_iscsiuio_hw_cnic_a_AR) lib_iscsiuio_hw_cnic.a $(lib_iscsiuio_hw_cnic_a_OBJECTS) $(lib_iscsiuio_hw_cnic_a_LIBADD) -+ $(RANLIB) lib_iscsiuio_hw_cnic.a -+ -+mostlyclean-compile: -+ -rm -f *.$(OBJEXT) -+ -+distclean-compile: -+ -rm -f *.tab.c -+ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bnx2.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bnx2x.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/build_date.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cnic.Po@am__quote@ -+ -+.c.o: -+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(COMPILE) -c $< -+ -+.c.obj: -+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` -+ -+.c.lo: -+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< -+ -+build_date.o: ../build_date.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT build_date.o -MD -MP -MF "$(DEPDIR)/build_date.Tpo" -c -o build_date.o `test -f '../build_date.c' || echo '$(srcdir)/'`../build_date.c; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/build_date.Tpo" "$(DEPDIR)/build_date.Po"; else rm -f "$(DEPDIR)/build_date.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../build_date.c' object='build_date.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o build_date.o `test -f '../build_date.c' || echo '$(srcdir)/'`../build_date.c -+ -+build_date.obj: ../build_date.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT build_date.obj -MD -MP -MF "$(DEPDIR)/build_date.Tpo" -c -o build_date.obj `if test -f '../build_date.c'; then $(CYGPATH_W) '../build_date.c'; else $(CYGPATH_W) '$(srcdir)/../build_date.c'; fi`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/build_date.Tpo" "$(DEPDIR)/build_date.Po"; else rm -f "$(DEPDIR)/build_date.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='../build_date.c' object='build_date.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o build_date.obj `if test -f '../build_date.c'; then $(CYGPATH_W) '../build_date.c'; else $(CYGPATH_W) '$(srcdir)/../build_date.c'; fi` -+ -+mostlyclean-libtool: -+ -rm -f *.lo -+ -+clean-libtool: -+ -rm -rf .libs _libs -+ -+distclean-libtool: -+ -rm -f libtool -+uninstall-info-am: -+ -+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) ' { files[$$0] = 1; } \ -+ END { for (i in files) print i; }'`; \ -+ mkid -fID $$unique -+tags: TAGS -+ -+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ here=`pwd`; \ -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) ' { files[$$0] = 1; } \ -+ END { for (i in files) print i; }'`; \ -+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ -+ test -n "$$unique" || unique=$$empty_fix; \ -+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ -+ $$tags $$unique; \ -+ fi -+ctags: CTAGS -+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ here=`pwd`; \ -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) ' { files[$$0] = 1; } \ -+ END { for (i in files) print i; }'`; \ -+ test -z "$(CTAGS_ARGS)$$tags$$unique" \ -+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ -+ $$tags $$unique -+ -+GTAGS: -+ here=`$(am__cd) $(top_builddir) && pwd` \ -+ && cd $(top_srcdir) \ -+ && gtags -i $(GTAGS_ARGS) $$here -+ -+distclean-tags: -+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -+ -+distdir: $(DISTFILES) -+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ -+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ -+ list='$(DISTFILES)'; for file in $$list; do \ -+ case $$file in \ -+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ -+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ -+ esac; \ -+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ -+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ -+ dir="/$$dir"; \ -+ $(mkdir_p) "$(distdir)$$dir"; \ -+ else \ -+ dir=''; \ -+ fi; \ -+ if test -d $$d/$$file; then \ -+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ -+ fi; \ -+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ -+ else \ -+ test -f $(distdir)/$$file \ -+ || cp -p $$d/$$file $(distdir)/$$file \ -+ || exit 1; \ -+ fi; \ -+ done -+check-am: all-am -+check: check-am -+all-am: Makefile $(LIBRARIES) -+installdirs: -+install: install-am -+install-exec: install-exec-am -+install-data: install-data-am -+uninstall: uninstall-am -+ -+install-am: all-am -+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -+ -+installcheck: installcheck-am -+install-strip: -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ `test -z '$(STRIP)' || \ -+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -+mostlyclean-generic: -+ -+clean-generic: -+ -+distclean-generic: -+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -+ -+maintainer-clean-generic: -+ @echo "This command is intended for maintainers to use" -+ @echo "it deletes files that may require special tools to rebuild." -+clean: clean-am -+ -+clean-am: clean-generic clean-libtool clean-noinstLIBRARIES \ -+ mostlyclean-am -+ -+distclean: distclean-am -+ -rm -rf ./$(DEPDIR) -+ -rm -f Makefile -+distclean-am: clean-am distclean-compile distclean-generic \ -+ distclean-libtool distclean-tags -+ -+dvi: dvi-am -+ -+dvi-am: -+ -+html: html-am -+ -+info: info-am -+ -+info-am: -+ -+install-data-am: -+ -+install-exec-am: -+ -+install-info: install-info-am -+ -+install-man: -+ -+installcheck-am: -+ -+maintainer-clean: maintainer-clean-am -+ -rm -rf ./$(DEPDIR) -+ -rm -f Makefile -+maintainer-clean-am: distclean-am maintainer-clean-generic -+ -+mostlyclean: mostlyclean-am -+ -+mostlyclean-am: mostlyclean-compile mostlyclean-generic \ -+ mostlyclean-libtool -+ -+pdf: pdf-am -+ -+pdf-am: -+ -+ps: ps-am -+ -+ps-am: -+ -+uninstall-am: uninstall-info-am -+ -+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ -+ clean-libtool clean-noinstLIBRARIES ctags distclean \ -+ distclean-compile distclean-generic distclean-libtool \ -+ distclean-tags distdir dvi dvi-am html html-am info info-am \ -+ install install-am install-data install-data-am install-exec \ -+ install-exec-am install-info install-info-am install-man \ -+ install-strip installcheck installcheck-am installdirs \ -+ maintainer-clean maintainer-clean-generic mostlyclean \ -+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ -+ pdf pdf-am ps ps-am tags uninstall uninstall-am \ -+ uninstall-info-am -+ -+# Tell versions [3.59,3.63) of GNU make to not export all variables. -+# Otherwise a system limit (for SysV at least) may be exceeded. -+.NOEXPORT: -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/logger.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/logger.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/logger.c 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/logger.c 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,172 @@ -+/* -+ * Copyright (c) 2009-2011, Broadcom Corporation -+ * -+ * Written by: Benjamin Li (benli@broadcom.com) -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * logger.c - Logging Utilities -+ * -+ */ -+#include -+#include -+#include -+#include -+#include -+ -+#include "options.h" -+#include "logger.h" -+ -+/****************************************************************************** -+ * Default logger values -+ ******************************************************************************/ -+static const char default_logger_filename[] = "/var/log/iscsiuio.log"; -+ -+struct logger main_log = { -+ .enabled = LOGGER_ENABLED, -+ .fp = NULL, -+ .log_file = (char *)default_logger_filename, -+ .level = LOG_LEVEL_INFO, -+ .lock = PTHREAD_MUTEX_INITIALIZER, -+ -+ .stats = { -+ .debug = 0, -+ .info = 0, -+ .warn = 0, -+ .error = 0, -+ -+ .last_log_time = 0, -+ }, -+}; -+ -+/****************************************************************************** -+ * Logger Functions -+ ******************************************************************************/ -+/** -+ * log_uip() - Main logging function -+ * @param level_str - log level string -+ * @param fmt - log format -+ */ -+void log_uip(char *level_str, char *fmt, ...) -+{ -+ char time_buf[32]; -+ va_list ap, ap2; -+ -+ pthread_mutex_lock(&main_log.lock); -+ va_start(ap, fmt); -+ -+ if (main_log.fp == NULL) { -+ goto end; -+ } -+ -+ main_log.stats.last_log_time = time(NULL); -+ strftime(time_buf, 26, "%a %b %d %T %Y", -+ localtime(&main_log.stats.last_log_time)); -+ va_copy(ap2, ap); -+ -+ if (main_log.enabled == LOGGER_ENABLED) { -+ fprintf(main_log.fp, "%s [%s]", level_str, time_buf); -+ vfprintf(main_log.fp, fmt, ap); -+ fprintf(main_log.fp, "\n"); -+ } -+ -+ if (opt.debug == DEBUG_ON) { -+ fprintf(stdout, "%s [%s]", level_str, time_buf); -+ vfprintf(stdout, fmt, ap2); -+ fprintf(stdout, "\n"); -+ -+ /* Force the printing of the log file */ -+ fflush(main_log.fp); -+ -+ /* Force the printing of the log out to standard output */ -+ fflush(stdout); -+ } -+ -+ end: -+ va_end(ap2); -+ va_end(ap); -+ pthread_mutex_unlock(&main_log.lock); -+} -+ -+/****************************************************************************** -+ * Initialize/Clean up routines -+ ******************************************************************************/ -+/** -+ * init_logger() - Prepare the logger -+ * @param filename - path to where the log will be written to -+ * @return 0 on success, <0 on failure -+ */ -+int init_logger(char *filename) -+{ -+ int rc = 0; -+ -+ pthread_mutex_lock(&main_log.lock); -+ -+ main_log.fp = fopen(filename, "a"); -+ if (main_log.fp == NULL) { -+ printf("Could not create log file: %s <%s>\n", -+ filename, strerror(errno)); -+ rc = -EIO; -+ } -+ main_log.enabled = LOGGER_ENABLED; -+ -+ pthread_mutex_unlock(&main_log.lock); -+ -+ LOG_INFO("Initialize logger using log file: %s", filename); -+ -+ return rc; -+} -+ -+void fini_logger(int type) -+{ -+ pthread_mutex_lock(&main_log.lock); -+ -+ if (main_log.fp != NULL) { -+ fclose(main_log.fp); -+ main_log.fp = NULL; -+ -+ if (opt.debug == DEBUG_ON) { -+ printf("Closed logger\n"); -+ fflush(stdout); -+ } -+ } -+ -+ if (type == SHUTDOWN_LOGGER) { -+ if ((main_log.log_file != NULL) && -+ (main_log.log_file != default_logger_filename)) { -+ free(main_log.log_file); -+ main_log.log_file = NULL; -+ } -+ } -+ -+ main_log.enabled = LOGGER_DISABLED; -+ -+ pthread_mutex_unlock(&main_log.lock); -+} -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/logger.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/logger.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/logger.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/logger.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,128 @@ -+/* -+ * Copyright (c) 2009-2011, Broadcom Corporation -+ * -+ * Written by: Benjamin Li (benli@broadcom.com) -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * logger.h - Logging Utilities -+ * -+ */ -+#ifndef __LOGGER_H__ -+#define __LOGGER_H__ -+ -+#include -+#include -+#include -+#include -+#include -+ -+/******************************************************************************* -+ * Logger Levels -+ ******************************************************************************/ -+#define LOG_LEVEL_PACKET 5 -+#define LOG_LEVEL_DEBUG 4 -+#define LOG_LEVEL_INFO 3 -+#define LOG_LEVEL_WARN 2 -+#define LOG_LEVEL_ERR 1 -+#define LOG_LEVEL_UNKNOWN 0 -+ -+#define LOG_LEVEL_PACKET_STR "PKT " -+#define LOG_LEVEL_DEBUG_STR "DBG " -+#define LOG_LEVEL_INFO_STR "INFO " -+#define LOG_LEVEL_WARN_STR "WARN " -+#define LOG_LEVEL_ERR_STR "ERR " -+#define LOG_LEVEL_UNKNOWN_STR "? " -+ -+/******************************************************************************* -+ * Logging Macro's -+ ******************************************************************************/ -+#define LOG_PACKET(fmt, args...) { if (LOG_LEVEL_PACKET <= \ -+ main_log.level) { \ -+ log_uip(LOG_LEVEL_PACKET_STR, fmt,\ -+ ##args);\ -+ } } -+#define LOG_DEBUG(fmt, args...) { if (LOG_LEVEL_DEBUG <= main_log.level) { \ -+ log_uip(LOG_LEVEL_DEBUG_STR, fmt,\ -+ ##args);\ -+ } } -+ -+#define LOG_INFO(fmt, args...) { if (LOG_LEVEL_INFO <= main_log.level) { \ -+ log_uip(LOG_LEVEL_INFO_STR, fmt,\ -+ ##args); \ -+ } } -+#define LOG_WARN(fmt, args...) { if (LOG_LEVEL_WARN <= main_log.level) { \ -+ log_uip(LOG_LEVEL_WARN_STR, fmt,\ -+ ##args); \ -+ } } -+#define LOG_ERR(fmt, args...) { if (LOG_LEVEL_ERR <= main_log.level) { \ -+ log_uip(LOG_LEVEL_ERR_STR, fmt,\ -+ ##args); \ -+ } } -+ -+/******************************************************************************* -+ * Logging Statistics -+ ******************************************************************************/ -+struct logger_stats { -+ uint64_t debug; -+ uint64_t info; -+ uint64_t warn; -+ uint64_t error; -+ -+ time_t last_log_time; -+}; -+ -+/******************************************************************************* -+ * Logger Structure -+ ******************************************************************************/ -+struct logger { -+ FILE *fp; -+ char *log_file; -+ int8_t level; -+ -+#define LOGGER_ENABLED 0x01 -+#define LOGGER_DISABLED 0x02 -+ int8_t enabled; -+ -+ pthread_mutex_t lock; -+ -+ struct logger_stats stats; -+}; -+ -+extern struct logger main_log; -+ -+int init_logger(char *); -+void log_uip(char *level_str, char *fmt, ...); -+void fini_logger(int); -+ -+#define CLOSE_LOGGER 0x01 -+#define SHUTDOWN_LOGGER 0x02 -+ -+#endif -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/main.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/main.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/main.c 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/main.c 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,362 @@ -+/* -+ * Copyright (c) 2001, Adam Dunkels. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * This file is part of the uIP TCP/IP stack. -+ * -+ * $Id: main.c,v 1.16 2006/06/11 21:55:03 adam Exp $ -+ * -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "uip.h" -+#include "uip_arp.h" -+#include "uip_eth.h" -+ -+#include "timer.h" -+ -+#include "build_date.h" -+#include "config.h" -+#include "iscsid_ipc.h" -+#include "logger.h" -+#include "nic.h" -+#include "nic_id.h" -+#include "nic_nl.h" -+#include "nic_utils.h" -+#include "options.h" -+#include "packet.h" -+ -+#include "dhcpc.h" -+ -+#include "iscsid_ipc.h" -+#include "brcm_iscsi.h" -+ -+/******************************************************************************* -+ * Constants -+ ******************************************************************************/ -+#define PFX "main " -+ -+static char default_pid_filepath[] = "/var/run/iscsiuio.pid"; -+ -+/******************************************************************************* -+ * Global Variables -+ ******************************************************************************/ -+static const struct option long_options[] = { -+ {"debug", 0, 0, 0}, -+ {"version", 0, 0, 0}, -+ {"help", 0, 0, 0}, -+ {0, 0, 0, 0} -+}; -+ -+struct options opt = { -+ .debug = DEBUG_OFF, -+}; -+ -+int event_loop_stop = 0; -+ -+struct utsname cur_utsname; -+ -+/** -+ * cleanup() - This function is called when this program is to be closed -+ * This function will clean up all the cnic uio interfaces and -+ * flush/close the logger -+ */ -+static void cleanup() -+{ -+ iscsid_cleanup(); -+ -+ nic_remove_all(); -+ -+ unload_all_nic_libraries(); -+ -+ LOG_INFO("Done waiting for cnic's/stacks to gracefully close"); -+ -+ fini_logger(SHUTDOWN_LOGGER); -+} -+ -+/** -+ * signal_handle_thread() - This is the signal handling thread of this program -+ * This is the only thread which will handle signals. -+ * All signals are routed here and handled here to -+ * provide consistant handling. -+ */ -+static pthread_t signal_thread; -+static void *signal_handle_thread(void *arg) -+{ -+ sigset_t set; -+ int rc; -+ int signal; -+ -+ sigfillset(&set); -+ -+ LOG_INFO("signal handling thread ready"); -+ -+signal_wait: -+ rc = sigwait(&set, &signal); -+ -+ switch (signal) { -+ case SIGINT: -+ LOG_INFO("Caught SIGINT signal"); -+ break; -+ case SIGUSR1: -+ LOG_INFO("Caught SIGUSR1 signal, rotate log"); -+retry: -+ fini_logger(SHUTDOWN_LOGGER); -+ rc = init_logger(main_log.log_file); -+ if (rc != 0) { -+ printf("Could not initialize the logger in " -+ "signal!\n"); -+ goto retry; -+ } -+ goto signal_wait; -+ default: -+ break; -+ } -+ event_loop_stop = 1; -+ -+ LOG_INFO("terminating..."); -+ -+ cleanup(); -+ exit(EXIT_SUCCESS); -+} -+ -+static void show_version() -+{ -+ printf("%s: Version '%s', Build Date: '%s'\n", -+ APP_NAME, PACKAGE_VERSION, build_date); -+} -+ -+static void main_usage() -+{ -+ show_version(); -+ -+ printf("\nUsage: %s [OPTION]\n", APP_NAME); -+ printf("\ -+Broadcom uIP daemon.\n\ -+ -f, --foreground make the program run in the foreground\n\ -+ -d, --debug debuglevel print debugging information\n\ -+ -p, --pid=pidfile use pid file (default %s ).\n\ -+ -h, --help display this help and exit\n\ -+ -v, --version display version and exit\n\ -+", default_pid_filepath); -+} -+ -+static void daemon_init() -+{ -+ int fd; -+ int rc; -+ -+ fd = open("/dev/null", O_RDWR); -+ if (fd == -1) { -+ exit(-1); -+ } -+ -+ dup2(fd, 0); -+ dup2(fd, 1); -+ dup2(fd, 2); -+ setsid(); -+ rc = chdir("/"); -+} -+ -+/******************************************************************************* -+ * Main routine -+ ******************************************************************************/ -+int main(int argc, char *argv[]) -+{ -+ int rc; -+ sigset_t set; -+ char *pid_file = default_pid_filepath; -+ int fd; -+ int foreground = 0; -+ pid_t pid; -+ -+ /* Record the start time for the user space daemon */ -+ opt.start_time = time(NULL); -+ -+ /* parse the parameters */ -+ while (1) { -+ int c, option_index; -+ -+ c = getopt_long(argc, argv, "fd:p:vh", -+ long_options, &option_index); -+ -+ if (c == -1) -+ break; -+ -+ switch (c) { -+ -+ case 'f': -+ foreground = 1; -+ break; -+ -+ /* Enable debugging mode */ -+ case 'd': -+ main_log.level = atoi(optarg); -+ opt.debug = DEBUG_ON; -+ break; -+ case 'p': -+ pid_file = optarg; -+ break; -+ case 'v': -+ show_version(); -+ exit(EXIT_SUCCESS); -+ case 'h': -+ default: -+ main_usage(); -+ exit(EXIT_SUCCESS); -+ } -+ } -+ -+ if (main_log.enabled == LOGGER_ENABLED) { -+ /* initialize the logger */ -+ rc = init_logger(main_log.log_file); -+ if (rc != 0) { -+ printf("Could not initialize the logger\n"); -+ goto error; -+ } -+ } -+ -+ LOG_INFO("Started iSCSI uio stack: Ver " PACKAGE_VERSION); -+ LOG_INFO("Build date: %s", build_date); -+ -+ if (opt.debug == DEBUG_ON) { -+ LOG_INFO("Debug mode enabled"); -+ } -+ -+ /* Determine the current kernel version */ -+ memset(&cur_utsname, 0, sizeof(cur_utsname)); -+ -+ rc = uname(&cur_utsname); -+ if (rc == 0) { -+ LOG_INFO("Running on sysname: '%s', release: '%s', " -+ "version '%s' machine: '%s'", -+ cur_utsname.sysname, cur_utsname.release, -+ cur_utsname.version, cur_utsname.machine); -+ } else -+ LOG_WARN("Could not determine kernel version"); -+ -+ /* Initialze the iscsid listener */ -+ rc = iscsid_init(); -+ if (rc != 0) { -+ goto error; -+ } -+ -+ if (!foreground) { -+ char buf[64]; -+ ssize_t written_bytes; -+ -+ fd = open(pid_file, O_WRONLY | O_CREAT, 0644); -+ if (fd < 0) { -+ printf("Unable to create pid file: %s", pid_file); -+ exit(1); -+ } -+ -+ pid = fork(); -+ if (pid < 0) { -+ printf("Starting daemon failed"); -+ exit(1); -+ } else if (pid) { -+ exit(0); -+ } -+ -+ rc = chdir("/"); -+ if (rc == -1) -+ printf("Unable to chdir(\") [%s]", strerror(errno)); -+ -+ if (lockf(fd, F_TLOCK, 0) < 0) { -+ printf("Unable to lock pid file: %s [%s]", -+ pid_file, strerror(errno)); -+ exit(1); -+ } -+ -+ rc = ftruncate(fd, 0); -+ if (rc == -1) -+ printf("ftruncate(%d, 0) failed [%s]", -+ fd, strerror(errno)); -+ -+ sprintf(buf, "%d\n", getpid()); -+ written_bytes = write(fd, buf, strlen(buf)); -+ if (written_bytes == -1) -+ printf("Could not write lock file [%s]", -+ strerror(errno)); -+ -+ daemon_init(); -+ } -+ -+ /* Load the NIC libraries */ -+ rc = load_all_nic_libraries(); -+ if (rc != 0) { -+ goto error; -+ } -+ -+ brcm_iscsi_init(); -+ -+ /* ensure we don't see any signals */ -+ sigemptyset(&set); -+ sigaddset(&set, SIGINT); -+ sigaddset(&set, SIGQUIT); -+ sigaddset(&set, SIGTERM); -+ rc = pthread_sigmask(SIG_SETMASK, &set, NULL); -+ -+ /* Spin off the signal handling thread */ -+ rc = pthread_create(&signal_thread, NULL, signal_handle_thread, NULL); -+ if (rc != 0) { -+ LOG_ERR("Could not create signal handling thread"); -+ } -+ -+ /* Using sysfs to discover iSCSI hosts */ -+ nic_discover_iscsi_hosts(); -+ -+ /* Start the iscsid listener */ -+ rc = iscsid_start(); -+ if (rc != 0) { -+ goto error; -+ } -+ -+ /* NetLink connection to listen to NETLINK_ISCSI private messages */ -+ nic_nl_open(); -+ -+error: -+ cleanup(); -+ exit(EXIT_FAILURE); -+} -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/Makefile.am open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/Makefile.am ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/Makefile.am 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/Makefile.am 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,38 @@ -+SUBDIRS= libs -+ -+INCLUDES = -I${top_srcdir}/src/uip \ -+ -I${top_srcdir}/src/apps/brcm-iscsi \ -+ -I${top_srcdir}/src/apps/dhcpc \ -+ -I${top_srcdir}/include \ -+ -I${top_srcdir}/src/unix/libs/ -+ -+sbin_PROGRAMS = iscsiuio -+ -+iscsiuio_SOURCES = build_date.c \ -+ main.c \ -+ clock-arch.c \ -+ logger.c \ -+ nic.c \ -+ nic_id.c \ -+ nic_vlan.c \ -+ nic_nl.c \ -+ nic_utils.c \ -+ packet.c \ -+ iscsid_ipc.c -+ -+iscsiuio_CFLAGS = $(AM_CFLAGS) \ -+ $(LIBNL_CFLAGS) \ -+ -DBYTE_ORDER=@ENDIAN@ -+ -+iscsiuio_LDFLAGS= $(AM_LDADD) \ -+ -ldl \ -+ -rdynamic \ -+ $(LIBNL_LIBS) \ -+ -lpthread -+ -+iscsiuio_LDADD = ${top_srcdir}/src/uip/lib_iscsi_uip.a \ -+ ${top_srcdir}/src/apps/dhcpc/lib_apps_dhcpc.a\ -+ ${top_srcdir}/src/apps/brcm-iscsi/lib_apps_brcm_iscsi.a \ -+ ${top_srcdir}/src/unix/libs/lib_iscsiuio_hw_cnic.a -+ -+iscsiuio_YFLAGS = -d -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/Makefile.in open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/Makefile.in ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/Makefile.in 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/Makefile.in 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,766 @@ -+# Makefile.in generated by automake 1.9.6 from Makefile.am. -+# @configure_input@ -+ -+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -+# 2003, 2004, 2005 Free Software Foundation, Inc. -+# This Makefile.in 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. -+ -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -+# PARTICULAR PURPOSE. -+ -+@SET_MAKE@ -+ -+srcdir = @srcdir@ -+top_srcdir = @top_srcdir@ -+VPATH = @srcdir@ -+pkgdatadir = $(datadir)/@PACKAGE@ -+pkglibdir = $(libdir)/@PACKAGE@ -+pkgincludedir = $(includedir)/@PACKAGE@ -+top_builddir = ../.. -+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -+INSTALL = @INSTALL@ -+install_sh_DATA = $(install_sh) -c -m 644 -+install_sh_PROGRAM = $(install_sh) -c -+install_sh_SCRIPT = $(install_sh) -c -+INSTALL_HEADER = $(INSTALL_DATA) -+transform = $(program_transform_name) -+NORMAL_INSTALL = : -+PRE_INSTALL = : -+POST_INSTALL = : -+NORMAL_UNINSTALL = : -+PRE_UNINSTALL = : -+POST_UNINSTALL = : -+build_triplet = @build@ -+host_triplet = @host@ -+sbin_PROGRAMS = iscsiuio$(EXEEXT) -+subdir = src/unix -+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -+am__aclocal_m4_deps = $(top_srcdir)/configure.ac -+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ -+ $(ACLOCAL_M4) -+mkinstalldirs = $(install_sh) -d -+CONFIG_HEADER = $(top_builddir)/config.h -+CONFIG_CLEAN_FILES = -+am__installdirs = "$(DESTDIR)$(sbindir)" -+sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM) -+PROGRAMS = $(sbin_PROGRAMS) -+am_iscsiuio_OBJECTS = iscsiuio-build_date.$(OBJEXT) \ -+ iscsiuio-main.$(OBJEXT) iscsiuio-clock-arch.$(OBJEXT) \ -+ iscsiuio-logger.$(OBJEXT) iscsiuio-nic.$(OBJEXT) \ -+ iscsiuio-nic_id.$(OBJEXT) iscsiuio-nic_vlan.$(OBJEXT) \ -+ iscsiuio-nic_nl.$(OBJEXT) iscsiuio-nic_utils.$(OBJEXT) \ -+ iscsiuio-packet.$(OBJEXT) iscsiuio-iscsid_ipc.$(OBJEXT) -+iscsiuio_OBJECTS = $(am_iscsiuio_OBJECTS) -+iscsiuio_DEPENDENCIES = ${top_srcdir}/src/uip/lib_iscsi_uip.a \ -+ ${top_srcdir}/src/apps/dhcpc/lib_apps_dhcpc.a \ -+ ${top_srcdir}/src/apps/brcm-iscsi/lib_apps_brcm_iscsi.a \ -+ ${top_srcdir}/src/unix/libs/lib_iscsiuio_hw_cnic.a -+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) -+depcomp = $(SHELL) $(top_srcdir)/depcomp -+am__depfiles_maybe = depfiles -+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ -+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -+LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \ -+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ -+ $(AM_CFLAGS) $(CFLAGS) -+CCLD = $(CC) -+LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ -+ $(AM_LDFLAGS) $(LDFLAGS) -o $@ -+SOURCES = $(iscsiuio_SOURCES) -+DIST_SOURCES = $(iscsiuio_SOURCES) -+RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ -+ html-recursive info-recursive install-data-recursive \ -+ install-exec-recursive install-info-recursive \ -+ install-recursive installcheck-recursive installdirs-recursive \ -+ pdf-recursive ps-recursive uninstall-info-recursive \ -+ uninstall-recursive -+ETAGS = etags -+CTAGS = ctags -+DIST_SUBDIRS = $(SUBDIRS) -+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -+ACLOCAL = @ACLOCAL@ -+AMDEP_FALSE = @AMDEP_FALSE@ -+AMDEP_TRUE = @AMDEP_TRUE@ -+AMTAR = @AMTAR@ -+AR = @AR@ -+AUTOCONF = @AUTOCONF@ -+AUTOHEADER = @AUTOHEADER@ -+AUTOMAKE = @AUTOMAKE@ -+AWK = @AWK@ -+BASH = @BASH@ -+CC = @CC@ -+CCDEPMODE = @CCDEPMODE@ -+CFLAGS = @CFLAGS@ -+CPP = @CPP@ -+CPPFLAGS = @CPPFLAGS@ -+CXX = @CXX@ -+CXXCPP = @CXXCPP@ -+CXXDEPMODE = @CXXDEPMODE@ -+CXXFLAGS = @CXXFLAGS@ -+CYGPATH_W = @CYGPATH_W@ -+DEBUG_FALSE = @DEBUG_FALSE@ -+DEBUG_TRUE = @DEBUG_TRUE@ -+DEFS = @DEFS@ -+DEPDIR = @DEPDIR@ -+ECHO = @ECHO@ -+ECHO_C = @ECHO_C@ -+ECHO_N = @ECHO_N@ -+ECHO_T = @ECHO_T@ -+EGREP = @EGREP@ -+ENDIAN = @ENDIAN@ -+EXEEXT = @EXEEXT@ -+F77 = @F77@ -+FFLAGS = @FFLAGS@ -+INSTALL_DATA = @INSTALL_DATA@ -+INSTALL_PROGRAM = @INSTALL_PROGRAM@ -+INSTALL_SCRIPT = @INSTALL_SCRIPT@ -+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -+LDFLAGS = @LDFLAGS@ -+LIBOBJS = @LIBOBJS@ -+LIBS = @LIBS@ -+LIBTOOL = @LIBTOOL@ -+LN_S = @LN_S@ -+LTLIBOBJS = @LTLIBOBJS@ -+MAKEINFO = @MAKEINFO@ -+OBJEXT = @OBJEXT@ -+PACKAGE = @PACKAGE@ -+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -+PACKAGE_NAME = @PACKAGE_NAME@ -+PACKAGE_STRING = @PACKAGE_STRING@ -+PACKAGE_TARNAME = @PACKAGE_TARNAME@ -+PACKAGE_VERSION = @PACKAGE_VERSION@ -+PATH_SEPARATOR = @PATH_SEPARATOR@ -+RANLIB = @RANLIB@ -+SED = @SED@ -+SET_MAKE = @SET_MAKE@ -+SHELL = @SHELL@ -+STRIP = @STRIP@ -+VERSION = @VERSION@ -+ac_ct_AR = @ac_ct_AR@ -+ac_ct_CC = @ac_ct_CC@ -+ac_ct_CXX = @ac_ct_CXX@ -+ac_ct_F77 = @ac_ct_F77@ -+ac_ct_RANLIB = @ac_ct_RANLIB@ -+ac_ct_STRIP = @ac_ct_STRIP@ -+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -+am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@ -+am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@ -+am__include = @am__include@ -+am__leading_dot = @am__leading_dot@ -+am__quote = @am__quote@ -+am__tar = @am__tar@ -+am__untar = @am__untar@ -+bindir = @bindir@ -+build = @build@ -+build_alias = @build_alias@ -+build_cpu = @build_cpu@ -+build_os = @build_os@ -+build_vendor = @build_vendor@ -+datadir = @datadir@ -+exec_prefix = @exec_prefix@ -+host = @host@ -+host_alias = @host_alias@ -+host_cpu = @host_cpu@ -+host_os = @host_os@ -+host_vendor = @host_vendor@ -+includedir = @includedir@ -+infodir = @infodir@ -+install_sh = @install_sh@ -+libdir = @libdir@ -+libexecdir = @libexecdir@ -+localstatedir = @localstatedir@ -+mandir = @mandir@ -+mkdir_p = @mkdir_p@ -+oldincludedir = @oldincludedir@ -+prefix = @prefix@ -+program_transform_name = @program_transform_name@ -+sbindir = @sbindir@ -+sharedstatedir = @sharedstatedir@ -+sysconfdir = @sysconfdir@ -+target_alias = @target_alias@ -+SUBDIRS = libs -+INCLUDES = -I${top_srcdir}/src/uip \ -+ -I${top_srcdir}/src/apps/brcm-iscsi \ -+ -I${top_srcdir}/src/apps/dhcpc \ -+ -I${top_srcdir}/include \ -+ -I${top_srcdir}/src/unix/libs/ -+ -+iscsiuio_SOURCES = build_date.c \ -+ main.c \ -+ clock-arch.c \ -+ logger.c \ -+ nic.c \ -+ nic_id.c \ -+ nic_vlan.c \ -+ nic_nl.c \ -+ nic_utils.c \ -+ packet.c \ -+ iscsid_ipc.c -+ -+iscsiuio_CFLAGS = $(AM_CFLAGS) \ -+ $(LIBNL_CFLAGS) \ -+ -DBYTE_ORDER=@ENDIAN@ -+ -+iscsiuio_LDFLAGS = $(AM_LDADD) \ -+ -ldl \ -+ -rdynamic \ -+ $(LIBNL_LIBS) \ -+ -lpthread -+ -+iscsiuio_LDADD = ${top_srcdir}/src/uip/lib_iscsi_uip.a \ -+ ${top_srcdir}/src/apps/dhcpc/lib_apps_dhcpc.a\ -+ ${top_srcdir}/src/apps/brcm-iscsi/lib_apps_brcm_iscsi.a \ -+ ${top_srcdir}/src/unix/libs/lib_iscsiuio_hw_cnic.a -+ -+iscsiuio_YFLAGS = -d -+all: all-recursive -+ -+.SUFFIXES: -+.SUFFIXES: .c .lo .o .obj -+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) -+ @for dep in $?; do \ -+ case '$(am__configure_deps)' in \ -+ *$$dep*) \ -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ -+ && exit 0; \ -+ exit 1;; \ -+ esac; \ -+ done; \ -+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/unix/Makefile'; \ -+ cd $(top_srcdir) && \ -+ $(AUTOMAKE) --gnu src/unix/Makefile -+.PRECIOUS: Makefile -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ @case '$?' in \ -+ *config.status*) \ -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ -+ *) \ -+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ -+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ -+ esac; -+ -+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+ -+$(top_srcdir)/configure: $(am__configure_deps) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+$(ACLOCAL_M4): $(am__aclocal_m4_deps) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+install-sbinPROGRAMS: $(sbin_PROGRAMS) -+ @$(NORMAL_INSTALL) -+ test -z "$(sbindir)" || $(mkdir_p) "$(DESTDIR)$(sbindir)" -+ @list='$(sbin_PROGRAMS)'; for p in $$list; do \ -+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ -+ if test -f $$p \ -+ || test -f $$p1 \ -+ ; then \ -+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ -+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(sbinPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(sbindir)/$$f'"; \ -+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(sbinPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(sbindir)/$$f" || exit 1; \ -+ else :; fi; \ -+ done -+ -+uninstall-sbinPROGRAMS: -+ @$(NORMAL_UNINSTALL) -+ @list='$(sbin_PROGRAMS)'; for p in $$list; do \ -+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ -+ echo " rm -f '$(DESTDIR)$(sbindir)/$$f'"; \ -+ rm -f "$(DESTDIR)$(sbindir)/$$f"; \ -+ done -+ -+clean-sbinPROGRAMS: -+ @list='$(sbin_PROGRAMS)'; for p in $$list; do \ -+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ -+ echo " rm -f $$p $$f"; \ -+ rm -f $$p $$f ; \ -+ done -+iscsiuio$(EXEEXT): $(iscsiuio_OBJECTS) $(iscsiuio_DEPENDENCIES) -+ @rm -f iscsiuio$(EXEEXT) -+ $(LINK) $(iscsiuio_LDFLAGS) $(iscsiuio_OBJECTS) $(iscsiuio_LDADD) $(LIBS) -+ -+mostlyclean-compile: -+ -rm -f *.$(OBJEXT) -+ -+distclean-compile: -+ -rm -f *.tab.c -+ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iscsiuio-build_date.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iscsiuio-clock-arch.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iscsiuio-iscsid_ipc.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iscsiuio-logger.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iscsiuio-main.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iscsiuio-nic.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iscsiuio-nic_id.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iscsiuio-nic_nl.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iscsiuio-nic_utils.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iscsiuio-nic_vlan.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/iscsiuio-packet.Po@am__quote@ -+ -+.c.o: -+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(COMPILE) -c $< -+ -+.c.obj: -+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` -+ -+.c.lo: -+@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< -+ -+iscsiuio-build_date.o: build_date.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -MT iscsiuio-build_date.o -MD -MP -MF "$(DEPDIR)/iscsiuio-build_date.Tpo" -c -o iscsiuio-build_date.o `test -f 'build_date.c' || echo '$(srcdir)/'`build_date.c; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iscsiuio-build_date.Tpo" "$(DEPDIR)/iscsiuio-build_date.Po"; else rm -f "$(DEPDIR)/iscsiuio-build_date.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='build_date.c' object='iscsiuio-build_date.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -c -o iscsiuio-build_date.o `test -f 'build_date.c' || echo '$(srcdir)/'`build_date.c -+ -+iscsiuio-build_date.obj: build_date.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -MT iscsiuio-build_date.obj -MD -MP -MF "$(DEPDIR)/iscsiuio-build_date.Tpo" -c -o iscsiuio-build_date.obj `if test -f 'build_date.c'; then $(CYGPATH_W) 'build_date.c'; else $(CYGPATH_W) '$(srcdir)/build_date.c'; fi`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iscsiuio-build_date.Tpo" "$(DEPDIR)/iscsiuio-build_date.Po"; else rm -f "$(DEPDIR)/iscsiuio-build_date.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='build_date.c' object='iscsiuio-build_date.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -c -o iscsiuio-build_date.obj `if test -f 'build_date.c'; then $(CYGPATH_W) 'build_date.c'; else $(CYGPATH_W) '$(srcdir)/build_date.c'; fi` -+ -+iscsiuio-main.o: main.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -MT iscsiuio-main.o -MD -MP -MF "$(DEPDIR)/iscsiuio-main.Tpo" -c -o iscsiuio-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iscsiuio-main.Tpo" "$(DEPDIR)/iscsiuio-main.Po"; else rm -f "$(DEPDIR)/iscsiuio-main.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='iscsiuio-main.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -c -o iscsiuio-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c -+ -+iscsiuio-main.obj: main.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -MT iscsiuio-main.obj -MD -MP -MF "$(DEPDIR)/iscsiuio-main.Tpo" -c -o iscsiuio-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iscsiuio-main.Tpo" "$(DEPDIR)/iscsiuio-main.Po"; else rm -f "$(DEPDIR)/iscsiuio-main.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='main.c' object='iscsiuio-main.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -c -o iscsiuio-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` -+ -+iscsiuio-clock-arch.o: clock-arch.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -MT iscsiuio-clock-arch.o -MD -MP -MF "$(DEPDIR)/iscsiuio-clock-arch.Tpo" -c -o iscsiuio-clock-arch.o `test -f 'clock-arch.c' || echo '$(srcdir)/'`clock-arch.c; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iscsiuio-clock-arch.Tpo" "$(DEPDIR)/iscsiuio-clock-arch.Po"; else rm -f "$(DEPDIR)/iscsiuio-clock-arch.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='clock-arch.c' object='iscsiuio-clock-arch.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -c -o iscsiuio-clock-arch.o `test -f 'clock-arch.c' || echo '$(srcdir)/'`clock-arch.c -+ -+iscsiuio-clock-arch.obj: clock-arch.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -MT iscsiuio-clock-arch.obj -MD -MP -MF "$(DEPDIR)/iscsiuio-clock-arch.Tpo" -c -o iscsiuio-clock-arch.obj `if test -f 'clock-arch.c'; then $(CYGPATH_W) 'clock-arch.c'; else $(CYGPATH_W) '$(srcdir)/clock-arch.c'; fi`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iscsiuio-clock-arch.Tpo" "$(DEPDIR)/iscsiuio-clock-arch.Po"; else rm -f "$(DEPDIR)/iscsiuio-clock-arch.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='clock-arch.c' object='iscsiuio-clock-arch.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -c -o iscsiuio-clock-arch.obj `if test -f 'clock-arch.c'; then $(CYGPATH_W) 'clock-arch.c'; else $(CYGPATH_W) '$(srcdir)/clock-arch.c'; fi` -+ -+iscsiuio-logger.o: logger.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -MT iscsiuio-logger.o -MD -MP -MF "$(DEPDIR)/iscsiuio-logger.Tpo" -c -o iscsiuio-logger.o `test -f 'logger.c' || echo '$(srcdir)/'`logger.c; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iscsiuio-logger.Tpo" "$(DEPDIR)/iscsiuio-logger.Po"; else rm -f "$(DEPDIR)/iscsiuio-logger.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='logger.c' object='iscsiuio-logger.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -c -o iscsiuio-logger.o `test -f 'logger.c' || echo '$(srcdir)/'`logger.c -+ -+iscsiuio-logger.obj: logger.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -MT iscsiuio-logger.obj -MD -MP -MF "$(DEPDIR)/iscsiuio-logger.Tpo" -c -o iscsiuio-logger.obj `if test -f 'logger.c'; then $(CYGPATH_W) 'logger.c'; else $(CYGPATH_W) '$(srcdir)/logger.c'; fi`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iscsiuio-logger.Tpo" "$(DEPDIR)/iscsiuio-logger.Po"; else rm -f "$(DEPDIR)/iscsiuio-logger.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='logger.c' object='iscsiuio-logger.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -c -o iscsiuio-logger.obj `if test -f 'logger.c'; then $(CYGPATH_W) 'logger.c'; else $(CYGPATH_W) '$(srcdir)/logger.c'; fi` -+ -+iscsiuio-nic.o: nic.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -MT iscsiuio-nic.o -MD -MP -MF "$(DEPDIR)/iscsiuio-nic.Tpo" -c -o iscsiuio-nic.o `test -f 'nic.c' || echo '$(srcdir)/'`nic.c; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iscsiuio-nic.Tpo" "$(DEPDIR)/iscsiuio-nic.Po"; else rm -f "$(DEPDIR)/iscsiuio-nic.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nic.c' object='iscsiuio-nic.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -c -o iscsiuio-nic.o `test -f 'nic.c' || echo '$(srcdir)/'`nic.c -+ -+iscsiuio-nic.obj: nic.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -MT iscsiuio-nic.obj -MD -MP -MF "$(DEPDIR)/iscsiuio-nic.Tpo" -c -o iscsiuio-nic.obj `if test -f 'nic.c'; then $(CYGPATH_W) 'nic.c'; else $(CYGPATH_W) '$(srcdir)/nic.c'; fi`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iscsiuio-nic.Tpo" "$(DEPDIR)/iscsiuio-nic.Po"; else rm -f "$(DEPDIR)/iscsiuio-nic.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nic.c' object='iscsiuio-nic.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -c -o iscsiuio-nic.obj `if test -f 'nic.c'; then $(CYGPATH_W) 'nic.c'; else $(CYGPATH_W) '$(srcdir)/nic.c'; fi` -+ -+iscsiuio-nic_id.o: nic_id.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -MT iscsiuio-nic_id.o -MD -MP -MF "$(DEPDIR)/iscsiuio-nic_id.Tpo" -c -o iscsiuio-nic_id.o `test -f 'nic_id.c' || echo '$(srcdir)/'`nic_id.c; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iscsiuio-nic_id.Tpo" "$(DEPDIR)/iscsiuio-nic_id.Po"; else rm -f "$(DEPDIR)/iscsiuio-nic_id.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nic_id.c' object='iscsiuio-nic_id.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -c -o iscsiuio-nic_id.o `test -f 'nic_id.c' || echo '$(srcdir)/'`nic_id.c -+ -+iscsiuio-nic_id.obj: nic_id.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -MT iscsiuio-nic_id.obj -MD -MP -MF "$(DEPDIR)/iscsiuio-nic_id.Tpo" -c -o iscsiuio-nic_id.obj `if test -f 'nic_id.c'; then $(CYGPATH_W) 'nic_id.c'; else $(CYGPATH_W) '$(srcdir)/nic_id.c'; fi`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iscsiuio-nic_id.Tpo" "$(DEPDIR)/iscsiuio-nic_id.Po"; else rm -f "$(DEPDIR)/iscsiuio-nic_id.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nic_id.c' object='iscsiuio-nic_id.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -c -o iscsiuio-nic_id.obj `if test -f 'nic_id.c'; then $(CYGPATH_W) 'nic_id.c'; else $(CYGPATH_W) '$(srcdir)/nic_id.c'; fi` -+ -+iscsiuio-nic_vlan.o: nic_vlan.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -MT iscsiuio-nic_vlan.o -MD -MP -MF "$(DEPDIR)/iscsiuio-nic_vlan.Tpo" -c -o iscsiuio-nic_vlan.o `test -f 'nic_vlan.c' || echo '$(srcdir)/'`nic_vlan.c; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iscsiuio-nic_vlan.Tpo" "$(DEPDIR)/iscsiuio-nic_vlan.Po"; else rm -f "$(DEPDIR)/iscsiuio-nic_vlan.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nic_vlan.c' object='iscsiuio-nic_vlan.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -c -o iscsiuio-nic_vlan.o `test -f 'nic_vlan.c' || echo '$(srcdir)/'`nic_vlan.c -+ -+iscsiuio-nic_vlan.obj: nic_vlan.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -MT iscsiuio-nic_vlan.obj -MD -MP -MF "$(DEPDIR)/iscsiuio-nic_vlan.Tpo" -c -o iscsiuio-nic_vlan.obj `if test -f 'nic_vlan.c'; then $(CYGPATH_W) 'nic_vlan.c'; else $(CYGPATH_W) '$(srcdir)/nic_vlan.c'; fi`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iscsiuio-nic_vlan.Tpo" "$(DEPDIR)/iscsiuio-nic_vlan.Po"; else rm -f "$(DEPDIR)/iscsiuio-nic_vlan.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nic_vlan.c' object='iscsiuio-nic_vlan.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -c -o iscsiuio-nic_vlan.obj `if test -f 'nic_vlan.c'; then $(CYGPATH_W) 'nic_vlan.c'; else $(CYGPATH_W) '$(srcdir)/nic_vlan.c'; fi` -+ -+iscsiuio-nic_nl.o: nic_nl.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -MT iscsiuio-nic_nl.o -MD -MP -MF "$(DEPDIR)/iscsiuio-nic_nl.Tpo" -c -o iscsiuio-nic_nl.o `test -f 'nic_nl.c' || echo '$(srcdir)/'`nic_nl.c; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iscsiuio-nic_nl.Tpo" "$(DEPDIR)/iscsiuio-nic_nl.Po"; else rm -f "$(DEPDIR)/iscsiuio-nic_nl.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nic_nl.c' object='iscsiuio-nic_nl.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -c -o iscsiuio-nic_nl.o `test -f 'nic_nl.c' || echo '$(srcdir)/'`nic_nl.c -+ -+iscsiuio-nic_nl.obj: nic_nl.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -MT iscsiuio-nic_nl.obj -MD -MP -MF "$(DEPDIR)/iscsiuio-nic_nl.Tpo" -c -o iscsiuio-nic_nl.obj `if test -f 'nic_nl.c'; then $(CYGPATH_W) 'nic_nl.c'; else $(CYGPATH_W) '$(srcdir)/nic_nl.c'; fi`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iscsiuio-nic_nl.Tpo" "$(DEPDIR)/iscsiuio-nic_nl.Po"; else rm -f "$(DEPDIR)/iscsiuio-nic_nl.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nic_nl.c' object='iscsiuio-nic_nl.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -c -o iscsiuio-nic_nl.obj `if test -f 'nic_nl.c'; then $(CYGPATH_W) 'nic_nl.c'; else $(CYGPATH_W) '$(srcdir)/nic_nl.c'; fi` -+ -+iscsiuio-nic_utils.o: nic_utils.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -MT iscsiuio-nic_utils.o -MD -MP -MF "$(DEPDIR)/iscsiuio-nic_utils.Tpo" -c -o iscsiuio-nic_utils.o `test -f 'nic_utils.c' || echo '$(srcdir)/'`nic_utils.c; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iscsiuio-nic_utils.Tpo" "$(DEPDIR)/iscsiuio-nic_utils.Po"; else rm -f "$(DEPDIR)/iscsiuio-nic_utils.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nic_utils.c' object='iscsiuio-nic_utils.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -c -o iscsiuio-nic_utils.o `test -f 'nic_utils.c' || echo '$(srcdir)/'`nic_utils.c -+ -+iscsiuio-nic_utils.obj: nic_utils.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -MT iscsiuio-nic_utils.obj -MD -MP -MF "$(DEPDIR)/iscsiuio-nic_utils.Tpo" -c -o iscsiuio-nic_utils.obj `if test -f 'nic_utils.c'; then $(CYGPATH_W) 'nic_utils.c'; else $(CYGPATH_W) '$(srcdir)/nic_utils.c'; fi`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iscsiuio-nic_utils.Tpo" "$(DEPDIR)/iscsiuio-nic_utils.Po"; else rm -f "$(DEPDIR)/iscsiuio-nic_utils.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='nic_utils.c' object='iscsiuio-nic_utils.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -c -o iscsiuio-nic_utils.obj `if test -f 'nic_utils.c'; then $(CYGPATH_W) 'nic_utils.c'; else $(CYGPATH_W) '$(srcdir)/nic_utils.c'; fi` -+ -+iscsiuio-packet.o: packet.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -MT iscsiuio-packet.o -MD -MP -MF "$(DEPDIR)/iscsiuio-packet.Tpo" -c -o iscsiuio-packet.o `test -f 'packet.c' || echo '$(srcdir)/'`packet.c; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iscsiuio-packet.Tpo" "$(DEPDIR)/iscsiuio-packet.Po"; else rm -f "$(DEPDIR)/iscsiuio-packet.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='packet.c' object='iscsiuio-packet.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -c -o iscsiuio-packet.o `test -f 'packet.c' || echo '$(srcdir)/'`packet.c -+ -+iscsiuio-packet.obj: packet.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -MT iscsiuio-packet.obj -MD -MP -MF "$(DEPDIR)/iscsiuio-packet.Tpo" -c -o iscsiuio-packet.obj `if test -f 'packet.c'; then $(CYGPATH_W) 'packet.c'; else $(CYGPATH_W) '$(srcdir)/packet.c'; fi`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iscsiuio-packet.Tpo" "$(DEPDIR)/iscsiuio-packet.Po"; else rm -f "$(DEPDIR)/iscsiuio-packet.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='packet.c' object='iscsiuio-packet.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -c -o iscsiuio-packet.obj `if test -f 'packet.c'; then $(CYGPATH_W) 'packet.c'; else $(CYGPATH_W) '$(srcdir)/packet.c'; fi` -+ -+iscsiuio-iscsid_ipc.o: iscsid_ipc.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -MT iscsiuio-iscsid_ipc.o -MD -MP -MF "$(DEPDIR)/iscsiuio-iscsid_ipc.Tpo" -c -o iscsiuio-iscsid_ipc.o `test -f 'iscsid_ipc.c' || echo '$(srcdir)/'`iscsid_ipc.c; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iscsiuio-iscsid_ipc.Tpo" "$(DEPDIR)/iscsiuio-iscsid_ipc.Po"; else rm -f "$(DEPDIR)/iscsiuio-iscsid_ipc.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='iscsid_ipc.c' object='iscsiuio-iscsid_ipc.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -c -o iscsiuio-iscsid_ipc.o `test -f 'iscsid_ipc.c' || echo '$(srcdir)/'`iscsid_ipc.c -+ -+iscsiuio-iscsid_ipc.obj: iscsid_ipc.c -+@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -MT iscsiuio-iscsid_ipc.obj -MD -MP -MF "$(DEPDIR)/iscsiuio-iscsid_ipc.Tpo" -c -o iscsiuio-iscsid_ipc.obj `if test -f 'iscsid_ipc.c'; then $(CYGPATH_W) 'iscsid_ipc.c'; else $(CYGPATH_W) '$(srcdir)/iscsid_ipc.c'; fi`; \ -+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/iscsiuio-iscsid_ipc.Tpo" "$(DEPDIR)/iscsiuio-iscsid_ipc.Po"; else rm -f "$(DEPDIR)/iscsiuio-iscsid_ipc.Tpo"; exit 1; fi -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='iscsid_ipc.c' object='iscsiuio-iscsid_ipc.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(iscsiuio_CFLAGS) $(CFLAGS) -c -o iscsiuio-iscsid_ipc.obj `if test -f 'iscsid_ipc.c'; then $(CYGPATH_W) 'iscsid_ipc.c'; else $(CYGPATH_W) '$(srcdir)/iscsid_ipc.c'; fi` -+ -+mostlyclean-libtool: -+ -rm -f *.lo -+ -+clean-libtool: -+ -rm -rf .libs _libs -+ -+distclean-libtool: -+ -rm -f libtool -+uninstall-info-am: -+ -+# This directory's subdirectories are mostly independent; you can cd -+# into them and run `make' without going through this Makefile. -+# To change the values of `make' variables: instead of editing Makefiles, -+# (1) if the variable is set in `config.status', edit `config.status' -+# (which will cause the Makefiles to be regenerated when you run `make'); -+# (2) otherwise, pass the desired values on the `make' command line. -+$(RECURSIVE_TARGETS): -+ @failcom='exit 1'; \ -+ for f in x $$MAKEFLAGS; do \ -+ case $$f in \ -+ *=* | --[!k]*);; \ -+ *k*) failcom='fail=yes';; \ -+ esac; \ -+ done; \ -+ dot_seen=no; \ -+ target=`echo $@ | sed s/-recursive//`; \ -+ list='$(SUBDIRS)'; for subdir in $$list; do \ -+ echo "Making $$target in $$subdir"; \ -+ if test "$$subdir" = "."; then \ -+ dot_seen=yes; \ -+ local_target="$$target-am"; \ -+ else \ -+ local_target="$$target"; \ -+ fi; \ -+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ -+ || eval $$failcom; \ -+ done; \ -+ if test "$$dot_seen" = "no"; then \ -+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ -+ fi; test -z "$$fail" -+ -+mostlyclean-recursive clean-recursive distclean-recursive \ -+maintainer-clean-recursive: -+ @failcom='exit 1'; \ -+ for f in x $$MAKEFLAGS; do \ -+ case $$f in \ -+ *=* | --[!k]*);; \ -+ *k*) failcom='fail=yes';; \ -+ esac; \ -+ done; \ -+ dot_seen=no; \ -+ case "$@" in \ -+ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ -+ *) list='$(SUBDIRS)' ;; \ -+ esac; \ -+ rev=''; for subdir in $$list; do \ -+ if test "$$subdir" = "."; then :; else \ -+ rev="$$subdir $$rev"; \ -+ fi; \ -+ done; \ -+ rev="$$rev ."; \ -+ target=`echo $@ | sed s/-recursive//`; \ -+ for subdir in $$rev; do \ -+ echo "Making $$target in $$subdir"; \ -+ if test "$$subdir" = "."; then \ -+ local_target="$$target-am"; \ -+ else \ -+ local_target="$$target"; \ -+ fi; \ -+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ -+ || eval $$failcom; \ -+ done && test -z "$$fail" -+tags-recursive: -+ list='$(SUBDIRS)'; for subdir in $$list; do \ -+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ -+ done -+ctags-recursive: -+ list='$(SUBDIRS)'; for subdir in $$list; do \ -+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ -+ done -+ -+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) ' { files[$$0] = 1; } \ -+ END { for (i in files) print i; }'`; \ -+ mkid -fID $$unique -+tags: TAGS -+ -+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ here=`pwd`; \ -+ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ -+ include_option=--etags-include; \ -+ empty_fix=.; \ -+ else \ -+ include_option=--include; \ -+ empty_fix=; \ -+ fi; \ -+ list='$(SUBDIRS)'; for subdir in $$list; do \ -+ if test "$$subdir" = .; then :; else \ -+ test ! -f $$subdir/TAGS || \ -+ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ -+ fi; \ -+ done; \ -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) ' { files[$$0] = 1; } \ -+ END { for (i in files) print i; }'`; \ -+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ -+ test -n "$$unique" || unique=$$empty_fix; \ -+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ -+ $$tags $$unique; \ -+ fi -+ctags: CTAGS -+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ tags=; \ -+ here=`pwd`; \ -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) ' { files[$$0] = 1; } \ -+ END { for (i in files) print i; }'`; \ -+ test -z "$(CTAGS_ARGS)$$tags$$unique" \ -+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ -+ $$tags $$unique -+ -+GTAGS: -+ here=`$(am__cd) $(top_builddir) && pwd` \ -+ && cd $(top_srcdir) \ -+ && gtags -i $(GTAGS_ARGS) $$here -+ -+distclean-tags: -+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -+ -+distdir: $(DISTFILES) -+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ -+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ -+ list='$(DISTFILES)'; for file in $$list; do \ -+ case $$file in \ -+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ -+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ -+ esac; \ -+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ -+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ -+ dir="/$$dir"; \ -+ $(mkdir_p) "$(distdir)$$dir"; \ -+ else \ -+ dir=''; \ -+ fi; \ -+ if test -d $$d/$$file; then \ -+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ -+ fi; \ -+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ -+ else \ -+ test -f $(distdir)/$$file \ -+ || cp -p $$d/$$file $(distdir)/$$file \ -+ || exit 1; \ -+ fi; \ -+ done -+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ -+ if test "$$subdir" = .; then :; else \ -+ test -d "$(distdir)/$$subdir" \ -+ || $(mkdir_p) "$(distdir)/$$subdir" \ -+ || exit 1; \ -+ distdir=`$(am__cd) $(distdir) && pwd`; \ -+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ -+ (cd $$subdir && \ -+ $(MAKE) $(AM_MAKEFLAGS) \ -+ top_distdir="$$top_distdir" \ -+ distdir="$$distdir/$$subdir" \ -+ distdir) \ -+ || exit 1; \ -+ fi; \ -+ done -+check-am: all-am -+check: check-recursive -+all-am: Makefile $(PROGRAMS) -+installdirs: installdirs-recursive -+installdirs-am: -+ for dir in "$(DESTDIR)$(sbindir)"; do \ -+ test -z "$$dir" || $(mkdir_p) "$$dir"; \ -+ done -+install: install-recursive -+install-exec: install-exec-recursive -+install-data: install-data-recursive -+uninstall: uninstall-recursive -+ -+install-am: all-am -+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -+ -+installcheck: installcheck-recursive -+install-strip: -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ `test -z '$(STRIP)' || \ -+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install -+mostlyclean-generic: -+ -+clean-generic: -+ -+distclean-generic: -+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -+ -+maintainer-clean-generic: -+ @echo "This command is intended for maintainers to use" -+ @echo "it deletes files that may require special tools to rebuild." -+clean: clean-recursive -+ -+clean-am: clean-generic clean-libtool clean-sbinPROGRAMS \ -+ mostlyclean-am -+ -+distclean: distclean-recursive -+ -rm -rf ./$(DEPDIR) -+ -rm -f Makefile -+distclean-am: clean-am distclean-compile distclean-generic \ -+ distclean-libtool distclean-tags -+ -+dvi: dvi-recursive -+ -+dvi-am: -+ -+html: html-recursive -+ -+info: info-recursive -+ -+info-am: -+ -+install-data-am: -+ -+install-exec-am: install-sbinPROGRAMS -+ -+install-info: install-info-recursive -+ -+install-man: -+ -+installcheck-am: -+ -+maintainer-clean: maintainer-clean-recursive -+ -rm -rf ./$(DEPDIR) -+ -rm -f Makefile -+maintainer-clean-am: distclean-am maintainer-clean-generic -+ -+mostlyclean: mostlyclean-recursive -+ -+mostlyclean-am: mostlyclean-compile mostlyclean-generic \ -+ mostlyclean-libtool -+ -+pdf: pdf-recursive -+ -+pdf-am: -+ -+ps: ps-recursive -+ -+ps-am: -+ -+uninstall-am: uninstall-info-am uninstall-sbinPROGRAMS -+ -+uninstall-info: uninstall-info-recursive -+ -+.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am \ -+ clean clean-generic clean-libtool clean-recursive \ -+ clean-sbinPROGRAMS ctags ctags-recursive distclean \ -+ distclean-compile distclean-generic distclean-libtool \ -+ distclean-recursive distclean-tags distdir dvi dvi-am html \ -+ html-am info info-am install install-am install-data \ -+ install-data-am install-exec install-exec-am install-info \ -+ install-info-am install-man install-sbinPROGRAMS install-strip \ -+ installcheck installcheck-am installdirs installdirs-am \ -+ maintainer-clean maintainer-clean-generic \ -+ maintainer-clean-recursive mostlyclean mostlyclean-compile \ -+ mostlyclean-generic mostlyclean-libtool mostlyclean-recursive \ -+ pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ -+ uninstall-info-am uninstall-sbinPROGRAMS -+ -+# Tell versions [3.59,3.63) of GNU make to not export all variables. -+# Otherwise a system limit (for SysV at least) may be exceeded. -+.NOEXPORT: -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/nic.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/nic.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/nic.c 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/nic.c 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,1495 @@ -+/* -+ * Copyright (c) 2009-2011, Broadcom Corporation -+ * -+ * Written by: Benjamin Li (benli@broadcom.com) -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * nic.c - Generic NIC management/utility functions -+ * -+ */ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "dhcpc.h" -+#include "ipv6_ndpc.h" -+ -+#include "logger.h" -+#include "nic.h" -+#include "nic_utils.h" -+#include "options.h" -+ -+#include "uip.h" -+#include "uip_arp.h" -+#include "uip_eth.h" -+#include "uip-neighbor.h" -+ -+#include "bnx2.h" -+#include "bnx2x.h" -+ -+/****************************************************************************** -+ * Constants -+ *****************************************************************************/ -+#define PFX "nic " -+#define PCI_ANY_ID (~0) -+ -+/****************************************************************************** -+ * Global variables -+ *****************************************************************************/ -+/* Used to store a list of NIC libraries */ -+pthread_mutex_t nic_lib_list_mutex = PTHREAD_MUTEX_INITIALIZER; -+nic_lib_handle_t *nic_lib_list; -+ -+/* Used to store a list of active cnic devices */ -+pthread_mutex_t nic_list_mutex = PTHREAD_MUTEX_INITIALIZER; -+nic_t *nic_list = NULL; -+ -+/****************************************************************************** -+ * Functions to handle NIC libraries -+ *****************************************************************************/ -+/** -+ * alloc_nic_library_handle() - Used to allocate a NIC library handle -+ * @return NULL if memory couldn't be allocated, pointer to the handle -+ * to the NIC library handle -+ */ -+static nic_lib_handle_t *alloc_nic_library_handle() -+{ -+ nic_lib_handle_t *handle; -+ -+ handle = malloc(sizeof(*handle)); -+ if (handle == NULL) { -+ LOG_ERR("Could not allocate memory for library handle"); -+ return NULL; -+ } -+ -+ memset(handle, 0, sizeof(*handle)); -+ handle->ops = NULL; -+ -+ pthread_mutex_init(&handle->mutex, NULL); -+ -+ return handle; -+} -+ -+static void free_nic_library_handle(nic_lib_handle_t * handle) -+{ -+ free(handle); -+} -+ -+/** -+ * load_nic_library() - This function is used to load a NIC library -+ * @param handle - This is the library handle to load -+ * @return 0 = Success; <0 = failure -+ */ -+static int load_nic_library(nic_lib_handle_t * handle) -+{ -+ int rc; -+ char *library_name; -+ size_t library_name_size; -+ char *library_version; -+ size_t library_version_size; -+ char *build_date_str; -+ size_t build_date_str_size; -+ -+ pthread_mutex_lock(&handle->mutex); -+ -+ /* Validate the NIC ops table ensure that all the fields are not NULL */ -+ if ((handle->ops->open) == NULL || -+ (handle->ops->close) == NULL || -+ (handle->ops->read) == NULL || -+ (handle->ops->write) == NULL || -+ (handle->ops->clear_tx_intr == NULL)) { -+ LOG_ERR("Invalid NIC ops table: open: 0x%x, close: 0x%x," -+ "read: 0x%x, write: 0x%x clear_tx_intr: 0x%x " -+ "lib_ops: 0x%x", -+ handle->ops->open, handle->ops->close, -+ handle->ops->read, handle->ops->write, -+ handle->ops->clear_tx_intr, handle->ops->lib_ops); -+ rc = -EINVAL; -+ handle->ops = NULL; -+ goto error; -+ } -+ -+ /* Validate the NIC library ops table to ensure that all the proper -+ * fields are filled */ -+ if ((handle->ops->lib_ops.get_library_name == NULL) || -+ (handle->ops->lib_ops.get_pci_table == NULL) || -+ (handle->ops->lib_ops.get_library_version == NULL) || -+ (handle->ops->lib_ops.get_build_date == NULL) || -+ (handle->ops->lib_ops.get_transport_name == NULL)) { -+ rc = -EINVAL; -+ goto error; -+ } -+ -+ (*handle->ops->lib_ops.get_library_name) (&library_name, -+ &library_name_size); -+ (*handle->ops->lib_ops.get_library_version) (&library_version, -+ &library_version_size); -+ (*handle->ops->lib_ops.get_build_date) (&build_date_str, -+ &build_date_str_size); -+ -+ LOG_DEBUG("Loaded nic library '%s' Version: '%s' build on %s'", -+ library_name, library_version, build_date_str); -+ -+ pthread_mutex_unlock(&handle->mutex); -+ -+ return 0; -+ -+ error: -+ pthread_mutex_unlock(&handle->mutex); -+ -+ return rc; -+} -+ -+static struct nic_ops *(*nic_get_ops[]) () = { -+bnx2_get_ops, bnx2x_get_ops,}; -+ -+int load_all_nic_libraries() -+{ -+ int rc, i = 0; -+ nic_lib_handle_t *handle; -+ -+ for (i = 0; i < sizeof(nic_get_ops) / sizeof(nic_get_ops[0]); i++) { -+ /* Add the CNIC library */ -+ handle = alloc_nic_library_handle(); -+ if (handle == NULL) { -+ LOG_ERR("Could not allocate memory for CNIC nic lib"); -+ return -ENOMEM; -+ } -+ -+ handle->ops = (*nic_get_ops[i]) (); -+ -+ rc = load_nic_library(handle); -+ if (rc != 0) -+ return rc; -+ -+ /* Add the CNIC library to the list of library handles */ -+ pthread_mutex_lock(&nic_lib_list_mutex); -+ -+ /* Add this library to the list of nic libraries we -+ * know about */ -+ if (nic_lib_list == NULL) { -+ nic_lib_list = handle; -+ } else { -+ nic_lib_handle_t *current = nic_lib_list; -+ -+ while (current->next != NULL) { -+ current = current->next; -+ } -+ -+ current->next = handle; -+ } -+ pthread_mutex_unlock(&nic_lib_list_mutex); -+ -+ LOG_DEBUG("Added '%s' nic library", handle->ops->description); -+ } -+ -+ return rc; -+} -+ -+int unload_all_nic_libraries() -+{ -+ nic_lib_handle_t *current, *next; -+ -+ pthread_mutex_lock(&nic_lib_list_mutex); -+ current = nic_lib_list; -+ -+ while (current != NULL) { -+ next = current->next; -+ free_nic_library_handle(current); -+ -+ current = next; -+ } -+ -+ pthread_mutex_unlock(&nic_lib_list_mutex); -+ -+ nic_lib_list = NULL; -+ -+ return 0; -+} -+ -+NIC_LIBRARY_EXIST_T does_nic_uio_name_exist(char *name) -+{ -+ NIC_LIBRARY_EXIST_T rc; -+ nic_lib_handle_t *current; -+ -+ pthread_mutex_lock(&nic_lib_list_mutex); -+ current = nic_lib_list; -+ -+ while (current != NULL) { -+ char *uio_name; -+ size_t uio_name_size; -+ -+ (*current->ops->lib_ops.get_uio_name) (&uio_name, -+ &uio_name_size); -+ -+ if (strncmp(name, uio_name, uio_name_size) == 0) { -+ rc = NIC_LIBRARY_EXSITS; -+ goto done; -+ } -+ -+ current = current->next; -+ } -+ -+ rc = NIC_LIBRARY_DOESNT_EXIST; -+ -+ done: -+ pthread_mutex_unlock(&nic_lib_list_mutex); -+ return rc; -+} -+ -+NIC_LIBRARY_EXIST_T does_nic_library_exist(char *name) -+{ -+ NIC_LIBRARY_EXIST_T rc; -+ nic_lib_handle_t *current; -+ -+ pthread_mutex_lock(&nic_lib_list_mutex); -+ current = nic_lib_list; -+ -+ while (current != NULL) { -+ char *library_name; -+ size_t library_name_size; -+ -+ (*current->ops->lib_ops.get_library_name) (&library_name, -+ &library_name_size); -+ -+ if (strncmp(name, library_name, library_name_size) == 0) { -+ rc = NIC_LIBRARY_EXSITS; -+ goto done; -+ } -+ -+ current = current->next; -+ } -+ -+ rc = NIC_LIBRARY_DOESNT_EXIST; -+ -+ done: -+ pthread_mutex_unlock(&nic_lib_list_mutex); -+ return rc; -+} -+ -+/** -+ * find_nic_lib_using_pci_id() - Find the proper NIC library using the -+ * PCI ID's -+ * @param vendor - PCI vendor ID to search on -+ * @param device - PCI device ID to search on -+ * @param subvendor - PCI subvendor ID to search on -+ * @param subdevice - PCI subdevice ID to search on -+ * @param handle - This function will return the nic lib handle if found -+ * @return 0 if found, <0 not found -+ */ -+int find_nic_lib_using_pci_id(uint32_t vendor, uint32_t device, -+ uint32_t subvendor, uint32_t subdevice, -+ nic_lib_handle_t ** handle, -+ struct pci_device_id **pci_entry) -+{ -+ int rc; -+ nic_lib_handle_t *current; -+ -+ pthread_mutex_lock(&nic_lib_list_mutex); -+ current = nic_lib_list; -+ -+ while (current != NULL) { -+ struct pci_device_id *pci_table; -+ uint32_t entries; -+ int i; -+ -+ current->ops->lib_ops.get_pci_table(&pci_table, &entries); -+ -+ /* Sanity check the the pci table coming from the -+ * hardware library */ -+ if (entries > MAX_PCI_DEVICE_ENTRIES) { -+ LOG_WARN(PFX "Too many pci_table entries(%d) skipping", -+ entries); -+ continue; -+ } -+ -+ for (i = 0; i < entries; i++) { -+ LOG_DEBUG(PFX "Checking against: " -+ "vendor: 0x%x device:0x%x " -+ "subvendor:0x%x subdevice:0x%x", -+ pci_table[i].vendor, pci_table[i].device, -+ pci_table[i].subvendor, -+ pci_table[i].subdevice); -+ -+ if ((pci_table[i].vendor == vendor) && -+ (pci_table[i].device == device) && -+ (pci_table[i].subvendor == PCI_ANY_ID || -+ pci_table[i].subvendor == subvendor) && -+ (pci_table[i].subdevice == PCI_ANY_ID || -+ pci_table[i].subdevice == subdevice)) { -+ *handle = current; -+ *pci_entry = &pci_table[i]; -+ rc = 0; -+ goto done; -+ } -+ } -+ -+ current = current->next; -+ } -+ rc = -EINVAL; -+ -+ done: -+ pthread_mutex_unlock(&nic_lib_list_mutex); -+ -+ return rc; -+} -+ -+/** -+ * nic_init() - This will properly initialize a struct cnic_uio device -+ * @return NULL is there is a failure and pointer to an allocated/initialized -+ * struct cnic_uio on success -+ */ -+nic_t *nic_init() -+{ -+ nic_t *nic; -+ -+ nic = malloc(sizeof(*nic)); -+ if (nic == NULL) { -+ LOG_ERR("Couldn't malloc space for nic"); -+ return NULL; -+ } -+ -+ memset(nic, 0, sizeof(*nic)); -+ nic->uio_minor = -1; -+ nic->fd = INVALID_FD; -+ nic->next = NULL; -+ nic->thread = INVALID_THREAD; -+ nic->flags |= NIC_UNITIALIZED | NIC_DISABLED; -+ nic->state |= NIC_STOPPED; -+ nic->free_packet_queue = NULL; -+ nic->tx_packet_queue = NULL; -+ nic->nic_library = NULL; -+ nic->pci_id = NULL; -+ -+ pthread_mutex_init(&nic->nic_mutex, NULL); -+ pthread_mutex_init(&nic->xmit_mutex, NULL); -+ pthread_mutex_init(&nic->free_packet_queue_mutex, NULL); -+ -+ pthread_cond_init(&nic->enable_wait_cond, NULL); -+ pthread_cond_init(&nic->enable_done_cond, NULL); -+ pthread_cond_init(&nic->nic_loop_started_cond, NULL); -+ pthread_cond_init(&nic->disable_wait_cond, NULL); -+ -+ nic->rx_poll_usec = DEFAULT_RX_POLL_USEC; -+ -+ return nic; -+} -+ -+void nic_add(nic_t * nic) -+{ -+ /* Add this device to our list of nics */ -+ if (nic_list == NULL) { -+ nic_list = nic; -+ } else { -+ nic_t *current = nic_list; -+ -+ while (current->next != NULL) { -+ current = current->next; -+ } -+ -+ current->next = nic; -+ } -+} -+ -+/** -+ * nic_remove() - Used to remove the NIC for the nic list -+ nic_list_mutex must be taken -+ * @param nic - the nic to remove -+ */ -+int nic_remove(nic_t * nic) -+{ -+ int rc; -+ nic_t *prev, *current; -+ struct stat file_stat; -+ void *res; -+ nic_interface_t *nic_iface, *next_nic_iface; -+ -+ pthread_mutex_lock(&nic->nic_mutex); -+ -+ /* Check if the file node exists before closing */ -+ rc = stat(nic->uio_device_name, &file_stat); -+ if ((rc == 0) && (nic->ops)) -+ nic->ops->close(nic, 0); -+ -+ nic->state = NIC_EXIT; -+ pthread_mutex_unlock(&nic->nic_mutex); -+ -+ if (nic->enable_thread) { -+ LOG_ERR(PFX "%s: Canceling nic enable thread", nic->log_name); -+ -+ rc = pthread_cancel(nic->enable_thread); -+ if (rc != 0) -+ LOG_ERR(PFX "%s: Couldn't send cancel to nic enable " -+ "thread", nic->log_name); -+ -+ LOG_ERR(PFX "%s: Waiting to join nic enable thread", -+ nic->log_name); -+ rc = pthread_join(nic->enable_thread, &res); -+ if (rc != 0) -+ LOG_ERR(PFX "%s: Couldn't join to canceled enable nic " -+ "thread", nic->log_name); -+ } -+ if (nic->thread != INVALID_THREAD) { -+ LOG_ERR(PFX "%s: Canceling nic thread", nic->log_name); -+ -+ rc = pthread_cancel(nic->thread); -+ if (rc != 0) -+ LOG_ERR(PFX "%s: Couldn't send cancel to nic", -+ nic->log_name); -+ -+ LOG_ERR(PFX "%s: Waiting to join nic thread", nic->log_name); -+ rc = pthread_join(nic->thread, &res); -+ if (rc != 0) -+ LOG_ERR(PFX "%s: Couldn't join to canceled nic thread", -+ nic->log_name); -+ -+ nic->thread = INVALID_THREAD; -+ } else { -+ LOG_ERR(PFX "%s: NIC thread already canceled", nic->log_name); -+ } -+ -+ current = prev = nic_list; -+ while (current != NULL) { -+ if (current == nic) -+ break; -+ -+ prev = current; -+ current = current->next; -+ } -+ -+ if (current != NULL) { -+ if (current == nic_list) -+ nic_list = current->next; -+ else -+ prev->next = current->next; -+ -+ /* Before freeing the nic, must free all the associated -+ nic_iface */ -+ nic_iface = nic->nic_iface; -+ while (nic_iface != NULL) { -+ next_nic_iface = nic_iface->next; -+ free(nic_iface); -+ nic_iface = next_nic_iface; -+ } -+ free(nic); -+ } else { -+ LOG_ERR(PFX "%s: Couldn't find nic to remove", nic->log_name); -+ } -+ -+ return 0; -+} -+ -+/** -+ * nic_close() - Used to indicate to a NIC that it should close -+ * Must be called with nic->nic_mutex -+ * @param nic - the nic to close -+ * @param graceful - ALLOW_GRACEFUL_SHUTDOWN will check the nic state -+ * before proceeding to close() -+ * FORCE_SHUTDOWN will force the nic to close() -+ * reguardless of the state -+ * @param clean - this will free the proper strings assoicated -+ * with the NIC -+ * -+ */ -+void nic_close(nic_t * nic, NIC_SHUTDOWN_T graceful, int clean) -+{ -+ int rc; -+ nic_interface_t *nic_iface; -+ struct stat file_stat; -+ -+ /* The NIC could be configured by the uIP config file -+ * but not assoicated with a hardware library just yet -+ * we will need to check for this */ -+ if (nic->ops == NULL) { -+ LOG_WARN(PFX "%s: when closing nic->ops == NULL", -+ nic->log_name); -+ goto error; -+ } -+ -+ /* Check if the file node exists */ -+ rc = stat(nic->uio_device_name, &file_stat); -+ if ((rc == 0) && (nic->ops)) -+ rc = (*nic->ops->close) (nic, graceful); -+ if (rc != 0) { -+ LOG_ERR(PFX "%s: Could not close nic", nic->log_name); -+ } else { -+ nic->state = NIC_STOPPED; -+ nic->flags &= ~NIC_ENABLED; -+ nic->flags |= NIC_DISABLED; -+ } -+ -+ nic_iface = nic->nic_iface; -+ while (nic_iface != NULL) { -+ if (!((nic_iface->flags & NIC_IFACE_PERSIST) == -+ NIC_IFACE_PERSIST)) -+ uip_reset(&nic_iface->ustack); -+ nic_iface = nic_iface->next; -+ } -+ -+ /* The NIC must be destroyed and init'ed once again, -+ * POSIX defines that the mutex will be undefined it -+ * init'ed twice without a destroy */ -+ pthread_mutex_destroy(&nic->xmit_mutex); -+ pthread_mutex_init(&nic->xmit_mutex, NULL); -+ -+ if (clean & FREE_CONFIG_NAME) { -+ /* Free any named strings we might be holding onto */ -+ if (nic->flags & NIC_CONFIG_NAME_MALLOC) { -+ free(nic->config_device_name); -+ nic->flags &= ~NIC_CONFIG_NAME_MALLOC; -+ } -+ nic->config_device_name = NULL; -+ } -+ -+ if (clean & FREE_UIO_NAME) { -+ if (nic->flags & NIC_UIO_NAME_MALLOC) { -+ free(nic->uio_device_name); -+ nic->uio_device_name = NULL; -+ -+ nic->flags &= ~NIC_UIO_NAME_MALLOC; -+ } -+ } -+ -+ LOG_ERR(PFX "%s: nic closed", nic->log_name); -+error: -+ return; -+} -+ -+/** -+ * net_iface_init() - This function is used to add an interface to the -+ * structure cnic_uio -+ * @return 0 on success, <0 on failure -+ */ -+nic_interface_t *nic_iface_init() -+{ -+ nic_interface_t *nic_iface = malloc(sizeof(*nic_iface)); -+ if (nic_iface == NULL) { -+ LOG_ERR("Could not allocate space for nic iface"); -+ return NULL; -+ } -+ -+ memset(nic_iface, 0, sizeof(*nic_iface)); -+ nic_iface->next = NULL; -+ -+ return nic_iface; -+} -+ -+/** -+ * nic_add_net_iface() - This function is used to add an interface to the -+ * nic structure -+ * @param nic - struct nic device to add the interface to -+ * @param nic_iface - network interface used to add to the nic -+ * @return 0 on success, <0 on failure -+ */ -+int nic_add_nic_iface(nic_t * nic, nic_interface_t * nic_iface) -+{ -+ -+ pthread_mutex_lock(&nic->nic_mutex); -+ -+ /* Add the nic_interface */ -+ if (nic->nic_iface == NULL) { -+ nic->nic_iface = nic_iface; -+ } else { -+ nic_interface_t *current = nic->nic_iface; -+ -+ /* Check to see if this interface already exists via 2 -+ * conditions: 1) VLAN 2) protocol */ -+ while (current->next != NULL) { -+ if ((current->protocol == nic_iface->protocol) && -+ (current->vlan_id == nic_iface->vlan_id)) { -+ LOG_WARN(PFX "%s: nic interface alread exists" -+ "for VLAN: %d, protocol: %d", -+ nic->log_name, current->vlan_id, -+ current->protocol); -+ goto error; -+ } -+ -+ current = current->next; -+ } -+ -+ /* This interface doesn't exists, we can safely add -+ * this nic interface */ -+ current = nic->nic_iface; -+ while (current->next != NULL) { -+ current = current->next; -+ } -+ -+ current->next = nic_iface; -+ } -+ -+ /* Set nic_interface common fields */ -+ nic_iface->parent = nic; -+ nic->num_of_nic_iface++; -+ -+ LOG_INFO(PFX "%s: Added nic interface for VLAN: %d, protocol: %d", -+ nic->log_name, nic_iface->vlan_id, nic_iface->protocol); -+ -+error: -+ pthread_mutex_unlock(&nic->nic_mutex); -+ -+ return 0; -+} -+ -+/****************************************************************************** -+ * Routine to process interrupts from the NIC device -+ ******************************************************************************/ -+/** -+ * nic_process_intr() - Routine used to process interrupts from the hardware -+ * @param nic - NIC hardware to process the interrupt on -+ * @return 0 on success, <0 on failure -+ */ -+int nic_process_intr(nic_t * nic, int discard_check) -+{ -+ fd_set fdset; -+ int ret; -+ int count; -+ struct timeval tv; -+ -+ /* Simple sanity checks */ -+ if ((discard_check != 1) && (nic->state & NIC_RUNNING) != NIC_RUNNING) { -+ LOG_ERR(PFX "%s: Couldn't process interupt NIC not running", -+ nic->log_name); -+ return -EBUSY; -+ } -+ -+ if ((discard_check != 1) && (nic->fd == INVALID_FD)) { -+ LOG_ERR(PFX "%s: NIC fd not valid", nic->log_name); -+ return -EIO; -+ } -+ -+ FD_ZERO(&fdset); -+ FD_SET(nic->fd, &fdset); -+ -+ tv.tv_sec = 0; -+ if (nic->state & NIC_LONG_SLEEP) { -+ tv.tv_usec = 1000; -+ } else { -+ tv.tv_usec = nic->rx_poll_usec; -+ } -+ -+ /* Wait for an interrupt to come in or timeout */ -+ ret = select(nic->fd + 1, &fdset, NULL, NULL, &tv); -+ switch (ret) { -+ case 1: -+ /* Usually there should only be one file descriptor ready -+ * to read */ -+ break; -+ case 0: -+ return ret; -+ case -1: -+ LOG_ERR(PFX "%s: error waiting for interrupt: %s", -+ nic->log_name, strerror(errno)); -+ return 0; -+ default: -+ LOG_ERR(PFX "%s: unknown number of FD's, ignoring: %d ret", -+ nic->log_name, ret); -+ return 0; -+ } -+ -+ ret = read(nic->fd, &count, sizeof(count)); -+ pthread_mutex_lock(&nic->nic_mutex); -+ if (ret > 0) { -+ nic->stats.interrupts++; -+ LOG_DEBUG(PFX "%s: interrupt count: %d prev: %d", -+ nic->log_name, count, nic->intr_count); -+ -+ if (count == nic->intr_count) { -+ LOG_WARN(PFX "%s: got interrupt but count still the " -+ "same", nic->log_name, count); -+ } -+ -+ /* Check if we missed an interrupt. With UIO, -+ * the count should be incremental */ -+ if (count != nic->intr_count + 1) { -+ nic->stats.missed_interrupts++; -+ LOG_DEBUG(PFX "%s: Missed interrupt! on %d not %d", -+ nic->log_name, count, nic->intr_count); -+ } -+ -+ nic->intr_count = count; -+ -+ (*nic->ops->clear_tx_intr) (nic); -+ ret = 1; -+ } -+ pthread_mutex_unlock(&nic->nic_mutex); -+ -+ return ret; -+} -+ -+static void prepare_ipv4_packet(nic_t * nic, -+ nic_interface_t * nic_iface, -+ struct uip_stack *ustack, packet_t * pkt) -+{ -+ u16_t ipaddr[2]; -+ arp_table_query_t arp_query; -+ dest_ipv4_addr_t dest_ipv4_addr; -+ struct arp_entry *tabptr; -+ int queue_rc; -+ int vlan_id = 0; -+ -+ if (nic_iface->vlan_id && !(NIC_VLAN_STRIP_ENABLED & nic->flags)) -+ vlan_id = nic_iface->vlan_id; -+ -+ dest_ipv4_addr = uip_determine_dest_ipv4_addr(ustack, ipaddr); -+ if (dest_ipv4_addr == LOCAL_BROADCAST) { -+ uip_build_eth_header(ustack, ipaddr, NULL, pkt, vlan_id); -+ return; -+ } -+ -+ arp_query = is_in_arp_table(ipaddr, &tabptr); -+ -+ switch (arp_query) { -+ case IS_IN_ARP_TABLE: -+ uip_build_eth_header(ustack, -+ ipaddr, tabptr, pkt, vlan_id); -+ break; -+ case NOT_IN_ARP_TABLE: -+ queue_rc = nic_queue_tx_packet(nic, nic_iface, pkt); -+ uip_build_arp_request(ustack, ipaddr); -+ break; -+ default: -+ LOG_ERR("Unknown arp state"); -+ break; -+ } -+} -+ -+static void prepare_ipv6_packet(nic_t * nic, -+ nic_interface_t * nic_iface, -+ struct uip_stack *ustack, packet_t * pkt) -+{ -+ struct uip_eth_hdr *eth; -+ struct uip_vlan_eth_hdr *eth_vlan; -+ int vlan_id = 0; -+ -+ if (nic_iface->vlan_id && !(NIC_VLAN_STRIP_ENABLED & nic->flags)) -+ vlan_id = nic_iface->vlan_id; -+ -+ eth = (struct uip_eth_hdr *)ustack->data_link_layer; -+ eth_vlan = (struct uip_vlan_eth_hdr *)ustack->data_link_layer; -+ if (vlan_id == 0) { -+ eth->type = htons(UIP_ETHTYPE_IPv6); -+ } else { -+ eth_vlan->tpid = htons(UIP_ETHTYPE_8021Q); -+ eth_vlan->vid = htons(vlan_id); -+ eth_vlan->type = htons(UIP_ETHTYPE_IPv6); -+ } -+} -+ -+static void prepare_ustack(nic_t * nic, -+ nic_interface_t * nic_iface, -+ struct uip_stack *ustack, struct packet *pkt) -+{ -+ struct ether_header *eth = NULL; -+ ustack->uip_buf = pkt->buf; -+ ustack->uip_len = pkt->buf_size; -+ -+ pkt->nic = nic; -+ pkt->nic_iface = nic_iface; -+ -+ ustack->data_link_layer = pkt->buf; -+ /* Adjust the network layer pointer depending if -+ * there is a VLAN tag or not, or if the hardware -+ * has stripped out the -+ * VLAN tag */ -+ if ((nic_iface->vlan_id == 0) || (NIC_VLAN_STRIP_ENABLED & nic->flags)) { -+ ustack->network_layer = ustack->data_link_layer + -+ sizeof(struct uip_eth_hdr); -+ } else { -+ ustack->network_layer = ustack->data_link_layer + -+ sizeof(struct uip_vlan_eth_hdr); -+ } -+ /* Init buffer to be IPv6 */ -+ if (nic_iface->ustack.ip_config == IPV6_CONFIG_DHCP || -+ nic_iface->ustack.ip_config == IPV6_CONFIG_STATIC) { -+ eth = (struct ether_header *)ustack->data_link_layer; -+ eth->ether_type = UIP_ETHTYPE_IPv6; -+ } -+} -+ -+static int check_timers(nic_t * nic, -+ struct timer *periodic_timer, struct timer *arp_timer) -+{ -+ if (timer_expired(periodic_timer)) { -+ int i; -+ nic_interface_t *current; -+ -+ timer_reset(periodic_timer); -+ -+ pthread_mutex_lock(&nic->nic_mutex); -+ -+ current = nic->nic_iface; -+ while (current != NULL) { -+ packet_t *pkt; -+ struct uip_stack *ustack = ¤t->ustack; -+ -+ pkt = get_next_free_packet(nic); -+ if (pkt == NULL) { -+ current = current->next; -+ continue; -+ } -+ -+ for (i = 0; i < UIP_UDP_CONNS; i++) { -+ prepare_ustack(nic, current, ustack, pkt); -+ -+ uip_udp_periodic(ustack, i); -+ /* If the above function invocation resulted -+ * in data that should be sent out on the -+ * network, the global variable uip_len is -+ * set to a value > 0. */ -+ if (ustack->uip_len > 0) { -+ pkt->buf_size = ustack->uip_len; -+ -+ prepare_ipv4_packet(nic, -+ current, -+ ustack, pkt); -+ -+ (*nic->ops->write) (nic, current, pkt); -+ ustack->uip_len = 0; -+ } -+ } -+ -+ /* Added periodic poll for IPv6 NDP engine */ -+ if (ustack->ndpc != NULL) { /* If engine is active */ -+ prepare_ustack(nic, current, ustack, pkt); -+ -+ uip_ndp_periodic(ustack); -+ /* If the above function invocation resulted -+ * in data that should be sent out on the -+ * network, the global variable uip_len is -+ * set to a value > 0. */ -+ if (ustack->uip_len > 0) { -+ pkt->buf_size = ustack->uip_len; -+ prepare_ipv6_packet(nic, -+ current, -+ ustack, pkt); -+ (*nic->ops->write) (nic, current, pkt); -+ ustack->uip_len = 0; -+ } -+ } -+ -+ /* Call the ARP timer function every 10 seconds. */ -+ if (timer_expired(arp_timer)) { -+ timer_reset(arp_timer); -+ uip_arp_timer(); -+ } -+ -+ put_packet_in_free_queue(pkt, nic); -+ -+ current = current->next; -+ } -+ -+ pthread_mutex_unlock(&nic->nic_mutex); -+ } -+ -+ return 0; -+} -+ -+int process_packets(nic_t * nic, -+ struct timer *periodic_timer, -+ struct timer *arp_timer, nic_interface_t * nic_iface) -+{ -+ int rc; -+ packet_t *pkt; -+ -+ pkt = get_next_free_packet(nic); -+ if (pkt == NULL) { -+ LOG_DEBUG(PFX "%s: Couldn't get buffer for processing packet", -+ nic->log_name); -+ return -ENOMEM; -+ } -+ -+ pthread_mutex_lock(&nic->nic_mutex); -+ rc = (*nic->ops->read) (nic, pkt); -+ pthread_mutex_unlock(&nic->nic_mutex); -+ -+ if ((rc != 0) && (pkt->buf_size > 0)) { -+ uint16_t type = 0; -+ int af_type = 0; -+ struct uip_stack *ustack; -+ -+ if ((pkt->vlan_tag == 0) || -+ (NIC_VLAN_STRIP_ENABLED & nic->flags)) { -+ type = ntohs(ETH_BUF(pkt->buf)->type); -+ } else { -+ type = ntohs(VLAN_ETH_BUF(pkt->buf)->type); -+ } -+ -+ switch (type) { -+ case UIP_ETHTYPE_IPv6: -+ af_type = AF_INET6; -+ break; -+ case UIP_ETHTYPE_IPv4: -+ af_type = AF_INET; -+ break; -+ case UIP_ETHTYPE_ARP: -+ af_type = AF_INET; -+ break; -+ default: -+ LOG_DEBUG(PFX "%s: Ignoring vlan:0x%x ethertype:0x%x", -+ nic->log_name, pkt->vlan_tag, type); -+ goto done; -+ } -+ -+ /* check if we have the given VLAN interface */ -+ if (nic_iface == NULL) { -+ nic_iface = nic_find_nic_iface_protocol(nic, -+ pkt->vlan_tag, -+ af_type); -+ if (nic_iface == NULL) { -+ LOG_INFO(PFX "%s: Couldn't find interface for " -+ "VLAN: %d af_type %d creating it", -+ nic->log_name, pkt->vlan_tag, af_type); -+ -+ /* Create the vlan interface */ -+ nic_iface = nic_iface_init(); -+ -+ if (nic_iface == NULL) { -+ LOG_WARN(PFX "%s: Couldn't " -+ "allocate " -+ "nic_iface for " -+ "VLAN: %d af_type %d", -+ nic->log_name, pkt->vlan_tag, -+ af_type); -+ rc = 0; -+ goto done; -+ } -+ -+ nic_iface->protocol = af_type; -+ nic_iface->vlan_id = pkt->vlan_tag; -+ nic_add_nic_iface(nic, nic_iface); -+ -+ persist_all_nic_iface(nic); -+ } -+ } -+ -+ pkt->nic_iface = nic_iface; -+ -+ ustack = &nic_iface->ustack; -+ -+ ustack->uip_buf = pkt->buf; -+ ustack->uip_len = pkt->buf_size; -+ ustack->data_link_layer = pkt->buf; -+ -+ pkt->data_link_layer = pkt->buf; -+ -+ /* Adjust the network layer pointer depending if there is a -+ * VLAN tag or not, or if the hardware has stripped out the -+ * VLAN tag */ -+ if ((pkt->vlan_tag == 0) || -+ (NIC_VLAN_STRIP_ENABLED & nic->flags)) { -+ ustack->network_layer = ustack->data_link_layer + -+ sizeof(struct uip_eth_hdr); -+ pkt->network_layer = pkt->data_link_layer + -+ sizeof(struct uip_eth_hdr); -+ type = ntohs(ETH_BUF(pkt->buf)->type); -+ } else { -+ ustack->network_layer = ustack->data_link_layer + -+ sizeof(struct uip_vlan_eth_hdr); -+ pkt->network_layer = pkt->data_link_layer + -+ sizeof(struct uip_vlan_eth_hdr); -+ type = ntohs(VLAN_ETH_BUF(pkt->buf)->type); -+ } -+ -+ pthread_mutex_lock(&nic->nic_mutex); -+ /* determine how we should process this packet based on the -+ * ethernet type */ -+ switch (type) { -+ case UIP_ETHTYPE_IPv6: -+ uip_input(ustack); -+ if (ustack->uip_len > 0) { -+ /* The pkt generated has already consulted -+ the IPv6 ARP table */ -+ pkt->buf_size = ustack->uip_len; -+ prepare_ipv6_packet(nic, nic_iface, -+ ustack, pkt); -+ -+ (*nic->ops->write) (nic, nic_iface, pkt); -+ } -+ break; -+ case UIP_ETHTYPE_IPv4: -+ uip_arp_ipin(ustack, pkt); -+ uip_input(ustack); -+ /* If the above function invocation resulted -+ * in data that should be sent out on the -+ * network, the global variable uip_len is -+ * set to a value > 0. */ -+ if (ustack->uip_len > 0) { -+ prepare_ipv4_packet(nic, nic_iface, -+ ustack, pkt); -+ -+ (*nic->ops->write) (nic, nic_iface, pkt); -+ } -+ -+ break; -+ case UIP_ETHTYPE_ARP: -+ uip_arp_arpin(nic_iface, ustack, pkt); -+ -+ /* If the above function invocation resulted -+ * in data that should be sent out on the -+ * network, the global variable uip_len -+ * is set to a value > 0. */ -+ if (pkt->buf_size > 0) { -+ (*nic->ops->write) (nic, nic_iface, pkt); -+ } -+ break; -+ } -+ ustack->uip_len = 0; -+ pthread_mutex_unlock(&nic->nic_mutex); -+ } -+ -+done: -+ put_packet_in_free_queue(pkt, nic); -+ -+ return rc; -+} -+ -+static int process_dhcp_loop(nic_t * nic, -+ nic_interface_t * nic_iface, -+ struct timer *periodic_timer, -+ struct timer *arp_timer) -+{ -+ struct dhcpc_state *s; -+ struct ndpc_state *n; -+ int rc; -+ struct timeval start_time; -+ struct timeval current_time; -+ struct timeval wait_time; -+ struct timeval total_time; -+ -+ /* 10s loop time to wait for DHCP */ -+ if (nic_iface->ustack.ip_config == IPV4_CONFIG_DHCP) -+ wait_time.tv_sec = 10; -+ else -+ wait_time.tv_sec = 15; -+ wait_time.tv_usec = 0; -+ -+ s = nic_iface->ustack.dhcpc; -+ n = nic_iface->ustack.ndpc; -+ -+ if (gettimeofday(&start_time, NULL)) { -+ LOG_ERR(PFX "%s: Couldn't get time of day to start DHCP timer", -+ nic->log_name); -+ return -EIO; -+ } -+ -+ timeradd(&start_time, &wait_time, &total_time); -+ -+ periodic_timer->start = periodic_timer->start - -+ periodic_timer->interval; -+ -+ while ((event_loop_stop == 0) && -+ (nic->flags & NIC_ENABLED) && !(nic->flags & NIC_GOING_DOWN)) { -+ -+ if (nic_iface->ustack.ip_config == IPV4_CONFIG_DHCP) { -+ if (s->state == STATE_CONFIG_RECEIVED) -+ break; -+ } -+ if (nic_iface->ustack.ip_config == IPV6_CONFIG_DHCP || -+ nic_iface->ustack.ip_config == IPV6_CONFIG_STATIC) { -+ if (n->state == NDPC_STATE_BACKGROUND_LOOP) -+ break; -+ } -+ -+ /* Check the periodic and ARP timer */ -+ check_timers(nic, periodic_timer, arp_timer); -+ -+ rc = nic_process_intr(nic, 1); -+ -+ while ((rc > 0) && (!(nic->flags & NIC_GOING_DOWN))) { -+ rc = process_packets(nic, -+ periodic_timer, -+ arp_timer, nic_iface); -+ } -+ -+ if (gettimeofday(¤t_time, NULL)) { -+ LOG_ERR(PFX "%s: Couldn't get current time for " -+ "DHCP start", nic->log_name); -+ return -EIO; -+ } -+ -+ if (timercmp(&total_time, ¤t_time, <)) { -+ LOG_ERR(PFX "%s: timeout waiting for DHCP", -+ nic->log_name); -+ return -EIO; -+ } -+ } -+ -+ if (nic->flags & NIC_GOING_DOWN) -+ return -EIO; -+ else -+ return 0; -+} -+ -+void *nic_loop(void *arg) -+{ -+ nic_t *nic = (nic_t *) arg; -+ int rc = -1; -+ struct timer periodic_timer, arp_timer; -+ sigset_t set; -+ void *res; -+ -+ sigfillset(&set); -+ rc = pthread_sigmask(SIG_BLOCK, &set, NULL); -+ if (rc != 0) { -+ /* TODO: determine if we need to exit this thread if we fail -+ * to set the signal mask */ -+ LOG_ERR(PFX "%s: Couldn't set signal mask", nic->log_name); -+ } -+ -+ /* Signal the device to enable itself */ -+ pthread_mutex_lock(&nic->nic_mutex); -+ pthread_cond_signal(&nic->nic_loop_started_cond); -+ pthread_mutex_unlock(&nic->nic_mutex); -+ -+ while ((event_loop_stop == 0) && -+ !(nic->flags & NIC_EXIT_MAIN_LOOP) && -+ !(nic->flags & NIC_GOING_DOWN)) { -+ nic_interface_t *nic_iface; -+ -+ if (nic->flags & NIC_DISABLED) { -+ LOG_DEBUG(PFX "%s: Waiting to be enabled", -+ nic->log_name); -+ -+ /* Wait for the device to be enabled */ -+ pthread_mutex_lock(&nic->nic_mutex); -+ pthread_cond_wait(&nic->enable_wait_cond, -+ &nic->nic_mutex); -+ pthread_mutex_unlock(&nic->nic_mutex); -+ -+ if (nic->state == NIC_EXIT) -+ pthread_exit(NULL); -+ -+ LOG_DEBUG(PFX "%s: is now enabled", nic->log_name); -+ } -+ -+ /* initialize the device to send/rec data */ -+ rc = (*nic->ops->open) (nic); -+ if (rc != 0) { -+ LOG_ERR(PFX "%s: Could not initialize CNIC UIO device", -+ nic->log_name); -+ -+ if (rc == -ENOTSUP) -+ nic->flags &= NIC_EXIT_MAIN_LOOP; -+ -+ goto dev_close; -+ } -+ -+ nic_set_all_nic_iface_mac_to_parent(nic); -+ -+ rc = alloc_free_queue(nic, 5); -+ if (rc != 5) { -+ if (rc != 0) { -+ LOG_WARN(PFX "%s: Allocated %d packets " -+ "instead of %d", nic->log_name, rc, 5); -+ } else { -+ LOG_ERR(PFX "%s: No packets allocated " -+ "instead of %d", nic->log_name, 5); -+ -+ goto dev_close; -+ } -+ } -+ /* Indication for the nic_disable routine that the nic -+ has started running */ -+ nic->state |= NIC_STARTED_RUNNING; -+ -+ /* Initialize the system clocks */ -+ timer_set(&periodic_timer, CLOCK_SECOND / 2); -+ timer_set(&arp_timer, CLOCK_SECOND * 10); -+ -+ /* Prepare the stack for each of the VLAN interfaces */ -+ pthread_mutex_lock(&nic->nic_mutex); -+ -+ nic_iface = nic->nic_iface; -+ while (nic_iface != NULL) { -+ uip_init(&nic_iface->ustack, -+ nic->flags & NIC_IPv6_ENABLED); -+ memcpy(&nic_iface->ustack.uip_ethaddr.addr, -+ nic->mac_addr, 6); -+ -+ LOG_INFO(PFX "%s: Initialized ip stack: VLAN: %d", -+ nic->log_name, nic_iface->vlan_id); -+ -+ LOG_INFO(PFX "%s: mac: %02x:%02x:%02x:%02x:%02x:%02x", -+ nic->log_name, -+ nic_iface->mac_addr[0], -+ nic_iface->mac_addr[1], -+ nic_iface->mac_addr[2], -+ nic_iface->mac_addr[3], -+ nic_iface->mac_addr[4], -+ nic_iface->mac_addr[5]); -+ -+ if (nic_iface->ustack.ip_config == IPV4_CONFIG_STATIC) { -+ struct in_addr addr; -+ uip_ip4addr_t tmp = { 0, 0 }; -+ -+ memcpy(&addr.s_addr, nic_iface->ustack.hostaddr, -+ sizeof(addr.s_addr)); -+ -+ LOG_INFO(PFX "%s: Using IP address: %s", -+ nic->log_name, inet_ntoa(addr)); -+ -+ memcpy(&addr.s_addr, nic_iface->ustack.netmask, -+ sizeof(addr.s_addr)); -+ -+ LOG_INFO(PFX "%s: Using netmask: %s", -+ nic->log_name, inet_ntoa(addr)); -+ -+ set_uip_stack(&nic_iface->ustack, -+ &nic_iface->ustack.hostaddr, -+ &nic_iface->ustack.netmask, -+ &tmp, nic_iface->mac_addr); -+ -+ } else if (nic_iface->ustack.ip_config == -+ IPV4_CONFIG_DHCP) { -+ struct uip_stack *ustack = &nic_iface->ustack; -+ uip_ip4addr_t tmp = { 0, 0 }; -+ -+ set_uip_stack(&nic_iface->ustack, -+ &nic_iface->ustack.hostaddr, -+ &nic_iface->ustack.netmask, -+ &tmp, nic_iface->mac_addr); -+ if (dhcpc_init(nic, ustack, -+ nic_iface->mac_addr, ETH_ALEN)) { -+ LOG_DEBUG(PFX "%s: DHCPv4 engine " -+ "already initialized!", -+ nic->log_name); -+ goto skip; -+ } -+ pthread_mutex_unlock(&nic->nic_mutex); -+ rc = process_dhcp_loop(nic, nic_iface, -+ &periodic_timer, -+ &arp_timer); -+ pthread_mutex_lock(&nic->nic_mutex); -+ -+ if (rc) { -+ LOG_ERR(PFX "%s: DHCP failed", -+ nic->log_name); -+ nic->flags |= NIC_DISABLED | -+ NIC_RESET_UIP; -+ nic->flags &= ~NIC_ENABLED; -+ /* Signal that the device enable is -+ done */ -+ pthread_cond_broadcast( -+ &nic->enable_done_cond); -+ -+ pthread_mutex_unlock(&nic->nic_mutex); -+ -+ rc = pthread_join(nic->enable_thread, -+ &res); -+ if (rc != 0) -+ LOG_ERR(PFX "%s: Couldn't join " -+ "to canceled enable nic" -+ " thread", -+ nic->log_name); -+ -+ goto dev_close; -+ } -+ -+ if (nic->flags & NIC_DISABLED) { -+ pthread_mutex_unlock(&nic->nic_mutex); -+ break; -+ } -+ -+ LOG_INFO(PFX "%s: Initialized dhcp client", -+ nic->log_name); -+ } else if (nic_iface->ustack.ip_config == -+ IPV6_CONFIG_DHCP || -+ nic_iface->ustack.ip_config == -+ IPV6_CONFIG_STATIC) { -+ struct in6_addr addr6; -+ char buf[INET6_ADDRSTRLEN]; -+ -+ /* Do router solicitation for both STATIC and -+ DHCP - all NDP handling will take place in -+ the DHCP loop -+ STATIC - router advertisement will be handled -+ in the uip background loop -+ */ -+ if (ndpc_init(nic, &nic_iface->ustack, -+ nic_iface->mac_addr, ETH_ALEN)) { -+ LOG_DEBUG(PFX "%s: IPv6 engine already" -+ "initialized!", -+ nic->log_name); -+ goto skip; -+ } -+ if (nic_iface->ustack.ip_config == -+ IPV6_CONFIG_DHCP) { -+ pthread_mutex_unlock(&nic->nic_mutex); -+ rc = process_dhcp_loop(nic, nic_iface, -+ &periodic_timer, -+ &arp_timer); -+ pthread_mutex_lock(&nic->nic_mutex); -+ if (rc) { -+ /* Don't reset and allow to -+ use RA and LL */ -+ LOG_ERR(PFX "%s: DHCPv6 failed", -+ nic->log_name); -+ } -+ if (nic->flags & NIC_DISABLED) { -+ pthread_mutex_unlock(&nic-> -+ nic_mutex); -+ break; -+ } -+ } else { -+ pthread_mutex_unlock(&nic->nic_mutex); -+ rc = process_dhcp_loop(nic, nic_iface, -+ &periodic_timer, -+ &arp_timer); -+ pthread_mutex_lock(&nic->nic_mutex); -+ if (rc) { -+ LOG_ERR(PFX "%s: IPv6 rtr " -+ "failed", -+ nic->log_name); -+ } -+ memcpy(&addr6.s6_addr, -+ nic_iface->ustack.hostaddr6, -+ sizeof(addr6.s6_addr)); -+ inet_ntop(AF_INET6, -+ addr6.s6_addr, -+ buf, sizeof(buf)); -+ LOG_INFO(PFX "%s: hostaddr IP: %s", -+ nic->log_name, buf); -+ -+ memcpy(&addr6.s6_addr, -+ nic_iface->ustack.netmask6, -+ sizeof(addr6.s6_addr)); -+ inet_ntop(AF_INET6, -+ addr6.s6_addr, -+ buf, sizeof(buf)); -+ LOG_INFO(PFX "%s: netmask IP: %s", -+ nic->log_name, buf); -+ } -+ } else { -+ LOG_INFO(PFX "%s: ipconfig = %d?", -+ nic->log_name, -+ nic_iface->ustack.ip_config); -+ } -+skip: -+ LOG_INFO(PFX "%s: enabled vlan %d protocol: %d", -+ nic->log_name, -+ nic_iface->vlan_id, nic_iface->protocol); -+ -+ nic_iface = nic_iface->next; -+ } -+ -+ if (nic->flags & NIC_DISABLED) { -+ LOG_WARN(PFX "%s: nic was disabled during nic loop, " -+ "closing flag 0x%x", -+ nic->log_name, nic->flags); -+ pthread_mutex_unlock(&nic->nic_mutex); -+ goto dev_close; -+ } -+ -+ /* This is when we start the processing of packets */ -+ nic->start_time = time(NULL); -+ nic->flags &= ~NIC_UNITIALIZED; -+ nic->flags |= NIC_INITIALIZED; -+ nic->state &= ~NIC_STOPPED; -+ nic->state |= NIC_RUNNING; -+ -+ nic->flags &= ~NIC_ENABLED_PENDING; -+ -+ /* Signal that the device enable is done */ -+ pthread_cond_broadcast(&nic->enable_done_cond); -+ pthread_mutex_unlock(&nic->nic_mutex); -+ -+ LOG_INFO(PFX "%s: entering main nic loop", nic->log_name); -+ -+ while ((nic->state & NIC_RUNNING) && -+ (event_loop_stop == 0) && -+ !(nic->flags & NIC_GOING_DOWN)) { -+ /* Check the periodic and ARP timer */ -+ check_timers(nic, &periodic_timer, &arp_timer); -+ rc = nic_process_intr(nic, 0); -+ while ((rc > 0) && -+ (nic->state & NIC_RUNNING) && -+ !(nic->flags & NIC_GOING_DOWN)) { -+ rc = process_packets(nic, -+ &periodic_timer, -+ &arp_timer, NULL); -+ } -+ } -+ -+ LOG_INFO(PFX "%s: exited main processing loop", nic->log_name); -+ -+dev_close: -+ pthread_mutex_lock(&nic->nic_mutex); -+ -+ if (nic->flags & NIC_GOING_DOWN) { -+ nic_close(nic, 1, FREE_NO_STRINGS); -+ -+ nic->flags &= ~NIC_GOING_DOWN; -+ } else { -+ -+ pthread_mutex_destroy(&nic->xmit_mutex); -+ pthread_mutex_init(&nic->xmit_mutex, NULL); -+ -+ if (nic->flags & NIC_RESET_UIP) { -+ nic_interface_t *nic_iface = nic->nic_iface; -+ while (nic_iface != NULL) { -+ LOG_INFO(PFX "%s: resetting uIP stack", -+ nic->log_name); -+ uip_reset(&nic_iface->ustack); -+ -+ nic_iface = nic_iface->next; -+ } -+ -+ nic->flags &= ~NIC_RESET_UIP; -+ } -+ } -+ -+ nic->flags |= NIC_UNITIALIZED; -+ nic->flags &= ~NIC_INITIALIZED; -+ nic->flags &= ~NIC_ENABLED_PENDING; -+ -+ nic->pending_count = 0; -+ -+ if (!(nic->flags & NIC_EXIT_MAIN_LOOP)) { -+ /* Signal we are done closing CNIC/UIO device */ -+ pthread_cond_broadcast(&nic->disable_wait_cond); -+ } -+ pthread_mutex_unlock(&nic->nic_mutex); -+ } -+ -+ LOG_INFO(PFX "%s: nic loop thread exited", nic->log_name); -+ -+ pthread_exit(NULL); -+} -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/nic.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/nic.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/nic.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/nic.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,352 @@ -+/* -+ * Copyright (c) 2009-2011, Broadcom Corporation -+ * -+ * Written by: Benjamin Li (benli@broadcom.com) -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * nic.h - NIC header file -+ * -+ */ -+ -+#include -+ -+#ifndef __NIC_H__ -+#define __NIC_H__ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "nic_nl.h" -+#include "packet.h" -+#include "uip.h" -+ -+#include "iscsi_if.h" -+ -+/* Foward declarations */ -+struct nic_ops; -+struct nic_lib_handle; -+struct packet; -+struct nic_op; -+ -+extern pthread_mutex_t nic_lib_list_mutex; -+extern struct nic_lib_handle *nic_lib_list; -+ -+/* Used to store a list of active cnic devices */ -+extern pthread_mutex_t nic_list_mutex; -+extern struct nic *nic_list; -+ -+/******************************************************************************* -+ * Constants -+ ******************************************************************************/ -+#define MAX_PCI_DEVICE_ENTRIES 64 /* Maxium number of pci_device_id -+ entries a hw library may contain */ -+ -+#define FREE_CONFIG_NAME 0x0001 -+#define FREE_UIO_NAME 0x0002 -+#define FREE_ALL_STRINGS FREE_CONFIG_NAME | FREE_UIO_NAME -+#define FREE_NO_STRINGS 0x0000 -+ -+/****************************************************************************** -+ * Enumerations -+ ******************************************************************************/ -+typedef enum { -+ ALLOW_GRACEFUL_SHUTDOWN = 1, -+ FORCE_SHUTDOWN = 2, -+} NIC_SHUTDOWN_T; -+ -+/******************************************************************************* -+ * Structure used to hold PCI vendor, device, subvendor and subdevice ID's -+ ******************************************************************************/ -+struct pci_device_id { -+ const uint32_t vendor, device; /* Vendor and device ID or PCI_ANY_ID */ -+ const uint32_t subvendor, subdevice; /* Subsystem ID's/PCI_ANY_ID */ -+ const char *device_name; /* Data private to the driver */ -+}; -+ -+/****************************************************************************** -+ * NIC statistics structure -+ ******************************************************************************/ -+struct nic_stats { -+ uint64_t interrupts; -+ uint64_t missed_interrupts; -+ -+ struct { -+ uint64_t packets; -+ uint64_t bytes; -+ } tx; -+ -+ struct { -+ uint64_t packets; -+ uint64_t bytes; -+ } rx; -+}; -+ -+/****************************************************************************** -+ * NIC interface structure -+ ******************************************************************************/ -+typedef struct nic_interface { -+ struct nic_interface *next; -+ struct nic *parent; -+ -+ uint16_t protocol; -+ uint16_t flags; -+#define NIC_IFACE_PERSIST 0x0001 -+ uint8_t mac_addr[ETH_ALEN]; -+ uint8_t vlan_priority; -+ uint16_t vlan_id; -+ -+ time_t start_time; -+ -+ struct uip_stack ustack; -+} nic_interface_t; -+ -+/****************************************************************************** -+ * NIC lib operations structure -+ ******************************************************************************/ -+struct nic_lib_ops { -+ /* Used to get the NIC library name */ -+ void (*get_library_name) (char **library_name, -+ size_t * library_name_size); -+ -+ /* Used to get to the PCI table supported by the NIC library */ -+ void (*get_pci_table) (struct pci_device_id ** table, -+ uint32_t * entries); -+ -+ /* Used to get the version of this NIC library */ -+ void (*get_library_version) (char **version_string, -+ size_t * version_string_size); -+ -+ /* Used to get the NIC library build date */ -+ void (*get_build_date) (char **build_date_string, -+ size_t * build_date_string_size); -+ -+ /* Used to get the transport name assoicated with this library */ -+ void (*get_transport_name) (char **transport_name, -+ size_t * transport_name_size); -+ -+ /* Used to get the uio name assoicated with this library */ -+ void (*get_uio_name) (char **uio_name, size_t * uio_name_size); -+ -+}; -+ -+/******************************************************************************* -+ * NIC op table definition -+ ******************************************************************************/ -+typedef struct nic_ops { -+ struct nic_lib_ops lib_ops; -+ -+ char *description; -+ int (*open) (struct nic *); -+ int (*close) (struct nic *, NIC_SHUTDOWN_T); -+ int (*read) (struct nic *, struct packet *); -+ int (*write) (struct nic *, nic_interface_t *, struct packet *); -+ void *(*get_tx_pkt) (struct nic *); -+ void (*start_xmit) (struct nic *, size_t, u16_t vlan_id); -+ int (*clear_tx_intr) (struct nic *); -+ int (*handle_iscsi_path_req) (struct nic *, -+ int, -+ struct iscsi_uevent * ev, -+ struct iscsi_path * path); -+} net_ops_t; -+ -+typedef struct nic_lib_handle { -+ struct nic_lib_handle *next; -+ -+ pthread_mutex_t mutex; -+ struct nic_ops *ops; -+} nic_lib_handle_t; -+ -+typedef struct nic { -+ struct nic *next; -+ -+ uint32_t flags; -+#define NIC_UNITIALIZED 0x0001 -+#define NIC_INITIALIZED 0x0002 -+#define NIC_ENABLED 0x0004 -+#define NIC_DISABLED 0x0008 -+#define NIC_IPv6_ENABLED 0x0010 -+#define NIC_ADDED_MULICAST 0x0020 -+#define NIC_VLAN_STRIP_ENABLED 0x0100 -+#define NIC_MSIX_ENABLED 0x0200 -+#define NIC_TX_HAS_SENT 0x0400 -+#define NIC_ENABLED_PENDING 0x0800 -+ -+#define NIC_UIO_NAME_MALLOC 0x1000 -+#define NIC_CONFIG_NAME_MALLOC 0x2000 -+#define NIC_EXIT_MAIN_LOOP 0x4000 -+#define NIC_GOING_DOWN 0x8000 -+#define NIC_RESET_UIP 0x10000 -+ -+ uint16_t state; -+#define NIC_STOPPED 0x0001 -+#define NIC_STARTED_RUNNING 0x0002 -+#define NIC_RUNNING 0x0004 -+#define NIC_LONG_SLEEP 0x0008 -+#define NIC_EXIT 0x0010 -+ -+ int fd; /* Holds the file descriptor to UIO */ -+ uint16_t uio_minor; /* Holds the UIO minor number */ -+ -+ uint32_t host_no; /* Holds the associated host number */ -+ -+ char *library_name; /* Name of the library to assoicate with */ -+ char *log_name; /* Human friendly name used in the log -+ file */ -+ char *config_device_name; /* Name read from the XML configuration -+ file */ -+ char eth_device_name[IFNAMSIZ]; /* Network interface name */ -+ char *uio_device_name; /* UIO device name */ -+ -+ uint32_t intr_count; /* Total UIO interrupt count */ -+ -+ pthread_mutex_t nic_mutex; -+ -+ /* iSCSI ring ethernet MAC address */ -+ __u8 mac_addr[ETH_ALEN]; -+ -+ /* Used to manage the network interfaces of this device */ -+ __u32 num_of_nic_iface; -+ nic_interface_t *nic_iface; -+ -+ /* Wait for the device to be enabled */ -+ pthread_cond_t enable_wait_cond; -+ -+ /* Wait for the device to be finished enabled */ -+ pthread_cond_t enable_done_cond; -+ -+ /* Wait for the nic loop to start */ -+ pthread_cond_t nic_loop_started_cond; -+ -+ /* Wait for the device to be disabled */ -+ pthread_cond_t disable_wait_cond; -+ -+ /* Held when transmitting */ -+ pthread_mutex_t xmit_mutex; -+ -+ /* The thread this device is running on */ -+ pthread_t thread; -+ -+ /* The thread used to enable the device */ -+ pthread_t enable_thread; -+ -+ /* Statistical Information on this device */ -+ time_t start_time; -+ struct nic_stats stats; -+ -+ /* Number of retrys from iscsid */ -+ uint32_t pending_count; -+ -+#define DEFAULT_RX_POLL_USEC 100 /* usec */ -+ /* options enabled by the user */ -+ uint32_t rx_poll_usec; -+ -+ /* Used to hold hardware specific data */ -+ void *priv; -+ -+ /* Used to hold the TX packets that are needed to be sent */ -+ struct packet *tx_packet_queue; -+ -+ /* Mutex to protect the list of free packets */ -+ pthread_mutex_t free_packet_queue_mutex; -+ -+ /* Used to hold the free packets that are needed to be sent */ -+ struct packet *free_packet_queue; -+ -+ /* Points to the NIC library */ -+ nic_lib_handle_t *nic_library; -+ -+ /* Points to the PCI table entry */ -+ struct pci_device_id *pci_id; -+ -+ /* Used to process the interrupt */ -+ int (*process_intr) (struct nic * nic); -+ -+ struct nic_ops *ops; -+} nic_t; -+ -+/****************************************************************************** -+ * Function Prototypes -+ *****************************************************************************/ -+int load_all_nic_libraries(); -+ -+nic_t *nic_init(); -+void nic_add(nic_t * nic); -+int nic_remove(nic_t * nic); -+ -+int nic_add_nic_iface(nic_t * nic, nic_interface_t * nic_iface); -+int nic_process_intr(nic_t * nic, int discard_check); -+ -+nic_interface_t *nic_iface_init(); -+ -+typedef enum { -+ NIC_LIBRARY_EXSITS = 1, -+ NIC_LIBRARY_DOESNT_EXIST = 2, -+} NIC_LIBRARY_EXIST_T; -+ -+NIC_LIBRARY_EXIST_T does_nic_uio_name_exist(char *name); -+NIC_LIBRARY_EXIST_T does_nic_library_exist(char *name); -+ -+/******************************************************************************* -+ * Packet management utility functions -+ ******************************************************************************/ -+struct packet *get_next_tx_packet(nic_t * nic); -+struct packet *get_next_free_packet(nic_t * nic); -+void put_packet_in_tx_queue(struct packet *pkt, nic_t * nic); -+void put_packet_in_free_queue(struct packet *pkt, nic_t * nic); -+ -+int unload_all_nic_libraries(); -+void nic_close(nic_t * nic, NIC_SHUTDOWN_T graceful, int clean); -+ -+/* Use this function to fill in minor number and uio, and eth names */ -+int nic_fill_name(nic_t * nic); -+ -+int enable_multicast(nic_t * nic); -+int disable_multicast(nic_t * nic); -+ -+void nic_set_all_nic_iface_mac_to_parent(nic_t * nic); -+struct nic_interface *nic_find_nic_iface(nic_t * nic, uint16_t vlan_id); -+struct nic_interface *nic_find_nic_iface_protocol(nic_t * nic, -+ uint16_t vlan_id, -+ uint16_t protocol); -+int find_nic_lib_using_pci_id(uint32_t vendor, uint32_t device, -+ uint32_t subvendor, uint32_t subdevice, -+ nic_lib_handle_t ** handle, -+ struct pci_device_id **pci_entry); -+ -+void *nic_loop(void *arg); -+ -+int nic_packet_capture(struct nic *, struct packet *pkt); -+ -+#endif /* __NIC_H__ */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/nic_id.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/nic_id.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/nic_id.c 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/nic_id.c 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,369 @@ -+/* -+ * Copyright (c) 2009-2011, Broadcom Corporation -+ * -+ * Written by: Benjamin Li (benli@broadcom.com) -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * nic_id.c - Using sysfs to determine the PCI vendor, device, subvendor and -+ * subdevice ID's -+ * -+ */ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+ -+#include "logger.h" -+#include "nic.h" -+ -+#define PFX "nic_id " -+ -+/******************************************************************************* -+ * Sysfs constant strings used to get PCI vendor, and device ID's -+ ******************************************************************************/ -+const char uio_vendor_id_template[] = "/sys/class/uio/uio%d/device/vendor"; -+const char uio_subvendor_id_template[] = -+ "/sys/class/uio/uio%d/device/subsystem_vendor"; -+const char uio_device_id_template[] = "/sys/class/uio/uio%d/device/device"; -+const char uio_subdevice_id_template[] = -+ "/sys/class/uio/uio%d/device/subsystem_device"; -+const char uio_device_symlink_template[] = "/sys/class/uio/uio%d/device"; -+ -+/** -+ * get_id() - Utility function to read hex values from sysfs -+ * @param nic - NIC device to use -+ * @param sysfs_template - sysfs path template to use -+ * @param sysfs_template_size - sysfs path template size in bytes -+ * @parm id - this is the value returned from the sysfs entry -+ * @return 0 on success <0 on failure -+ */ -+static int get_id(nic_t * nic, -+ const char *sysfs_template, -+ const size_t sysfs_template_size, uint32_t * id) -+{ -+ int rc = 0; -+ FILE *fp; -+ size_t chars_read; -+ char buf[7]; -+ char *path; -+ size_t path_size; -+ -+ path_size = sysfs_template_size + 4; -+ path = malloc(path_size); -+ if (path == NULL) { -+ LOG_ERR("Could not allocate memory for %s", sysfs_template); -+ return -ENOMEM; -+ } -+ -+ snprintf(path, path_size, sysfs_template, nic->uio_minor); -+ -+ fp = fopen(path, "r"); -+ if (fp == NULL) { -+ LOG_ERR(PFX "%s: Could not open path: %s [%s]", -+ nic->log_name, path, strerror(errno)); -+ rc = -EIO; -+ goto error_fopen; -+ } -+ -+ chars_read = fread(buf, sizeof(buf), 1, fp); -+ if (chars_read != 1) { -+ LOG_ERR(PFX "%s: Could not read from: %s [%s]", -+ nic->log_name, path, strerror(ferror(fp))); -+ rc = -EIO; -+ goto error; -+ } -+ -+ chars_read = sscanf(buf, "%x", id); -+ if (chars_read != 1) { -+ LOG_ERR(PFX "%s: Could interpret value: %s from: %s [%s]", -+ nic->log_name, buf, path, strerror(errno)); -+ rc = -EIO; -+ goto error; -+ } -+ -+ error: -+ fclose(fp); -+ -+ error_fopen: -+ free(path); -+ -+ return rc; -+} -+ -+static int get_vendor(nic_t * nic, uint32_t * id) -+{ -+ return get_id(nic, -+ uio_vendor_id_template, sizeof(uio_vendor_id_template), -+ id); -+} -+ -+static int get_subvendor(nic_t * nic, uint32_t * id) -+{ -+ return get_id(nic, -+ uio_subvendor_id_template, -+ sizeof(uio_subvendor_id_template), id); -+} -+ -+static int get_device(nic_t * nic, uint32_t * id) -+{ -+ return get_id(nic, -+ uio_device_id_template, -+ sizeof(uio_device_id_template), id); -+} -+ -+static int get_subdevice(nic_t * nic, uint32_t * id) -+{ -+ return get_id(nic, -+ uio_subdevice_id_template, -+ sizeof(uio_subdevice_id_template), id); -+} -+ -+int get_bus_slot_func_num(nic_t * nic, -+ uint32_t * bus, uint32_t * slot, uint32_t * func) -+{ -+ size_t size; -+ char *path, *tok, *tok2; -+ int path_tokens, i; -+ size_t path_size; -+ char *read_pci_bus_slot_func_str; -+ char pci_bus_slot_func_str[32]; -+ int rc; -+ char *saveptr; -+ -+ path_size = sizeof(uio_device_symlink_template) + 4; -+ path = malloc(path_size); -+ if (path == NULL) { -+ LOG_ERR(PFX "%s: Could not allocate path memory for %s", -+ nic->log_name, uio_device_symlink_template); -+ rc = -ENOMEM; -+ goto error_alloc_path; -+ } -+ -+ read_pci_bus_slot_func_str = malloc(128); -+ if (read_pci_bus_slot_func_str == NULL) { -+ LOG_ERR(PFX "%s: Could not allocate read pci bus memory for %s", -+ nic->log_name, uio_device_symlink_template); -+ rc = -ENOMEM; -+ goto error_alloc_read_pci_bus; -+ } -+ -+ snprintf(path, path_size, uio_device_symlink_template, nic->uio_minor); -+ -+ size = readlink(path, read_pci_bus_slot_func_str, 128); -+ if (size == -1) { -+ LOG_ERR(PFX "%s: Error with %s: %s", -+ nic->log_name, path, strerror(errno)); -+ rc = errno; -+ goto error; -+ } -+ -+ if (size > ((128) - 1)) { -+ read_pci_bus_slot_func_str[128 - 1] = '\0'; -+ LOG_ERR(PFX "%s: not enough space (%d) for reading PCI " -+ "slot:bus.func %s: %s", -+ nic->log_name, size, path, strerror(errno)); -+ rc = -EIO; -+ goto error; -+ } -+ -+ /* readlink() doesn't NULL terminate the string */ -+ read_pci_bus_slot_func_str[size] = '\0'; -+ -+ path_tokens = 0; -+ tok = strtok_r(read_pci_bus_slot_func_str, "/", &saveptr); -+ while (tok != NULL) { -+ path_tokens++; -+ tok = strtok_r(NULL, "/", &saveptr); -+ } -+ -+ size = readlink(path, read_pci_bus_slot_func_str, 128); -+ if (size == -1) { -+ LOG_ERR(PFX "%s: Error with %s: %s", -+ nic->log_name, path, strerror(errno)); -+ rc = errno; -+ goto error; -+ } -+ -+ if (size > ((128) - 1)) { -+ read_pci_bus_slot_func_str[128 - 1] = '\0'; -+ LOG_ERR(PFX "%s: not enough space for reading PCI " -+ "slot:bus.func %s: %s", -+ nic->log_name, path, strerror(errno)); -+ rc = -EIO; -+ goto error; -+ } -+ -+ /* readlink() doesn't NULL terminate the string */ -+ read_pci_bus_slot_func_str[size] = '\0'; -+ -+ tok = strtok_r(read_pci_bus_slot_func_str, "/", &saveptr); -+ for (i = 0; i < path_tokens - 1; i++) { -+ tok = strtok_r(NULL, "/", &saveptr); -+ } -+ strcpy(pci_bus_slot_func_str, tok); -+ -+ tok = strtok_r(pci_bus_slot_func_str, ":", &saveptr); -+ if (tok == NULL) { -+ LOG_ERR(PFX "%s: Error with slot string: %s", -+ nic->log_name, pci_bus_slot_func_str); -+ rc = -EIO; -+ goto error; -+ } -+ -+ tok = strtok_r(NULL, ":", &saveptr); -+ if (tok == NULL) { -+ LOG_ERR(PFX "%s: Error parsing slot: %s", -+ nic->log_name, pci_bus_slot_func_str); -+ rc = -EIO; -+ goto error; -+ } -+ -+ sscanf(tok, "%x", bus); -+ -+ /* Need to extract the next token "xx.x" */ -+ tok = strtok_r(NULL, ":", &saveptr); -+ if (tok == NULL) { -+ LOG_ERR(PFX "%s: Error extracing bus.func: %s", -+ nic->log_name, pci_bus_slot_func_str); -+ rc = -EIO; -+ goto error; -+ } -+ -+ tok2 = strtok_r(tok, ".", &saveptr); -+ if (tok2 == NULL) { -+ LOG_ERR(PFX "%s: Error parsing bus: %s", -+ nic->log_name, pci_bus_slot_func_str); -+ rc = -EIO; -+ goto error; -+ } -+ -+ sscanf(tok2, "%x", slot); -+ -+ tok2 = strtok_r(NULL, ".", &saveptr); -+ if (tok2 == NULL) { -+ LOG_ERR(PFX "%s: Error parsing func: %s", -+ nic->log_name, pci_bus_slot_func_str); -+ rc = -EIO; -+ goto error; -+ } -+ -+ sscanf(tok2, "%x", func); -+ LOG_INFO(PFX "%s: is found at %02x:%02x.%02x", nic->log_name, -+ *bus, *slot, *func); -+ -+ free(read_pci_bus_slot_func_str); -+ -+ rc = 0; -+ -+ error: -+ error_alloc_read_pci_bus: -+ free(path); -+ -+ error_alloc_path: -+ -+ return rc; -+} -+ -+/** -+ * find_set_nic_lib() - Match the NIC library to the NIC -+ * @param nic - NIC device to determine which NIC library to use -+ * @return 0 on success <0 on failure -+ */ -+int find_set_nic_lib(nic_t * nic) -+{ -+ uint32_t vendor; -+ uint32_t subvendor; -+ uint32_t device; -+ uint32_t subdevice; -+ -+ uint32_t pci_bus; -+ uint32_t pci_slot; -+ uint32_t pci_func; -+ int rc = 0; -+ -+ nic_lib_handle_t *handle; -+ struct pci_device_id *pci_entry; -+ -+ rc = get_vendor(nic, &vendor); -+ if (rc != 0) { -+ LOG_ERR(PFX "%s: Could not get vendor id [0x%x]", -+ nic->log_name, rc); -+ return rc; -+ } -+ -+ rc = get_subvendor(nic, &subvendor); -+ if (rc != 0) { -+ LOG_ERR(PFX "%s: Could not get subvendor id [0x%x]", -+ nic->log_name, rc); -+ return rc; -+ } -+ -+ rc = get_device(nic, &device); -+ if (rc != 0) { -+ LOG_ERR(PFX "%s: Could not get device id [0x%x]", -+ nic->log_name, rc); -+ return rc; -+ } -+ -+ rc = get_subdevice(nic, &subdevice); -+ if (rc != 0) { -+ LOG_ERR(PFX "%s: Could not get subdevice id [0x%x]", -+ nic->log_name, rc); -+ return rc; -+ } -+ -+ get_bus_slot_func_num(nic, &pci_bus, &pci_slot, &pci_func); -+ -+ LOG_DEBUG(PFX "%s: Looking for device vendor: " -+ "0x%x subvendor: 0x%x device: 0x%x subdevice: 0x%x", -+ nic->log_name, vendor, subvendor, device, subdevice); -+ -+ rc = find_nic_lib_using_pci_id(vendor, device, subvendor, subdevice, -+ &handle, &pci_entry); -+ -+ if (rc != 0) { -+ LOG_WARN(PFX "%s: Couldn't find proper NIC library", -+ nic->log_name); -+ return rc; -+ } -+ -+ nic->nic_library = handle; -+ nic->pci_id = pci_entry; -+ -+ /* Prepare the NIC library op table */ -+ nic->ops = handle->ops; -+ -+ return 0; -+} -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/nic_id.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/nic_id.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/nic_id.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/nic_id.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,46 @@ -+/* -+ * Copyright (c) 2009-2011, Broadcom Corporation -+ * -+ * Written by: Benjamin Li (benli@broadcom.com) -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * nic_id.h - NIC uIP NetLink user space stack -+ * -+ */ -+#ifndef __NIC_ID_H__ -+#define __NIC_ID_H__ -+ -+int find_set_nic_lib(nic_t * nic); -+ -+int get_bus_slot_func_num(nic_t * nic, -+ uint32_t * bus, uint32_t * slot, uint32_t * func); -+ -+#endif /* __NIC_ID_H__ */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/nic_nl.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/nic_nl.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/nic_nl.c 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/nic_nl.c 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,619 @@ -+/* -+ * Copyright (c) 2009-2011, Broadcom Corporation -+ * -+ * Written by: Benjamin Li (benli@broadcom.com) -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * nic_nl.c - NIC uIP NetLink user space stack -+ * -+ */ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "uip_arp.h" -+#include "logger.h" -+#include "options.h" -+ -+#include "nic.h" -+#include "nic_nl.h" -+#include "nic_utils.h" -+ -+/******************************************************************************* -+ * Constants -+ ******************************************************************************/ -+#define PFX "NIC_NL " -+ -+static u8_t nlm_sendbuf[NLM_BUF_DEFAULT_MAX]; -+ -+static struct sockaddr_nl src_addr; -+ -+const static struct sockaddr_nl dest_addr = { -+ .nl_family = AF_NETLINK, -+ .nl_pid = 0, /* kernel */ -+ .nl_groups = 0, /* unicast */ -+}; -+ -+#define POLL_NL 0 -+#define POLL_MAX 1 -+ -+/* Netlink */ -+int nl_sock = INVALID_FD; -+ -+/* Items used to handle the thread used to send/process ARP's */ -+static pthread_t nl_process_thread; -+static pthread_cond_t nl_process_cond; -+pthread_cond_t nl_process_if_down_cond; -+pthread_mutex_t nl_process_mutex; -+int nl_process_if_down = 0; -+ -+#define NL_PROCESS_MAX_RING_SIZE 128 -+#define NL_PROCESS_LAST_ENTRY NL_PROCESS_MAX_RING_SIZE - 1 -+#define NL_PROCESS_NEXT_ENTRY(x) ((x) & NL_PROCESS_MAX_RING_SIZE) -+static int nl_process_head; -+static int nl_process_tail; -+static void *nl_process_ring[NL_PROCESS_MAX_RING_SIZE]; -+ -+#define MAX_TX_DESC_CNT (TX_DESC_CNT - 1) -+ -+#define NEXT_TX_BD(x) (((x) & (MAX_TX_DESC_CNT - 1)) == \ -+ (MAX_TX_DESC_CNT - 1)) ? -+ -+static int nl_read(int ctrl_fd, char *data, int size, int flags) -+{ -+ int rc; -+ struct iovec iov; -+ struct msghdr msg; -+ -+ iov.iov_base = data; -+ iov.iov_len = size; -+ -+ memset(&src_addr, 0, sizeof(src_addr)); -+ src_addr.nl_family = AF_NETLINK; -+ src_addr.nl_pid = getpid(); -+ src_addr.nl_groups = 1; -+ -+ memset(&msg, 0, sizeof(msg)); -+ msg.msg_name = (void *)&src_addr; -+ msg.msg_namelen = sizeof(src_addr); -+ msg.msg_iov = &iov; -+ msg.msg_iovlen = 1; -+ -+ rc = recvmsg(ctrl_fd, &msg, flags); -+ -+ return rc; -+} -+ -+static int -+kwritev(int fd, enum iscsi_uevent_e type, struct iovec *iovp, int count) -+{ -+ int i, rc; -+ struct nlmsghdr *nlh; -+ struct msghdr msg; -+ struct iovec iov; -+ int datalen = 0; -+ -+ for (i = 0; i < count; i++) { -+ datalen += iovp[i].iov_len; -+ } -+ -+ nlh = (struct nlmsghdr *)nlm_sendbuf; -+ memset(nlh, 0, NLMSG_SPACE(datalen)); -+ -+ nlh->nlmsg_len = NLMSG_SPACE(datalen); -+ nlh->nlmsg_pid = getpid(); -+ nlh->nlmsg_flags = 0; -+ nlh->nlmsg_type = type; -+ -+ datalen = 0; -+ for (i = 0; i < count; i++) { -+ memcpy(NLMSG_DATA(nlh) + datalen, iovp[i].iov_base, -+ iovp[i].iov_len); -+ datalen += iovp[i].iov_len; -+ } -+ iov.iov_base = (void *)nlh; -+ iov.iov_len = nlh->nlmsg_len; -+ -+ memset(&msg, 0, sizeof(msg)); -+ msg.msg_name = (void *)&dest_addr; -+ msg.msg_namelen = sizeof(dest_addr); -+ msg.msg_iov = &iov; -+ msg.msg_iovlen = 1; -+ -+ do { -+ rc = sendmsg(fd, &msg, 0); -+ if (rc == -ENOMEM) { -+ LOG_ERR(PFX "sendmsg: alloc_skb() failed"); -+ sleep(1); -+ } else if (rc < 0) { -+ LOG_ERR(PFX "sendmsg: bug?: on %d %s[0x%x]", -+ fd, strerror(errno), errno); -+ sleep(1); -+ } -+ } while ((rc < 0) && (event_loop_stop == 0)); -+ -+ return rc; -+} -+ -+/* -+ * __kipc_call() should never block. Therefore -+ * Netlink's xmit logic is serialized. This means we do not allocate on -+ * xmit path. Instead we reuse nlm_sendbuf buffer. -+ * -+ * Transport must assure non-blocking operations for: -+ * -+ * - session_create() -+ * - conn_create() -+ * - conn_bind() -+ * _ set_param() -+ * - conn_start() -+ * - conn_stop() -+ * -+ * Its OK to block for cleanup for short period of time in operatations for: -+ * -+ * - conn_destroy() -+ * - session_destroy() -+ * -+ * FIXME: interface needs to be extended to allow longer blocking on -+ * cleanup. (Dima) -+ */ -+int __kipc_call(int fd, void *iov_base, int iov_len) -+{ -+ int rc; -+ struct iovec iov; -+ struct iscsi_uevent *ev = iov_base; -+ enum iscsi_uevent_e type = ev->type; -+ -+ /* Sanity check */ -+ if (iov_base == NULL) -+ return -EINVAL; -+ -+ iov.iov_base = iov_base; -+ iov.iov_len = iov_len; -+ -+ rc = kwritev(fd, type, &iov, 1); -+ -+ return rc; -+} -+ -+static int pull_from_nl(char **buf) -+{ -+ int rc; -+ size_t ev_size; -+ char nlm_ev[NLMSG_SPACE(sizeof(struct iscsi_uevent))]; -+ struct nlmsghdr *nlh; -+ char *data = NULL; -+ -+ /* Take a quick peek at what how much uIP will need to read */ -+ rc = nl_read(nl_sock, nlm_ev, -+ NLMSG_SPACE(sizeof(struct iscsi_uevent)), -+ MSG_PEEK | MSG_WAITALL); -+ if (rc <= 0) { -+ LOG_ERR("can not read nlm_ev, error %s[%d]", -+ strerror(errno), rc); -+ if (rc == 0) -+ return -EIO; -+ else -+ return errno; -+ } -+ nlh = (struct nlmsghdr *)nlm_ev; -+ -+ if (unlikely(nlh->nlmsg_len < NLMSG_ALIGN(sizeof(struct nlmsghdr)))) { -+ LOG_ERR(PFX "Invalid nlh->nlmsg_len length: " -+ "nlh->nlmsg_len(%d) < " -+ "NLMSG_ALIGN(sizeof(struct nlmsghdr))(%d)", -+ nlh->nlmsg_len, NLMSG_ALIGN(sizeof(struct nlmsghdr))); -+ return -EINVAL; -+ } -+ -+ data = (char *)malloc(nlh->nlmsg_len); -+ if (unlikely(data == NULL)) { -+ LOG_ERR(PFX "Couldn't allocate %d bytes for Netlink " -+ "iSCSI message", nlh->nlmsg_len); -+ return -ENOMEM; -+ } -+ -+ memset(data, 0, nlh->nlmsg_len); -+ ev_size = nlh->nlmsg_len - NLMSG_ALIGN(sizeof(struct nlmsghdr)); -+ rc = nl_read(nl_sock, data, (int)nlh->nlmsg_len, MSG_WAITALL); -+ if (rc <= 0) { -+ LOG_ERR("can not read nlm_ev, error %s[%d]", -+ strerror(errno), rc); -+ if (rc == 0) -+ rc = -EIO; -+ else -+ rc = errno; -+ -+ goto error; -+ } -+ -+ *buf = data; -+ return 0; -+ error: -+ if (data != NULL) -+ free(data); -+ -+ return rc; -+} -+ -+const static struct timespec ctldev_sleep_req = { -+ .tv_sec = 0, -+ .tv_nsec = 250000000, -+}; -+ -+static int ctldev_handle(char *data) -+{ -+ nic_t *nic = NULL; -+ int rc; -+ struct iscsi_uevent *ev; -+ uint8_t *payload; -+ struct iscsi_path *path; -+ char *msg_type_str; -+ uint32_t host_no; -+ int i; -+ -+ ev = (struct iscsi_uevent *)NLMSG_DATA(data); -+ switch (ev->type) { -+ case ISCSI_KEVENT_PATH_REQ: -+ msg_type_str = "path_req"; -+ -+ host_no = ev->r.req_path.host_no; -+ break; -+ case ISCSI_KEVENT_IF_DOWN: -+ msg_type_str = "if_down"; -+ -+ host_no = ev->r.notify_if_down.host_no; -+ break; -+ default: -+ /* We don't care about other iSCSI Netlink messages */ -+ LOG_DEBUG(PFX "Received ev->type: 0x%x", ev->type); -+ rc = 0; -+ goto error; -+ } -+ -+ /* This is a message that drivers should be interested in */ -+ LOG_INFO("Received: '%s': host_no: %d", msg_type_str, host_no); -+ -+ rc = from_host_no_find_associated_eth_device(host_no, &nic); -+ if (rc != 0) { -+ LOG_ERR(PFX "Dropping msg, couldn't find nic with host no:%d", -+ host_no); -+ goto error; -+ } -+ -+ payload = (uint8_t *) ((uint8_t *) ev) + sizeof(*ev); -+ path = (struct iscsi_path *)payload; -+ -+ if (ev->type == ISCSI_KEVENT_PATH_REQ) { -+ struct timespec sleep_rem; -+ nic_interface_t *nic_iface; -+ uint16_t ip_type; -+ -+ if (path->ip_addr_len == 4) -+ ip_type = AF_INET; -+ else if (path->ip_addr_len == 16) -+ ip_type = AF_INET6; -+ else -+ ip_type = 0; -+ -+ nic_iface = nic_find_nic_iface_protocol(nic, path->vlan_id, -+ ip_type); -+ if (nic_iface == NULL) { -+ nic_interface_t *default_iface; -+ default_iface = nic_find_nic_iface_protocol(nic, -+ 0, ip_type); -+ if (default_iface == NULL) { -+ LOG_ERR(PFX "%s: Couldn't find default iface " -+ "vlan: %d ip_type: %d " -+ "ip_addr_len: %d to clone", -+ nic->log_name, path->vlan_id, ip_type, -+ path->ip_addr_len); -+ goto error; -+ } -+ -+ nic_iface = nic_iface_init(); -+ if (nic_iface == NULL) { -+ LOG_ERR(PFX "%s: Couldn't allocate space for " -+ "vlan: %d ip_type: %d " -+ "ip_addr_len: %d", -+ nic->log_name, path->vlan_id, ip_type, -+ path->ip_addr_len); -+ -+ goto error; -+ } -+ -+ nic_iface->protocol = ip_type; -+ nic_iface->vlan_id = path->vlan_id; -+ nic_add_nic_iface(nic, nic_iface); -+ -+ /* TODO: When VLAN support is placed in the iface file -+ * revisit this code */ -+ nic_iface->ustack.ip_config = -+ default_iface->ustack.ip_config; -+ memcpy(nic_iface->ustack.hostaddr, -+ default_iface->ustack.hostaddr, -+ sizeof(nic_iface->ustack.hostaddr)); -+ memcpy(nic_iface->ustack.netmask, -+ default_iface->ustack.netmask, -+ sizeof(nic_iface->ustack.netmask)); -+ memcpy(nic_iface->ustack.hostaddr6, -+ default_iface->ustack.hostaddr6, -+ sizeof(nic_iface->ustack.hostaddr6)); -+ -+ persist_all_nic_iface(nic); -+ nic_disable(nic, 0); -+ } -+ -+ /* Force enable the NIC */ -+ if ((nic->state & NIC_STOPPED) && -+ !(nic->flags & NIC_ENABLED_PENDING)) -+ nic_enable(nic); -+ -+ /* Ensure that the NIC is RUNNING */ -+ rc = -EIO; -+ for (i = 0; i < 10; i++) { -+ if ((nic->state & NIC_RUNNING) == NIC_RUNNING) { -+ rc = 0; -+ break; -+ } -+ -+ nanosleep(&ctldev_sleep_req, &sleep_rem); -+ } -+ -+ if (rc != 0) { -+ LOG_WARN(PFX "%s[vlan: %d protocol: %d]: not running, " -+ "cmd: 0x%x nic state: 0x%x flags: 0x%x", -+ nic->log_name, -+ nic_iface->vlan_id, nic_iface->protocol, -+ ev->type, nic->state, nic->flags); -+ goto error; -+ } -+ } -+ -+ if (nic->ops) { -+ char eth_device_name[IFNAMSIZ]; -+ -+ switch (ev->type) { -+ case ISCSI_KEVENT_PATH_REQ: -+ /* pass the request up to the user space -+ * library driver */ -+ if (nic->ops->handle_iscsi_path_req) { -+ nic->ops->handle_iscsi_path_req(nic, -+ nl_sock, ev, -+ path); -+ } -+ -+ LOG_INFO(PFX "%s: 'path_req' operation finished", -+ nic->log_name); -+ -+ rc = 0; -+ break; -+ case ISCSI_KEVENT_IF_DOWN: -+ memcpy(eth_device_name, nic->eth_device_name, -+ sizeof(eth_device_name)); -+ -+ pthread_mutex_lock(&nic_list_mutex); -+ -+ pthread_mutex_lock(&nic->nic_mutex); -+ nic->flags |= NIC_EXIT_MAIN_LOOP; -+ pthread_mutex_unlock(&nic->nic_mutex); -+ -+ pthread_cond_broadcast(&nic->enable_done_cond); -+ -+ nic_disable(nic, 1); -+ -+ nic_remove(nic); -+ pthread_mutex_unlock(&nic_list_mutex); -+ -+ pthread_mutex_lock(&nl_process_mutex); -+ nl_process_if_down = 0; -+ pthread_mutex_unlock(&nl_process_mutex); -+ -+ rc = 0; -+ -+ LOG_INFO(PFX "%s: 'if_down' operation finished", -+ eth_device_name); -+ -+ break; -+ default: -+ rc = -EAGAIN; -+ break; -+ } -+ } -+ -+ error: -+ -+ return rc; -+} -+ -+static void *nl_process_handle_thread(void *arg) -+{ -+ int rc; -+ -+ while (!event_loop_stop) { -+ char *data = NULL; -+ -+ rc = pthread_cond_wait(&nl_process_cond, &nl_process_mutex); -+ if (rc != 0) { -+ LOG_ERR("Fatal error in NL processing thread " -+ "during wait[%s]", strerror(rc)); -+ break; -+ } -+ -+ data = nl_process_ring[nl_process_head]; -+ nl_process_ring[nl_process_head] = NULL; -+ nl_process_tail = NL_PROCESS_NEXT_ENTRY(nl_process_tail); -+ -+ pthread_mutex_unlock(&nl_process_mutex); -+ -+ if (data) { -+ ctldev_handle(data); -+ free(data); -+ } -+ } -+ -+ return NULL; -+} -+ -+static void flush_nl_process_ring() -+{ -+ int i; -+ -+ for (i = 0; i < NL_PROCESS_MAX_RING_SIZE; i++) { -+ if (nl_process_ring[i] != NULL) { -+ free(nl_process_ring[i]); -+ nl_process_ring[i] = NULL; -+ } -+ } -+ -+ nl_process_head = 0; -+ nl_process_tail = 0; -+ -+ LOG_DEBUG(PFX "Flushed NL ring"); -+} -+ -+/** -+ * nic_nl_open() - This is called when opening/creating the Netlink listening -+ * thread -+ * @param dev - CNIC UIO device to create a NetLink listener on -+ * @return 0 on success, <0 on failure -+ */ -+int nic_nl_open() -+{ -+ int rc; -+ -+ /* Prepare the thread to issue the ARP's */ -+ nl_process_head = 0; -+ nl_process_tail = 0; -+ nl_process_if_down = 0; -+ memset(&nl_process_ring, 0, sizeof(nl_process_ring)); -+ -+ pthread_mutex_init(&nl_process_mutex, NULL); -+ pthread_cond_init(&nl_process_cond, NULL); -+ pthread_cond_init(&nl_process_if_down_cond, NULL); -+ -+ rc = pthread_create(&nl_process_thread, NULL, -+ nl_process_handle_thread, NULL); -+ if (rc != 0) { -+ LOG_ERR("Could not create NL processing thread [%s]", -+ strerror(rc)); -+ return -EIO; -+ } -+ -+ nl_sock = socket(PF_NETLINK, SOCK_RAW, NETLINK_ISCSI); -+ if (nl_sock < 0) { -+ LOG_ERR(PFX "can not create NETLINK_ISCSI socket [%s]", -+ strerror(errno)); -+ rc = -ENOMEM; -+ goto error; -+ } -+ -+ memset(&src_addr, 0, sizeof(src_addr)); -+ src_addr.nl_family = AF_NETLINK; -+ src_addr.nl_pid = getpid(); -+ src_addr.nl_groups = ISCSI_NL_GRP_UIP; -+ -+ while ((!event_loop_stop)) { -+ rc = bind(nl_sock, -+ (struct sockaddr *)&src_addr, sizeof(src_addr)); -+ if (rc == 0) -+ break; -+ -+ LOG_ERR(PFX "waiting binding to NETLINK_ISCSI socket"); -+ -+ sleep(1); -+ } -+ -+ if (event_loop_stop) { -+ rc = -EINVAL; -+ goto error; -+ } -+ -+ LOG_INFO(PFX "Netlink to CNIC on pid %d is ready", src_addr.nl_pid); -+ -+ while (!event_loop_stop) { -+ struct iscsi_uevent *ev; -+ char *buf = NULL; -+ -+ rc = pull_from_nl(&buf); -+ if (rc != 0) -+ continue; -+ -+ /* Try to abort ARP'ing if a if_down was recieved */ -+ ev = (struct iscsi_uevent *)NLMSG_DATA(buf); -+ if (ev->type == ISCSI_KEVENT_IF_DOWN) { -+ LOG_INFO(PFX "Received if_down event"); -+ -+ pthread_mutex_lock(&nl_process_mutex); -+ nl_process_if_down = 1; -+ -+ flush_nl_process_ring(); -+ pthread_mutex_unlock(&nl_process_mutex); -+ } -+ -+ if ((nl_process_head + 1 == nl_process_tail) || -+ (nl_process_tail == 0 && -+ nl_process_head == NL_PROCESS_LAST_ENTRY)) { -+ LOG_WARN(PFX "No space on Netlink ring"); -+ continue; -+ } -+ -+ pthread_mutex_lock(&nl_process_mutex); -+ nl_process_ring[nl_process_head] = buf; -+ nl_process_head = NL_PROCESS_NEXT_ENTRY(nl_process_head); -+ -+ pthread_cond_signal(&nl_process_cond); -+ pthread_mutex_unlock(&nl_process_mutex); -+ -+ LOG_DEBUG(PFX "Pulled nl event"); -+ } -+ -+ LOG_INFO(PFX "Netlink thread exit'ing"); -+ rc = 0; -+ -+error: -+ return 0; -+} -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/nic_nl.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/nic_nl.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/nic_nl.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/nic_nl.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,53 @@ -+/* -+ * Copyright (c) 2009-2011, Broadcom Corporation -+ * -+ * Written by: Benjamin Li (benli@broadcom.com) -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * nic_nl.h - NIC uIP NetLink user space stack -+ * -+ */ -+ -+#ifndef __NIC_NL_H__ -+#define __NIC_NL_H__ -+ -+#include -+ -+int nic_nl_open(); -+void nic_nl_close(); -+ -+int __kipc_call(int fd, void *iov_base, int iov_len); -+ -+extern pthread_cond_t nl_process_if_down_cond; -+extern pthread_mutex_t nl_process_mutex; -+extern int nl_process_if_down; -+ -+#endif /* __NIC_NL_H__ */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/nic_utils.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/nic_utils.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/nic_utils.c 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/nic_utils.c 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,1547 @@ -+/* -+ * Copyright (c) 2009-2011, Broadcom Corporation -+ * -+ * Written by: Benjamin Li (benli@broadcom.com) -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * nic_util.c - shared NIC utility functions -+ * -+ */ -+#include -+#include -+#include -+#define _GNU_SOURCE -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "logger.h" -+#include "nic.h" -+#include "nic_id.h" -+#include "nic_vlan.h" -+#include "nic_utils.h" -+#include "options.h" -+ -+#define PFX "nic_utils " -+ -+/****************************************************************************** -+ * String constants -+ *****************************************************************************/ -+static const char nic_uio_sysfs_name_tempate[] = "/sys/class/uio/uio%i/name"; -+static const char cnic_sysfs_uio_event_template[] = -+ "/sys/class/uio/uio%d/event"; -+static const char base_uio_sysfs_name[] = "/sys/class/uio/"; -+static const char uio_name[] = "uio"; -+ -+static const char uio_base_dir[] = "/dev/uio"; -+static const char uio_udev_path_template[] = "/dev/uio%hd"; -+static const char uio_uevent_path_template[] = "/sys/class/uio/uio%d/uevent"; -+ -+static const char base_iscsi_host_name[] = "/sys/class/iscsi_host/"; -+static const char host_template[] = "host%d"; -+static const char iscsi_host_path_template[] = "/sys/class/iscsi_host/host%d"; -+static const char iscsi_host_path_netdev_template[] = -+ "/sys/class/iscsi_host/host%d/netdev"; -+ -+/** -+ * manually_trigger_uio_event() - If the uio file node doesn't exist then -+ * try to retrigger udev to create the file -+ * node by touch the uevent file in sysfs -+ * @param nic - the nic to trigger on -+ * @param uio_minor - UIO the minor number to use -+ * @return 0 on success -+ */ -+int manually_trigger_uio_event(nic_t * nic, int uio_minor) -+{ -+ int fd; -+ char uio_uevent_path[sizeof(uio_uevent_path_template) + 10]; -+ char enable_str[] = "online"; -+ int rc; -+ size_t bytes_wrote; -+ -+ rc = sprintf(uio_uevent_path, uio_uevent_path_template, uio_minor); -+ if (rc < 0) { -+ LOG_ERR(PFX "%s: Could not build uio uevent path", -+ nic->log_name); -+ return -EIO; -+ } -+ -+ LOG_DEBUG(PFX "%s: triggering UIO uevent path: %s", -+ nic->log_name, uio_uevent_path); -+ -+ fd = open(uio_uevent_path, O_WRONLY); -+ if (fd == -1) { -+ LOG_ERR(PFX "%s: Could not open uio uevent path: %s [%s]", -+ nic->log_name, uio_uevent_path, strerror(errno)); -+ return -EIO; -+ } -+ -+ bytes_wrote = write(fd, enable_str, sizeof(enable_str)); -+ if (bytes_wrote != sizeof(enable_str)) { -+ LOG_ERR(PFX "%s: Could write to uio uevent path: %s [%s]", -+ nic->log_name, uio_uevent_path, strerror(errno)); -+ rc = -EIO; -+ } else -+ rc = 0; -+ -+ close(fd); -+ return rc; -+} -+ -+static int wait_for_file_node_timed(nic_t * nic, char *filepath, int seconds) -+{ -+ struct timeval start_time; -+ struct timeval wait_time; -+ struct timeval total_time; -+ struct timespec sleep_req, sleep_rem; -+ -+ sleep_req.tv_sec = 0; -+ sleep_req.tv_nsec = 250000000; -+ -+ wait_time.tv_sec = seconds; -+ wait_time.tv_usec = 0; -+ -+ if (gettimeofday(&start_time, NULL)) { -+ LOG_ERR(PFX "%s: Couldn't gettimeofday() during watch file: %s" -+ "[%s]", nic->log_name, filepath, strerror(errno)); -+ return -EIO; -+ } -+ -+ timeradd(&start_time, &wait_time, &total_time); -+ -+ while (1) { -+ struct timeval current_time; -+ struct stat file_stat; -+ -+ /* Check if the file node exists */ -+ if (stat(filepath, &file_stat) == 0) -+ return 0; -+ -+ if (gettimeofday(¤t_time, NULL)) { -+ LOG_ERR(PFX "%s: Couldn't get current time for " -+ "watching file: %s [%s]", -+ nic->log_name, filepath, strerror(errno)); -+ return -EIO; -+ } -+ -+ /* Timeout has excceded return -ETIME */ -+ if (timercmp(&total_time, ¤t_time, <)) { -+ LOG_ERR(PFX "%s: timeout waiting %d secs for file: %s", -+ nic->log_name, seconds, filepath); -+ return -ETIME; -+ } -+ -+ nanosleep(&sleep_req, &sleep_rem); -+ } -+} -+ -+/****************************************************************************** -+ * Autodiscovery of iscsi_hosts -+ *****************************************************************************/ -+static int filter_host_name(const struct dirent *entry) -+{ -+ if ((memcmp(entry->d_name, "host", 4) == 0)) -+ return 1; -+ else -+ return 0; -+} -+ -+int nic_discover_iscsi_hosts() -+{ -+ struct dirent **files; -+ int count; -+ int i; -+ int rc; -+ -+ count = scandir(base_iscsi_host_name, &files, filter_host_name, -+ alphasort); -+ -+ switch (count) { -+ case 0: -+ /* Currently there are no iSCSI hosts */ -+ rc = 0; -+ break; -+ -+ case -1: -+ LOG_WARN(PFX "Error when scanning path: %s[%s]", -+ base_iscsi_host_name, strerror(errno)); -+ rc = -EINVAL; -+ break; -+ -+ default: -+ /* There are iSCSI hosts */ -+ for (i = 0; i < count; i++) { -+ int host_no; -+ char *raw = NULL; -+ uint32_t raw_size = 0; -+ char temp_path[sizeof(iscsi_host_path_netdev_template) + -+ 8]; -+ rc = sscanf(files[i]->d_name, host_template, &host_no); -+ nic_t *nic; -+ -+ LOG_INFO(PFX "Found host[%d]: %s", -+ host_no, files[i]->d_name); -+ -+ /* Build the path to determine netdev name */ -+ snprintf(temp_path, sizeof(temp_path), -+ iscsi_host_path_netdev_template, host_no); -+ -+ rc = capture_file(&raw, &raw_size, temp_path); -+ if (rc != 0) -+ continue; -+ -+ rc = from_host_no_find_associated_eth_device(host_no, -+ &nic); -+ if (rc != 0) { -+ /* Normalize the string */ -+ if (raw[raw_size - 1] == '\n') -+ raw[raw_size - 1] = '\0'; -+ -+ nic = nic_init(); -+ if (nic == NULL) { -+ LOG_ERR(PFX "Couldn't allocate " -+ "space for NIC %s " -+ "during scan", raw); -+ -+ rc = -ENOMEM; -+ break; -+ } -+ -+ strncpy(nic->eth_device_name, raw, raw_size); -+ nic->config_device_name = nic->eth_device_name; -+ nic->log_name = nic->eth_device_name; -+ -+ if (nic_fill_name(nic) != 0) { -+ free(nic); -+ rc = -EIO; -+ continue; -+ } -+ -+ nic_add(nic); -+ -+ LOG_INFO(PFX "NIC not found creating an " -+ "instance for host_no: %d %s", -+ host_no, nic->eth_device_name); -+ } else -+ LOG_INFO(PFX "%s: NIC found host_no: %d", -+ nic->log_name, host_no); -+ -+ free(raw); -+ } -+ -+ /* Cleanup the scandir() call */ -+ for (i = 0; i < count; i++) -+ free(files[i]); -+ free(files); -+ -+ rc = 0; -+ break; -+ } -+ -+ return rc; -+} -+ -+/****************************************************************************** -+ * Enable/Disable Multicast on physical interface -+ *****************************************************************************/ -+static int nic_util_enable_disable_multicast(nic_t * nic, uint32_t cmd) -+{ -+ int rc = 0; -+ struct uip_eth_addr multicast_addr; -+ int fd; -+ struct ifreq ifr; -+ -+ /* adding ethernet multicast address for IPv6 */ -+ memcpy(&multicast_addr, nic->mac_addr, ETH_ALEN); -+ multicast_addr.addr[0] = 0x33; -+ multicast_addr.addr[1] = 0x33; -+ multicast_addr.addr[2] = 0xff; -+ -+ /* Prepare the request */ -+ memset(&ifr, 0, sizeof(ifr)); -+ strncpy(ifr.ifr_name, nic->eth_device_name, -+ sizeof(nic->eth_device_name)); -+ memcpy(ifr.ifr_hwaddr.sa_data, multicast_addr.addr, ETH_ALEN); -+ -+ fd = socket(AF_INET, SOCK_DGRAM, 0); -+ if (fd < 0) { -+ LOG_ERR(PFX "%s: Couldn't create socket to %s " -+ "multicast address: %s", -+ nic->log_name, -+ cmd == SIOCADDMULTI ? "added" : "delete", -+ strerror(errno)); -+ return errno; -+ } -+ -+ rc = fcntl(fd, F_SETFL, O_NONBLOCK); -+ if (rc != 0) { -+ LOG_WARN("%s: Couldn't set to ethtool IOCTL to " -+ "non-blocking [%s]", nic->log_name, strerror(errno)); -+ } -+ -+ if (ioctl(fd, cmd, (char *)&ifr) != 0) { -+ LOG_ERR("%s: Couldn't issue ioctl socket to %s " -+ "multicast address: %s", -+ nic->log_name, -+ cmd == SIOCADDMULTI ? "add" : "delete", -+ strerror(errno)); -+ rc = errno; -+ goto error; -+ } -+ -+ LOG_INFO(PFX "%s: %s address %02x:%02x:%02x:%02x:%02x:%02x " -+ "to multicast list", -+ nic->log_name, -+ cmd == SIOCADDMULTI ? "Added" : "Deleted", -+ multicast_addr.addr[0], multicast_addr.addr[1], -+ multicast_addr.addr[2], multicast_addr.addr[3], -+ multicast_addr.addr[4], multicast_addr.addr[5]); -+ -+ if (cmd == SIOCADDMULTI) { -+ nic->flags |= NIC_ADDED_MULICAST; -+ } else { -+ nic->flags &= ~NIC_ADDED_MULICAST; -+ } -+ -+error: -+ close(fd); -+ -+ return rc; -+} -+ -+/** -+ * enable_multicast() - This fuction is used to enable -+ * the listening of multicast addresses for a given network interface -+ * @param nic - NIC device to enable multicast on -+ * @return 0 for success or <0 for failure -+ */ -+int enable_multicast(nic_t * nic) -+{ -+ return nic_util_enable_disable_multicast(nic, SIOCADDMULTI); -+} -+ -+/** -+ * disable_multicast() - This fuction is used to disable -+ * the listening of multicast addresses for a given network interface -+ * @param dev - NIC device to disable multicast on -+ * @return 0 for success or <0 for failure -+ */ -+int disable_multicast(nic_t * nic) -+{ -+ return nic_util_enable_disable_multicast(nic, SIOCDELMULTI); -+} -+ -+/******************************************************************************* -+ * Finding associated UIO/physical network interfaces -+ ******************************************************************************/ -+static int filter_net_name(const struct dirent *entry) -+{ -+ if ((memcmp(entry->d_name, "net:", 4) == 0)) -+ return 1; -+ else -+ return 0; -+} -+ -+static char *extract_net_name(struct dirent **files) -+{ -+ return strstr(files[0]->d_name, ":"); -+} -+ -+static int filter_dot_out(const struct dirent *entry) -+{ -+ if ((memcmp(entry->d_name, ".", 1) == 0)) -+ return 0; -+ else -+ return 1; -+} -+ -+static char *extract_none(struct dirent **files) -+{ -+ return (files[0]->d_name); -+} -+ -+/** -+ * from_host_no_find_nic() - Given the host number -+ * this function will try to find the assoicated nic interface -+ * @param host_no - minor number of the UIO device -+ * @param nic - pointer to the NIC will set if successful -+ * @return 0 on success, <0 on error -+ */ -+int from_host_no_find_associated_eth_device(int host_no, nic_t ** nic) -+{ -+ nic_t *current_nic = nic_list; -+ char *raw = NULL, *raw_tmp; -+ uint32_t raw_size = 0; -+ -+ char temp_path[sizeof(iscsi_host_path_netdev_template) + 8]; -+ int rc = -EIO; -+ -+ /* Build the path to determine uio name */ -+ snprintf(temp_path, sizeof(temp_path), -+ iscsi_host_path_netdev_template, host_no); -+ -+ rc = capture_file(&raw, &raw_size, temp_path); -+ if (rc != 0) -+ goto error; -+ -+ /* sanitize name string by replacing newline with null termination */ -+ raw_tmp = raw; -+ while (*raw_tmp != '\n' && raw_size--) -+ raw_tmp++; -+ *raw_tmp = '\0'; -+ -+ rc = -EIO; -+ -+ pthread_mutex_lock(&nic_list_mutex); -+ current_nic = nic_list; -+ while (current_nic != NULL) { -+ if (strcmp(raw, current_nic->eth_device_name) == 0) { -+ *nic = current_nic; -+ rc = 0; -+ break; -+ } -+ -+ current_nic = current_nic->next; -+ } -+ pthread_mutex_unlock(&nic_list_mutex); -+ -+ free(raw); -+ -+error: -+ return rc; -+} -+ -+/******************************************************************************* -+ * NIC packet handling functions -+ ******************************************************************************/ -+/** -+ * from_uio_find_associated_eth_device() - Given the uio minor number -+ * this function will try to find the assoicated phyisical network -+ * interface -+ * @param uio_minor - minor number of the UIO device -+ * @param name - char buffer which will be filled if successful -+ * @param name_size - size of the name buffer -+ * @return >0 minor number <0 an error -+ */ -+static int from_uio_find_associated_eth_device(nic_t * nic, -+ int uio_minor, -+ char *name, size_t name_size) -+{ -+ char *path; -+ int rc; -+ int count; -+ struct dirent **files; -+ char *parsed_name; -+ int i; -+ int path_iterator; -+ char *search_paths[] = { "/sys/class/uio/uio%i/device/", -+ "/sys/class/uio/uio%i/device/net" -+ }; -+ int (*search_filters[]) (const struct dirent *) = { -+ filter_net_name, filter_dot_out,}; -+ char *(*extract_name[]) (struct dirent ** files) = { -+ extract_net_name, extract_none,}; -+ int extract_name_offset[] = { 1, 0 }; -+ -+ path = malloc(PATH_MAX); -+ if (path == NULL) { -+ LOG_ERR(PFX "Could not allocate memory for path"); -+ rc = -ENOMEM; -+ goto error; -+ } -+ -+ for (path_iterator = 0; -+ path_iterator < sizeof(search_paths) / sizeof(search_paths[0]); -+ path_iterator++) { -+ /* Build the path to determine uio name */ -+ rc = sprintf(path, search_paths[path_iterator], uio_minor); -+ -+ wait_for_file_node_timed(nic, path, 5); -+ -+ count = scandir(path, &files, -+ search_filters[path_iterator], alphasort); -+ -+ switch (count) { -+ case 1: -+ parsed_name = (*extract_name[path_iterator]) (files); -+ if (parsed_name == NULL) { -+ LOG_WARN(PFX "Couldn't find delimiter in: %s", -+ files[0]->d_name); -+ -+ break; -+ } -+ -+ strncpy(name, -+ parsed_name + -+ extract_name_offset[path_iterator], name_size); -+ -+ free(files[0]); -+ free(files); -+ -+ rc = 0; -+ break; -+ -+ case 0: -+ rc = -EINVAL; -+ break; -+ -+ case -1: -+ LOG_WARN(PFX "Error when scanning path: %s[%s]", -+ path, strerror(errno)); -+ rc = -EINVAL; -+ break; -+ -+ default: -+ LOG_WARN(PFX -+ "Too many entries when looking for device: %s", -+ path); -+ -+ /* Cleanup the scandir() call */ -+ for (i = 0; i < count; i++) -+ free(files[i]); -+ free(files); -+ -+ rc = -EINVAL; -+ break; -+ } -+ -+ if (rc == 0) -+ break; -+ } -+ -+error: -+ free(path); -+ -+ return rc; -+} -+ -+/** -+ * filter_uio_name() - This is the callback used by scandir when looking for -+ * the number of uio entries -+ */ -+static int filter_uio_name(const struct dirent *entry) -+{ -+ /* Only return if the name of the file begins with 'uio' */ -+ if ((memcmp(entry->d_name, uio_name, sizeof(uio_name) - 1) == 0)) -+ return 1; -+ else -+ return 0; -+} -+ -+/** -+ * from_netdev_name_find_nic() - This is used to find the NIC device given -+ * the netdev name -+ * @param interface_name - name of the interface to search on -+ * @param nic - pointer of the pointer to the NIC -+ * @return 0 on success, <0 on failure -+ */ -+int from_netdev_name_find_nic(char *interface_name, nic_t ** nic) -+{ -+ nic_t *current_nic; -+ -+ current_nic = nic_list; -+ while (current_nic != NULL) { -+ if (strcmp(interface_name, current_nic->eth_device_name) == 0) -+ break; -+ -+ current_nic = current_nic->next; -+ } -+ -+ if (current_nic == NULL) -+ return -EINVAL; -+ -+ *nic = current_nic; -+ return 0; -+} -+ -+/** -+ * from_phys_name_find_assoicated_uio_device() - This is used to find the -+ * uio minor -+ * when given a network interface name -+ * @param interface_name - network interface name to search for -+ * @return >0 minor number <0 an error -+ */ -+int from_phys_name_find_assoicated_uio_device(nic_t * nic) -+{ -+ char *path = NULL; -+ int count; -+ struct dirent **files; -+ int i; -+ int rc; -+ char *interface_name = nic->config_device_name; -+ -+ if (interface_name == NULL) -+ interface_name = nic->eth_device_name; -+ -+ /* Wait at least 10 seconds for uio sysfs entries to appear */ -+ rc = wait_for_file_node_timed(nic, (char *)base_uio_sysfs_name, 10); -+ if (rc != 0) -+ return rc; -+ -+ count = scandir(base_uio_sysfs_name, -+ &files, filter_uio_name, alphasort); -+ -+ switch (count) { -+ case 0: -+ LOG_WARN(PFX "Couldn't find %s to determine uio minor", -+ interface_name); -+ return -EINVAL; -+ -+ case -1: -+ LOG_WARN(PFX "Error when scanning for %s in path: %s [%s]", -+ interface_name, base_uio_sysfs_name, strerror(errno)); -+ return -EINVAL; -+ } -+ -+ path = malloc(PATH_MAX); -+ if (path == NULL) { -+ LOG_ERR(PFX "Could not allocate memory for path"); -+ return -ENOMEM; -+ } -+ -+ /* Run through the contents of the filtered files to see if the -+ * network interface name matches that of the uio device */ -+ for (i = 0; i < count; i++) { -+ int uio_minor; -+ char eth_name[IFNAMSIZ]; -+ -+ rc = sscanf(files[i]->d_name, "uio%d", &uio_minor); -+ if (rc != 1) { -+ LOG_WARN("Could not parse: %s", files[i]->d_name); -+ continue; -+ } -+ -+ rc = from_uio_find_associated_eth_device(nic, -+ uio_minor, -+ eth_name, -+ sizeof(eth_name)); -+ if (rc != 0) { -+ LOG_WARN("uio minor: %d not valid [%D]", uio_minor, rc); -+ continue; -+ } -+ -+ if (strncmp(eth_name, interface_name, sizeof(eth_name)) == 0) { -+ memcpy(nic->eth_device_name, -+ eth_name, sizeof(nic->eth_device_name)); -+ -+ LOG_INFO(PFX "%s associated with uio%d", -+ nic->eth_device_name, uio_minor); -+ -+ rc = uio_minor; -+ goto done; -+ } -+ } -+ -+ LOG_WARN("Could not find assoicate uio device with %s", interface_name); -+ -+ rc = -EINVAL; -+done: -+ if (path != NULL) -+ free(path); -+ -+ for (i = 0; i < count; i++) -+ free(files[i]); -+ free(files); -+ -+ return rc; -+ -+} -+ -+/** -+ * nic_verify_uio_sysfs_name() - Using the name entry in sysfs it will try to -+ * match the NIC library name -+ * @param nic - The NIC hardware to check -+ * -+ */ -+int nic_verify_uio_sysfs_name(nic_t * nic) -+{ -+ char *raw = NULL, *raw_tmp; -+ uint32_t raw_size = 0; -+ char temp_path[sizeof(nic_uio_sysfs_name_tempate) + 8]; -+ int rc = 0; -+ -+ /* Build the path to determine uio name */ -+ snprintf(temp_path, sizeof(temp_path), -+ nic_uio_sysfs_name_tempate, nic->uio_minor); -+ -+ rc = capture_file(&raw, &raw_size, temp_path); -+ if (rc != 0) -+ goto error; -+ -+ /* sanitize name string by replacing newline with null termination */ -+ raw_tmp = raw; -+ while (*raw_tmp != '\n' && raw_size--) -+ raw_tmp++; -+ *raw_tmp = '\0'; -+ -+ /* If the nic library is not set then check if there is a library -+ * which matches the library name */ -+ if (nic->nic_library == NULL) { -+ NIC_LIBRARY_EXIST_T exist; -+ -+ exist = does_nic_uio_name_exist(raw); -+ if (exist == NIC_LIBRARY_DOESNT_EXIST) { -+ LOG_ERR(PFX "%s: could not find library: %s ", -+ nic->log_name, raw); -+ rc = -EIO; -+ } -+ } else { -+ char *library_name; -+ size_t library_name_size; -+ -+ /* Get the string name from the NIC library */ -+ (*nic->ops->lib_ops.get_library_name) (&library_name, -+ &library_name_size); -+ -+ if (strcmp(raw, library_name) != 0) { -+ LOG_ERR(PFX "%s: uio names not equal: " -+ "expecting %s got %s from %s", -+ nic->log_name, library_name, raw, temp_path); -+ rc = -EIO; -+ } -+ } -+ -+ free(raw); -+ -+ LOG_INFO(PFX "%s: Verified is a cnic_uio device", nic->log_name); -+ -+error: -+ return rc; -+} -+ -+/** -+ * nic_fill_name() - This will initialize all the hardware resources underneath -+ * a struct cnic_uio device -+ * @param nic - The nic device to attach the hardware with -+ * @return 0 on success, on failure a errno will be returned -+ */ -+int nic_fill_name(nic_t * nic) -+{ -+ int rc; -+ -+ if ((nic->config_device_name != NULL) && -+ (memcmp(uio_base_dir, nic->config_device_name, -+ sizeof(uio_base_dir) - 1) == 0)) { -+ uint16_t uio_minor; -+ char eth_name[sizeof(nic->eth_device_name)]; -+ -+ wait_for_file_node_timed(nic, nic->config_device_name, 5); -+ -+ /* Determine the minor number for the UIO device */ -+ rc = sscanf(nic->config_device_name, uio_udev_path_template, -+ &uio_minor); -+ if (rc != 1) { -+ LOG_WARN(PFX "%s: Could not parse for minor number", -+ nic->uio_device_name); -+ return -EINVAL; -+ } else -+ nic->uio_minor = uio_minor; -+ -+ nic->uio_device_name = nic->config_device_name; -+ -+ /* Determine the assoicated physical network interface */ -+ rc = from_uio_find_associated_eth_device(nic, -+ nic->uio_minor, -+ eth_name, -+ sizeof(eth_name)); -+ if (rc != 0) { -+ LOG_WARN(PFX "%s: Couldn't find associated eth device", -+ nic->uio_device_name); -+ } else { -+ memcpy(nic->eth_device_name, -+ eth_name, sizeof(eth_name)); -+ } -+ -+ LOG_INFO(PFX "%s: configured for uio device for %s", -+ nic->log_name, nic->uio_device_name); -+ -+ } else { -+ LOG_INFO(PFX "looking for uio device for %s", -+ nic->config_device_name); -+ -+ rc = from_phys_name_find_assoicated_uio_device(nic); -+ if (rc < 0) { -+ LOG_ERR(PFX "Could not determine UIO name for %s", -+ nic->config_device_name); -+ -+ return -rc; -+ } -+ -+ nic->uio_minor = rc; -+ -+ nic->uio_device_name = -+ malloc(sizeof(uio_udev_path_template) + 8); -+ if (nic->uio_device_name == NULL) { -+ LOG_INFO(PFX "%s: Couldn't malloc space for uio name", -+ nic->log_name); -+ return -ENOMEM; -+ } -+ -+ snprintf(nic->uio_device_name, -+ sizeof(uio_udev_path_template) + 8, -+ uio_udev_path_template, nic->uio_minor); -+ -+ nic->flags |= NIC_UIO_NAME_MALLOC; -+ } -+ -+ return 0; -+} -+ -+void prepare_library(nic_t * nic) -+{ -+ int rc; -+ NIC_LIBRARY_EXIST_T exist; -+ -+ nic_fill_name(nic); -+ -+ /* No assoicated library, we can skip it */ -+ if (nic->library_name != NULL) { -+ /* Check that we have the proper NIC library loaded */ -+ exist = does_nic_library_exist(nic->library_name); -+ if (exist == NIC_LIBRARY_DOESNT_EXIST) { -+ LOG_ERR(PFX "NIC library doesn't exists: %s", -+ nic->library_name); -+ goto error; -+ } -+ } -+ -+ /* Determine the NIC library to use based on the PCI Id */ -+ rc = find_set_nic_lib(nic); -+ if (rc != 0) { -+ LOG_ERR(PFX "%s: Couldn't find NIC library", nic->log_name); -+ goto error; -+ } -+ -+ LOG_INFO("%s: found NIC '%s'", nic->log_name, nic->pci_id->device_name); -+error: -+ return; -+} -+ -+void prepare_nic_thread(nic_t * nic) -+{ -+ int rc; -+ -+ pthread_mutex_lock(&nic->nic_mutex); -+ if (nic->thread == INVALID_THREAD) { -+ struct timespec ts; -+ struct timeval tp; -+ -+ LOG_INFO(PFX "%s: spinning up thread for nic", nic->log_name); -+ -+ /* Try to spin up the nic thread */ -+ rc = pthread_create(&nic->thread, NULL, nic_loop, nic); -+ if (rc != 0) { -+ LOG_ERR(PFX "%s: Couldn't create thread for nic", -+ nic->log_name); -+ goto error; -+ } -+ -+ /* Convert from timeval to timespec */ -+ rc = gettimeofday(&tp, NULL); -+ ts.tv_sec = tp.tv_sec; -+ ts.tv_nsec = tp.tv_usec * 1000; -+ ts.tv_sec += 5; /* TODO: hardcoded wait for 5 seconds */ -+ -+ /* Wait for the nic loop thread to to running */ -+ rc = pthread_cond_timedwait(&nic->nic_loop_started_cond, -+ &nic->nic_mutex, &ts); -+ -+ LOG_INFO("Created nic thread: %s", nic->log_name); -+ } -+ -+ pthread_mutex_unlock(&nic->nic_mutex); -+ -+error: -+ return; -+} -+ -+/******************************************************************************* -+ * Functions used to enable/disable the NIC -+ ******************************************************************************/ -+/** -+ * nic_enable() - Function used to enable the NIC -+ * @param nic - NIC to enable -+ * @return 0 on success, <0 on failure -+ */ -+int nic_enable(nic_t * nic) -+{ -+ if (nic->flags & NIC_GOING_DOWN) { -+ LOG_INFO(PFX "%s: NIC device is going down, " -+ "flag: 0x%x state: 0x%x", -+ nic->log_name, nic->flags, nic->state); -+ return -EINVAL; -+ } -+ if (nic->state & NIC_STOPPED) { -+ struct timespec ts; -+ struct timeval tp; -+ int rc; -+ -+ pthread_mutex_lock(&nic->nic_mutex); -+ /* Signal the device to enable itself */ -+ pthread_cond_broadcast(&nic->enable_wait_cond); -+ -+ nic->flags &= ~NIC_DISABLED; -+ nic->flags |= NIC_ENABLED; -+ nic->flags |= NIC_ENABLED_PENDING; -+ -+ /* Convert from timeval to timespec */ -+ rc = gettimeofday(&tp, NULL); -+ ts.tv_sec = tp.tv_sec; -+ ts.tv_nsec = tp.tv_usec * 1000; -+ /* Changed the timeout to 10s to accommodate for DHCP -+ timeout */ -+ ts.tv_sec += 10; -+ -+ /* Wait for the device to be disabled */ -+ rc = pthread_cond_timedwait(&nic->enable_done_cond, -+ &nic->nic_mutex, &ts); -+ nic->flags &= ~NIC_ENABLED_PENDING; -+ pthread_mutex_unlock(&nic->nic_mutex); -+ -+ if (rc == 0 && nic->flags & NIC_ENABLED) { -+ LOG_DEBUG(PFX "%s: device enabled", nic->log_name); -+ } else { -+ LOG_ERR(PFX "%s: waiting to finish nic_enable err:%s", -+ nic->log_name, strerror(rc)); -+ } -+ -+ return rc; -+ } else { -+ LOG_INFO(PFX "%s: device already enabled: " -+ "flag: 0x%x state: 0x%x", -+ nic->log_name, nic->flags, nic->state); -+ return -EALREADY; -+ } -+} -+ -+/** -+ * nic_disable() - Function used to disable the NIC -+ * @param nic - NIC to disble -+ * @return 0 on success, <0 on failure -+ */ -+int nic_disable(nic_t * nic, int going_down) -+{ -+ if (nic->state & (NIC_STARTED_RUNNING | NIC_RUNNING)) { -+ struct timespec ts; -+ struct timeval tp; -+ int rc; -+ -+ /* Wait for the device to be disabled */ -+ pthread_mutex_lock(&nic->nic_mutex); -+ -+ nic->flags &= ~NIC_ENABLED; -+ nic->flags |= NIC_DISABLED; -+ nic->flags &= ~NIC_STARTED_RUNNING; -+ nic->state &= ~NIC_RUNNING; -+ nic->state |= NIC_STOPPED; -+ -+ if (going_down) -+ nic->flags |= NIC_GOING_DOWN; -+ -+ /* Convert from timeval to timespec */ -+ rc = gettimeofday(&tp, NULL); -+ ts.tv_sec = tp.tv_sec; -+ ts.tv_nsec = tp.tv_usec * 1000; -+ ts.tv_sec += 5; /* TODO: hardcoded wait for 2 seconds */ -+ -+ /* Wait for the device to be disabled */ -+ rc = pthread_cond_timedwait(&nic->disable_wait_cond, -+ &nic->nic_mutex, &ts); -+ pthread_mutex_unlock(&nic->nic_mutex); -+ -+ LOG_DEBUG(PFX "%s: device disabled", nic->log_name); -+ -+ return 0; -+ } else { -+ LOG_WARN(PFX "%s: device already disabled: " -+ "flag: 0x%x state: 0x%x", -+ nic->log_name, nic->flags, nic->state); -+ return -EALREADY; -+ } -+} -+ -+void nic_close_all() -+{ -+ nic_t *nic; -+ -+ pthread_mutex_lock(&nic_list_mutex); -+ -+ /* Start the shutdown process */ -+ nic = nic_list; -+ while (nic != NULL) { -+ pthread_mutex_lock(&nic->nic_mutex); -+ nic_close(nic, 1, FREE_ALL_STRINGS); -+ pthread_mutex_unlock(&nic->nic_mutex); -+ -+ nic = nic->next; -+ } -+ pthread_mutex_unlock(&nic_list_mutex); -+ -+ LOG_INFO(PFX "All NICs closed"); -+} -+ -+void nic_remove_all() -+{ -+ nic_t *nic, *nic_next; -+ -+ pthread_mutex_lock(&nic_list_mutex); -+ -+ /* Start the shutdown process */ -+ nic = nic_list; -+ while (nic != NULL) { -+ nic_next = nic->next; -+ nic_remove(nic); -+ nic = nic_next; -+ } -+ pthread_mutex_unlock(&nic_list_mutex); -+ -+ LOG_INFO(PFX "All NICs removed"); -+} -+ -+ -+/****************************************************************************** -+ * Routines to read initialized UIO values from sysfs -+ *****************************************************************************/ -+/** -+ * determine_initial_uio_events() - This utility function will -+ * determine the number of uio events that have occured on the -+ * given device. This value is read from the UIO sysfs entry -+ * @param dev - device to read from -+ * @param num_of_event - number of UIO events -+ * @return 0 is success, <0 failure -+ */ -+int detemine_initial_uio_events(nic_t * nic, uint32_t * num_of_events) -+{ -+ char *raw = NULL; -+ uint32_t raw_size = 0; -+ ssize_t elements_read; -+ char temp_path[sizeof(cnic_sysfs_uio_event_template) + 8]; -+ int rc; -+ -+ /* Capture RX buffer size */ -+ snprintf(temp_path, sizeof(temp_path), -+ cnic_sysfs_uio_event_template, nic->uio_minor); -+ -+ rc = capture_file(&raw, &raw_size, temp_path); -+ if (rc != 0) -+ goto error; -+ -+ elements_read = sscanf(raw, "%d", num_of_events); -+ if (elements_read != 1) { -+ LOG_ERR(PFX "%s: Couldn't parse UIO events size from %s", -+ nic->log_name, temp_path); -+ rc = -EIO; -+ goto error; -+ } -+ -+ rc = 0; -+error: -+ if (raw != NULL) -+ free(raw); -+ -+ return rc; -+} -+ -+/** -+ * nic_set_all_nic_iface_mac_to_parent() - This is a utility function used to -+ * intialize all the MAC addresses of the network interfaces for a given -+ * CNIC UIO device -+ * @param dev - CNIC UIO device to initialize -+ */ -+void nic_set_all_nic_iface_mac_to_parent(nic_t * nic) -+{ -+ nic_interface_t *current; -+ -+ pthread_mutex_lock(&nic->nic_mutex); -+ -+ current = nic->nic_iface; -+ while (current != NULL) { -+ /* Set the initial MAC address of this interface to the parent -+ * adapter */ -+ memcpy(current->mac_addr, nic->mac_addr, 6); -+ -+ current = current->next; -+ } -+ -+ pthread_mutex_unlock(&nic->nic_mutex); -+} -+ -+/******************************************************************************* -+ * NIC packet handling functions -+ ******************************************************************************/ -+/** -+ * nic_alloc_packet_buffer() - Used to allocate a packet buffer used to -+ * send a TX packet later -+ * @param nic - nic device to send the packet on -+ * @param nic_iface - nic interface to send out on -+ * @param buf - pointer to the buffer to send -+ * @param buf_size - size in bytes of the buffer to send -+ * @return pointer to the allocated packet buffer -+ * NULL if memory could not be allocated -+ */ -+static packet_t *nic_alloc_packet_buffer(nic_t * nic, -+ nic_interface_t * nic_iface, -+ uint8_t * buf, size_t buf_size) -+{ -+ packet_t *pkt; -+ -+ pkt = malloc(sizeof(*pkt) + buf_size); -+ if (pkt == NULL) { -+ LOG_ERR(PFX "%s: Couldn't allocate space for packet buffer", -+ nic->log_name); -+ return NULL; -+ } -+ -+ pkt->next = NULL; -+ pkt->nic = nic; -+ pkt->nic_iface = nic_iface; -+ pkt->buf_size = buf_size; -+ memcpy(pkt->buf, buf, buf_size); -+ -+ return pkt; -+} -+ -+/** -+ * nic_queue_tx_packet() - Used to queue a TX packet buffer to send later -+ * @param nic - NIC device to send the packet on -+ * @param nic_iface - NIC interface to send on the packet on -+ * @param pkt - packet to queue -+ * @return 0 if successful or <0 if unsuccessful -+ */ -+int nic_queue_tx_packet(nic_t * nic, -+ nic_interface_t * nic_iface, packet_t * pkt) -+{ -+ packet_t *queued_pkt; -+ -+ queued_pkt = nic_alloc_packet_buffer(nic, nic_iface, -+ pkt->buf, pkt->buf_size); -+ if (queued_pkt == NULL) { -+ LOG_ERR(PFX "%s: Couldn't allocate tx packet to queue", -+ nic->log_name); -+ return -ENOMEM; -+ } -+ -+ if (nic->tx_packet_queue == NULL) { -+ nic->tx_packet_queue = queued_pkt; -+ } else { -+ packet_t *current_pkt; -+ -+ current_pkt = nic->tx_packet_queue; -+ while (current_pkt->next != NULL) -+ current_pkt = current_pkt->next; -+ -+ current_pkt->next = queued_pkt; -+ } -+ -+ LOG_DEBUG(PFX "%s: tx packet queued", nic->log_name); -+ -+ return 0; -+} -+ -+/** -+ * nic_dequeue_tx_packet() - Used pop a TX packet buffer of the TX -+ * @param dev - cnic_uio device to send the packet on -+ * @param buf - pointer to the buffer to send -+ * @param buf_size - size in bytes of the buffer to send -+ * @return NULL if there are no more TX packet buffers to send -+ * pointer to the packet buffer which is detached from the device -+ */ -+packet_t *nic_dequeue_tx_packet(nic_t * nic) -+{ -+ packet_t *pkt; -+ -+ pkt = nic->tx_packet_queue; -+ -+ /* There is a packet buffer to send, time to detach it from the -+ * cnic_uio device */ -+ if (pkt != NULL) { -+ nic->tx_packet_queue = pkt->next; -+ pkt->next = NULL; -+ } -+ -+ return pkt; -+} -+ -+void nic_fill_ethernet_header(nic_interface_t * nic_iface, -+ void *data, -+ void *src_addr, void *dest_addr, -+ int *pkt_size, void **start_addr, -+ uint16_t ether_type) -+{ -+ struct ether_header *eth; -+ uint16_t *vlan_hdr; -+ -+ eth = data; -+ -+ memcpy(eth->ether_shost, src_addr, ETH_ALEN); -+ memcpy(eth->ether_dhost, dest_addr, ETH_ALEN); -+ -+ vlan_hdr = (uint16_t *) (eth + 1); -+ eth->ether_type = htons(ether_type); -+ -+ *start_addr = vlan_hdr; -+} -+ -+/******************************************************************************* -+ * NIC interface management utility functions -+ ******************************************************************************/ -+/** -+ * nic_find_nic_iface() - This function is used to find an interface from the -+ * NIC -+ * @param nic - NIC to look for network interfaces -+ * @param vlan_id - VLAN id to look for -+ * @return nic_iface - if found network interface with the given VLAN ID -+ * if not found a NULL is returned -+ */ -+nic_interface_t *nic_find_nic_iface(nic_t * nic, uint16_t vlan_id) -+{ -+ nic_interface_t *current; -+ -+ pthread_mutex_lock(&nic->nic_mutex); -+ -+ current = nic->nic_iface; -+ while (current != NULL) { -+ if (current->vlan_id == vlan_id) { -+ pthread_mutex_unlock(&nic->nic_mutex); -+ return current; -+ } -+ -+ current = current->next; -+ } -+ -+ pthread_mutex_unlock(&nic->nic_mutex); -+ -+ return NULL; -+} -+ -+/** -+ * nic_find_nic_iface_protocol() - This function is used to find an interface -+ * from the NIC -+ * @param nic - NIC to look for network interfaces -+ * @param vlan_id - VLAN id to look for -+ * @param protocol - either AF_INET or AF_INET6 -+ * @return nic_iface - if found network interface with the given VLAN ID -+ * if not found a NULL is returned -+ */ -+nic_interface_t *nic_find_nic_iface_protocol(nic_t * nic, -+ uint16_t vlan_id, -+ uint16_t protocol) -+{ -+ nic_interface_t *current; -+ -+ pthread_mutex_lock(&nic->nic_mutex); -+ -+ current = nic->nic_iface; -+ while (current != NULL) { -+ if ((current->vlan_id == vlan_id) && -+ (current->protocol == protocol)) { -+ pthread_mutex_unlock(&nic->nic_mutex); -+ return current; -+ } -+ -+ current = current->next; -+ } -+ -+ pthread_mutex_unlock(&nic->nic_mutex); -+ -+ return NULL; -+} -+ -+void persist_all_nic_iface(nic_t * nic) -+{ -+ nic_interface_t *current; -+ -+ pthread_mutex_lock(&nic->nic_mutex); -+ -+ current = nic->nic_iface; -+ while (current != NULL) { -+ current->flags |= NIC_IFACE_PERSIST; -+ -+ current = current->next; -+ } -+ -+ pthread_mutex_unlock(&nic->nic_mutex); -+} -+ -+/******************************************************************************* -+ * Packet management utility functions -+ ******************************************************************************/ -+/** -+ * get_next_packet_in_queue() - This function will return the next packet in -+ * the queue -+ * @param queue - the queue to pull the packet from -+ * @return the packet in the queue -+ */ -+static packet_t *get_next_packet_in_queue(packet_t ** queue) -+{ -+ packet_t *pkt; -+ -+ if (*queue == NULL) -+ return NULL; -+ -+ pkt = *queue; -+ *queue = pkt->next; -+ -+ return pkt; -+} -+ -+/** -+ * get_next_tx_packet() - This function will return the next packet in -+ * the TX queue -+ * @param nic - NIC to pull the TX packet from -+ * @return the packet in hte queue -+ */ -+packet_t *get_next_tx_packet(nic_t * nic) -+{ -+ return get_next_packet_in_queue(&nic->tx_packet_queue); -+} -+ -+/** -+ * get_next_free_packet() - This function will return the next packet in -+ * the free queue -+ * @param nic - NIC to pull the RX packet from -+ * @return the packet in hte queue -+ */ -+packet_t *get_next_free_packet(nic_t * nic) -+{ -+ packet_t *pkt; -+ pthread_mutex_lock(&nic->free_packet_queue_mutex); -+ pkt = get_next_packet_in_queue(&nic->free_packet_queue); -+ pthread_mutex_unlock(&nic->free_packet_queue_mutex); -+ -+ if (pkt != NULL) -+ reset_packet(pkt); -+ -+ return pkt; -+} -+ -+/** -+ * put_packet_in_queue() - This function will place the packet in the given -+ * queue -+ * @param pkt - the packet to place -+ * @param queue - the queue to place the packet -+ * @return the packet in the queue -+ */ -+static void put_packet_in_queue(packet_t * pkt, packet_t ** queue) -+{ -+ if (*queue == NULL) -+ *queue = pkt; -+ else { -+ pkt->next = *queue; -+ *queue = pkt; -+ } -+} -+ -+/** -+ * put_packet_in_tx_queue() - This function will place the packet in -+ * the TX queue -+ * @param pkt - packet to place -+ * @param nic - NIC to pull the TX packet from -+ * @return the packet in hte queue -+ */ -+void put_packet_in_tx_queue(packet_t * pkt, nic_t * nic) -+{ -+ return put_packet_in_queue(pkt, &nic->tx_packet_queue); -+} -+ -+/** -+ * put_packet_in_free_queue() - This function will place the packet in -+ * the RX queue -+ * @param pkt - packet to place -+ * @param nic - NIC to pull the RX packet from -+ * @return the packet in hte queue -+ */ -+void put_packet_in_free_queue(packet_t * pkt, nic_t * nic) -+{ -+ pthread_mutex_lock(&nic->free_packet_queue_mutex); -+ put_packet_in_queue(pkt, &nic->free_packet_queue); -+ pthread_mutex_unlock(&nic->free_packet_queue_mutex); -+} -+ -+uint32_t calculate_default_netmask(uint32_t ip_addr) -+{ -+ uint32_t netmask; -+ -+ if (IN_CLASSA(ntohl(ip_addr))) -+ netmask = htonl(IN_CLASSA_NET); -+ else if (IN_CLASSB(ntohl(ip_addr))) -+ netmask = htonl(IN_CLASSB_NET); -+ else if (IN_CLASSC(ntohl(ip_addr))) -+ netmask = htonl(IN_CLASSC_NET); -+ else { -+ LOG_ERR("Unable to guess netmask for address %x\n", &ip_addr); -+ return -1; -+ } -+ -+ return netmask; -+} -+ -+void dump_packet_to_log(struct nic_interface *iface, -+ uint8_t * buf, uint16_t buf_len) -+{ -+ -+ FILE *file; -+ char str[80]; -+ int i, count; -+ -+ file = fmemopen(str, sizeof(str), "w+"); -+ if (file == NULL) { -+ LOG_ERR(PFX "Could not create logging file stream for packet " -+ "logging: [%d: %s]", errno, strerror(errno)); -+ return; -+ } -+ -+ LOG_PACKET(PFX "%s: Start packet dump len: %d", iface->parent->log_name, -+ buf_len); -+ -+ for (i = 0; i < buf_len; i++) { -+ rewind(file); -+ fprintf(file, "%03x: ", i); -+ -+ for (count = 0; (count < 8) && i < buf_len; count++, i++) { -+ fprintf(file, " %02x", buf[i]); -+ } -+ fflush(file); -+ -+ LOG_PACKET(PFX "%s: %s", iface->parent->log_name, str); -+ } -+ -+ LOG_PACKET(PFX "%s: end packet dump", iface->parent->log_name); -+ -+ fclose(file); -+} -+ -+/******************************************************************************* -+ * File Management -+ ******************************************************************************/ -+ /** -+ * determine_file_size_read() - when fstat doesn't work on filepath -+ * within the /proc filesytem, we need to read/count the size of the file -+ * until we hit a EOF -+ * @parm filepath - path of the file in which to determine the filesize in -+ * bytes -+ * @return file size in bytes, <0 on failure -+ */ -+int determine_file_size_read(const char *filepath) -+{ -+ size_t total_size = 0; -+ ssize_t size = 1; -+ int fd; -+ char buf[1024]; -+ -+ fd = open(filepath, O_RDONLY); -+ if (fd == -1) { -+ LOG_ERR("Could not open file: %s [%s]", -+ filepath, strerror(errno)); -+ return -1; -+ } -+ -+ while (size > 0) { -+ size = read(fd, buf, sizeof(buf)); -+ -+ switch (size) { -+ case 0: -+ break; -+ case -1: -+ LOG_ERR("Error reading file: %s [%s]", -+ filepath, strerror(errno)); -+ total_size = -1; -+ break; -+ default: -+ total_size += size; -+ break; -+ } -+ } -+ -+ close(fd); -+ -+ return total_size; -+} -+ -+/** -+ * capture_file() - Used to capture a file into a buffer -+ * @param raw - This pointer will be set to the buffer which will hold the -+ * file contents -+ * @param raw_size - This is the size of the buffer returned -+ * @param path - The file path to capture the data from -+ * @return 0 is returned on success, <0 is returned on failure -+ */ -+int capture_file(char **raw, uint32_t * raw_size, const char *path) -+{ -+ FILE *fp; -+ size_t read_size; -+ int rc = 0; -+ int file_size; -+ -+ file_size = determine_file_size_read(path); -+ if (file_size < 0) { -+ LOG_ERR("Could not determine size %s", path); -+ return -EIO; -+ } -+ -+ fp = fopen(path, "r"); -+ if (fp == NULL) { -+ LOG_ERR("Could not open path %s [%s]", path, strerror(errno)); -+ return -EIO; -+ } -+ -+ *raw = malloc(file_size); -+ if (*raw == NULL) { -+ LOG_ERR("Could not malloc space for capture %s", path); -+ rc = -ENOMEM; -+ goto error; -+ } -+ -+ read_size = fread(*raw, file_size, 1, fp); -+ if (read_size < 0) { -+ LOG_ERR("Could not read capture, path: %s len: %d [%s]", -+ path, file_size, strerror(ferror(fp))); -+ free(*raw); -+ *raw = NULL; -+ rc = errno; -+ } else -+ *raw_size = file_size; -+ -+error: -+ fclose(fp); -+ -+ LOG_INFO("Done capturing %s", path); -+ -+ return rc; -+} -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/nic_utils.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/nic_utils.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/nic_utils.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/nic_utils.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,96 @@ -+/* -+ * Copyright (c) 2009-2011, Broadcom Corporation -+ * -+ * Written by: Benjamin Li (benli@broadcom.com) -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * nic_util.h - NIC utility functions -+ * -+ */ -+#ifndef __NIC_UTILS_H__ -+#define __NIC_UTILS_H__ -+ -+#include "nic.h" -+ -+/****************************************************************************** -+ * Function Prototype -+ ******************************************************************************/ -+int manually_trigger_uio_event(nic_t * nic, int uio_minor); -+ -+int nic_discover_iscsi_hosts(); -+ -+int enable_mutlicast(nic_t * nic); -+int disable_mutlicast(nic_t * nic); -+ -+int from_netdev_name_find_nic(char *interface_name, nic_t ** nic); -+ -+int from_host_no_find_associated_eth_device(int host_no, nic_t ** nic); -+ -+int from_phys_name_find_assoicated_uio_device(nic_t * nic); -+ -+int nic_queue_tx_packet(nic_t * nic, -+ nic_interface_t * nic_iface, packet_t * pkt); -+ -+packet_t *nic_dequeue_tx_packet(nic_t * nic); -+ -+void nic_fill_ethernet_header(nic_interface_t * nic_iface, -+ void *data, -+ void *src_addr, void *dest_addr, -+ int *pkt_size, void **start_addr, -+ uint16_t ether_type); -+ -+nic_interface_t *nic_find_nic_iface(nic_t * nic, uint16_t vlan_id); -+ -+void persist_all_nic_iface(nic_t * nic); -+ -+int add_vlan_interfaces(nic_t * nic); -+ -+int nic_verify_uio_sysfs_name(nic_t * nic); -+void nic_close_all(); -+void nic_remove_all(); -+ -+int detemine_initial_uio_events(nic_t * nic, uint32_t * num_of_events); -+ -+uint32_t calculate_default_netmask(uint32_t ip_addr); -+ -+void prepare_nic_thread(nic_t * nic); -+void prepare_library(nic_t * nic); -+ -+int nic_enable(nic_t * nic); -+int nic_disable(nic_t * nic, int going_down); -+ -+void dump_packet_to_log(struct nic_interface *iface, -+ uint8_t * buf, uint16_t buf_len); -+ -+int determine_file_size_read(const char *filepath); -+int capture_file(char **raw, uint32_t * raw_size, const char *path); -+ -+#endif /* __NIC_UTILS_H__ */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/nic_vlan.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/nic_vlan.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/nic_vlan.c 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/nic_vlan.c 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,339 @@ -+/* -+ * Copyright (c) 2009-2011, Broadcom Corporation -+ * -+ * Written by: Benjamin Li (benli@broadcom.com) -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * nic_vlan.c - uIP user space stack VLAN utilities -+ * -+ */ -+#define _GNU_SOURCE -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+#include -+#include -+ -+#include -+ -+#include "logger.h" -+#include "nic.h" -+#include "nic_utils.h" -+#include "nic_vlan.h" -+ -+/******************************************************************************* -+ * Constants -+ ******************************************************************************/ -+#define PFX "vlan" -+ -+static const char proc_vlan_config_path[] = "/proc/net/vlan/config"; -+ -+/******************************************************************************* -+ * Resolving Found VLAN's for CNIC -+ ******************************************************************************/ -+int init_vlan_found_handle(struct vlan_found_handle *found_handle, -+ struct vlan_handle *handle) -+{ -+ memset(found_handle, 0, sizeof(*found_handle)); -+ -+ found_handle->entries = malloc(found_handle->num_of_entries * -+ sizeof(struct vlan_found_entry)); -+ if (found_handle->entries == NULL) { -+ LOG_ERR("Could not allocate space for found entries"); -+ return -ENOMEM; -+ } -+ -+ found_handle->handle = handle; -+ found_handle->num_of_entries = handle->num_of_entries; -+ -+ memset(found_handle->entries, 0, found_handle->num_of_entries * -+ sizeof(struct vlan_found_entry)); -+ -+ handle->outstanding_found_handles++; -+ -+ return 0; -+} -+ -+void release_vlan_found_handle(struct vlan_found_handle *found_handle) -+{ -+ if (found_handle->entries != NULL) { -+ free(found_handle->entries); -+ found_handle->entries = NULL; -+ } -+ -+ found_handle->num_of_entries = 0; -+ -+ found_handle->handle->outstanding_found_handles--; -+ -+ found_handle->handle = NULL; -+ -+} -+ -+/******************************************************************************* -+ * Resolving VLAN's for CNIC -+ ******************************************************************************/ -+/** -+ * init_vlan_handle() - Used to initialize struct ipv4_route_handle so -+ * that is can be used -+ * @param handle - Pointer to struct ipv4_route_handle to initialize -+ * @return 0 on success and <0 on failure -+ */ -+void init_vlan_table(struct vlan_handle *handle) -+{ -+ handle->entries = NULL; -+ handle->num_of_entries = 0; -+} -+ -+/** -+ * parse_vlan_table() - Given the raw dump of a Linux vlan table, this -+ * function will parse the into entries held by -+ * struct vlan_handle -+ * @param handle - struct vlan_handle used to hold the parsed contents -+ * @param raw - buffer to parse the contents from -+ * @param raw_size - size of the buffer in bytes -+ * @return 0 on success, <0 on failure -+ */ -+int parse_vlan_table(struct vlan_handle *handle, char *raw, uint32_t raw_size) -+{ -+ FILE *fp; -+ int i; -+ char *token; -+ size_t size; -+ int rc; -+ -+ token = raw; -+ -+ /* determine the number of entries */ -+ while (*token != '\0') { -+ if (*token == '\n') -+ handle->num_of_entries++; -+ -+ token++; -+ } -+ -+ /* There are 2 lines which describe the vlan table -+ * This lines need to be skipped with counting */ -+ handle->num_of_entries -= 2; -+ -+ LOG_INFO("Number of vlan entries: %d", handle->num_of_entries); -+ -+ size = handle->num_of_entries * sizeof(struct vlan_entry); -+ handle->entries = malloc(size); -+ if (handle->entries == NULL) { -+ LOG_ERR -+ ("Couldn't malloc space to parse vlan table. entires: %d " -+ "size: %d", -+ handle->num_of_entries, size); -+ return -ENOMEM; -+ } -+ -+ fp = fmemopen(raw, raw_size, "r"); -+ if (fp == NULL) { -+ LOG_ERR("Could not open raw dump of vlan table"); -+ rc = errno; -+ goto fmemopen_error; -+ } -+ -+ if (fscanf(fp, "%*[^\n]\n") < 0) { /* Skip the first line. */ -+ LOG_ERR("Empty or missing line, or read error"); -+ rc = -EIO; -+ goto error; -+ } -+ -+ if (fscanf(fp, "%*[^\n]\n") < 0) { /* Skip the second line. */ -+ LOG_ERR("Empty or missing line, or read error"); -+ rc = -EIO; -+ goto error; -+ } -+ -+ i = 0; -+ /* Time to parse the routing table */ -+ while (1) { -+ struct vlan_entry *entry = &handle->entries[i]; -+ int r; -+ -+ r = fscanf(fp, "%15s |%hu |%15s", -+ entry->vlan_iface_name, -+ &entry->vlan_id, entry->phy_iface_name); -+ if (r != 3) { -+ if (feof(fp)) { /* EOF with no (nonspace) chars read. */ -+ break; -+ } -+ -+ LOG_WARN("Parsing error: parsed %d elements", r); -+ break; -+ } -+ -+ i++; -+ -+ LOG_DEBUG("Vlan %d: vlan iface:%s vlan id:%d phys iface:%s", -+ i, -+ entry->vlan_iface_name, -+ entry->vlan_id, entry->phy_iface_name); -+ } -+ -+ fclose(fp); -+ -+ return 0; -+ -+ error: -+ fclose(fp); -+ -+ fmemopen_error: -+ if (handle->entries != NULL) -+ free(handle->entries); -+ -+ return rc; -+} -+ -+/** -+ * capture_vlan_table() - This function will snapshot the Linux vlan -+ * routing table for further processing -+ * @param handle - struct vlan_handle used to hold the routing context -+ * @return 0 on success, <0 on failure -+ */ -+int capture_vlan_table(struct vlan_handle *handle) -+{ -+ char *raw = NULL; -+ uint32_t raw_size = 0; -+ int rc; -+ -+ rc = capture_file(&raw, &raw_size, proc_vlan_config_path); -+ if (rc != 0) { -+ goto error; -+ } -+ -+ rc = parse_vlan_table(handle, raw, raw_size); -+ if (rc != 0) { -+ goto error; -+ } -+ -+ error: -+ if (raw != NULL) -+ free(raw); -+ -+ return rc; -+} -+ -+/** -+ * release_vlan_table() - This function will free all resources used by -+ * the handle -+ * @param handle - struct vlan_handle used to hold the routing context -+ */ -+void release_vlan_table(struct vlan_handle *handle) -+{ -+ if (handle->entries != NULL) { -+ free(handle->entries); -+ handle->entries = NULL; -+ } -+ -+ handle->num_of_entries = 0; -+} -+ -+/** -+ * find_phy_using_vlan_interface() - Given the interface name determine VLAN -+ * tag ID to match either the physical or VLAN interface name -+ * @param vlan_iface_name - VLAN interface used to find the physical -+ * interface -+ * @param phy_iface_name - returned value is the physical interface name -+ * @param vlan_id - returned value is the VLAN id -+ * @return 1 is returned if the interface is a VLAN, 0 if the interface is not -+ * <0 is returned if there is an error -+ */ -+int find_phy_using_vlan_interface(struct vlan_handle *handle, -+ char *vlan_iface_name, -+ char **phy_iface_name, uint16_t * vlan_id) -+{ -+ int i, rc = 0; -+ -+ for (i = 0; i < handle->num_of_entries; i++) { -+ struct vlan_entry *entry = &handle->entries[i]; -+ -+ /* Compare VLAN interface names to find a match */ -+ if (strcmp(entry->vlan_iface_name, vlan_iface_name) == 0) { -+ *phy_iface_name = entry->phy_iface_name; -+ *vlan_id = entry->vlan_id; -+ rc = 1; -+ break; -+ } -+ } -+ -+ return rc; -+} -+ -+/** -+ * find_vlans_using_phy_interface() - Given the physical interface name this -+ * function will determine the VLAN interface name and VLAN ID -+ * @param iface_name - physical interface used to find the vlan interface -+ * @param vlan_iface_name - returned value is the VLAN interface name -+ * @return The number of VLAN interfaces found -+ */ -+int find_vlans_using_phy_interface(struct vlan_handle *handle, -+ struct vlan_found_handle *found_handle, -+ char *phy_iface_name) -+{ -+ int i, num_found = 0; -+ -+ for (i = 0; i < handle->num_of_entries; i++) { -+ struct vlan_entry *entry = &handle->entries[i]; -+ -+ /* Compare interface names to find a match */ -+ if (strcmp(entry->phy_iface_name, phy_iface_name) == 0) { -+ found_handle->entries[i].found = VLAN_ENTRY_FOUND; -+ num_found++; -+ } -+ } -+ -+ return num_found; -+} -+ -+/** -+ * valid_vlan() - determine if the vlan value which is passed is valid -+ * @param vlan - vlan value to test -+ * @return 0 - not valid, 1 - valid -+ */ -+int valid_vlan(short int vlan) -+{ -+ if (vlan > 1 && vlan < 4095) -+ return 1; -+ -+ return 0; -+} -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/nic_vlan.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/nic_vlan.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/nic_vlan.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/nic_vlan.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,88 @@ -+/* -+ * Copyright (c) 2009-2011, Broadcom Corporation -+ * -+ * Written by: Benjamin Li (benli@broadcom.com) -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * nic_vlan.h - uIP user space stack VLAN utilities -+ * -+ */ -+#ifndef __NIC_VLAN_H__ -+#define __NIC_VLAN_H__ -+ -+#include -+ -+/* Used to hold entries in the vlan table */ -+struct vlan_entry { -+ char vlan_iface_name[16]; -+ char phy_iface_name[16]; -+ uint16_t vlan_id; -+}; -+ -+struct vlan_handle { -+ struct vlan_entry *entries; -+ uint32_t num_of_entries; -+ -+ uint32_t outstanding_found_handles; -+}; -+ -+struct vlan_found_entry { -+#define VLAN_ENTRY_FOUND 1 -+#define VLAN_ENTRY_NOT_FOUND 0 -+ uint8_t found; -+}; -+ -+struct vlan_found_handle { -+ struct vlan_handle *handle; -+ uint32_t num_of_entries; -+ struct vlan_found_entry *entries; -+}; -+ -+/******************************************************************************* -+ * Function Prototypes -+ ******************************************************************************/ -+void init_vlan_table(struct vlan_handle *handle); -+int capture_vlan_table(struct vlan_handle *handle); -+void release_vlan_table(struct vlan_handle *handle); -+ -+int find_phy_using_vlan_interface(struct vlan_handle *handle, -+ char *vlan_iface_name, -+ char **phy_iface_name, uint16_t * vlan_id); -+int find_vlans_using_phy_interface(struct vlan_handle *handle, -+ struct vlan_found_handle *found_handle, -+ char *phy_iface_name); -+ -+int init_vlan_found_handle(struct vlan_found_handle *found_handle, -+ struct vlan_handle *handle); -+void release_vlan_found_handle(struct vlan_found_handle *found_handle); -+ -+int valid_vlan(short int vlan); -+#endif /* __NIC_VLAN_H__ */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/options.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/options.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/options.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/options.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,116 @@ -+/* -+ * Copyright (c) 2009-2011, Broadcom Corporation -+ * -+ * Written by: Benjamin Li (benli@broadcom.com) -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * options.h - CNIC UIO uIP user space stack -+ * -+ */ -+#ifndef __OPTIONS_H__ -+#define __OPTIONS_H__ -+ -+#include -+#include -+#include -+ -+/****************************************************************************** -+ * Constants which are tuned at compile time by the user -+ *****************************************************************************/ -+ -+/** -+ * MAX_COUNT_NIC_NL_RESP - This is the maximum number of polls uIP will -+ * try for a kernel response after a PATH_REQ -+ */ -+#define MAX_COUNT_NIC_NL_RESP 128 -+ -+/** -+ * NLM_BUF_DEFAULT_MAX - This is the buffer size allocated for the send/receive -+ * buffers used by the uIP Netlink subsystem. This -+ * value is in bytes. -+ */ -+#define NLM_BUF_DEFAULT_MAX 8192 /* bytes */ -+ -+/****************************************************************************** -+ * Non adjustable constants -+ *****************************************************************************/ -+#ifndef ETHERTYPE_IP -+#define ETHERTYPE_IP 0x0800 /* IP */ -+#endif /* ETHERTYPE_IP */ -+ -+#ifndef ETHERTYPE_IPV6 -+#define ETHERTYPE_IPV6 0x86dd /* IP protocol version 6 */ -+#endif /* ETHERTYPE_IPV6 */ -+ -+#ifndef ETHERTYPE_ARP -+#define ETHERTYPE_ARP 0x0806 /* Address resolution */ -+#endif /* ETHERTYPE_ARP */ -+ -+#ifndef ETHERTYPE_VLAN -+#define ETHERTYPE_VLAN 0x8100 /* IEEE 802.1Q VLAN tagging */ -+#endif /* ETHERTYPE_VLAN */ -+ -+#define APP_NAME "uIP" -+/* BUILD_DATE is automatically generated from the Makefile */ -+ -+#define DEBUG_OFF 0x1 -+#define DEBUG_ON 0x2 -+ -+#define INVALID_FD -1 -+#define INVALID_THREAD -1 -+ -+struct options { -+ char debug; -+ -+ /* Time the userspace daemon was started */ -+ time_t start_time; -+}; -+ -+extern int event_loop_stop; -+extern struct options opt; -+ -+#ifdef WORDS_BIGENDIAN -+#define ntohll(x) (x) -+#define htonll(x) (x) -+#else -+#define ntohll(x) bswap_64(x) -+#define htonll(x) bswap_64(x) -+#endif -+ -+# define likely(x) __builtin_expect(!!(x), 1) -+# define unlikely(x) __builtin_expect(!!(x), 0) -+ -+/* taken from Linux kernel, include/linux/compiler-gcc.h */ -+/* Optimization barrier */ -+/* The "volatile" is due to gcc bugs */ -+#define barrier() __asm__ __volatile__("": : :"memory") -+ -+#endif -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/packet.c open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/packet.c ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/packet.c 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/packet.c 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,130 @@ -+/* -+ * Copyright (c) 2009-2011, Broadcom Corporation -+ * -+ * Written by: Benjamin Li (benli@broadcom.com) -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * packet.c - packet management -+ * -+ */ -+#include -+#include -+ -+#include "logger.h" -+#include "packet.h" -+#include "nic.h" -+ -+/** -+ * alloc_packet() - Function used to allocate memory for a packet -+ * @param max_buf_size - max packet size -+ * @param priv_size - size of the assoicated private data -+ * @return NULL if failed, on success return a pointer to the packet -+ */ -+struct packet *alloc_packet(size_t max_buf_size, size_t priv_size) -+{ -+ struct packet *pkt; -+ void *priv; -+ -+ pkt = malloc(max_buf_size + sizeof(struct packet)); -+ if (pkt == NULL) { -+ LOG_ERR("Could not allocate any memory for packet"); -+ return NULL; -+ } -+ -+ priv = malloc(priv_size); -+ if (priv == NULL) { -+ LOG_ERR("Could not allocate any memory for private structure"); -+ goto free_pkt; -+ } -+ -+ pkt->max_buf_size = max_buf_size; -+ pkt->priv = priv; -+ -+ return pkt; -+ -+ free_pkt: -+ free(pkt); -+ -+ return NULL; -+} -+ -+void free_packet(struct packet *pkt) -+{ -+ if (pkt->priv != NULL) -+ free(pkt->priv); -+ -+ free(pkt); -+} -+ -+/** -+ * reset_packet() - This will reset the packet fields to default values -+ * @param pkt - the packet to reset -+ */ -+void reset_packet(packet_t * pkt) -+{ -+ pkt->next = NULL; -+ -+ pkt->flags = 0; -+ pkt->vlan_tag = 0; -+ -+ pkt->buf_size = 0; -+ -+ pkt->data_link_layer = NULL; -+ pkt->network_layer = NULL; -+} -+ -+int alloc_free_queue(nic_t * nic, size_t num_of_packets) -+{ -+ int rc, i; -+ -+ pthread_mutex_lock(&nic->free_packet_queue_mutex); -+ for (i = 0; i < num_of_packets; i++) { -+ packet_t *pkt; -+ -+ pkt = alloc_packet(1500, 1500); -+ if (pkt == NULL) { -+ rc = i; -+ goto done; -+ } -+ -+ reset_packet(pkt); -+ -+ pkt->next = nic->free_packet_queue; -+ nic->free_packet_queue = pkt; -+ } -+ -+ rc = num_of_packets; -+ -+ done: -+ pthread_mutex_unlock(&nic->free_packet_queue_mutex); -+ -+ return i; -+} -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/packet.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/packet.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/packet.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/packet.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,74 @@ -+/* -+ * Copyright (c) 2009-2011, Broadcom Corporation -+ * -+ * Written by: Benjamin Li (benli@broadcom.com) -+ * -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. All advertising materials mentioning features or use of this software -+ * must display the following acknowledgement: -+ * This product includes software developed by Adam Dunkels. -+ * 4. The name of the author may not be used to endorse or promote -+ * products derived from this software without specific prior -+ * written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS -+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY -+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE -+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ * -+ * packet.h - packet definitions -+ * -+ */ -+#include -+ -+#ifndef __PACKET_H__ -+#define __PACKET_H__ -+ -+#include "nic.h" -+ -+struct nic; -+struct nic_interface; -+ -+typedef struct packet { -+ struct packet *next; -+ -+ uint32_t flags; -+#define VLAN_TAGGED 0x0001 -+ uint16_t vlan_tag; -+ -+ size_t max_buf_size; -+ size_t buf_size; -+ -+ uint8_t *data_link_layer; -+ uint8_t *network_layer; -+ -+ struct nic *nic; -+ struct nic_interface *nic_iface; -+ -+ void *priv; -+ uint8_t buf[]; -+} packet_t; -+ -+/****************************************************************************** -+ * Packet Function Declarations -+ *****************************************************************************/ -+int alloc_free_queue(struct nic *, size_t num_of_packets); -+void reset_packet(packet_t * pkt); -+ -+#endif /* __PACKET_H__ */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/uip-conf.h open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/uip-conf.h ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/src/unix/uip-conf.h 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/src/unix/uip-conf.h 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1,161 @@ -+/** -+ * \addtogroup uipopt -+ * @{ -+ */ -+ -+/** -+ * \name Project-specific configuration options -+ * @{ -+ * -+ * uIP has a number of configuration options that can be overridden -+ * for each project. These are kept in a project-specific uip-conf.h -+ * file and all configuration names have the prefix UIP_CONF. -+ */ -+ -+/* -+ * Copyright (c) 2006, Swedish Institute of Computer Science. -+ * All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. Neither the name of the Institute nor the names of its contributors -+ * may be used to endorse or promote products derived from this software -+ * without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE -+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ * This file is part of the uIP TCP/IP stack -+ * -+ * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $ -+ */ -+ -+/** -+ * \file -+ * An example uIP configuration file -+ * \author -+ * Adam Dunkels -+ */ -+ -+#ifndef __UIP_CONF_H__ -+#define __UIP_CONF_H__ -+ -+#include -+ -+/** -+ * 8 bit datatype -+ * -+ * This typedef defines the 8-bit type used throughout uIP. -+ * -+ * \hideinitializer -+ */ -+typedef uint8_t u8_t; -+ -+/** -+ * 16 bit datatype -+ * -+ * This typedef defines the 16-bit type used throughout uIP. -+ * -+ * \hideinitializer -+ */ -+typedef uint16_t u16_t; -+ -+/** -+ * 32 bit datatype -+ * -+ * This typedef defines the 16-bit type used throughout uIP. -+ * -+ * \hideinitializer -+ */ -+typedef uint32_t u32_t; -+ -+/** -+ * Statistics datatype -+ * -+ * This typedef defines the dataype used for keeping statistics in -+ * uIP. -+ * -+ * \hideinitializer -+ */ -+typedef uint64_t uip_stats_t; -+ -+/** -+ * Maximum number of TCP connections. -+ * -+ * \hideinitializer -+ */ -+#define UIP_CONF_MAX_CONNECTIONS 40 -+ -+/** -+ * Maximum number of listening TCP ports. -+ * -+ * \hideinitializer -+ */ -+#define UIP_CONF_MAX_LISTENPORTS 40 -+ -+/** -+ * uIP buffer size. -+ * -+ * \hideinitializer -+ */ -+#define UIP_CONF_BUFFER_SIZE 420 -+ -+/** -+ * CPU byte order. -+ * -+ * \hideinitializer -+ */ -+#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN -+ -+/** -+ * Logging on or off -+ * -+ * \hideinitializer -+ */ -+#define UIP_CONF_LOGGING 1 -+ -+/** -+ * UDP support on or off -+ * -+ * \hideinitializer -+ */ -+#define UIP_CONF_UDP 1 -+ -+/** -+ * UDP checksums on or off -+ * -+ * \hideinitializer -+ */ -+#define UIP_CONF_UDP_CHECKSUMS 1 -+ -+/** -+ * uIP statistics on or off -+ * -+ * \hideinitializer -+ */ -+#define UIP_CONF_STATISTICS 1 -+ -+#define UIP_CONF_IPV6 0 -+ -+#define INET_ADDRSTRLEN 16 -+#define INET6_ADDRSTRLEN 46 -+ -+#endif /* __UIP_CONF_H__ */ -+ -+/** @} */ -+/** @} */ -diff -Naurp open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/stamp-h1 open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/stamp-h1 ---- open-iscsi-2.0-872-rc4-bnx2i/iscsiuio/stamp-h1 1969-12-31 18:00:00.000000000 -0600 -+++ open-iscsi-2.0-872-rc4-bnx2i.build/iscsiuio/stamp-h1 2011-08-03 20:01:01.000000000 -0500 -@@ -0,0 +1 @@ -+timestamp for config.h